Skip to content

Commit

Permalink
reset: sunxi: allow MFD subdevices probe
Browse files Browse the repository at this point in the history
The current implementation uses sunxi_reset_init function for both early
init and platform device probe.

The sunxi_reset_init function uses DT to retrieve device resources, which
will be an issue if reset controllers are registered from an MFD device
that define resources from mfd_cell definition.

Moreover, we can make of devm functions when we're in the probe context.

Signed-off-by: Boris BREZILLON <boris.brezillon@free-electrons.com>
Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Acked-by: Philipp Zabel <p.zabel@pengutronix.de>
  • Loading branch information
Boris BREZILLON authored and Maxime Ripard committed May 15, 2014
1 parent 1e84443 commit cd90f0c
Showing 1 changed file with 18 additions and 3 deletions.
21 changes: 18 additions & 3 deletions drivers/reset/reset-sunxi.c
Original file line number Diff line number Diff line change
Expand Up @@ -145,16 +145,31 @@ MODULE_DEVICE_TABLE(of, sunxi_reset_dt_ids);

static int sunxi_reset_probe(struct platform_device *pdev)
{
return sunxi_reset_init(pdev->dev.of_node);
struct sunxi_reset_data *data;
struct resource *res;

data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL);
if (!data)
return -ENOMEM;

res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
data->membase = devm_ioremap_resource(&pdev->dev, res);
if (IS_ERR(data->membase))
return PTR_ERR(data->membase);

data->rcdev.owner = THIS_MODULE;
data->rcdev.nr_resets = resource_size(res) * 32;
data->rcdev.ops = &sunxi_reset_ops;
data->rcdev.of_node = pdev->dev.of_node;

return reset_controller_register(&data->rcdev);
}

static int sunxi_reset_remove(struct platform_device *pdev)
{
struct sunxi_reset_data *data = platform_get_drvdata(pdev);

reset_controller_unregister(&data->rcdev);
iounmap(data->membase);
kfree(data);

return 0;
}
Expand Down

0 comments on commit cd90f0c

Please sign in to comment.