Skip to content

Commit

Permalink
mfd: Register the ab8500 from db8500-prcmu using the MFD API
Browse files Browse the repository at this point in the history
Hierarchically, the AB8500 is a child of the DB8500 PRCMU. So now that
Device Tree is being used and MFD core code is Device Tree aware, we
can simply register DB8500 PRCMU from Device Tree in the normal way
then allow the DB8500 PRCMU driver to register the AB8500 as a simple
MFD device at probe time.

Signed-off-by: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
  • Loading branch information
Lee Jones authored and Samuel Ortiz committed Jul 8, 2012
1 parent 5d90322 commit 6d11d13
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 14 deletions.
2 changes: 0 additions & 2 deletions arch/arm/mach-ux500/board-mop500.c
Original file line number Diff line number Diff line change
Expand Up @@ -793,8 +793,6 @@ static const struct of_device_id u8500_local_bus_nodes[] = {
/* only create devices below soc node */
{ .compatible = "stericsson,db8500", },
{ .compatible = "stericsson,db8500-prcmu", },
{ .compatible = "stericsson,db8500-prcmu-regulator", },
{ .compatible = "stericsson,ab8500", },
{ .compatible = "stericsson,ab8500-regulator", },
{ .compatible = "simple-bus"},
{ },
Expand Down
12 changes: 0 additions & 12 deletions drivers/mfd/ab8500-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -1230,14 +1230,6 @@ static struct attribute_group ab9540_attr_group = {
.attrs = ab9540_sysfs_entries,
};

static const struct of_device_id ab8500_match[] = {
{
.compatible = "stericsson,ab8500",
.data = (void *)AB8500_VERSION_AB8500,
},
{},
};

static int __devinit ab8500_probe(struct platform_device *pdev)
{
struct ab8500_platform_data *plat = dev_get_platdata(&pdev->dev);
Expand Down Expand Up @@ -1279,9 +1271,6 @@ static int __devinit ab8500_probe(struct platform_device *pdev)

if (platid)
version = platid->driver_data;
else if (np)
version = (unsigned int)
of_match_device(ab8500_match, &pdev->dev)->data;

if (version != AB8500_VERSION_UNDEFINED)
ab8500->version = version;
Expand Down Expand Up @@ -1478,7 +1467,6 @@ static struct platform_driver ab8500_core_driver = {
.driver = {
.name = "ab8500-core",
.owner = THIS_MODULE,
.of_match_table = ab8500_match,
},
.probe = ab8500_probe,
.remove = __devexit_p(ab8500_remove),
Expand Down
15 changes: 15 additions & 0 deletions drivers/mfd/db8500-prcmu.c
Original file line number Diff line number Diff line change
Expand Up @@ -2945,6 +2945,14 @@ static struct regulator_init_data db8500_regulators[DB8500_NUM_REGULATORS] = {
},
};

static struct resource ab8500_resources[] = {
[0] = {
.start = IRQ_DB8500_AB8500,
.end = IRQ_DB8500_AB8500,
.flags = IORESOURCE_IRQ
}
};

static struct mfd_cell db8500_prcmu_devs[] = {
{
.name = "db8500-prcmu-regulators",
Expand All @@ -2956,6 +2964,13 @@ static struct mfd_cell db8500_prcmu_devs[] = {
.name = "cpufreq-u8500",
.of_compatible = "stericsson,cpufreq-u8500",
},
{
.name = "ab8500-core",
.of_compatible = "stericsson,ab8500",
.num_resources = ARRAY_SIZE(ab8500_resources),
.resources = ab8500_resources,
.id = AB8500_VERSION_AB8500,
},
};

/**
Expand Down

0 comments on commit 6d11d13

Please sign in to comment.