Patchwork mfd: pcap: depend on arch-pxa

login
register
mail settings
Submitter Haojian Zhuang
Date March 6, 2012, 5:30 a.m.
Message ID <1331011808-28307-1-git-send-email-haojian.zhuang@gmail.com>
Download mbox | patch
Permalink /patch/144843/
State New
Headers show

Comments

Haojian Zhuang - March 6, 2012, 5:30 a.m.
drivers/mfd/ezx-pcap.c: In function ‘pcap_isr_work’:
drivers/mfd/ezx-pcap.c:206:2: error: implicit declaration of function
‘pxa_irq_to_gpio’
make[2]: *** [drivers/mfd/ezx-pcap.o] Error 1

PCAP driver invokes irq_to_gpio() directly. This function isn't common
function in most silicons. PCAP driver is enabled for EZX machine with
arch-pxa. Now use pxa_irq_to_gpio() instead.

It's only a workaround for this issue. Acutally the best solution is
using thread irq to fix this issue.

Signed-off-by: Haojian Zhuang <haojian.zhuang@gmail.com>
---
 drivers/mfd/Kconfig    |    2 +-
 drivers/mfd/ezx-pcap.c |    3 ++-
 2 files changed, 3 insertions(+), 2 deletions(-)
Haojian Zhuang - March 14, 2012, 2:32 p.m.
On Tue, Mar 6, 2012 at 1:30 PM, Haojian Zhuang <haojian.zhuang@gmail.com> wrote:
> drivers/mfd/ezx-pcap.c: In function ‘pcap_isr_work’:
> drivers/mfd/ezx-pcap.c:206:2: error: implicit declaration of function
> ‘pxa_irq_to_gpio’
> make[2]: *** [drivers/mfd/ezx-pcap.o] Error 1
>
> PCAP driver invokes irq_to_gpio() directly. This function isn't common
> function in most silicons. PCAP driver is enabled for EZX machine with
> arch-pxa. Now use pxa_irq_to_gpio() instead.
>
> It's only a workaround for this issue. Acutally the best solution is
> using thread irq to fix this issue.
>
> Signed-off-by: Haojian Zhuang <haojian.zhuang@gmail.com>
> ---
>  drivers/mfd/Kconfig    |    2 +-
>  drivers/mfd/ezx-pcap.c |    3 ++-
>  2 files changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
> index f147395..e88d315 100644
> --- a/drivers/mfd/Kconfig
> +++ b/drivers/mfd/Kconfig
> @@ -619,7 +619,7 @@ config AB3100_OTP
>
>  config EZX_PCAP
>        bool "PCAP Support"
> -       depends on GENERIC_HARDIRQS && SPI_MASTER
> +       depends on GENERIC_HARDIRQS && SPI_MASTER && ARCH_PXA
>        help
>          This enables the PCAP ASIC present on EZX Phones. This is
>          needed for MMC, TouchScreen, Sound, USB, etc..
> diff --git a/drivers/mfd/ezx-pcap.c b/drivers/mfd/ezx-pcap.c
> index 43a76c4..e9320e2 100644
> --- a/drivers/mfd/ezx-pcap.c
> +++ b/drivers/mfd/ezx-pcap.c
> @@ -18,6 +18,7 @@
>  #include <linux/mfd/ezx-pcap.h>
>  #include <linux/spi/spi.h>
>  #include <linux/gpio.h>
> +#include <linux/gpio-pxa.h>
>  #include <linux/slab.h>
>
>  #define PCAP_ADC_MAXQ          8
> @@ -202,7 +203,7 @@ static void pcap_isr_work(struct work_struct *work)
>                }
>                local_irq_enable();
>                ezx_pcap_write(pcap, PCAP_REG_MSR, pcap->msr);
> -       } while (gpio_get_value(irq_to_gpio(pcap->spi->irq)));
> +       } while (gpio_get_value(pxa_irq_to_gpio(pcap->spi->irq)));
>  }
>
>  static void pcap_irq_handler(unsigned int irq, struct irq_desc *desc)
> --
> 1.7.5.4
>

Hi Samuel,

How about this patch? Is it OK?

Best Regards
Haojian
Samuel Ortiz - March 16, 2012, 5:14 p.m.
Hi Haojian,

On Tue, Mar 06, 2012 at 01:30:08PM +0800, Haojian Zhuang wrote:
> drivers/mfd/ezx-pcap.c: In function ‘pcap_isr_work’:
> drivers/mfd/ezx-pcap.c:206:2: error: implicit declaration of function
> ‘pxa_irq_to_gpio’
> make[2]: *** [drivers/mfd/ezx-pcap.o] Error 1
You get that error once you replace irq_to_gpio() with pxa_irq_to_gpio().


> PCAP driver invokes irq_to_gpio() directly. This function isn't common
> function in most silicons. PCAP driver is enabled for EZX machine with
> arch-pxa. Now use pxa_irq_to_gpio() instead.
> 
> It's only a workaround for this issue. Acutally the best solution is
> using thread irq to fix this issue.
How would that fix the problem ? Defining irq_to_gpio for the PXA arch sounds
like a better option. I don't particularily like this patch as it restricts
the pcap driver quite a lot.
Would you be able to look at fixing the PXA gpio.h instead ?

Cheers,
Samuel.

Patch

diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
index f147395..e88d315 100644
--- a/drivers/mfd/Kconfig
+++ b/drivers/mfd/Kconfig
@@ -619,7 +619,7 @@  config AB3100_OTP
 
 config EZX_PCAP
 	bool "PCAP Support"
-	depends on GENERIC_HARDIRQS && SPI_MASTER
+	depends on GENERIC_HARDIRQS && SPI_MASTER && ARCH_PXA
 	help
 	  This enables the PCAP ASIC present on EZX Phones. This is
 	  needed for MMC, TouchScreen, Sound, USB, etc..
diff --git a/drivers/mfd/ezx-pcap.c b/drivers/mfd/ezx-pcap.c
index 43a76c4..e9320e2 100644
--- a/drivers/mfd/ezx-pcap.c
+++ b/drivers/mfd/ezx-pcap.c
@@ -18,6 +18,7 @@ 
 #include <linux/mfd/ezx-pcap.h>
 #include <linux/spi/spi.h>
 #include <linux/gpio.h>
+#include <linux/gpio-pxa.h>
 #include <linux/slab.h>
 
 #define PCAP_ADC_MAXQ		8
@@ -202,7 +203,7 @@  static void pcap_isr_work(struct work_struct *work)
 		}
 		local_irq_enable();
 		ezx_pcap_write(pcap, PCAP_REG_MSR, pcap->msr);
-	} while (gpio_get_value(irq_to_gpio(pcap->spi->irq)));
+	} while (gpio_get_value(pxa_irq_to_gpio(pcap->spi->irq)));
 }
 
 static void pcap_irq_handler(unsigned int irq, struct irq_desc *desc)