diff mbox

[15/22] pinctrl: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc

Message ID 20150713072815.548358316@linutronix.de
State New
Headers show

Commit Message

Thomas Gleixner July 13, 2015, 8:47 p.m. UTC
From: Jiang Liu <jiang.liu@linux.intel.com>

Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc while we
already have a pointer to corresponding irq_desc.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: linux-gpio@vger.kernel.org
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
 drivers/pinctrl/intel/pinctrl-cherryview.c    |    2 +-
 drivers/pinctrl/intel/pinctrl-intel.c         |    2 +-
 drivers/pinctrl/mediatek/pinctrl-mtk-common.c |    4 ++--
 drivers/pinctrl/nomadik/pinctrl-nomadik.c     |   12 +++++-------
 drivers/pinctrl/pinctrl-amd.c                 |    2 +-
 drivers/pinctrl/pinctrl-at91.c                |    2 +-
 drivers/pinctrl/pinctrl-coh901.c              |    4 ++--
 drivers/pinctrl/pinctrl-rockchip.c            |    4 ++--
 drivers/pinctrl/pinctrl-single.c              |    2 +-
 drivers/pinctrl/pinctrl-st.c                  |    6 +++---
 drivers/pinctrl/qcom/pinctrl-msm.c            |    2 +-
 drivers/pinctrl/samsung/pinctrl-exynos.c      |    8 ++++----
 drivers/pinctrl/samsung/pinctrl-s3c24xx.c     |   18 +++++++++---------
 drivers/pinctrl/samsung/pinctrl-s3c64xx.c     |   22 ++++++++++------------
 drivers/pinctrl/sirf/pinctrl-sirf.c           |    2 +-
 drivers/pinctrl/sunxi/pinctrl-sunxi.c         |    4 ++--
 16 files changed, 46 insertions(+), 50 deletions(-)



--
To unsubscribe from this list: send the line "unsubscribe linux-gpio" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Paul Gortmaker Aug. 31, 2015, 9:28 p.m. UTC | #1
On Mon, Jul 13, 2015 at 4:47 PM, Thomas Gleixner <tglx@linutronix.de> wrote:
> From: Jiang Liu <jiang.liu@linux.intel.com>
>
> Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc while we
> already have a pointer to corresponding irq_desc.

Hi Linus,

It seems that linux-next has this copy of the patch as 5663bb27dec1, which
has a stray irq_desc_get_irq_chip in s3c24xx ; (2nd instance of "irq" is
bogus looking.)   I first assumed it was from tglx since it did not have any
additional SOB lines, but on further investigation I traced it back to sfr's
merge of pinctrl/for-next.

Anyway, it doesn't compile with the extra irq in the name like that, and
that SHA isn't in tip, so it appears to be manually applied to pinctrl vs
merged in.

Paul.
--


>
> Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
> Cc: Linus Walleij <linus.walleij@linaro.org>
> Cc: linux-gpio@vger.kernel.org
> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
> ---
>  drivers/pinctrl/intel/pinctrl-cherryview.c    |    2 +-
>  drivers/pinctrl/intel/pinctrl-intel.c         |    2 +-
>  drivers/pinctrl/mediatek/pinctrl-mtk-common.c |    4 ++--
>  drivers/pinctrl/nomadik/pinctrl-nomadik.c     |   12 +++++-------
>  drivers/pinctrl/pinctrl-amd.c                 |    2 +-
>  drivers/pinctrl/pinctrl-at91.c                |    2 +-
>  drivers/pinctrl/pinctrl-coh901.c              |    4 ++--
>  drivers/pinctrl/pinctrl-rockchip.c            |    4 ++--
>  drivers/pinctrl/pinctrl-single.c              |    2 +-
>  drivers/pinctrl/pinctrl-st.c                  |    6 +++---
>  drivers/pinctrl/qcom/pinctrl-msm.c            |    2 +-
>  drivers/pinctrl/samsung/pinctrl-exynos.c      |    8 ++++----
>  drivers/pinctrl/samsung/pinctrl-s3c24xx.c     |   18 +++++++++---------
>  drivers/pinctrl/samsung/pinctrl-s3c64xx.c     |   22 ++++++++++------------
>  drivers/pinctrl/sirf/pinctrl-sirf.c           |    2 +-
>  drivers/pinctrl/sunxi/pinctrl-sunxi.c         |    4 ++--
>  16 files changed, 46 insertions(+), 50 deletions(-)
>
> Index: tip/drivers/pinctrl/intel/pinctrl-cherryview.c
> ===================================================================
> --- tip.orig/drivers/pinctrl/intel/pinctrl-cherryview.c
> +++ tip/drivers/pinctrl/intel/pinctrl-cherryview.c
> @@ -1412,7 +1412,7 @@ static void chv_gpio_irq_handler(unsigne
>  {
>         struct gpio_chip *gc = irq_desc_get_handler_data(desc);
>         struct chv_pinctrl *pctrl = gpiochip_to_pinctrl(gc);
> -       struct irq_chip *chip = irq_get_chip(irq);
> +       struct irq_chip *chip = irq_desc_get_chip(desc);
>         unsigned long pending;
>         u32 intr_line;
>
> Index: tip/drivers/pinctrl/intel/pinctrl-intel.c
> ===================================================================
> --- tip.orig/drivers/pinctrl/intel/pinctrl-intel.c
> +++ tip/drivers/pinctrl/intel/pinctrl-intel.c
> @@ -840,7 +840,7 @@ static void intel_gpio_irq_handler(unsig
>  {
>         struct gpio_chip *gc = irq_desc_get_handler_data(desc);
>         struct intel_pinctrl *pctrl = gpiochip_to_pinctrl(gc);
> -       struct irq_chip *chip = irq_get_chip(irq);
> +       struct irq_chip *chip = irq_desc_get_chip(desc);
>         int i;
>
>         chained_irq_enter(chip, desc);
> Index: tip/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
> ===================================================================
> --- tip.orig/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
> +++ tip/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
> @@ -1118,8 +1118,8 @@ mtk_eint_debounce_process(struct mtk_pin
>
>  static void mtk_eint_irq_handler(unsigned irq, struct irq_desc *desc)
>  {
> -       struct irq_chip *chip = irq_get_chip(irq);
> -       struct mtk_pinctrl *pctl = irq_get_handler_data(irq);
> +       struct irq_chip *chip = irq_desc_get_chip(desc);
> +       struct mtk_pinctrl *pctl = irq_desc_get_handler_data(desc);
>         unsigned int status, eint_num;
>         int offset, index, virq;
>         const struct mtk_eint_offsets *eint_offsets =
> Index: tip/drivers/pinctrl/nomadik/pinctrl-nomadik.c
> ===================================================================
> --- tip.orig/drivers/pinctrl/nomadik/pinctrl-nomadik.c
> +++ tip/drivers/pinctrl/nomadik/pinctrl-nomadik.c
> @@ -843,10 +843,9 @@ static void nmk_gpio_irq_shutdown(struct
>         clk_disable(nmk_chip->clk);
>  }
>
> -static void __nmk_gpio_irq_handler(unsigned int irq, struct irq_desc *desc,
> -                                  u32 status)
> +static void __nmk_gpio_irq_handler(struct irq_desc *desc, u32 status)
>  {
> -       struct irq_chip *host_chip = irq_get_chip(irq);
> +       struct irq_chip *host_chip = irq_desc_get_chip(desc);
>         struct gpio_chip *chip = irq_desc_get_handler_data(desc);
>
>         chained_irq_enter(host_chip, desc);
> @@ -871,17 +870,16 @@ static void nmk_gpio_irq_handler(unsigne
>         status = readl(nmk_chip->addr + NMK_GPIO_IS);
>         clk_disable(nmk_chip->clk);
>
> -       __nmk_gpio_irq_handler(irq, desc, status);
> +       __nmk_gpio_irq_handler(desc, status);
>  }
>
> -static void nmk_gpio_latent_irq_handler(unsigned int irq,
> -                                          struct irq_desc *desc)
> +static void nmk_gpio_latent_irq_handler(unsigned int irq, struct irq_desc *desc)
>  {
>         struct gpio_chip *chip = irq_desc_get_handler_data(desc);
>         struct nmk_gpio_chip *nmk_chip = container_of(chip, struct nmk_gpio_chip, chip);
>         u32 status = nmk_chip->get_latent_status(nmk_chip->bank);
>
> -       __nmk_gpio_irq_handler(irq, desc, status);
> +       __nmk_gpio_irq_handler(desc, status);
>  }
>
>  /* I/O Functions */
> Index: tip/drivers/pinctrl/pinctrl-amd.c
> ===================================================================
> --- tip.orig/drivers/pinctrl/pinctrl-amd.c
> +++ tip/drivers/pinctrl/pinctrl-amd.c
> @@ -501,7 +501,7 @@ static void amd_gpio_irq_handler(unsigne
>         u64 reg64;
>         int handled = 0;
>         unsigned long flags;
> -       struct irq_chip *chip = irq_get_chip(irq);
> +       struct irq_chip *chip = irq_desc_get_chip(desc);
>         struct gpio_chip *gc = irq_desc_get_handler_data(desc);
>         struct amd_gpio *gpio_dev = to_amd_gpio(gc);
>
> Index: tip/drivers/pinctrl/pinctrl-at91.c
> ===================================================================
> --- tip.orig/drivers/pinctrl/pinctrl-at91.c
> +++ tip/drivers/pinctrl/pinctrl-at91.c
> @@ -1596,7 +1596,7 @@ static struct irq_chip gpio_irqchip = {
>
>  static void gpio_irq_handler(unsigned irq, struct irq_desc *desc)
>  {
> -       struct irq_chip *chip = irq_get_chip(irq);
> +       struct irq_chip *chip = irq_desc_get_chip(desc);
>         struct gpio_chip *gpio_chip = irq_desc_get_handler_data(desc);
>         struct at91_gpio_chip *at91_gpio = container_of(gpio_chip,
>                                            struct at91_gpio_chip, chip);
> Index: tip/drivers/pinctrl/pinctrl-coh901.c
> ===================================================================
> --- tip.orig/drivers/pinctrl/pinctrl-coh901.c
> +++ tip/drivers/pinctrl/pinctrl-coh901.c
> @@ -521,8 +521,8 @@ static struct irq_chip u300_gpio_irqchip
>
>  static void u300_gpio_irq_handler(unsigned irq, struct irq_desc *desc)
>  {
> -       struct irq_chip *parent_chip = irq_get_chip(irq);
> -       struct gpio_chip *chip = irq_get_handler_data(irq);
> +       struct irq_chip *parent_chip = irq_desc_get_chip(desc);
> +       struct gpio_chip *chip = irq_desc_get_handler_data(desc);
>         struct u300_gpio *gpio = to_u300_gpio(chip);
>         struct u300_gpio_port *port = &gpio->ports[irq - chip->base];
>         int pinoffset = port->number << 3; /* get the right stride */
> Index: tip/drivers/pinctrl/pinctrl-rockchip.c
> ===================================================================
> --- tip.orig/drivers/pinctrl/pinctrl-rockchip.c
> +++ tip/drivers/pinctrl/pinctrl-rockchip.c
> @@ -1471,8 +1471,8 @@ static const struct gpio_chip rockchip_g
>
>  static void rockchip_irq_demux(unsigned int irq, struct irq_desc *desc)
>  {
> -       struct irq_chip *chip = irq_get_chip(irq);
> -       struct rockchip_pin_bank *bank = irq_get_handler_data(irq);
> +       struct irq_chip *chip = irq_desc_get_chip(desc);
> +       struct rockchip_pin_bank *bank = irq_desc_get_handler_data(desc);
>         u32 pend;
>
>         dev_dbg(bank->drvdata->dev, "got irq for bank %s\n", bank->name);
> Index: tip/drivers/pinctrl/pinctrl-single.c
> ===================================================================
> --- tip.orig/drivers/pinctrl/pinctrl-single.c
> +++ tip/drivers/pinctrl/pinctrl-single.c
> @@ -1684,7 +1684,7 @@ static void pcs_irq_chain_handler(unsign
>         struct pcs_soc_data *pcs_soc = irq_desc_get_handler_data(desc);
>         struct irq_chip *chip;
>
> -       chip = irq_get_chip(irq);
> +       chip = irq_desc_get_chip(desc);
>         chained_irq_enter(chip, desc);
>         pcs_irq_handle(pcs_soc);
>         /* REVISIT: export and add handle_bad_irq(irq, desc)? */
> Index: tip/drivers/pinctrl/pinctrl-st.c
> ===================================================================
> --- tip.orig/drivers/pinctrl/pinctrl-st.c
> +++ tip/drivers/pinctrl/pinctrl-st.c
> @@ -1463,7 +1463,7 @@ static void __gpio_irq_handler(struct st
>  static void st_gpio_irq_handler(unsigned irq, struct irq_desc *desc)
>  {
>         /* interrupt dedicated per bank */
> -       struct irq_chip *chip = irq_get_chip(irq);
> +       struct irq_chip *chip = irq_desc_get_chip(desc);
>         struct gpio_chip *gc = irq_desc_get_handler_data(desc);
>         struct st_gpio_bank *bank = gpio_chip_to_bank(gc);
>
> @@ -1474,8 +1474,8 @@ static void st_gpio_irq_handler(unsigned
>
>  static void st_gpio_irqmux_handler(unsigned irq, struct irq_desc *desc)
>  {
> -       struct irq_chip *chip = irq_get_chip(irq);
> -       struct st_pinctrl *info = irq_get_handler_data(irq);
> +       struct irq_chip *chip = irq_desc_get_chip(desc);
> +       struct st_pinctrl *info = irq_desc_get_handler_data(desc);
>         unsigned long status;
>         int n;
>
> Index: tip/drivers/pinctrl/qcom/pinctrl-msm.c
> ===================================================================
> --- tip.orig/drivers/pinctrl/qcom/pinctrl-msm.c
> +++ tip/drivers/pinctrl/qcom/pinctrl-msm.c
> @@ -769,7 +769,7 @@ static void msm_gpio_irq_handler(unsigne
>         struct gpio_chip *gc = irq_desc_get_handler_data(desc);
>         const struct msm_pingroup *g;
>         struct msm_pinctrl *pctrl = to_msm_pinctrl(gc);
> -       struct irq_chip *chip = irq_get_chip(irq);
> +       struct irq_chip *chip = irq_desc_get_chip(desc);
>         int irq_pin;
>         int handled = 0;
>         u32 val;
> Index: tip/drivers/pinctrl/samsung/pinctrl-exynos.c
> ===================================================================
> --- tip.orig/drivers/pinctrl/samsung/pinctrl-exynos.c
> +++ tip/drivers/pinctrl/samsung/pinctrl-exynos.c
> @@ -422,9 +422,9 @@ static const struct of_device_id exynos_
>  /* interrupt handler for wakeup interrupts 0..15 */
>  static void exynos_irq_eint0_15(unsigned int irq, struct irq_desc *desc)
>  {
> -       struct exynos_weint_data *eintd = irq_get_handler_data(irq);
> +       struct exynos_weint_data *eintd = irq_desc_get_handler_data(desc);
>         struct samsung_pin_bank *bank = eintd->bank;
> -       struct irq_chip *chip = irq_get_chip(irq);
> +       struct irq_chip *chip = irq_desc_get_chip(desc);
>         int eint_irq;
>
>         chained_irq_enter(chip, desc);
> @@ -454,8 +454,8 @@ static inline void exynos_irq_demux_eint
>  /* interrupt handler for wakeup interrupt 16 */
>  static void exynos_irq_demux_eint16_31(unsigned int irq, struct irq_desc *desc)
>  {
> -       struct irq_chip *chip = irq_get_chip(irq);
> -       struct exynos_muxed_weint_data *eintd = irq_get_handler_data(irq);
> +       struct irq_chip *chip = irq_desc_get_chip(desc);
> +       struct exynos_muxed_weint_data *eintd = irq_desc_get_handler_data(desc);
>         struct samsung_pinctrl_drv_data *d = eintd->banks[0]->drvdata;
>         unsigned long pend;
>         unsigned long mask;
> Index: tip/drivers/pinctrl/samsung/pinctrl-s3c24xx.c
> ===================================================================
> --- tip.orig/drivers/pinctrl/samsung/pinctrl-s3c24xx.c
> +++ tip/drivers/pinctrl/samsung/pinctrl-s3c24xx.c
> @@ -243,7 +243,7 @@ static struct irq_chip s3c2410_eint0_3_c
>  static void s3c2410_demux_eint0_3(unsigned int irq, struct irq_desc *desc)
>  {
>         struct irq_data *data = irq_desc_get_irq_data(desc);
> -       struct s3c24xx_eint_data *eint_data = irq_get_handler_data(irq);
> +       struct s3c24xx_eint_data *eint_data = irq_desc_get_handler_data(desc);
>         unsigned int virq;
>
>         /* the first 4 eints have a simple 1 to 1 mapping */
> @@ -297,9 +297,9 @@ static struct irq_chip s3c2412_eint0_3_c
>
>  static void s3c2412_demux_eint0_3(unsigned int irq, struct irq_desc *desc)
>  {
> -       struct irq_chip *chip = irq_get_chip(irq);
> +       struct s3c24xx_eint_data *eint_data = irq_desc_get_handler_data(desc);
>         struct irq_data *data = irq_desc_get_irq_data(desc);
> -       struct s3c24xx_eint_data *eint_data = irq_get_handler_data(irq);
> +       struct irq_chip *chip = irq_data_get_irq_chip(data);
>         unsigned int virq;
>
>         chained_irq_enter(chip, desc);
> @@ -357,11 +357,11 @@ static struct irq_chip s3c24xx_eint_chip
>         .irq_set_type   = s3c24xx_eint_type,
>  };
>
> -static inline void s3c24xx_demux_eint(unsigned int irq, struct irq_desc *desc,
> +static inline void s3c24xx_demux_eint(struct irq_desc *desc,
>                                       u32 offset, u32 range)
>  {
> -       struct irq_chip *chip = irq_get_chip(irq);
> -       struct s3c24xx_eint_data *data = irq_get_handler_data(irq);
> +       struct s3c24xx_eint_data *data = irq_desc_get_handler_data(desc);
> +       struct irq_chip *chip = irq_desc_get_irq_chip(desc);
>         struct samsung_pinctrl_drv_data *d = data->drvdata;
>         unsigned int pend, mask;
>
> @@ -374,7 +374,7 @@ static inline void s3c24xx_demux_eint(un
>         pend &= range;
>
>         while (pend) {
> -               unsigned int virq;
> +               unsigned int virq, irq;
>
>                 irq = __ffs(pend);
>                 pend &= ~(1 << irq);
> @@ -390,12 +390,12 @@ static inline void s3c24xx_demux_eint(un
>
>  static void s3c24xx_demux_eint4_7(unsigned int irq, struct irq_desc *desc)
>  {
> -       s3c24xx_demux_eint(irq, desc, 0, 0xf0);
> +       s3c24xx_demux_eint(desc, 0, 0xf0);
>  }
>
>  static void s3c24xx_demux_eint8_23(unsigned int irq, struct irq_desc *desc)
>  {
> -       s3c24xx_demux_eint(irq, desc, 8, 0xffff00);
> +       s3c24xx_demux_eint(desc, 8, 0xffff00);
>  }
>
>  static irq_flow_handler_t s3c2410_eint_handlers[NUM_EINT_IRQ] = {
> Index: tip/drivers/pinctrl/samsung/pinctrl-s3c64xx.c
> ===================================================================
> --- tip.orig/drivers/pinctrl/samsung/pinctrl-s3c64xx.c
> +++ tip/drivers/pinctrl/samsung/pinctrl-s3c64xx.c
> @@ -410,8 +410,8 @@ static const struct irq_domain_ops s3c64
>
>  static void s3c64xx_eint_gpio_irq(unsigned int irq, struct irq_desc *desc)
>  {
> -       struct irq_chip *chip = irq_get_chip(irq);
> -       struct s3c64xx_eint_gpio_data *data = irq_get_handler_data(irq);
> +       struct irq_chip *chip = irq_desc_get_chip(desc);
> +       struct s3c64xx_eint_gpio_data *data = irq_desc_get_handler_data(desc);
>         struct samsung_pinctrl_drv_data *drvdata = data->drvdata;
>
>         chained_irq_enter(chip, desc);
> @@ -599,11 +599,10 @@ static struct irq_chip s3c64xx_eint0_irq
>         .irq_set_type   = s3c64xx_eint0_irq_set_type,
>  };
>
> -static inline void s3c64xx_irq_demux_eint(unsigned int irq,
> -                                       struct irq_desc *desc, u32 range)
> +static inline void s3c64xx_irq_demux_eint(struct irq_desc *desc, u32 range)
>  {
> -       struct irq_chip *chip = irq_get_chip(irq);
> -       struct s3c64xx_eint0_data *data = irq_get_handler_data(irq);
> +       struct irq_chip *chip = irq_desc_get_chip(desc);
> +       struct s3c64xx_eint0_data *data = irq_desc_get_handler_data(desc);
>         struct samsung_pinctrl_drv_data *drvdata = data->drvdata;
>         unsigned int pend, mask;
>
> @@ -616,11 +615,10 @@ static inline void s3c64xx_irq_demux_ein
>         pend &= range;
>
>         while (pend) {
> -               unsigned int virq;
> +               unsigned int virq, irq;
>
>                 irq = fls(pend) - 1;
>                 pend &= ~(1 << irq);
> -
>                 virq = irq_linear_revmap(data->domains[irq], data->pins[irq]);
>                 /*
>                  * Something must be really wrong if an unmapped EINT
> @@ -636,22 +634,22 @@ static inline void s3c64xx_irq_demux_ein
>
>  static void s3c64xx_demux_eint0_3(unsigned int irq, struct irq_desc *desc)
>  {
> -       s3c64xx_irq_demux_eint(irq, desc, 0xf);
> +       s3c64xx_irq_demux_eint(desc, 0xf);
>  }
>
>  static void s3c64xx_demux_eint4_11(unsigned int irq, struct irq_desc *desc)
>  {
> -       s3c64xx_irq_demux_eint(irq, desc, 0xff0);
> +       s3c64xx_irq_demux_eint(desc, 0xff0);
>  }
>
>  static void s3c64xx_demux_eint12_19(unsigned int irq, struct irq_desc *desc)
>  {
> -       s3c64xx_irq_demux_eint(irq, desc, 0xff000);
> +       s3c64xx_irq_demux_eint(desc, 0xff000);
>  }
>
>  static void s3c64xx_demux_eint20_27(unsigned int irq, struct irq_desc *desc)
>  {
> -       s3c64xx_irq_demux_eint(irq, desc, 0xff00000);
> +       s3c64xx_irq_demux_eint(desc, 0xff00000);
>  }
>
>  static irq_flow_handler_t s3c64xx_eint0_handlers[NUM_EINT0_IRQ] = {
> Index: tip/drivers/pinctrl/sirf/pinctrl-sirf.c
> ===================================================================
> --- tip.orig/drivers/pinctrl/sirf/pinctrl-sirf.c
> +++ tip/drivers/pinctrl/sirf/pinctrl-sirf.c
> @@ -552,7 +552,7 @@ static void sirfsoc_gpio_handle_irq(unsi
>         struct sirfsoc_gpio_bank *bank;
>         u32 status, ctrl;
>         int idx = 0;
> -       struct irq_chip *chip = irq_get_chip(irq);
> +       struct irq_chip *chip = irq_desc_get_chip(desc);
>         int i;
>
>         for (i = 0; i < SIRFSOC_GPIO_NO_OF_BANKS; i++) {
> Index: tip/drivers/pinctrl/sunxi/pinctrl-sunxi.c
> ===================================================================
> --- tip.orig/drivers/pinctrl/sunxi/pinctrl-sunxi.c
> +++ tip/drivers/pinctrl/sunxi/pinctrl-sunxi.c
> @@ -711,8 +711,8 @@ static struct irq_chip sunxi_pinctrl_lev
>
>  static void sunxi_pinctrl_irq_handler(unsigned irq, struct irq_desc *desc)
>  {
> -       struct irq_chip *chip = irq_get_chip(irq);
> -       struct sunxi_pinctrl *pctl = irq_get_handler_data(irq);
> +       struct irq_chip *chip = irq_desc_get_chip(desc);
> +       struct sunxi_pinctrl *pctl = irq_desc_get_handler_data(desc);
>         unsigned long bank, reg, val;
>
>         for (bank = 0; bank < pctl->desc->irq_banks; bank++)
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
--
To unsubscribe from this list: send the line "unsubscribe linux-gpio" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Linus Walleij Sept. 8, 2015, 2 p.m. UTC | #2
On Mon, Aug 31, 2015 at 11:28 PM, Paul Gortmaker
<paul.gortmaker@windriver.com> wrote:
> On Mon, Jul 13, 2015 at 4:47 PM, Thomas Gleixner <tglx@linutronix.de> wrote:
>> From: Jiang Liu <jiang.liu@linux.intel.com>
>>
>> Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc while we
>> already have a pointer to corresponding irq_desc.
>
> Hi Linus,
>
> It seems that linux-next has this copy of the patch as 5663bb27dec1, which
> has a stray irq_desc_get_irq_chip in s3c24xx ; (2nd instance of "irq" is
> bogus looking.)   I first assumed it was from tglx since it did not have any
> additional SOB lines, but on further investigation I traced it back to sfr's
> merge of pinctrl/for-next.

Hm, saw this a bit late I guess.

Torvalds has merged my trees, is there a problem in mainline
that need to be addressed or did this fix itself?

Yours,
Linus Walleij
--
To unsubscribe from this list: send the line "unsubscribe linux-gpio" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Thomas Gleixner Sept. 8, 2015, 2:10 p.m. UTC | #3
On Tue, 8 Sep 2015, Linus Walleij wrote:
> On Mon, Aug 31, 2015 at 11:28 PM, Paul Gortmaker
> <paul.gortmaker@windriver.com> wrote:
> > On Mon, Jul 13, 2015 at 4:47 PM, Thomas Gleixner <tglx@linutronix.de> wrote:
> >> From: Jiang Liu <jiang.liu@linux.intel.com>
> >>
> >> Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc while we
> >> already have a pointer to corresponding irq_desc.
> >
> > Hi Linus,
> >
> > It seems that linux-next has this copy of the patch as 5663bb27dec1, which
> > has a stray irq_desc_get_irq_chip in s3c24xx ; (2nd instance of "irq" is
> > bogus looking.)   I first assumed it was from tglx since it did not have any
> > additional SOB lines, but on further investigation I traced it back to sfr's
> > merge of pinctrl/for-next.
> 
> Hm, saw this a bit late I guess.
> 
> Torvalds has merged my trees, is there a problem in mainline
> that need to be addressed or did this fix itself?

No, it's buggered in Linus tree as well.

--
To unsubscribe from this list: send the line "unsubscribe linux-gpio" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Linus Walleij Sept. 8, 2015, 2:50 p.m. UTC | #4
On Tue, Sep 8, 2015 at 4:10 PM, Thomas Gleixner <tglx@linutronix.de> wrote:
> On Tue, 8 Sep 2015, Linus Walleij wrote:
>> On Mon, Aug 31, 2015 at 11:28 PM, Paul Gortmaker
>> <paul.gortmaker@windriver.com> wrote:
>> > On Mon, Jul 13, 2015 at 4:47 PM, Thomas Gleixner <tglx@linutronix.de> wrote:
>> >> From: Jiang Liu <jiang.liu@linux.intel.com>
>> >>
>> >> Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc while we
>> >> already have a pointer to corresponding irq_desc.
>> >
>> > Hi Linus,
>> >
>> > It seems that linux-next has this copy of the patch as 5663bb27dec1, which
>> > has a stray irq_desc_get_irq_chip in s3c24xx ; (2nd instance of "irq" is
>> > bogus looking.)   I first assumed it was from tglx since it did not have any
>> > additional SOB lines, but on further investigation I traced it back to sfr's
>> > merge of pinctrl/for-next.
>>
>> Hm, saw this a bit late I guess.
>>
>> Torvalds has merged my trees, is there a problem in mainline
>> that need to be addressed or did this fix itself?
>
> No, it's buggered in Linus tree as well.

OK fixing it.

Yours,
Linus Walleij
--
To unsubscribe from this list: send the line "unsubscribe linux-gpio" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

Index: tip/drivers/pinctrl/intel/pinctrl-cherryview.c
===================================================================
--- tip.orig/drivers/pinctrl/intel/pinctrl-cherryview.c
+++ tip/drivers/pinctrl/intel/pinctrl-cherryview.c
@@ -1412,7 +1412,7 @@  static void chv_gpio_irq_handler(unsigne
 {
 	struct gpio_chip *gc = irq_desc_get_handler_data(desc);
 	struct chv_pinctrl *pctrl = gpiochip_to_pinctrl(gc);
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned long pending;
 	u32 intr_line;
 
Index: tip/drivers/pinctrl/intel/pinctrl-intel.c
===================================================================
--- tip.orig/drivers/pinctrl/intel/pinctrl-intel.c
+++ tip/drivers/pinctrl/intel/pinctrl-intel.c
@@ -840,7 +840,7 @@  static void intel_gpio_irq_handler(unsig
 {
 	struct gpio_chip *gc = irq_desc_get_handler_data(desc);
 	struct intel_pinctrl *pctrl = gpiochip_to_pinctrl(gc);
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 	int i;
 
 	chained_irq_enter(chip, desc);
Index: tip/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
===================================================================
--- tip.orig/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
+++ tip/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
@@ -1118,8 +1118,8 @@  mtk_eint_debounce_process(struct mtk_pin
 
 static void mtk_eint_irq_handler(unsigned irq, struct irq_desc *desc)
 {
-	struct irq_chip *chip = irq_get_chip(irq);
-	struct mtk_pinctrl *pctl = irq_get_handler_data(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
+	struct mtk_pinctrl *pctl = irq_desc_get_handler_data(desc);
 	unsigned int status, eint_num;
 	int offset, index, virq;
 	const struct mtk_eint_offsets *eint_offsets =
Index: tip/drivers/pinctrl/nomadik/pinctrl-nomadik.c
===================================================================
--- tip.orig/drivers/pinctrl/nomadik/pinctrl-nomadik.c
+++ tip/drivers/pinctrl/nomadik/pinctrl-nomadik.c
@@ -843,10 +843,9 @@  static void nmk_gpio_irq_shutdown(struct
 	clk_disable(nmk_chip->clk);
 }
 
-static void __nmk_gpio_irq_handler(unsigned int irq, struct irq_desc *desc,
-				   u32 status)
+static void __nmk_gpio_irq_handler(struct irq_desc *desc, u32 status)
 {
-	struct irq_chip *host_chip = irq_get_chip(irq);
+	struct irq_chip *host_chip = irq_desc_get_chip(desc);
 	struct gpio_chip *chip = irq_desc_get_handler_data(desc);
 
 	chained_irq_enter(host_chip, desc);
@@ -871,17 +870,16 @@  static void nmk_gpio_irq_handler(unsigne
 	status = readl(nmk_chip->addr + NMK_GPIO_IS);
 	clk_disable(nmk_chip->clk);
 
-	__nmk_gpio_irq_handler(irq, desc, status);
+	__nmk_gpio_irq_handler(desc, status);
 }
 
-static void nmk_gpio_latent_irq_handler(unsigned int irq,
-					   struct irq_desc *desc)
+static void nmk_gpio_latent_irq_handler(unsigned int irq, struct irq_desc *desc)
 {
 	struct gpio_chip *chip = irq_desc_get_handler_data(desc);
 	struct nmk_gpio_chip *nmk_chip = container_of(chip, struct nmk_gpio_chip, chip);
 	u32 status = nmk_chip->get_latent_status(nmk_chip->bank);
 
-	__nmk_gpio_irq_handler(irq, desc, status);
+	__nmk_gpio_irq_handler(desc, status);
 }
 
 /* I/O Functions */
Index: tip/drivers/pinctrl/pinctrl-amd.c
===================================================================
--- tip.orig/drivers/pinctrl/pinctrl-amd.c
+++ tip/drivers/pinctrl/pinctrl-amd.c
@@ -501,7 +501,7 @@  static void amd_gpio_irq_handler(unsigne
 	u64 reg64;
 	int handled = 0;
 	unsigned long flags;
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct gpio_chip *gc = irq_desc_get_handler_data(desc);
 	struct amd_gpio *gpio_dev = to_amd_gpio(gc);
 
Index: tip/drivers/pinctrl/pinctrl-at91.c
===================================================================
--- tip.orig/drivers/pinctrl/pinctrl-at91.c
+++ tip/drivers/pinctrl/pinctrl-at91.c
@@ -1596,7 +1596,7 @@  static struct irq_chip gpio_irqchip = {
 
 static void gpio_irq_handler(unsigned irq, struct irq_desc *desc)
 {
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct gpio_chip *gpio_chip = irq_desc_get_handler_data(desc);
 	struct at91_gpio_chip *at91_gpio = container_of(gpio_chip,
 					   struct at91_gpio_chip, chip);
Index: tip/drivers/pinctrl/pinctrl-coh901.c
===================================================================
--- tip.orig/drivers/pinctrl/pinctrl-coh901.c
+++ tip/drivers/pinctrl/pinctrl-coh901.c
@@ -521,8 +521,8 @@  static struct irq_chip u300_gpio_irqchip
 
 static void u300_gpio_irq_handler(unsigned irq, struct irq_desc *desc)
 {
-	struct irq_chip *parent_chip = irq_get_chip(irq);
-	struct gpio_chip *chip = irq_get_handler_data(irq);
+	struct irq_chip *parent_chip = irq_desc_get_chip(desc);
+	struct gpio_chip *chip = irq_desc_get_handler_data(desc);
 	struct u300_gpio *gpio = to_u300_gpio(chip);
 	struct u300_gpio_port *port = &gpio->ports[irq - chip->base];
 	int pinoffset = port->number << 3; /* get the right stride */
Index: tip/drivers/pinctrl/pinctrl-rockchip.c
===================================================================
--- tip.orig/drivers/pinctrl/pinctrl-rockchip.c
+++ tip/drivers/pinctrl/pinctrl-rockchip.c
@@ -1471,8 +1471,8 @@  static const struct gpio_chip rockchip_g
 
 static void rockchip_irq_demux(unsigned int irq, struct irq_desc *desc)
 {
-	struct irq_chip *chip = irq_get_chip(irq);
-	struct rockchip_pin_bank *bank = irq_get_handler_data(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
+	struct rockchip_pin_bank *bank = irq_desc_get_handler_data(desc);
 	u32 pend;
 
 	dev_dbg(bank->drvdata->dev, "got irq for bank %s\n", bank->name);
Index: tip/drivers/pinctrl/pinctrl-single.c
===================================================================
--- tip.orig/drivers/pinctrl/pinctrl-single.c
+++ tip/drivers/pinctrl/pinctrl-single.c
@@ -1684,7 +1684,7 @@  static void pcs_irq_chain_handler(unsign
 	struct pcs_soc_data *pcs_soc = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip;
 
-	chip = irq_get_chip(irq);
+	chip = irq_desc_get_chip(desc);
 	chained_irq_enter(chip, desc);
 	pcs_irq_handle(pcs_soc);
 	/* REVISIT: export and add handle_bad_irq(irq, desc)? */
Index: tip/drivers/pinctrl/pinctrl-st.c
===================================================================
--- tip.orig/drivers/pinctrl/pinctrl-st.c
+++ tip/drivers/pinctrl/pinctrl-st.c
@@ -1463,7 +1463,7 @@  static void __gpio_irq_handler(struct st
 static void st_gpio_irq_handler(unsigned irq, struct irq_desc *desc)
 {
 	/* interrupt dedicated per bank */
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct gpio_chip *gc = irq_desc_get_handler_data(desc);
 	struct st_gpio_bank *bank = gpio_chip_to_bank(gc);
 
@@ -1474,8 +1474,8 @@  static void st_gpio_irq_handler(unsigned
 
 static void st_gpio_irqmux_handler(unsigned irq, struct irq_desc *desc)
 {
-	struct irq_chip *chip = irq_get_chip(irq);
-	struct st_pinctrl *info = irq_get_handler_data(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
+	struct st_pinctrl *info = irq_desc_get_handler_data(desc);
 	unsigned long status;
 	int n;
 
Index: tip/drivers/pinctrl/qcom/pinctrl-msm.c
===================================================================
--- tip.orig/drivers/pinctrl/qcom/pinctrl-msm.c
+++ tip/drivers/pinctrl/qcom/pinctrl-msm.c
@@ -769,7 +769,7 @@  static void msm_gpio_irq_handler(unsigne
 	struct gpio_chip *gc = irq_desc_get_handler_data(desc);
 	const struct msm_pingroup *g;
 	struct msm_pinctrl *pctrl = to_msm_pinctrl(gc);
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 	int irq_pin;
 	int handled = 0;
 	u32 val;
Index: tip/drivers/pinctrl/samsung/pinctrl-exynos.c
===================================================================
--- tip.orig/drivers/pinctrl/samsung/pinctrl-exynos.c
+++ tip/drivers/pinctrl/samsung/pinctrl-exynos.c
@@ -422,9 +422,9 @@  static const struct of_device_id exynos_
 /* interrupt handler for wakeup interrupts 0..15 */
 static void exynos_irq_eint0_15(unsigned int irq, struct irq_desc *desc)
 {
-	struct exynos_weint_data *eintd = irq_get_handler_data(irq);
+	struct exynos_weint_data *eintd = irq_desc_get_handler_data(desc);
 	struct samsung_pin_bank *bank = eintd->bank;
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 	int eint_irq;
 
 	chained_irq_enter(chip, desc);
@@ -454,8 +454,8 @@  static inline void exynos_irq_demux_eint
 /* interrupt handler for wakeup interrupt 16 */
 static void exynos_irq_demux_eint16_31(unsigned int irq, struct irq_desc *desc)
 {
-	struct irq_chip *chip = irq_get_chip(irq);
-	struct exynos_muxed_weint_data *eintd = irq_get_handler_data(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
+	struct exynos_muxed_weint_data *eintd = irq_desc_get_handler_data(desc);
 	struct samsung_pinctrl_drv_data *d = eintd->banks[0]->drvdata;
 	unsigned long pend;
 	unsigned long mask;
Index: tip/drivers/pinctrl/samsung/pinctrl-s3c24xx.c
===================================================================
--- tip.orig/drivers/pinctrl/samsung/pinctrl-s3c24xx.c
+++ tip/drivers/pinctrl/samsung/pinctrl-s3c24xx.c
@@ -243,7 +243,7 @@  static struct irq_chip s3c2410_eint0_3_c
 static void s3c2410_demux_eint0_3(unsigned int irq, struct irq_desc *desc)
 {
 	struct irq_data *data = irq_desc_get_irq_data(desc);
-	struct s3c24xx_eint_data *eint_data = irq_get_handler_data(irq);
+	struct s3c24xx_eint_data *eint_data = irq_desc_get_handler_data(desc);
 	unsigned int virq;
 
 	/* the first 4 eints have a simple 1 to 1 mapping */
@@ -297,9 +297,9 @@  static struct irq_chip s3c2412_eint0_3_c
 
 static void s3c2412_demux_eint0_3(unsigned int irq, struct irq_desc *desc)
 {
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct s3c24xx_eint_data *eint_data = irq_desc_get_handler_data(desc);
 	struct irq_data *data = irq_desc_get_irq_data(desc);
-	struct s3c24xx_eint_data *eint_data = irq_get_handler_data(irq);
+	struct irq_chip *chip = irq_data_get_irq_chip(data);
 	unsigned int virq;
 
 	chained_irq_enter(chip, desc);
@@ -357,11 +357,11 @@  static struct irq_chip s3c24xx_eint_chip
 	.irq_set_type	= s3c24xx_eint_type,
 };
 
-static inline void s3c24xx_demux_eint(unsigned int irq, struct irq_desc *desc,
+static inline void s3c24xx_demux_eint(struct irq_desc *desc,
 				      u32 offset, u32 range)
 {
-	struct irq_chip *chip = irq_get_chip(irq);
-	struct s3c24xx_eint_data *data = irq_get_handler_data(irq);
+	struct s3c24xx_eint_data *data = irq_desc_get_handler_data(desc);
+	struct irq_chip *chip = irq_desc_get_irq_chip(desc);
 	struct samsung_pinctrl_drv_data *d = data->drvdata;
 	unsigned int pend, mask;
 
@@ -374,7 +374,7 @@  static inline void s3c24xx_demux_eint(un
 	pend &= range;
 
 	while (pend) {
-		unsigned int virq;
+		unsigned int virq, irq;
 
 		irq = __ffs(pend);
 		pend &= ~(1 << irq);
@@ -390,12 +390,12 @@  static inline void s3c24xx_demux_eint(un
 
 static void s3c24xx_demux_eint4_7(unsigned int irq, struct irq_desc *desc)
 {
-	s3c24xx_demux_eint(irq, desc, 0, 0xf0);
+	s3c24xx_demux_eint(desc, 0, 0xf0);
 }
 
 static void s3c24xx_demux_eint8_23(unsigned int irq, struct irq_desc *desc)
 {
-	s3c24xx_demux_eint(irq, desc, 8, 0xffff00);
+	s3c24xx_demux_eint(desc, 8, 0xffff00);
 }
 
 static irq_flow_handler_t s3c2410_eint_handlers[NUM_EINT_IRQ] = {
Index: tip/drivers/pinctrl/samsung/pinctrl-s3c64xx.c
===================================================================
--- tip.orig/drivers/pinctrl/samsung/pinctrl-s3c64xx.c
+++ tip/drivers/pinctrl/samsung/pinctrl-s3c64xx.c
@@ -410,8 +410,8 @@  static const struct irq_domain_ops s3c64
 
 static void s3c64xx_eint_gpio_irq(unsigned int irq, struct irq_desc *desc)
 {
-	struct irq_chip *chip = irq_get_chip(irq);
-	struct s3c64xx_eint_gpio_data *data = irq_get_handler_data(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
+	struct s3c64xx_eint_gpio_data *data = irq_desc_get_handler_data(desc);
 	struct samsung_pinctrl_drv_data *drvdata = data->drvdata;
 
 	chained_irq_enter(chip, desc);
@@ -599,11 +599,10 @@  static struct irq_chip s3c64xx_eint0_irq
 	.irq_set_type	= s3c64xx_eint0_irq_set_type,
 };
 
-static inline void s3c64xx_irq_demux_eint(unsigned int irq,
-					struct irq_desc *desc, u32 range)
+static inline void s3c64xx_irq_demux_eint(struct irq_desc *desc, u32 range)
 {
-	struct irq_chip *chip = irq_get_chip(irq);
-	struct s3c64xx_eint0_data *data = irq_get_handler_data(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
+	struct s3c64xx_eint0_data *data = irq_desc_get_handler_data(desc);
 	struct samsung_pinctrl_drv_data *drvdata = data->drvdata;
 	unsigned int pend, mask;
 
@@ -616,11 +615,10 @@  static inline void s3c64xx_irq_demux_ein
 	pend &= range;
 
 	while (pend) {
-		unsigned int virq;
+		unsigned int virq, irq;
 
 		irq = fls(pend) - 1;
 		pend &= ~(1 << irq);
-
 		virq = irq_linear_revmap(data->domains[irq], data->pins[irq]);
 		/*
 		 * Something must be really wrong if an unmapped EINT
@@ -636,22 +634,22 @@  static inline void s3c64xx_irq_demux_ein
 
 static void s3c64xx_demux_eint0_3(unsigned int irq, struct irq_desc *desc)
 {
-	s3c64xx_irq_demux_eint(irq, desc, 0xf);
+	s3c64xx_irq_demux_eint(desc, 0xf);
 }
 
 static void s3c64xx_demux_eint4_11(unsigned int irq, struct irq_desc *desc)
 {
-	s3c64xx_irq_demux_eint(irq, desc, 0xff0);
+	s3c64xx_irq_demux_eint(desc, 0xff0);
 }
 
 static void s3c64xx_demux_eint12_19(unsigned int irq, struct irq_desc *desc)
 {
-	s3c64xx_irq_demux_eint(irq, desc, 0xff000);
+	s3c64xx_irq_demux_eint(desc, 0xff000);
 }
 
 static void s3c64xx_demux_eint20_27(unsigned int irq, struct irq_desc *desc)
 {
-	s3c64xx_irq_demux_eint(irq, desc, 0xff00000);
+	s3c64xx_irq_demux_eint(desc, 0xff00000);
 }
 
 static irq_flow_handler_t s3c64xx_eint0_handlers[NUM_EINT0_IRQ] = {
Index: tip/drivers/pinctrl/sirf/pinctrl-sirf.c
===================================================================
--- tip.orig/drivers/pinctrl/sirf/pinctrl-sirf.c
+++ tip/drivers/pinctrl/sirf/pinctrl-sirf.c
@@ -552,7 +552,7 @@  static void sirfsoc_gpio_handle_irq(unsi
 	struct sirfsoc_gpio_bank *bank;
 	u32 status, ctrl;
 	int idx = 0;
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 	int i;
 
 	for (i = 0; i < SIRFSOC_GPIO_NO_OF_BANKS; i++) {
Index: tip/drivers/pinctrl/sunxi/pinctrl-sunxi.c
===================================================================
--- tip.orig/drivers/pinctrl/sunxi/pinctrl-sunxi.c
+++ tip/drivers/pinctrl/sunxi/pinctrl-sunxi.c
@@ -711,8 +711,8 @@  static struct irq_chip sunxi_pinctrl_lev
 
 static void sunxi_pinctrl_irq_handler(unsigned irq, struct irq_desc *desc)
 {
-	struct irq_chip *chip = irq_get_chip(irq);
-	struct sunxi_pinctrl *pctl = irq_get_handler_data(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
+	struct sunxi_pinctrl *pctl = irq_desc_get_handler_data(desc);
 	unsigned long bank, reg, val;
 
 	for (bank = 0; bank < pctl->desc->irq_banks; bank++)