From: Vaibhav Hiremath Date: Fri, 12 Feb 2016 20:34:12 +0000 (+0530) Subject: greybus: arche-apb-ctrl: Pass only platform_device to _seq fns X-Git-Tag: v4.9-rc1~119^2~378^2~21^2~700 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=6961e0466575608639e91ddbcc62d9385d45a198;p=karo-tx-linux.git greybus: arche-apb-ctrl: Pass only platform_device to _seq fns Pass only pointer to platform_device to _seq fns and fetch handle to arche_apb_ctrl_drvdata from platform_device. This is preparation for support for dynamic switching between operational states for the device, where these functions will be called from parent driver. Testing Done: Tested on EVT1.2 and DB3.5 platform. Signed-off-by: Vaibhav Hiremath Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/staging/greybus/arche-apb-ctrl.c b/drivers/staging/greybus/arche-apb-ctrl.c index 1d3c112e974a..8f6f0962421e 100644 --- a/drivers/staging/greybus/arche-apb-ctrl.c +++ b/drivers/staging/greybus/arche-apb-ctrl.c @@ -71,10 +71,10 @@ static void unexport_gpios(struct arche_apb_ctrl_drvdata *apb) /* * Note: Please do not modify the below sequence, as it is as per the spec */ -static int apb_ctrl_coldboot_seq(struct platform_device *pdev, - struct arche_apb_ctrl_drvdata *apb) +static int apb_ctrl_coldboot_seq(struct platform_device *pdev) { struct device *dev = &pdev->dev; + struct arche_apb_ctrl_drvdata *apb = platform_get_drvdata(pdev); int ret; /* Hold APB in reset state */ @@ -113,8 +113,10 @@ static int apb_ctrl_coldboot_seq(struct platform_device *pdev, return 0; } -static void apb_ctrl_poweroff_seq(struct arche_apb_ctrl_drvdata *apb) +static void apb_ctrl_poweroff_seq(struct platform_device *pdev) { + struct arche_apb_ctrl_drvdata *apb = platform_get_drvdata(pdev); + /* disable the clock */ if (gpio_is_valid(apb->clk_en_gpio)) gpio_set_value(apb->clk_en_gpio, 0); @@ -239,15 +241,16 @@ int arche_apb_ctrl_probe(struct platform_device *pdev) /* Initially set APB to OFF state */ apb->state = ARCHE_PLATFORM_STATE_OFF; - ret = apb_ctrl_coldboot_seq(pdev, apb); + platform_set_drvdata(pdev, apb); + + ret = apb_ctrl_coldboot_seq(pdev); if (ret) { dev_err(dev, "failed to set init state of control signal %d\n", ret); + platform_set_drvdata(pdev, NULL); return ret; } - platform_set_drvdata(pdev, apb); - export_gpios(apb); dev_info(&pdev->dev, "Device registered successfully\n"); @@ -258,7 +261,7 @@ int arche_apb_ctrl_remove(struct platform_device *pdev) { struct arche_apb_ctrl_drvdata *apb = platform_get_drvdata(pdev); - apb_ctrl_poweroff_seq(apb); + apb_ctrl_poweroff_seq(pdev); platform_set_drvdata(pdev, NULL); unexport_gpios(apb);