Revert "pinctrl: intel: fix bug of register offset calculation"
authorLinus Walleij <linus.walleij@linaro.org>
Thu, 10 Dec 2015 22:04:45 +0000 (23:04 +0100)
committerLinus Walleij <linus.walleij@linaro.org>
Thu, 10 Dec 2015 22:04:45 +0000 (23:04 +0100)
This reverts commit c5cdcba3d54b9bd2443bd0afe9f4828f802a944f.

drivers/pinctrl/intel/pinctrl-broxton.c
drivers/pinctrl/intel/pinctrl-intel.c
drivers/pinctrl/intel/pinctrl-intel.h
drivers/pinctrl/intel/pinctrl-sunrisepoint.c

index 5979d38c46b254965e8a7782de9a6c902894ce9a..e42d5d4183f57ff0dc0d942254f5925dabd3c07a 100644 (file)
@@ -28,7 +28,6 @@
                .padcfglock_offset = BXT_PADCFGLOCK,    \
                .hostown_offset = BXT_HOSTSW_OWN,       \
                .ie_offset = BXT_GPI_IE,                \
-               .gpp_size = 32,                         \
                .pin_base = (s),                        \
                .npins = ((e) - (s) + 1),               \
        }
index 06004d8fea2102b448c8ac55d5de28bcc5d3c44c..392e28d3f48d0bee1a4087154e904c7dfdc0faa7 100644 (file)
@@ -25,6 +25,9 @@
 
 #include "pinctrl-intel.h"
 
+/* Maximum number of pads in each group */
+#define NPADS_IN_GPP                   24
+
 /* Offset from regs */
 #define PADBAR                         0x00c
 #define GPI_IS                         0x100
@@ -170,11 +173,11 @@ static bool intel_pad_acpi_mode(struct intel_pinctrl *pctrl, unsigned pin)
                return false;
 
        padno = pin_to_padno(community, pin);
-       gpp = padno / community->gpp_size;
+       gpp = padno / NPADS_IN_GPP;
        offset = community->hostown_offset + gpp * 4;
        hostown = community->regs + offset;
 
-       return !(readl(hostown) & BIT(padno % community->gpp_size));
+       return !(readl(hostown) & BIT(padno % NPADS_IN_GPP));
 }
 
 static bool intel_pad_locked(struct intel_pinctrl *pctrl, unsigned pin)
@@ -190,7 +193,7 @@ static bool intel_pad_locked(struct intel_pinctrl *pctrl, unsigned pin)
                return false;
 
        padno = pin_to_padno(community, pin);
-       gpp = padno / community->gpp_size;
+       gpp = padno / NPADS_IN_GPP;
 
        /*
         * If PADCFGLOCK and PADCFGLOCKTX bits are both clear for this pad,
@@ -199,12 +202,12 @@ static bool intel_pad_locked(struct intel_pinctrl *pctrl, unsigned pin)
         */
        offset = community->padcfglock_offset + gpp * 8;
        value = readl(community->regs + offset);
-       if (value & BIT(pin % community->gpp_size))
+       if (value & BIT(pin % NPADS_IN_GPP))
                return true;
 
        offset = community->padcfglock_offset + 4 + gpp * 8;
        value = readl(community->regs + offset);
-       if (value & BIT(pin % community->gpp_size))
+       if (value & BIT(pin % NPADS_IN_GPP))
                return true;
 
        return false;
@@ -660,8 +663,8 @@ static void intel_gpio_irq_ack(struct irq_data *d)
        community = intel_get_community(pctrl, pin);
        if (community) {
                unsigned padno = pin_to_padno(community, pin);
-               unsigned gpp_offset = padno % community->gpp_size;
-               unsigned gpp = padno / community->gpp_size;
+               unsigned gpp_offset = padno % NPADS_IN_GPP;
+               unsigned gpp = padno / NPADS_IN_GPP;
 
                writel(BIT(gpp_offset), community->regs + GPI_IS + gpp * 4);
        }
@@ -682,8 +685,8 @@ static void intel_gpio_irq_mask_unmask(struct irq_data *d, bool mask)
        community = intel_get_community(pctrl, pin);
        if (community) {
                unsigned padno = pin_to_padno(community, pin);
-               unsigned gpp_offset = padno % community->gpp_size;
-               unsigned gpp = padno / community->gpp_size;
+               unsigned gpp_offset = padno % NPADS_IN_GPP;
+               unsigned gpp = padno / NPADS_IN_GPP;
                void __iomem *reg;
                u32 value;
 
@@ -777,8 +780,8 @@ static int intel_gpio_irq_wake(struct irq_data *d, unsigned int on)
                return -EINVAL;
 
        padno = pin_to_padno(community, pin);
-       gpp = padno / community->gpp_size;
-       gpp_offset = padno % community->gpp_size;
+       gpp = padno / NPADS_IN_GPP;
+       gpp_offset = padno % NPADS_IN_GPP;
 
        /* Clear the existing wake status */
        writel(BIT(gpp_offset), community->regs + GPI_GPE_STS + gpp * 4);
@@ -816,14 +819,14 @@ static irqreturn_t intel_gpio_community_irq_handler(struct intel_pinctrl *pctrl,
                /* Only interrupts that are enabled */
                pending &= enabled;
 
-               for_each_set_bit(gpp_offset, &pending, community->gpp_size) {
+               for_each_set_bit(gpp_offset, &pending, NPADS_IN_GPP) {
                        unsigned padno, irq;
 
                        /*
                         * The last group in community can have less pins
                         * than NPADS_IN_GPP.
                         */
-                       padno = gpp_offset + gpp * community->gpp_size;
+                       padno = gpp_offset + gpp * NPADS_IN_GPP;
                        if (padno >= community->npins)
                                break;
 
@@ -999,8 +1002,7 @@ int intel_pinctrl_probe(struct platform_device *pdev,
 
                community->regs = regs;
                community->pad_regs = regs + padbar;
-               community->ngpps = DIV_ROUND_UP(community->npins,
-                                               community->gpp_size);
+               community->ngpps = DIV_ROUND_UP(community->npins, NPADS_IN_GPP);
        }
 
        irq = platform_get_irq(pdev, 0);
index b60215793017bb95b42d39692020aa2f4c41ac0d..4ec8b572a288fbc337f5b40affdfbd012634a028 100644 (file)
@@ -55,8 +55,6 @@ struct intel_function {
  *                  ACPI).
  * @ie_offset: Register offset of GPI_IE from @regs.
  * @pin_base: Starting pin of pins in this community
- * @gpp_size: Maximum number of pads in each group, such as PADCFGLOCK,
- *            HOSTSW_OWN,  GPI_IS, GPI_IE, etc.
  * @npins: Number of pins in this community
  * @regs: Community specific common registers (reserved for core driver)
  * @pad_regs: Community specific pad registers (reserved for core driver)
@@ -70,7 +68,6 @@ struct intel_community {
        unsigned hostown_offset;
        unsigned ie_offset;
        unsigned pin_base;
-       unsigned gpp_size;
        size_t npins;
        void __iomem *regs;
        void __iomem *pad_regs;
index c725a5313b4e692df92630535237e4b8374658a7..1de9ae5010db285b53c01d7e67dec2bde7ce5233 100644 (file)
@@ -30,7 +30,6 @@
                .padcfglock_offset = SPT_PADCFGLOCK,    \
                .hostown_offset = SPT_HOSTSW_OWN,       \
                .ie_offset = SPT_GPI_IE,                \
-               .gpp_size = 24,                         \
                .pin_base = (s),                        \
                .npins = ((e) - (s) + 1),               \
        }