drivers: cci: Extend support to CCI revisions > r1p2
authorPunit Agrawal <punit.agrawal@arm.com>
Wed, 19 Feb 2014 12:17:02 +0000 (12:17 +0000)
committerArnd Bergmann <arnd@arndb.de>
Tue, 25 Feb 2014 18:36:16 +0000 (19:36 +0100)
The driver queries the CCI IP revision to distinguish between r0 and r1
scheme for event numbers and currently supports upto version r1p2. To
minimise code churn every time there's a new version of the IP, assume
that event numbering doesn't change for revisions > r1p0 (which is
the case).

The driver will still need an update for future revisions that change
the event numbers.

Signed-off-by: Punit Agrawal <punit.agrawal@arm.com>
Reviewed-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
drivers/bus/arm-cci.c

index 962fd35..da485ae 100644 (file)
@@ -88,8 +88,7 @@ static unsigned long cci_ctrl_phys;
 
 #define CCI_REV_R0             0
 #define CCI_REV_R1             1
-#define CCI_REV_R0_P4          4
-#define CCI_REV_R1_P2          6
+#define CCI_REV_R1_PX          5
 
 #define CCI_PMU_EVT_SEL                0x000
 #define CCI_PMU_CNTR           0x004
@@ -193,21 +192,16 @@ static int probe_cci_revision(void)
        rev = readl_relaxed(cci_ctrl_base + CCI_PID2) & CCI_PID2_REV_MASK;
        rev >>= CCI_PID2_REV_SHIFT;
 
-       if (rev <= CCI_REV_R0_P4)
+       if (rev < CCI_REV_R1_PX)
                return CCI_REV_R0;
-       else if (rev <= CCI_REV_R1_P2)
+       else
                return CCI_REV_R1;
-
-       return -ENOENT;
 }
 
 static struct pmu_port_event_ranges *port_range_by_rev(void)
 {
        int rev = probe_cci_revision();
 
-       if (rev < 0)
-               return NULL;
-
        return &port_event_range[rev];
 }