diff options
author | Peter Ujfalusi <peter.ujfalusi@ti.com> | 2011-07-05 04:40:33 -0400 |
---|---|---|
committer | Peter Ujfalusi <peter.ujfalusi@ti.com> | 2011-07-07 07:23:10 -0400 |
commit | 0f962ae2dd8655f0800ff3c4b02d5f5a2ff3899e (patch) | |
tree | 55e3e395fa0484702d2f13809251105087fd08f0 /drivers/mfd/twl6040-core.c | |
parent | 1a4cdecec7d639ba2891195dc3f5917fb70653db (diff) |
MFD: twl6040: Use resource to provide irq number for slaves
Provide the irq number for slaves via resource on the
platform device.
The irq number configuration is done in the twl6040-core
at probe time, so machine drivers do not need to be
modified.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Reviewed-by: Felipe Balbi <balbi@ti.com>
Acked-by: Samuel Ortiz <sameo@linux.intel.com>
Diffstat (limited to 'drivers/mfd/twl6040-core.c')
-rw-r--r-- | drivers/mfd/twl6040-core.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/drivers/mfd/twl6040-core.c b/drivers/mfd/twl6040-core.c index cfaedb5581ad..471f4895fb90 100644 --- a/drivers/mfd/twl6040-core.c +++ b/drivers/mfd/twl6040-core.c | |||
@@ -435,6 +435,18 @@ unsigned int twl6040_get_sysclk(struct twl6040 *twl6040) | |||
435 | } | 435 | } |
436 | EXPORT_SYMBOL(twl6040_get_sysclk); | 436 | EXPORT_SYMBOL(twl6040_get_sysclk); |
437 | 437 | ||
438 | static struct resource twl6040_vibra_rsrc[] = { | ||
439 | { | ||
440 | .flags = IORESOURCE_IRQ, | ||
441 | }, | ||
442 | }; | ||
443 | |||
444 | static struct resource twl6040_codec_rsrc[] = { | ||
445 | { | ||
446 | .flags = IORESOURCE_IRQ, | ||
447 | }, | ||
448 | }; | ||
449 | |||
438 | static int __devinit twl6040_probe(struct platform_device *pdev) | 450 | static int __devinit twl6040_probe(struct platform_device *pdev) |
439 | { | 451 | { |
440 | struct twl4030_audio_data *pdata = pdev->dev.platform_data; | 452 | struct twl4030_audio_data *pdata = pdev->dev.platform_data; |
@@ -499,16 +511,29 @@ static int __devinit twl6040_probe(struct platform_device *pdev) | |||
499 | twl6040_set_bits(twl6040, TWL6040_REG_ACCCTL, TWL6040_I2CSEL); | 511 | twl6040_set_bits(twl6040, TWL6040_REG_ACCCTL, TWL6040_I2CSEL); |
500 | 512 | ||
501 | if (pdata->codec) { | 513 | if (pdata->codec) { |
514 | int irq = twl6040->irq_base + TWL6040_IRQ_PLUG; | ||
515 | |||
502 | cell = &twl6040->cells[children]; | 516 | cell = &twl6040->cells[children]; |
503 | cell->name = "twl6040-codec"; | 517 | cell->name = "twl6040-codec"; |
518 | twl6040_codec_rsrc[0].start = irq; | ||
519 | twl6040_codec_rsrc[0].end = irq; | ||
520 | cell->resources = twl6040_codec_rsrc; | ||
521 | cell->num_resources = ARRAY_SIZE(twl6040_codec_rsrc); | ||
504 | cell->platform_data = pdata->codec; | 522 | cell->platform_data = pdata->codec; |
505 | cell->pdata_size = sizeof(*pdata->codec); | 523 | cell->pdata_size = sizeof(*pdata->codec); |
506 | children++; | 524 | children++; |
507 | } | 525 | } |
508 | 526 | ||
509 | if (pdata->vibra) { | 527 | if (pdata->vibra) { |
528 | int irq = twl6040->irq_base + TWL6040_IRQ_VIB; | ||
529 | |||
510 | cell = &twl6040->cells[children]; | 530 | cell = &twl6040->cells[children]; |
511 | cell->name = "twl6040-vibra"; | 531 | cell->name = "twl6040-vibra"; |
532 | twl6040_vibra_rsrc[0].start = irq; | ||
533 | twl6040_vibra_rsrc[0].end = irq; | ||
534 | cell->resources = twl6040_vibra_rsrc; | ||
535 | cell->num_resources = ARRAY_SIZE(twl6040_vibra_rsrc); | ||
536 | |||
512 | cell->platform_data = pdata->vibra; | 537 | cell->platform_data = pdata->vibra; |
513 | cell->pdata_size = sizeof(*pdata->vibra); | 538 | cell->pdata_size = sizeof(*pdata->vibra); |
514 | children++; | 539 | children++; |