From: Felipe Balbi Date: Wed, 23 Nov 2011 14:00:46 +0000 (+0200) Subject: cbus: retu: move irq_chip to our context structure X-Git-Url: https://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fdc9965f7de5ab781a1f6adfe8f5490d4cbaaa54;p=pandora-kernel.git cbus: retu: move irq_chip to our context structure in theory, we could have many retu devices connected to different CBUS buses. The only thing preventing that is the poweroff() function pointer which we need to set. Signed-off-by: Felipe Balbi Signed-off-by: Tony Lindgren --- diff --git a/drivers/cbus/retu.c b/drivers/cbus/retu.c index 5bd88c636e82..25fa4059e5f8 100644 --- a/drivers/cbus/retu.c +++ b/drivers/cbus/retu.c @@ -46,6 +46,8 @@ struct retu { struct mutex mutex; struct device *dev; + struct irq_chip irq_chip; + int irq_base; int irq_end; @@ -247,14 +249,6 @@ static void retu_bus_sync_unlock(struct irq_data *data) mutex_unlock(&retu->mutex); } -static struct irq_chip retu_irq_chip = { - .name = "retu", - .irq_bus_lock = retu_bus_lock, - .irq_bus_sync_unlock = retu_bus_sync_unlock, - .irq_mask = retu_irq_mask, - .irq_unmask = retu_irq_unmask, -}; - static inline void retu_irq_setup(int irq) { #ifdef CONFIG_ARM @@ -272,7 +266,7 @@ static void retu_irq_init(struct retu *retu) for (irq = base; irq < end; irq++) { irq_set_chip_data(irq, retu); - irq_set_chip(irq, &retu_irq_chip); + irq_set_chip(irq, &retu->irq_chip); irq_set_nested_thread(irq, 1); retu_irq_setup(irq); } @@ -409,6 +403,7 @@ static int retu_allocate_children(struct device *parent, int irq_base) */ static int __devinit retu_probe(struct platform_device *pdev) { + struct irq_chip *chip; struct retu *retu; int ret = -ENOMEM; @@ -428,10 +423,19 @@ static int __devinit retu_probe(struct platform_device *pdev) goto err1; } + chip = &retu->irq_chip; + + chip->name = "retu", + chip->irq_bus_lock = retu_bus_lock, + chip->irq_bus_sync_unlock = retu_bus_sync_unlock, + chip->irq_mask = retu_irq_mask, + chip->irq_unmask = retu_irq_unmask, + retu->irq = platform_get_irq(pdev, 0); retu->irq_base = ret; retu->irq_end = ret + MAX_RETU_IRQ_HANDLERS; retu->dev = &pdev->dev; + the_retu = retu; mutex_init(&retu->mutex);