arche_pdata        73 drivers/staging/greybus/arche-platform.c static void arche_platform_set_state(struct arche_platform_drvdata *arche_pdata,
arche_pdata        76 drivers/staging/greybus/arche-platform.c 	arche_pdata->state = state;
arche_pdata        81 drivers/staging/greybus/arche-platform.c 				struct arche_platform_drvdata *arche_pdata,
arche_pdata        84 drivers/staging/greybus/arche-platform.c 	arche_pdata->wake_detect_state = state;
arche_pdata       115 drivers/staging/greybus/arche-platform.c static void arche_platform_wd_irq_en(struct arche_platform_drvdata *arche_pdata)
arche_pdata       118 drivers/staging/greybus/arche-platform.c 	enable_irq(arche_pdata->wake_detect_irq);
arche_pdata       123 drivers/staging/greybus/arche-platform.c 	struct arche_platform_drvdata *arche_pdata = devid;
arche_pdata       126 drivers/staging/greybus/arche-platform.c 	spin_lock_irqsave(&arche_pdata->wake_lock, flags);
arche_pdata       127 drivers/staging/greybus/arche-platform.c 	if (arche_pdata->wake_detect_state != WD_STATE_COLDBOOT_TRIG) {
arche_pdata       129 drivers/staging/greybus/arche-platform.c 		spin_unlock_irqrestore(&arche_pdata->wake_lock, flags);
arche_pdata       133 drivers/staging/greybus/arche-platform.c 	arche_platform_set_wake_detect_state(arche_pdata,
arche_pdata       135 drivers/staging/greybus/arche-platform.c 	spin_unlock_irqrestore(&arche_pdata->wake_lock, flags);
arche_pdata       138 drivers/staging/greybus/arche-platform.c 	device_for_each_child(arche_pdata->dev, NULL, apb_poweroff);
arche_pdata       141 drivers/staging/greybus/arche-platform.c 	device_for_each_child(arche_pdata->dev, NULL, apb_cold_boot);
arche_pdata       145 drivers/staging/greybus/arche-platform.c 		dev_warn(arche_pdata->dev, "failed to control hub device\n");
arche_pdata       147 drivers/staging/greybus/arche-platform.c 	spin_lock_irqsave(&arche_pdata->wake_lock, flags);
arche_pdata       148 drivers/staging/greybus/arche-platform.c 	arche_platform_set_wake_detect_state(arche_pdata, WD_STATE_IDLE);
arche_pdata       149 drivers/staging/greybus/arche-platform.c 	spin_unlock_irqrestore(&arche_pdata->wake_lock, flags);
arche_pdata       156 drivers/staging/greybus/arche-platform.c 	struct arche_platform_drvdata *arche_pdata = devid;
arche_pdata       159 drivers/staging/greybus/arche-platform.c 	spin_lock_irqsave(&arche_pdata->wake_lock, flags);
arche_pdata       161 drivers/staging/greybus/arche-platform.c 	if (gpiod_get_value(arche_pdata->wake_detect)) {
arche_pdata       169 drivers/staging/greybus/arche-platform.c 		if (arche_pdata->wake_detect_state == WD_STATE_BOOT_INIT) {
arche_pdata       171 drivers/staging/greybus/arche-platform.c 					arche_pdata->wake_detect_start +
arche_pdata       173 drivers/staging/greybus/arche-platform.c 				arche_platform_set_wake_detect_state(arche_pdata,
arche_pdata       180 drivers/staging/greybus/arche-platform.c 				if (arche_pdata->wake_detect_state !=
arche_pdata       182 drivers/staging/greybus/arche-platform.c 					arche_platform_set_wake_detect_state(arche_pdata,
arche_pdata       185 drivers/staging/greybus/arche-platform.c 						&arche_pdata->wake_lock,
arche_pdata       193 drivers/staging/greybus/arche-platform.c 		if (arche_pdata->wake_detect_state == WD_STATE_IDLE) {
arche_pdata       194 drivers/staging/greybus/arche-platform.c 			arche_pdata->wake_detect_start = jiffies;
arche_pdata       202 drivers/staging/greybus/arche-platform.c 			arche_platform_set_wake_detect_state(arche_pdata,
arche_pdata       207 drivers/staging/greybus/arche-platform.c 	spin_unlock_irqrestore(&arche_pdata->wake_lock, flags);
arche_pdata       216 drivers/staging/greybus/arche-platform.c arche_platform_coldboot_seq(struct arche_platform_drvdata *arche_pdata)
arche_pdata       220 drivers/staging/greybus/arche-platform.c 	if (arche_pdata->state == ARCHE_PLATFORM_STATE_ACTIVE)
arche_pdata       223 drivers/staging/greybus/arche-platform.c 	dev_info(arche_pdata->dev, "Booting from cold boot state\n");
arche_pdata       225 drivers/staging/greybus/arche-platform.c 	svc_reset_onoff(arche_pdata->svc_reset, arche_pdata->is_reset_act_hi);
arche_pdata       227 drivers/staging/greybus/arche-platform.c 	gpiod_set_value(arche_pdata->svc_sysboot, 0);
arche_pdata       230 drivers/staging/greybus/arche-platform.c 	ret = clk_prepare_enable(arche_pdata->svc_ref_clk);
arche_pdata       232 drivers/staging/greybus/arche-platform.c 		dev_err(arche_pdata->dev, "failed to enable svc_ref_clk: %d\n",
arche_pdata       238 drivers/staging/greybus/arche-platform.c 	svc_reset_onoff(arche_pdata->svc_reset, !arche_pdata->is_reset_act_hi);
arche_pdata       240 drivers/staging/greybus/arche-platform.c 	arche_platform_set_state(arche_pdata, ARCHE_PLATFORM_STATE_ACTIVE);
arche_pdata       249 drivers/staging/greybus/arche-platform.c arche_platform_fw_flashing_seq(struct arche_platform_drvdata *arche_pdata)
arche_pdata       253 drivers/staging/greybus/arche-platform.c 	if (arche_pdata->state == ARCHE_PLATFORM_STATE_FW_FLASHING)
arche_pdata       256 drivers/staging/greybus/arche-platform.c 	dev_info(arche_pdata->dev, "Switching to FW flashing state\n");
arche_pdata       258 drivers/staging/greybus/arche-platform.c 	svc_reset_onoff(arche_pdata->svc_reset, arche_pdata->is_reset_act_hi);
arche_pdata       260 drivers/staging/greybus/arche-platform.c 	gpiod_set_value(arche_pdata->svc_sysboot, 1);
arche_pdata       264 drivers/staging/greybus/arche-platform.c 	ret = clk_prepare_enable(arche_pdata->svc_ref_clk);
arche_pdata       266 drivers/staging/greybus/arche-platform.c 		dev_err(arche_pdata->dev, "failed to enable svc_ref_clk: %d\n",
arche_pdata       271 drivers/staging/greybus/arche-platform.c 	svc_reset_onoff(arche_pdata->svc_reset,	!arche_pdata->is_reset_act_hi);
arche_pdata       273 drivers/staging/greybus/arche-platform.c 	arche_platform_set_state(arche_pdata, ARCHE_PLATFORM_STATE_FW_FLASHING);
arche_pdata       282 drivers/staging/greybus/arche-platform.c arche_platform_poweroff_seq(struct arche_platform_drvdata *arche_pdata)
arche_pdata       286 drivers/staging/greybus/arche-platform.c 	if (arche_pdata->state == ARCHE_PLATFORM_STATE_OFF)
arche_pdata       290 drivers/staging/greybus/arche-platform.c 	if (arche_pdata->state != ARCHE_PLATFORM_STATE_FW_FLASHING) {
arche_pdata       291 drivers/staging/greybus/arche-platform.c 		disable_irq(arche_pdata->wake_detect_irq);
arche_pdata       293 drivers/staging/greybus/arche-platform.c 		spin_lock_irqsave(&arche_pdata->wake_lock, flags);
arche_pdata       294 drivers/staging/greybus/arche-platform.c 		arche_platform_set_wake_detect_state(arche_pdata,
arche_pdata       296 drivers/staging/greybus/arche-platform.c 		spin_unlock_irqrestore(&arche_pdata->wake_lock, flags);
arche_pdata       299 drivers/staging/greybus/arche-platform.c 	clk_disable_unprepare(arche_pdata->svc_ref_clk);
arche_pdata       302 drivers/staging/greybus/arche-platform.c 	svc_reset_onoff(arche_pdata->svc_reset,	arche_pdata->is_reset_act_hi);
arche_pdata       304 drivers/staging/greybus/arche-platform.c 	arche_platform_set_state(arche_pdata, ARCHE_PLATFORM_STATE_OFF);
arche_pdata       311 drivers/staging/greybus/arche-platform.c 	struct arche_platform_drvdata *arche_pdata = dev_get_drvdata(dev);
arche_pdata       314 drivers/staging/greybus/arche-platform.c 	mutex_lock(&arche_pdata->platform_state_mutex);
arche_pdata       317 drivers/staging/greybus/arche-platform.c 		if (arche_pdata->state == ARCHE_PLATFORM_STATE_OFF)
arche_pdata       321 drivers/staging/greybus/arche-platform.c 		device_for_each_child(arche_pdata->dev, NULL, apb_poweroff);
arche_pdata       323 drivers/staging/greybus/arche-platform.c 		arche_platform_poweroff_seq(arche_pdata);
arche_pdata       326 drivers/staging/greybus/arche-platform.c 		if (arche_pdata->state == ARCHE_PLATFORM_STATE_ACTIVE)
arche_pdata       332 drivers/staging/greybus/arche-platform.c 		device_for_each_child(arche_pdata->dev, NULL, apb_poweroff);
arche_pdata       333 drivers/staging/greybus/arche-platform.c 		arche_platform_poweroff_seq(arche_pdata);
arche_pdata       335 drivers/staging/greybus/arche-platform.c 		arche_platform_wd_irq_en(arche_pdata);
arche_pdata       336 drivers/staging/greybus/arche-platform.c 		ret = arche_platform_coldboot_seq(arche_pdata);
arche_pdata       341 drivers/staging/greybus/arche-platform.c 		if (arche_pdata->state == ARCHE_PLATFORM_STATE_STANDBY)
arche_pdata       344 drivers/staging/greybus/arche-platform.c 		dev_warn(arche_pdata->dev, "standby state not supported\n");
arche_pdata       346 drivers/staging/greybus/arche-platform.c 		if (arche_pdata->state == ARCHE_PLATFORM_STATE_FW_FLASHING)
arche_pdata       356 drivers/staging/greybus/arche-platform.c 		arche_platform_poweroff_seq(arche_pdata);
arche_pdata       358 drivers/staging/greybus/arche-platform.c 		ret = arche_platform_fw_flashing_seq(arche_pdata);
arche_pdata       362 drivers/staging/greybus/arche-platform.c 		dev_err(arche_pdata->dev, "unknown state\n");
arche_pdata       367 drivers/staging/greybus/arche-platform.c 	mutex_unlock(&arche_pdata->platform_state_mutex);
arche_pdata       374 drivers/staging/greybus/arche-platform.c 	struct arche_platform_drvdata *arche_pdata = dev_get_drvdata(dev);
arche_pdata       376 drivers/staging/greybus/arche-platform.c 	switch (arche_pdata->state) {
arche_pdata       395 drivers/staging/greybus/arche-platform.c 	struct arche_platform_drvdata *arche_pdata =
arche_pdata       400 drivers/staging/greybus/arche-platform.c 	mutex_lock(&arche_pdata->platform_state_mutex);
arche_pdata       403 drivers/staging/greybus/arche-platform.c 		if (arche_pdata->state != ARCHE_PLATFORM_STATE_ACTIVE) {
arche_pdata       407 drivers/staging/greybus/arche-platform.c 		device_for_each_child(arche_pdata->dev, NULL, apb_poweroff);
arche_pdata       408 drivers/staging/greybus/arche-platform.c 		arche_platform_poweroff_seq(arche_pdata);
arche_pdata       411 drivers/staging/greybus/arche-platform.c 		if (arche_pdata->state != ARCHE_PLATFORM_STATE_OFF)
arche_pdata       414 drivers/staging/greybus/arche-platform.c 		arche_platform_wd_irq_en(arche_pdata);
arche_pdata       415 drivers/staging/greybus/arche-platform.c 		arche_platform_coldboot_seq(arche_pdata);
arche_pdata       420 drivers/staging/greybus/arche-platform.c 	mutex_unlock(&arche_pdata->platform_state_mutex);
arche_pdata       427 drivers/staging/greybus/arche-platform.c 	struct arche_platform_drvdata *arche_pdata;
arche_pdata       433 drivers/staging/greybus/arche-platform.c 	arche_pdata = devm_kzalloc(&pdev->dev, sizeof(*arche_pdata),
arche_pdata       435 drivers/staging/greybus/arche-platform.c 	if (!arche_pdata)
arche_pdata       439 drivers/staging/greybus/arche-platform.c 	arche_pdata->is_reset_act_hi = of_property_read_bool(np,
arche_pdata       441 drivers/staging/greybus/arche-platform.c 	if (arche_pdata->is_reset_act_hi)
arche_pdata       446 drivers/staging/greybus/arche-platform.c 	arche_pdata->svc_reset = devm_gpiod_get(dev, "svc,reset", flags);
arche_pdata       447 drivers/staging/greybus/arche-platform.c 	if (IS_ERR(arche_pdata->svc_reset)) {
arche_pdata       448 drivers/staging/greybus/arche-platform.c 		ret = PTR_ERR(arche_pdata->svc_reset);
arche_pdata       452 drivers/staging/greybus/arche-platform.c 	arche_platform_set_state(arche_pdata, ARCHE_PLATFORM_STATE_OFF);
arche_pdata       454 drivers/staging/greybus/arche-platform.c 	arche_pdata->svc_sysboot = devm_gpiod_get(dev, "svc,sysboot",
arche_pdata       456 drivers/staging/greybus/arche-platform.c 	if (IS_ERR(arche_pdata->svc_sysboot)) {
arche_pdata       457 drivers/staging/greybus/arche-platform.c 		ret = PTR_ERR(arche_pdata->svc_sysboot);
arche_pdata       463 drivers/staging/greybus/arche-platform.c 	arche_pdata->svc_refclk_req = devm_gpiod_get(dev, "svc,refclk-req",
arche_pdata       465 drivers/staging/greybus/arche-platform.c 	if (IS_ERR(arche_pdata->svc_refclk_req)) {
arche_pdata       466 drivers/staging/greybus/arche-platform.c 		ret = PTR_ERR(arche_pdata->svc_refclk_req);
arche_pdata       472 drivers/staging/greybus/arche-platform.c 	arche_pdata->svc_ref_clk = devm_clk_get(dev, "svc_ref_clk");
arche_pdata       473 drivers/staging/greybus/arche-platform.c 	if (IS_ERR(arche_pdata->svc_ref_clk)) {
arche_pdata       474 drivers/staging/greybus/arche-platform.c 		ret = PTR_ERR(arche_pdata->svc_ref_clk);
arche_pdata       479 drivers/staging/greybus/arche-platform.c 	platform_set_drvdata(pdev, arche_pdata);
arche_pdata       481 drivers/staging/greybus/arche-platform.c 	arche_pdata->num_apbs = of_get_child_count(np);
arche_pdata       482 drivers/staging/greybus/arche-platform.c 	dev_dbg(dev, "Number of APB's available - %d\n", arche_pdata->num_apbs);
arche_pdata       484 drivers/staging/greybus/arche-platform.c 	arche_pdata->wake_detect = devm_gpiod_get(dev, "svc,wake-detect",
arche_pdata       486 drivers/staging/greybus/arche-platform.c 	if (IS_ERR(arche_pdata->wake_detect)) {
arche_pdata       487 drivers/staging/greybus/arche-platform.c 		ret = PTR_ERR(arche_pdata->wake_detect);
arche_pdata       492 drivers/staging/greybus/arche-platform.c 	arche_platform_set_wake_detect_state(arche_pdata, WD_STATE_IDLE);
arche_pdata       494 drivers/staging/greybus/arche-platform.c 	arche_pdata->dev = &pdev->dev;
arche_pdata       496 drivers/staging/greybus/arche-platform.c 	spin_lock_init(&arche_pdata->wake_lock);
arche_pdata       497 drivers/staging/greybus/arche-platform.c 	mutex_init(&arche_pdata->platform_state_mutex);
arche_pdata       498 drivers/staging/greybus/arche-platform.c 	arche_pdata->wake_detect_irq =
arche_pdata       499 drivers/staging/greybus/arche-platform.c 		gpiod_to_irq(arche_pdata->wake_detect);
arche_pdata       501 drivers/staging/greybus/arche-platform.c 	ret = devm_request_threaded_irq(dev, arche_pdata->wake_detect_irq,
arche_pdata       506 drivers/staging/greybus/arche-platform.c 					dev_name(dev), arche_pdata);
arche_pdata       511 drivers/staging/greybus/arche-platform.c 	disable_irq(arche_pdata->wake_detect_irq);
arche_pdata       525 drivers/staging/greybus/arche-platform.c 	arche_pdata->pm_notifier.notifier_call = arche_platform_pm_notifier;
arche_pdata       526 drivers/staging/greybus/arche-platform.c 	ret = register_pm_notifier(&arche_pdata->pm_notifier);
arche_pdata       535 drivers/staging/greybus/arche-platform.c 		mutex_lock(&arche_pdata->platform_state_mutex);
arche_pdata       536 drivers/staging/greybus/arche-platform.c 		ret = arche_platform_coldboot_seq(arche_pdata);
arche_pdata       541 drivers/staging/greybus/arche-platform.c 		arche_platform_wd_irq_en(arche_pdata);
arche_pdata       542 drivers/staging/greybus/arche-platform.c 		mutex_unlock(&arche_pdata->platform_state_mutex);
arche_pdata       549 drivers/staging/greybus/arche-platform.c 	mutex_unlock(&arche_pdata->platform_state_mutex);
arche_pdata       566 drivers/staging/greybus/arche-platform.c 	struct arche_platform_drvdata *arche_pdata = platform_get_drvdata(pdev);
arche_pdata       568 drivers/staging/greybus/arche-platform.c 	unregister_pm_notifier(&arche_pdata->pm_notifier);
arche_pdata       571 drivers/staging/greybus/arche-platform.c 	arche_platform_poweroff_seq(arche_pdata);
arche_pdata       574 drivers/staging/greybus/arche-platform.c 		dev_warn(arche_pdata->dev, "failed to control hub device\n");
arche_pdata       609 drivers/staging/greybus/arche-platform.c 	struct arche_platform_drvdata *arche_pdata = platform_get_drvdata(pdev);
arche_pdata       611 drivers/staging/greybus/arche-platform.c 	arche_platform_poweroff_seq(arche_pdata);