bcma: add missing GPIO defines, use PULL register only when available
Rafał Miłecki [Wed, 11 May 2011 00:08:09 +0000 (02:08 +0200)]
Similar patch was commited to ssb.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

drivers/bcma/driver_chipcommon.c
include/linux/bcma/bcma_driver_chipcommon.h

index caf5960..6061022 100644 (file)
@@ -29,8 +29,10 @@ void bcma_core_chipcommon_init(struct bcma_drv_cc *cc)
        if (cc->core->id.rev >= 35)
                cc->capabilities_ext = bcma_cc_read32(cc, BCMA_CC_CAP_EXT);
 
-       bcma_cc_write32(cc, 0x58, 0);
-       bcma_cc_write32(cc, 0x5C, 0);
+       if (cc->core->id.rev >= 20) {
+               bcma_cc_write32(cc, BCMA_CC_GPIOPULLUP, 0);
+               bcma_cc_write32(cc, BCMA_CC_GPIOPULLDOWN, 0);
+       }
 
        if (cc->capabilities & BCMA_CC_CAP_PMU)
                bcma_pmu_init(cc);
index 4f8fd6a..083c3b6 100644 (file)
 #define BCMA_CC_FLASHDATA              0x0048
 #define BCMA_CC_BCAST_ADDR             0x0050
 #define BCMA_CC_BCAST_DATA             0x0054
+#define BCMA_CC_GPIOPULLUP             0x0058          /* Rev >= 20 only */
+#define BCMA_CC_GPIOPULLDOWN           0x005C          /* Rev >= 20 only */
 #define BCMA_CC_GPIOIN                 0x0060
 #define BCMA_CC_GPIOOUT                        0x0064
 #define BCMA_CC_GPIOOUTEN              0x0068
 #define BCMA_CC_GPIOIRQ                        0x0074
 #define BCMA_CC_WATCHDOG               0x0080
 #define BCMA_CC_GPIOTIMER              0x0088          /* LED powersave (corerev >= 16) */
+#define  BCMA_CC_GPIOTIMER_OFFTIME     0x0000FFFF
+#define  BCMA_CC_GPIOTIMER_OFFTIME_SHIFT       0
+#define  BCMA_CC_GPIOTIMER_ONTIME      0xFFFF0000
 #define  BCMA_CC_GPIOTIMER_ONTIME_SHIFT        16
 #define BCMA_CC_GPIOTOUTM              0x008C          /* LED powersave (corerev >= 16) */
 #define BCMA_CC_CLOCK_N                        0x0090