@@ -34,26 +34,7 @@ static struct __initdata resource omap15xx_mpu_gpio_resources[] = {
},
};
-static struct omap_gpio_reg_offs omap15xx_mpuio_regs = {
- .revision = USHRT_MAX,
- .direction = OMAP_MPUIO_IO_CNTL,
- .datain = OMAP_MPUIO_INPUT_LATCH,
- .dataout = OMAP_MPUIO_OUTPUT,
- .irqstatus = OMAP_MPUIO_GPIO_INT,
- .irqenable = OMAP_MPUIO_GPIO_MASKIT,
- .irqenable_inv = true,
- .ctrl = USHRT_MAX,
- .wkupstatus = USHRT_MAX,
- .wkupclear = USHRT_MAX,
- .wkupset = USHRT_MAX,
- .irqctrl = OMAP_MPUIO_GPIO_INT_EDGE,
- .edgectrl1 = USHRT_MAX,
- .edgectrl2 = USHRT_MAX,
- .leveldetect0 = USHRT_MAX,
- .leveldetect1 = USHRT_MAX,
- .risingdetect = USHRT_MAX,
- .fallingdetect = USHRT_MAX,
-};
+static struct omap_gpio_reg_offs omap15xx_mpuio_regs;
static struct __initdata omap_gpio_platform_data omap15xx_mpu_gpio_config = {
.virtual_irq_start = IH_MPUIO_BASE,
@@ -86,26 +67,7 @@ static struct __initdata resource omap15xx_gpio_resources[] = {
},
};
-static struct omap_gpio_reg_offs omap15xx_gpio_regs = {
- .revision = USHRT_MAX,
- .direction = OMAP1510_GPIO_DIR_CONTROL,
- .datain = OMAP1510_GPIO_DATA_INPUT,
- .dataout = OMAP1510_GPIO_DATA_OUTPUT,
- .irqstatus = OMAP1510_GPIO_INT_STATUS,
- .irqenable = OMAP1510_GPIO_INT_MASK,
- .irqenable_inv = true,
- .ctrl = USHRT_MAX,
- .wkupstatus = USHRT_MAX,
- .wkupclear = USHRT_MAX,
- .wkupset = USHRT_MAX,
- .irqctrl = OMAP1510_GPIO_INT_CONTROL,
- .edgectrl1 = USHRT_MAX,
- .edgectrl2 = USHRT_MAX,
- .leveldetect0 = USHRT_MAX,
- .leveldetect1 = USHRT_MAX,
- .risingdetect = USHRT_MAX,
- .fallingdetect = USHRT_MAX,
-};
+static struct omap_gpio_reg_offs omap15xx_gpio_regs;
static struct __initdata omap_gpio_platform_data omap15xx_gpio_config = {
.virtual_irq_start = IH_GPIO_BASE,
@@ -134,7 +96,28 @@ static int __init omap15xx_gpio_init(void)
if (!cpu_is_omap15xx())
return -EINVAL;
+ memset(&omap15xx_mpuio_regs, USHRT_MAX, sizeof(omap15xx_mpuio_regs));
+
+ omap15xx_mpuio_regs.direction = OMAP_MPUIO_IO_CNTL;
+ omap15xx_mpuio_regs.datain = OMAP_MPUIO_INPUT_LATCH;
+ omap15xx_mpuio_regs.dataout = OMAP_MPUIO_OUTPUT;
+ omap15xx_mpuio_regs.irqstatus = OMAP_MPUIO_GPIO_INT;
+ omap15xx_mpuio_regs.irqenable = OMAP_MPUIO_GPIO_MASKIT;
+ omap15xx_mpuio_regs.irqenable_inv = true;
+ omap15xx_mpuio_regs.irqctrl = OMAP_MPUIO_GPIO_INT_EDGE;
+
platform_device_register(&omap15xx_mpu_gpio);
+
+ memset(&omap15xx_gpio_regs, USHRT_MAX, sizeof(omap15xx_gpio_regs));
+
+ omap15xx_gpio_regs.direction = OMAP1510_GPIO_DIR_CONTROL;
+ omap15xx_gpio_regs.datain = OMAP1510_GPIO_DATA_INPUT;
+ omap15xx_gpio_regs.dataout = OMAP1510_GPIO_DATA_OUTPUT;
+ omap15xx_gpio_regs.irqstatus = OMAP1510_GPIO_INT_STATUS;
+ omap15xx_gpio_regs.irqenable = OMAP1510_GPIO_INT_MASK;
+ omap15xx_gpio_regs.irqenable_inv = true;
+ omap15xx_gpio_regs.irqctrl = OMAP1510_GPIO_INT_CONTROL;
+
platform_device_register(&omap15xx_gpio);
return 0;
@@ -37,26 +37,7 @@ static struct __initdata resource omap16xx_mpu_gpio_resources[] = {
},
};
-static struct omap_gpio_reg_offs omap16xx_mpuio_regs = {
- .revision = USHRT_MAX,
- .direction = OMAP_MPUIO_IO_CNTL,
- .datain = OMAP_MPUIO_INPUT_LATCH,
- .dataout = OMAP_MPUIO_OUTPUT,
- .irqstatus = OMAP_MPUIO_GPIO_INT,
- .irqenable = OMAP_MPUIO_GPIO_MASKIT,
- .irqenable_inv = true,
- .ctrl = USHRT_MAX,
- .wkupstatus = USHRT_MAX,
- .wkupclear = USHRT_MAX,
- .wkupset = USHRT_MAX,
- .irqctrl = OMAP_MPUIO_GPIO_INT_EDGE,
- .edgectrl1 = USHRT_MAX,
- .edgectrl2 = USHRT_MAX,
- .leveldetect0 = USHRT_MAX,
- .leveldetect1 = USHRT_MAX,
- .risingdetect = USHRT_MAX,
- .fallingdetect = USHRT_MAX,
-};
+static struct omap_gpio_reg_offs omap16xx_mpuio_regs;
static struct __initdata omap_gpio_platform_data omap16xx_mpu_gpio_config = {
.virtual_irq_start = IH_MPUIO_BASE,
@@ -89,29 +70,7 @@ static struct __initdata resource omap16xx_gpio1_resources[] = {
},
};
-static struct omap_gpio_reg_offs omap16xx_gpio_regs = {
- .revision = OMAP1610_GPIO_REVISION,
- .direction = OMAP1610_GPIO_DIRECTION,
- .set_dataout = OMAP1610_GPIO_SET_DATAOUT,
- .clr_dataout = OMAP1610_GPIO_CLEAR_DATAOUT,
- .datain = OMAP1610_GPIO_DATAIN,
- .dataout = OMAP1610_GPIO_DATAOUT,
- .irqstatus = OMAP1610_GPIO_IRQSTATUS1,
- .irqenable = OMAP1610_GPIO_IRQENABLE1,
- .set_irqenable = OMAP1610_GPIO_SET_IRQENABLE1,
- .clr_irqenable = OMAP1610_GPIO_CLEAR_IRQENABLE1,
- .ctrl = USHRT_MAX,
- .wkupstatus = OMAP1610_GPIO_WAKEUPENABLE,
- .wkupclear = OMAP1610_GPIO_CLEAR_WAKEUPENA,
- .wkupset = OMAP1610_GPIO_SET_WAKEUPENA,
- .irqctrl = USHRT_MAX,
- .edgectrl1 = OMAP1610_GPIO_EDGE_CTRL1,
- .edgectrl2 = OMAP1610_GPIO_EDGE_CTRL2,
- .leveldetect0 = USHRT_MAX,
- .leveldetect1 = USHRT_MAX,
- .risingdetect = USHRT_MAX,
- .fallingdetect = USHRT_MAX,
-};
+static struct omap_gpio_reg_offs omap16xx_gpio_regs;
static struct __initdata omap_gpio_platform_data omap16xx_gpio1_config = {
.virtual_irq_start = IH_GPIO_BASE,
@@ -240,6 +199,35 @@ static int __init omap16xx_gpio_init(void)
if (!cpu_is_omap16xx())
return -EINVAL;
+ memset(&omap16xx_mpuio_regs, 0xFF, sizeof(omap16xx_mpuio_regs));
+
+ omap16xx_mpuio_regs.direction = OMAP_MPUIO_IO_CNTL;
+ omap16xx_mpuio_regs.datain = OMAP_MPUIO_INPUT_LATCH;
+ omap16xx_mpuio_regs.dataout = OMAP_MPUIO_OUTPUT;
+ omap16xx_mpuio_regs.irqstatus = OMAP_MPUIO_GPIO_INT;
+ omap16xx_mpuio_regs.irqenable = OMAP_MPUIO_GPIO_MASKIT;
+ omap16xx_mpuio_regs.irqenable_inv = true;
+ omap16xx_mpuio_regs.irqctrl = OMAP_MPUIO_GPIO_INT_EDGE;
+
+ memset(&omap16xx_gpio_regs, 0xFF, sizeof(omap16xx_gpio_regs));
+
+ omap16xx_gpio_regs.revision = OMAP1610_GPIO_REVISION;
+ omap16xx_gpio_regs.direction = OMAP1610_GPIO_DIRECTION;
+ omap16xx_gpio_regs.set_dataout = OMAP1610_GPIO_SET_DATAOUT;
+ omap16xx_gpio_regs.clr_dataout = OMAP1610_GPIO_CLEAR_DATAOUT;
+ omap16xx_gpio_regs.datain = OMAP1610_GPIO_DATAIN;
+ omap16xx_gpio_regs.dataout = OMAP1610_GPIO_DATAOUT;
+ omap16xx_gpio_regs.irqstatus = OMAP1610_GPIO_IRQSTATUS1;
+ omap16xx_gpio_regs.irqenable = OMAP1610_GPIO_IRQENABLE1;
+ omap16xx_gpio_regs.irqenable_inv = false;
+ omap16xx_gpio_regs.set_irqenable = OMAP1610_GPIO_SET_IRQENABLE1;
+ omap16xx_gpio_regs.clr_irqenable = OMAP1610_GPIO_CLEAR_IRQENABLE1;
+ omap16xx_gpio_regs.wkupstatus = OMAP1610_GPIO_WAKEUPENABLE;
+ omap16xx_gpio_regs.wkupclear = OMAP1610_GPIO_CLEAR_WAKEUPENA;
+ omap16xx_gpio_regs.wkupset = OMAP1610_GPIO_SET_WAKEUPENA;
+ omap16xx_gpio_regs.edgectrl1 = OMAP1610_GPIO_EDGE_CTRL1;
+ omap16xx_gpio_regs.edgectrl2 = OMAP1610_GPIO_EDGE_CTRL2;
+
for (i = 0; i < ARRAY_SIZE(omap16xx_gpio_dev); i++)
platform_device_register(omap16xx_gpio_dev[i]);
@@ -39,26 +39,7 @@ static struct __initdata resource omap7xx_mpu_gpio_resources[] = {
},
};
-static struct omap_gpio_reg_offs omap7xx_mpuio_regs = {
- .revision = USHRT_MAX,
- .direction = OMAP_MPUIO_IO_CNTL / 2,
- .datain = OMAP_MPUIO_INPUT_LATCH / 2,
- .dataout = OMAP_MPUIO_OUTPUT / 2,
- .irqstatus = OMAP_MPUIO_GPIO_INT / 2,
- .irqenable = OMAP_MPUIO_GPIO_MASKIT / 2,
- .irqenable_inv = true,
- .ctrl = USHRT_MAX,
- .wkupstatus = USHRT_MAX,
- .wkupclear = USHRT_MAX,
- .wkupset = USHRT_MAX,
- .irqctrl = OMAP_MPUIO_GPIO_INT_EDGE / 2,
- .edgectrl1 = USHRT_MAX,
- .edgectrl2 = USHRT_MAX,
- .leveldetect0 = USHRT_MAX,
- .leveldetect1 = USHRT_MAX,
- .risingdetect = USHRT_MAX,
- .fallingdetect = USHRT_MAX,
-};
+static struct omap_gpio_reg_offs omap7xx_mpuio_regs;
static struct __initdata omap_gpio_platform_data omap7xx_mpu_gpio_config = {
.virtual_irq_start = IH_MPUIO_BASE,
@@ -91,26 +72,7 @@ static struct __initdata resource omap7xx_gpio1_resources[] = {
},
};
-static struct omap_gpio_reg_offs omap7xx_gpio_regs = {
- .revision = USHRT_MAX,
- .direction = OMAP7XX_GPIO_DIR_CONTROL,
- .datain = OMAP7XX_GPIO_DATA_INPUT,
- .dataout = OMAP7XX_GPIO_DATA_OUTPUT,
- .irqstatus = OMAP7XX_GPIO_INT_STATUS,
- .irqenable = OMAP7XX_GPIO_INT_MASK,
- .irqenable_inv = true,
- .ctrl = USHRT_MAX,
- .wkupstatus = USHRT_MAX,
- .wkupclear = USHRT_MAX,
- .wkupset = USHRT_MAX,
- .irqctrl = OMAP7XX_GPIO_INT_CONTROL,
- .edgectrl1 = USHRT_MAX,
- .edgectrl2 = USHRT_MAX,
- .leveldetect0 = USHRT_MAX,
- .leveldetect1 = USHRT_MAX,
- .risingdetect = USHRT_MAX,
- .fallingdetect = USHRT_MAX,
-};
+static struct omap_gpio_reg_offs omap7xx_gpio_regs;
static struct __initdata omap_gpio_platform_data omap7xx_gpio1_config = {
.virtual_irq_start = IH_GPIO_BASE,
@@ -301,6 +263,26 @@ static int __init omap7xx_gpio_init(void)
if (!cpu_is_omap7xx())
return -EINVAL;
+ memset(&omap7xx_mpuio_regs, USHRT_MAX, sizeof(omap7xx_mpuio_regs));
+
+ omap7xx_mpuio_regs.direction = OMAP_MPUIO_IO_CNTL / 2;
+ omap7xx_mpuio_regs.datain = OMAP_MPUIO_INPUT_LATCH / 2;
+ omap7xx_mpuio_regs.dataout = OMAP_MPUIO_OUTPUT / 2;
+ omap7xx_mpuio_regs.irqstatus = OMAP_MPUIO_GPIO_INT / 2;
+ omap7xx_mpuio_regs.irqenable = OMAP_MPUIO_GPIO_MASKIT / 2;
+ omap7xx_mpuio_regs.irqenable_inv = true;
+ omap7xx_mpuio_regs.irqctrl = OMAP_MPUIO_GPIO_INT_EDGE / 2;
+
+ memset(&omap7xx_gpio_regs, USHRT_MAX, sizeof(omap7xx_gpio_regs));
+
+ omap7xx_gpio_regs.direction = OMAP7XX_GPIO_DIR_CONTROL;
+ omap7xx_gpio_regs.datain = OMAP7XX_GPIO_DATA_INPUT;
+ omap7xx_gpio_regs.dataout = OMAP7XX_GPIO_DATA_OUTPUT;
+ omap7xx_gpio_regs.irqstatus = OMAP7XX_GPIO_INT_STATUS;
+ omap7xx_gpio_regs.irqenable = OMAP7XX_GPIO_INT_MASK;
+ omap7xx_gpio_regs.irqenable_inv = true;
+ omap7xx_gpio_regs.irqctrl = OMAP7XX_GPIO_INT_CONTROL;
+
for (i = 0; i < ARRAY_SIZE(omap7xx_gpio_dev); i++)
platform_device_register(omap7xx_gpio_dev[i]);
@@ -92,9 +92,8 @@ static int omap2_gpio_dev_init(struct omap_hwmod *oh, void *unused)
return -ENOMEM;
}
- pdata->regs->irqctrl = USHRT_MAX;
- pdata->regs->edgectrl1 = USHRT_MAX;
- pdata->regs->edgectrl2 = USHRT_MAX;
+ memset(pdata->regs, USHRT_MAX, sizeof(struct omap_gpio_reg_offs));
+ pdata->regs->irqenable_inv = false;
switch (oh->class->rev) {
case 0: