[PATCH linux dev-4.13 4/4] fsi/occ: Don't set driver data late
Andrew Jeffery
andrew at aj.id.au
Mon May 21 15:44:35 AEST 2018
On Fri, 18 May 2018, at 11:05, Benjamin Herrenschmidt wrote:
> Until now, the OCC driver was setting the driver data after
> registering the character device and the hwmon device.
>
> This might have been intentional, as doing so makes the initial
> probe of the OCC by the hwmon device fail while the data is NULL
> (provided you are lucky and the hwmon driver doesn't get bound
> asynchronously). That failure used to be necessary, otherwise
> the driver would try to access the SBE fifo at a time when it's
> not ready, causing all sort of problems.
>
> The new SBE fifo driver is much more robust and will return an
> appropriate error code, so that (fragile) tweak is no longer
> necessary.
>
> Signed-off-by: Benjamin Herrenschmidt <benh at kernel.crashing.org>
+1000
Reviewed-by: Andrew Jeffery <andrew at aj.id.au>
> ---
> drivers/fsi/fsi-occ.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/fsi/fsi-occ.c b/drivers/fsi/fsi-occ.c
> index 4bda1b435ecb..170fd8020829 100644
> --- a/drivers/fsi/fsi-occ.c
> +++ b/drivers/fsi/fsi-occ.c
> @@ -836,6 +836,8 @@ static int occ_probe(struct platform_device *pdev)
> occ->idx = ida_simple_get(&occ_ida, 1, INT_MAX, GFP_KERNEL);
> }
>
> + platform_set_drvdata(pdev, occ);
> +
> snprintf(occ->name, sizeof(occ->name), "occ%d", occ->idx);
> occ->mdev.fops = &occ_fops;
> occ->mdev.minor = MISC_DYNAMIC_MINOR;
> @@ -854,8 +856,6 @@ static int occ_probe(struct platform_device *pdev)
> if (!hwmon_dev)
> dev_warn(dev, "failed to create hwmon device\n");
>
> - platform_set_drvdata(pdev, occ);
> -
> return 0;
> }
>
> --
> 2.17.0
>
More information about the openbmc
mailing list