|
@@ -473,3 +473,63 @@ EXPORT_SYMBOL(set_gpiop_ ## name);
|
|
|
|
|
|
SET_GPIO_P(data)
|
|
|
SET_GPIO_P(dir)
|
|
|
+SET_GPIO_P(inen)
|
|
|
+SET_GPIO_P(polar)
|
|
|
+SET_GPIO_P(edge)
|
|
|
+SET_GPIO_P(both)
|
|
|
+SET_GPIO_P(maska)
|
|
|
+SET_GPIO_P(maskb)
|
|
|
+
|
|
|
+/* Get a specific bit */
|
|
|
+#define GET_GPIO(name) \
|
|
|
+unsigned short get_gpio_ ## name(unsigned gpio) \
|
|
|
+{ \
|
|
|
+ unsigned long flags; \
|
|
|
+ unsigned short ret; \
|
|
|
+ if (ANOMALY_05000311 || ANOMALY_05000323) \
|
|
|
+ flags = hard_local_irq_save(); \
|
|
|
+ ret = 0x01 & (gpio_array[gpio_bank(gpio)]->name >> gpio_sub_n(gpio)); \
|
|
|
+ if (ANOMALY_05000311 || ANOMALY_05000323) { \
|
|
|
+ AWA_DUMMY_READ(name); \
|
|
|
+ hard_local_irq_restore(flags); \
|
|
|
+ } \
|
|
|
+ return ret; \
|
|
|
+} \
|
|
|
+EXPORT_SYMBOL(get_gpio_ ## name);
|
|
|
+
|
|
|
+GET_GPIO(data)
|
|
|
+GET_GPIO(dir)
|
|
|
+GET_GPIO(inen)
|
|
|
+GET_GPIO(polar)
|
|
|
+GET_GPIO(edge)
|
|
|
+GET_GPIO(both)
|
|
|
+GET_GPIO(maska)
|
|
|
+GET_GPIO(maskb)
|
|
|
+
|
|
|
+/*Get current PORT date (16-bit word)*/
|
|
|
+
|
|
|
+#define GET_GPIO_P(name) \
|
|
|
+unsigned short get_gpiop_ ## name(unsigned gpio) \
|
|
|
+{ \
|
|
|
+ unsigned long flags; \
|
|
|
+ unsigned short ret; \
|
|
|
+ if (ANOMALY_05000311 || ANOMALY_05000323) \
|
|
|
+ flags = hard_local_irq_save(); \
|
|
|
+ ret = (gpio_array[gpio_bank(gpio)]->name); \
|
|
|
+ if (ANOMALY_05000311 || ANOMALY_05000323) { \
|
|
|
+ AWA_DUMMY_READ(name); \
|
|
|
+ hard_local_irq_restore(flags); \
|
|
|
+ } \
|
|
|
+ return ret; \
|
|
|
+} \
|
|
|
+EXPORT_SYMBOL(get_gpiop_ ## name);
|
|
|
+
|
|
|
+GET_GPIO_P(data)
|
|
|
+GET_GPIO_P(dir)
|
|
|
+GET_GPIO_P(inen)
|
|
|
+GET_GPIO_P(polar)
|
|
|
+GET_GPIO_P(edge)
|
|
|
+GET_GPIO_P(both)
|
|
|
+GET_GPIO_P(maska)
|
|
|
+GET_GPIO_P(maskb)
|
|
|
+
|