#ifndef BCM63XX_GPIO_H
#define BCM63XX_GPIO_H
-/* all helpers will BUG() if gpio count is >= 37. */
-#define BCM63XX_GPIO_COUNT 37
+#include <linux/init.h>
-void bcm63xx_gpio_set_dataout(int gpio, int val);
-int bcm63xx_gpio_get_datain(int gpio);
-void bcm63xx_gpio_set_direction(int gpio, int dir);
+int __init bcm63xx_gpio_init(void);
+
+static inline unsigned long bcm63xx_gpio_count(void)
+{
+ switch (bcm63xx_get_cpu_id()) {
+ case BCM6358_CPU_ID:
+ return 40;
+ case BCM6338_CPU_ID:
+ return 8;
+ case BCM6345_CPU_ID:
+ return 16;
+ case BCM6348_CPU_ID:
+ default:
+ return 37;
+ }
+}
#define GPIO_DIR_OUT 0x0
#define GPIO_DIR_IN 0x1