#define PREVIOUS(x) (0x3 << ((x) << 1))
+#define HWSUGGEST
+#ifdef HWSUGGEST
+#define PDNCON_NC(x) INPUT(x)
+#define PDNPUD_NC(x) PULL_DOWN(x)
+#else
+#define PDNCON_NC(x) OUTPUT0(x)
+#define PDNPUD_NC(x) PULL_DIS(x)
+#endif
+
struct gpio_powermode {
unsigned int conpdn;
unsigned int pudpdn;
PULL_DIS(0) | PULL_DIS(1) | PULL_DIS(2) | PULL_DIS(3),
}, { /* S5PC110(ARIES)_GPIO_B_OFFSET */
OUTPUT0(0) | OUTPUT0(1) | OUTPUT0(2) | OUTPUT0(3) |
- INPUT(4) | OUTPUT0(5) | OUTPUT0(6) | OUTPUT0(7),
+ INPUT(4) | OUTPUT0(5) | PDNCON_NC(6) | OUTPUT0(7),
PULL_DIS(0) | PULL_DIS(1) | PULL_DIS(2) | PULL_DIS(3) |
- PULL_DIS(4) | PULL_DIS(5) | PULL_DIS(6) | PULL_DIS(7),
+ PULL_DIS(4) | PULL_DIS(5) | PDNPUD_NC(6) | PULL_DIS(7),
}, { /* S5PC110(ARIES)_GPIO_C0_OFFSET */
- OUTPUT0(0) | OUTPUT0(1) | OUTPUT0(2) | INPUT(3) |
+ OUTPUT0(0) | PDNCON_NC(1) | OUTPUT0(2) | INPUT(3) |
OUTPUT0(4),
- PULL_DIS(0) | PULL_DIS(1) | PULL_DIS(2) | PULL_DIS(3) |
+ PULL_DIS(0) | PDNPUD_NC(1) | PULL_DIS(2) | PULL_DIS(3) |
PULL_DIS(4),
}, { /* S5PC110(ARIES)_GPIO_C1_OFFSET */
- OUTPUT0(0) | OUTPUT0(1) | OUTPUT0(2) | INPUT(3) |
+ OUTPUT0(0) | PDNCON_NC(1) | OUTPUT0(2) | INPUT(3) |
OUTPUT0(4),
- PULL_DIS(0) | PULL_DIS(1) | PULL_DIS(2) | PULL_DIS(3) |
+ PULL_DIS(0) | PDNPUD_NC(1) | PULL_DIS(2) | PULL_DIS(3) |
PULL_DIS(4),
}, { /* S5PC110(ARIES)_GPIO_D0_OFFSET */
- OUTPUT0(0) | OUTPUT0(1) | OUTPUT0(2) | OUTPUT0(3),
- PULL_DIS(0) | PULL_DIS(1) | PULL_DIS(2) | PULL_DIS(3),
+ PDNCON_NC(0) | OUTPUT0(1) | PDNCON_NC(2) | PDNCON_NC(3),
+ PDNPUD_NC(0) | PULL_DIS(1) | PDNPUD_NC(2) | PDNPUD_NC(3),
}, { /* S5PC110(ARIES)_GPIO_D1_OFFSET */
INPUT(0) | INPUT(1) | INPUT(2) | INPUT(3) |
INPUT(4) | INPUT(5),
PULL_DOWN(4) | PULL_DOWN(5) | PULL_DOWN(6) | PULL_DOWN(7),
}, { /* S5PC110(ARIES)_GPIO_E1_OFFSET */
INPUT(0) | INPUT(1) | INPUT(2) | OUTPUT0(3) |
- OUTPUT0(4),
+ PDNCON_NC(4),
PULL_DOWN(0) | PULL_DOWN(1) | PULL_DOWN(2) | PULL_DIS(3) |
- PULL_DIS(4),
+ PDNPUD_NC(4),
}, { /* S5PC110(ARIES)_GPIO_F0_OFFSET */
OUTPUT0(0) | OUTPUT0(1) | OUTPUT0(2) | OUTPUT0(3) |
OUTPUT0(4) | OUTPUT0(5) | OUTPUT0(6) | OUTPUT0(7),
PULL_DIS(4) | PULL_DIS(5) | PULL_DIS(6) | PULL_DIS(7),
}, { /* S5PC110(ARIES)_GPIO_F3_OFFSET */
OUTPUT0(0) | OUTPUT0(1) | OUTPUT0(2) | OUTPUT0(3) |
- OUTPUT0(4) | OUTPUT0(5),
+ INPUT(4) | PDNCON_NC(5),
PULL_DIS(0) | PULL_DIS(1) | PULL_DIS(2) | PULL_DIS(3) |
- PULL_DIS(4) | PULL_DIS(5),
+ PULL_DOWN(4) | PDNPUD_NC(5),
}, { /* S5PC110(ARIES)_GPIO_G0_OFFSET */
OUTPUT0(0) | OUTPUT0(1) | INPUT(2) | OUTPUT0(3) |
OUTPUT0(4) | OUTPUT0(5) | OUTPUT0(6),
PULL_DIS(0) | PULL_DIS(1) | PULL_DIS(2) | PULL_DIS(3) |
PULL_DIS(4) | PULL_DIS(5) | PULL_DIS(6),
}, { /* S5PC110(ARIES)_GPIO_G1_OFFSET */
- OUTPUT0(0) | INPUT(1) | OUTPUT0(2) | INPUT(3) |
- INPUT(4) | INPUT(5) | INPUT(6),
- PULL_DIS(0) | PULL_UP(1) | PULL_DIS(2) | PULL_UP(3) |
- PULL_UP(4) | PULL_UP(5) | PULL_UP(6),
+ OUTPUT0(0) | OUTPUT1(1) | OUTPUT0(2) | OUTPUT1(3) |
+ OUTPUT1(4) | OUTPUT1(5) | OUTPUT1(6),
+ PULL_DIS(0) | PULL_DIS(1) | PULL_DIS(2) | PULL_DIS(3) |
+ PULL_DIS(4) | PULL_DIS(5) | PULL_DIS(6),
}, { /* S5PC110(ARIES)_GPIO_G2_OFFSET */
OUTPUT0(0) | OUTPUT0(1) | INPUT(2) | OUTPUT0(3) |
OUTPUT0(4) | OUTPUT0(5) | OUTPUT0(6),
PULL_DIS(0) | PULL_DIS(1) | PULL_DIS(2) | PULL_DIS(3) |
PULL_DIS(4) | PULL_DIS(5) | PULL_DIS(6),
}, { /* S5PC110(ARIES)_GPIO_G3_OFFSET */
- OUTPUT0(0) | OUTPUT0(1) | OUTPUT1(2) | INPUT(3) |
+ OUTPUT1(0) | OUTPUT0(1) | PDNCON_NC(2) | INPUT(3) |
OUTPUT0(4) | OUTPUT0(5) | OUTPUT0(6),
- PULL_DIS(0) | PULL_DIS(1) | PULL_DIS(2) | PULL_DIS(3) |
+ PULL_DIS(0) | PULL_DIS(1) | PDNPUD_NC(2) | PULL_DIS(3) |
PULL_DIS(4) | PULL_DIS(5) | PULL_DIS(6),
}, { /* S5PC110(ARIES)_GPIO_I_OFFSET */
- OUTPUT0(0) | OUTPUT0(1) | OUTPUT0(2) | INPUT(3) |
+ OUTPUT0(0) | OUTPUT0(1) | OUTPUT0(2) | OUTPUT0(3) |
OUTPUT0(4) | OUTPUT0(5) | OUTPUT0(6),
PULL_DIS(0) | PULL_DIS(1) | PULL_DIS(2) | PULL_DIS(3) |
PULL_DIS(4) | PULL_DIS(5) | PULL_DIS(6),
}, { /* S5PC110(ARIES)_GPIO_J0_OFFSET */
INPUT(0) | INPUT(1) | INPUT(2) | INPUT(3) |
INPUT(4) | INPUT(5) | OUTPUT0(6) | INPUT(7),
- PULL_DIS(0) | PULL_DIS(1) | PULL_UP(2) | PULL_UP(3) |
- PULL_DOWN(4) | PULL_DIS(5) | PULL_DIS(6) | PULL_DOWN(7),
+ PULL_DIS(0) | PULL_DIS(1) | PULL_DIS(2) | PULL_DIS(3) |
+ PULL_DIS(4) | PULL_DIS(5) | PULL_DIS(6) | PULL_DIS(7),
}, { /* S5PC110(ARIES)_GPIO_J1_OFFSET */
- OUTPUT0(0) | OUTPUT0(1) | OUTPUT0(2) | OUTPUT0(3) |
- OUTPUT0(4) | OUTPUT0(5) | OUTPUT0(6) | OUTPUT0(7),
+ OUTPUT1(0) | OUTPUT0(1) | OUTPUT0(2) | OUTPUT0(3) |
+ INPUT(4) | OUTPUT0(5) | OUTPUT0(6) | OUTPUT0(7),
PULL_DIS(0) | PULL_DIS(1) | PULL_DIS(2) | PULL_DIS(3) |
PULL_DIS(4) | PULL_DIS(5) | PULL_DIS(6) | PULL_DIS(7),
}, { /* S5PC110(ARIES)_GPIO_J2_OFFSET */
}, { /* S5PC110(ARIES)_GPIO_J3_OFFSET */
INPUT(0) | INPUT(1) | OUTPUT0(2) | OUTPUT0(3) |
INPUT(4) | INPUT(5) | INPUT(6) | INPUT(7),
- PULL_DOWN(0) | PULL_DOWN(1) | PULL_DIS(2) | PULL_DIS(3) |
+ PULL_DIS(0) | PULL_DIS(1) | PULL_DIS(2) | PULL_DIS(3) |
PULL_DIS(4) | PULL_DIS(5) | PULL_DIS(6) | PULL_DIS(7),
}, { /* S5PC110(ARIES)_GPIO_J4_OFFSET */
INPUT(0) | INPUT(1) | OUTPUT0(2) | INPUT(3) |
PULL_DIS(0) | PULL_DIS(1) | PULL_DIS(2) | PULL_DIS(3) |
PULL_DIS(4) | PULL_DIS(5) | PULL_DIS(6) | PULL_DIS(7),
}, { /* S5PC110(ARIES)_MP0_6_OFFSET */
- OUTPUT0(0) | OUTPUT0(1) | OUTPUT0(2) | OUTPUT0(3) |
- OUTPUT0(4) | OUTPUT0(5) | OUTPUT0(6) | OUTPUT0(7),
- PULL_DIS(0) | PULL_DIS(1) | PULL_DIS(2) | PULL_DIS(3) |
- PULL_DIS(4) | PULL_DIS(5) | PULL_DIS(6) | PULL_DIS(7),
+ INPUT(0) | INPUT(1) | INPUT(2) | INPUT(3) |
+ INPUT(4) | INPUT(5) | INPUT(6) | INPUT(7),
+ PULL_DOWN(0) | PULL_DOWN(1) | PULL_DOWN(2) | PULL_DOWN(3) |
+ PULL_DOWN(4) | PULL_DOWN(5) | PULL_DOWN(6) | PULL_DOWN(7),
}, { /* S5PC110(ARIES)_MP0_7_OFFSET */
- OUTPUT0(0) | OUTPUT0(1) | OUTPUT0(2) | OUTPUT0(3) |
- OUTPUT0(4) | OUTPUT0(5) | OUTPUT0(6) | OUTPUT0(7),
- PULL_DIS(0) | PULL_DIS(1) | PULL_DIS(2) | PULL_DIS(3) |
- PULL_DIS(4) | PULL_DIS(5) | PULL_DIS(6) | PULL_DIS(7),
+ INPUT(0) | INPUT(1) | INPUT(2) | INPUT(3) |
+ INPUT(4) | INPUT(5) | INPUT(6) | INPUT(7),
+ PULL_DOWN(0) | PULL_DOWN(1) | PULL_DOWN(2) | PULL_DOWN(3) |
+ PULL_DOWN(4) | PULL_DOWN(5) | PULL_DOWN(6) | PULL_DOWN(7),
},
};