#define DAT_MASK(x) (0x1 << (x))
#define DAT_SET(x) (0x1 << (x))
-#define DAT_CLEAR(x) (0x0 << (x))
#define PULL_MASK(x) (0x3 << ((x) << 1))
#define PULL_DIS(x) (0x0 << ((x) << 1))
static void setup_limo_real_gpios(void)
{
- unsigned int reg;
+ unsigned int reg, value;
if (!board_is_limo_real())
return;
unsigned int pudpdn;
};
-struct gpio_external {
- unsigned int con;
- unsigned int dat;
- unsigned int pud;
-};
-
static struct gpio_powermode powerdown_modes[] = {
{ /* S5PC110_GPIO_A0_OFFSET */
- INPUT(0) | OUTPUT0(1) | INPUT(2) | OUTPUT0(3) |
- INPUT(4) | OUTPUT0(5) | INPUT(6) | OUTPUT0(7),
+ 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),
}, { /* S5PC110_GPIO_A1_OFFSET */
- INPUT(0) | OUTPUT0(1) | INPUT(2) | OUTPUT0(3),
+ OUTPUT0(0) | OUTPUT0(1) | OUTPUT0(2) | OUTPUT0(3),
PULL_DIS(0) | PULL_DIS(1) | PULL_DIS(2) | PULL_DIS(3),
}, { /* S5PC110_GPIO_B_OFFSET */
- OUTPUT0(0) | OUTPUT0(1) | OUTPUT0(2) | OUTPUT0(3) |
- INPUT(4) | OUTPUT0(5) | OUTPUT0(6) | OUTPUT0(7),
+ OUTPUT0(0) | OUTPUT1(1) | OUTPUT0(2) | OUTPUT0(3) |
+ INPUT(4) | OUTPUT1(5) | INPUT(6) | INPUT(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_DOWN(4) | PULL_DIS(5) | PULL_DOWN(6) | PULL_DOWN(7),
}, { /* S5PC110_GPIO_C0_OFFSET */
INPUT(0) | INPUT(1) | INPUT(2) | INPUT(3) |
INPUT(4),
PULL_DOWN(0) | PULL_DOWN(1) | PULL_DOWN(2) | PULL_DOWN(3) |
PULL_DOWN(4),
}, { /* S5PC110_GPIO_D0_OFFSET */
- OUTPUT0(0) | OUTPUT0(1) | OUTPUT0(2) | OUTPUT0(3),
- PULL_DIS(0) | PULL_DIS(1) | PULL_DIS(2) | PULL_DIS(3),
+ INPUT(0) | INPUT(1) | INPUT(2) | INPUT(3),
+ PULL_DOWN(0) | PULL_DOWN(1) | PULL_DOWN(2) | PULL_DOWN(3),
}, { /* S5PC110_GPIO_D1_OFFSET */
INPUT(0) | INPUT(1) | INPUT(2) | INPUT(3) |
- OUTPUT0(4) | OUTPUT0(5),
+ INPUT(4) | INPUT(5),
PULL_DIS(0) | PULL_DIS(1) | PULL_DIS(2) | PULL_DIS(3) |
PULL_DIS(4) | PULL_DIS(5),
}, { /* S5PC110_GPIO_E0_OFFSET */
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_GPIO_E1_OFFSET */
- INPUT(0) | INPUT(1) | INPUT(2) | OUTPUT0(3) |
- OUTPUT0(4),
- PULL_DOWN(0) | PULL_DOWN(1) | PULL_DOWN(2) | PULL_DIS(3) |
- PULL_DIS(4),
+ INPUT(0) | INPUT(1) | INPUT(2) | INPUT(3) |
+ INPUT(4),
+ PULL_DOWN(0) | PULL_DOWN(1) | PULL_DOWN(2) | PULL_DOWN(3) |
+ PULL_DOWN(4),
}, { /* S5PC110_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_GPIO_F3_OFFSET */
OUTPUT0(0) | OUTPUT0(1) | OUTPUT0(2) | OUTPUT0(3) |
- OUTPUT0(4) | OUTPUT0(5),
+ INPUT(4) | INPUT(5),
PULL_DIS(0) | PULL_DIS(1) | PULL_DIS(2) | PULL_DIS(3) |
- PULL_DIS(4) | PULL_DIS(5),
+ PULL_DIS(4) | PULL_DOWN(5),
}, { /* S5PC110_GPIO_G0_OFFSET */
- 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) |
+ INPUT(0) | INPUT(1) | INPUT(2) | INPUT(3) |
+ INPUT(4) | INPUT(5) | INPUT(6),
+ PULL_DIS(0) | PULL_DIS(1) | PULL_DOWN(2) | PULL_DIS(3) |
PULL_DIS(4) | PULL_DIS(5) | PULL_DIS(6),
}, { /* S5PC110_GPIO_G1_OFFSET */
- OUTPUT0(0) | OUTPUT0(1) | OUTPUT0(2) | OUTPUT0(3) |
- OUTPUT0(4) | OUTPUT0(5) | OUTPUT0(6),
+ INPUT(0) | INPUT(1) | OUTPUT1(2) | INPUT(3) |
+ INPUT(4) | INPUT(5) | INPUT(6),
PULL_DIS(0) | PULL_DIS(1) | PULL_DIS(2) | PULL_DIS(3) |
PULL_DIS(4) | PULL_DIS(5) | PULL_DIS(6),
}, { /* S5PC110_GPIO_G2_OFFSET */
- 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) |
+ INPUT(0) | INPUT(1) | INPUT(2) | INPUT(3) |
+ INPUT(4) | INPUT(5) | INPUT(6),
+ PULL_DIS(0) | PULL_DIS(1) | PULL_DOWN(2) | PULL_DIS(3) |
PULL_DIS(4) | PULL_DIS(5) | PULL_DIS(6),
}, { /* S5PC110_GPIO_G3_OFFSET */
- OUTPUT0(0) | OUTPUT0(1) | OUTPUT1(2) | INPUT(3) |
+ OUTPUT0(0) | OUTPUT0(1) | INPUT(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) | PULL_DOWN(2) | PULL_DIS(3) |
PULL_DIS(4) | PULL_DIS(5) | PULL_DIS(6),
}, { /* S5PC110_GPIO_I_OFFSET */
- OUTPUT0(0) | OUTPUT0(1) | OUTPUT0(2) | OUTPUT0(3) |
+ OUTPUT0(0) | OUTPUT0(1) | OUTPUT0(2) | INPUT(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_GPIO_J0_OFFSET */
- OUTPUT1(0) | OUTPUT0(1) | INPUT(2) | INPUT(3) |
- INPUT(4) | INPUT(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),
+ OUTPUT1(0) | INPUT(1) | INPUT(2) | INPUT(3) |
+ INPUT(4) | INPUT(5) | INPUT(6) | INPUT(7),
+ PULL_DIS(0) | PULL_DOWN(1) | PULL_DIS(2) | PULL_DIS(3) |
+ PULL_DIS(4) | PULL_DIS(5) | PULL_DOWN(6) | PULL_DOWN(7),
}, { /* S5PC110_GPIO_J1_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),
+ OUTPUT1(0) | OUTPUT0(1) | INPUT(2) | OUTPUT0(3) |
+ OUTPUT0(4) | OUTPUT0(5) | INPUT(6) | INPUT(7),
+ PULL_DIS(0) | PULL_DIS(1) | PULL_DOWN(2) | PULL_DIS(3) |
+ PULL_DIS(4) | PULL_DIS(5) | PULL_DOWN(6) | PULL_DOWN(7),
}, { /* S5PC110_GPIO_J2_OFFSET */
- OUTPUT0(0) | OUTPUT0(1) | OUTPUT0(2) | OUTPUT0(3) |
+ INPUT(0) | INPUT(1) | OUTPUT0(2) | INPUT(3) |
INPUT(4) | OUTPUT1(5) | OUTPUT0(6) | INPUT(7),
- PULL_DIS(0) | PULL_DIS(1) | PULL_DIS(2) | PULL_DIS(3) |
+ PULL_DOWN(0) | PULL_DOWN(1) | PULL_DIS(2) | PULL_DOWN(3) |
PULL_DIS(4) | PULL_DIS(5) | PULL_DIS(6) | PULL_DOWN(7),
}, { /* S5PC110_GPIO_J3_OFFSET */
- OUTPUT0(0) | OUTPUT0(1) | OUTPUT0(2) | OUTPUT0(3) |
+ INPUT(0) | INPUT(1) | OUTPUT0(2) | OUTPUT0(3) |
OUTPUT1(4) | OUTPUT0(5) | INPUT(6) | INPUT(7),
- PULL_DIS(0) | PULL_DIS(1) | PULL_DIS(2) | PULL_DIS(3) |
+ PULL_DOWN(0) | PULL_DOWN(1) | PULL_DIS(2) | PULL_DIS(3) |
PULL_DIS(4) | PULL_DIS(5) | PULL_DIS(6) | PULL_DIS(7),
}, { /* S5PC110_GPIO_J4_OFFSET */
- INPUT(0) | OUTPUT0(1) | OUTPUT0(2) | INPUT(3) |
- OUTPUT0(4),
- PULL_DIS(0) | PULL_DIS(1) | PULL_DIS(2) | PULL_DIS(3) |
- PULL_DIS(4),
+ INPUT(0) | INPUT(1) | INPUT(2) | INPUT(3) |
+ INPUT(4),
+ PULL_DIS(0) | PULL_DOWN(1) | PULL_DOWN(2) | PULL_DIS(3) |
+ PULL_DOWN(4),
},
};
PULL_DIS(0) | PULL_DIS(1) | PULL_DIS(2) | PULL_DIS(3) |
PULL_DIS(4) | PULL_DIS(5) | PULL_DIS(6) | PULL_DIS(7),
},
-};
-static struct gpio_external external_powerdown_modes[] = {
- { /* S5PC110_GPIO_H0_OFFSET */
- CON_OUTPUT(0) | CON_INPUT(1) | CON_OUTPUT(2) | CON_OUTPUT(3) |
- CON_OUTPUT(4) | CON_OUTPUT(5) | CON_INPUT(6) | CON_INPUT(7),
- DAT_SET(0) | DAT_CLEAR(2) | DAT_CLEAR(3) |
- DAT_CLEAR(4) | DAT_CLEAR(5),
- }, { /* S5PC110_GPIO_H1_OFFSET */
- CON_INPUT(0) | CON_INPUT(1) | CON_OUTPUT(2) | CON_IRQ(3) |
- CON_IRQ(4) | CON_INPUT(5) | CON_INPUT(6) | CON_INPUT(7),
- DAT_CLEAR(2),
- PULL_DOWN(0) | PULL_DOWN(1) |
- PULL_DOWN(6),
- }, { /* S5PC110_GPIO_H2_OFFSET */
- CON_OUTPUT(0) | CON_OUTPUT(1) | CON_OUTPUT(2) | CON_OUTPUT(3) |
- CON_IRQ(4) | CON_IRQ(5) | CON_IRQ(6) | CON_IRQ(7),
- DAT_CLEAR(0) | DAT_CLEAR(1) | DAT_CLEAR(2) | DAT_CLEAR(3),
- 0,
- }, { /* S5PC110_GPIO_H3_OFFSET */
- CON_IRQ(0) | CON_IRQ(1) | CON_IRQ(2) | CON_OUTPUT(3) |
- CON_IRQ(4) | CON_INPUT(5) | CON_IRQ(6) | CON_OUTPUT(7),
- DAT_CLEAR(3) | DAT_CLEAR(7),
- 0,
- },
};
static void setup_power_down_mode_registers(void)
{
struct gpio_powermode *p;
- struct gpio_external *ge;
unsigned int reg;
int i;
writel(p->pudpdn, reg + S5PC1XX_GPIO_PDNPULL_OFFSET);
reg += 0x20;
}
-
-#if 0
- reg = S5PC110_GPIO_BASE(S5PC110_GPIO_H0_OFFSET);
- ge = external_powerdown_modes;
- for (i = 0; i < ARRAY_SIZE(external_powerdown_modes); i++, ge++) {
- writel(ge->con, reg + S5PC1XX_GPIO_CON_OFFSET);
- writel(ge->dat, reg + S5PC1XX_GPIO_DAT_OFFSET);
- writel(ge->pud, reg + S5PC1XX_GPIO_PULL_OFFSET);
- reg += 0x20;
- }
-#endif
}
int misc_init_r(void)