* [RFC][PATCH 3/3] board files for msecure line mux configuration
@ 2009-08-12 15:45 charu
2009-08-14 12:42 ` Roger Quadros
0 siblings, 1 reply; 2+ messages in thread
From: charu @ 2009-08-12 15:45 UTC (permalink / raw)
To: linux-omap; +Cc: tony, david-b, sameo, p_gortmaker, Charulatha V
Board files do platform dependent msecure line mux configuration.
Board files initialize rtc platform data.
RTC platform data required for configuring msecure line in rtc-twl4030.c.
mux.c and mux.h files modified for defining muxed RTC msecure GPIO lines.
These msecure lines are used in various twl4030 based platforms.
Signed-off-by: Charulatha V <charu@ti.com>
---
arch/arm/mach-omap2/board-2430sdp.c | 7 +++++++
arch/arm/mach-omap2/board-3430sdp.c | 18 ++++++++++++++++++
arch/arm/mach-omap2/board-ldp.c | 21 +++++++++++++++++++++
arch/arm/mach-omap2/board-omap3beagle.c | 1 +
arch/arm/mach-omap2/board-omap3evm.c | 1 +
arch/arm/mach-omap2/board-omap3pandora.c | 1 +
arch/arm/mach-omap2/board-overo.c | 1 +
arch/arm/mach-omap2/board-zoom2.c | 1 +
arch/arm/mach-omap2/mux.c | 5 +++++
arch/arm/plat-omap/include/mach/mux.h | 2 ++
10 files changed, 58 insertions(+), 0 deletions(-)
diff --git a/arch/arm/mach-omap2/board-2430sdp.c b/arch/arm/mach-omap2/board-2430sdp.c
index 06c644d..2b871a1 100644
--- a/arch/arm/mach-omap2/board-2430sdp.c
+++ b/arch/arm/mach-omap2/board-2430sdp.c
@@ -40,6 +40,8 @@
#include "mmc-twl4030.h"
+#define TWL4030_MSECURE_GPIO 118
+
#define SDP2430_CS0_BASE 0x04000000
#define SECONDARY_LCD_GPIO 147
@@ -163,12 +165,17 @@ static struct twl4030_gpio_platform_data sdp2430_gpio_data = {
.irq_end = TWL4030_GPIO_IRQ_END,
};
+static struct twl4030_rtc_platform_data sdp2430_rtc_data = {
+ .msecure_gpio = TWL4030_MSECURE_GPIO,
+};
+
static struct twl4030_platform_data sdp2430_twldata = {
.irq_base = TWL4030_IRQ_BASE,
.irq_end = TWL4030_IRQ_END,
/* platform_data for children goes here */
.gpio = &sdp2430_gpio_data,
+ .rtc = &sdp2430_rtc_data,
};
static struct i2c_board_info __initdata sdp2430_i2c_boardinfo[] = {
diff --git a/arch/arm/mach-omap2/board-3430sdp.c b/arch/arm/mach-omap2/board-3430sdp.c
index 351e8c5..8c47a08 100644
--- a/arch/arm/mach-omap2/board-3430sdp.c
+++ b/arch/arm/mach-omap2/board-3430sdp.c
@@ -274,6 +274,10 @@ static struct twl4030_gpio_platform_data sdp3430_gpio_data = {
.setup = sdp3430_twl_gpio_setup,
};
+static struct twl4030_rtc_platform_data sdp3430_rtc_data = {
+ .msecure_gpio = TWL4030_MSECURE_GPIO,
+};
+
static struct twl4030_usb_data sdp3430_usb_data = {
.usb_mode = T2_USB_MODE_ULPI,
};
@@ -511,6 +515,7 @@ static struct twl4030_platform_data sdp3430_twldata = {
/* platform_data for children goes here */
.bci = &sdp3430_bci_data,
.gpio = &sdp3430_gpio_data,
+ .rtc = &sdp3430_rtc_data,
.madc = &sdp3430_madc_data,
.keypad = &sdp3430_kp_data,
.power = &sdp3430_t2scripts_data,
@@ -574,6 +579,16 @@ static inline void board_smc91x_init(void)
#endif
+int sdp3430_rtc_init(void)
+{
+ /* msecure mux cfg */
+ if (omap_type() == OMAP2_DEVICE_TYPE_GP &&
+ omap_rev() < OMAP3430_REV_ES2_0)
+ return omap_cfg_reg(AF9_34XX_V1_X_GPIO22_OUT);
+ else
+ return 0;
+};
+
static void __init omap_3430sdp_init(void)
{
omap3430_i2c_init();
@@ -585,6 +600,9 @@ static void __init omap_3430sdp_init(void)
sdp3430_spi_board_info[0].irq = gpio_to_irq(ts_gpio);
spi_register_board_info(sdp3430_spi_board_info,
ARRAY_SIZE(sdp3430_spi_board_info));
+ if (sdp3430_rtc_init())
+ printk(KERN_ERR "Failed to configure msecure gpio: "
+ "RTC functionality will not be available\n");
ads7846_dev_init();
omap_serial_init();
usb_musb_init();
diff --git a/arch/arm/mach-omap2/board-ldp.c b/arch/arm/mach-omap2/board-ldp.c
index 73e2bbb..ee66a35 100644
--- a/arch/arm/mach-omap2/board-ldp.c
+++ b/arch/arm/mach-omap2/board-ldp.c
@@ -33,6 +33,7 @@
#include <asm/mach/map.h>
#include <mach/mcspi.h>
+#include <mach/mux.h>
#include <mach/gpio.h>
#include <mach/board.h>
#include <mach/common.h>
@@ -45,6 +46,8 @@
#include "mmc-twl4030.h"
+#define TWL4030_MSECURE_GPIO 22
+
#define LDP_SMSC911X_CS 1
#define LDP_SMSC911X_GPIO 152
#define DEBUG_BASE 0x08000000
@@ -306,6 +309,10 @@ static struct twl4030_gpio_platform_data ldp_gpio_data = {
.irq_end = TWL4030_GPIO_IRQ_END,
};
+static struct twl4030_rtc_platform_data ldp_rtc_data = {
+ .msecure_gpio = TWL4030_MSECURE_GPIO,
+};
+
static struct twl4030_madc_platform_data ldp_madc_data = {
.irq_line = 1,
};
@@ -338,6 +345,7 @@ static struct twl4030_platform_data ldp_twldata = {
.usb = &ldp_usb_data,
.vmmc1 = &ldp_vmmc1,
.gpio = &ldp_gpio_data,
+ .rtc = &ldp_rtc_data,
.keypad = &ldp_kp_twl4030_data,
};
@@ -375,6 +383,16 @@ static struct platform_device *ldp_devices[] __initdata = {
&ldp_gpio_keys_device,
};
+int ldp_rtc_init(void)
+{
+ /* msecure mux cfg */
+ if (omap_type() == OMAP2_DEVICE_TYPE_GP &&
+ omap_rev() < OMAP3430_REV_ES2_0)
+ return omap_cfg_reg(AF9_34XX_V1_X_GPIO22_OUT);
+ else
+ return 0;
+}
+
static void __init omap_ldp_init(void)
{
omap_i2c_init();
@@ -383,6 +401,9 @@ static void __init omap_ldp_init(void)
ldp_spi_board_info[0].irq = gpio_to_irq(ts_gpio);
spi_register_board_info(ldp_spi_board_info,
ARRAY_SIZE(ldp_spi_board_info));
+ if (ldp_rtc_init())
+ printk(KERN_ERR "Failed to configure msecure gpio: "
+ "RTC functionality will not be available\n");
ads7846_dev_init();
omap_serial_init();
usb_musb_init();
diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
index 0c427ec..84e1bca 100644
--- a/arch/arm/mach-omap2/board-omap3beagle.c
+++ b/arch/arm/mach-omap2/board-omap3beagle.c
@@ -259,6 +259,7 @@ static struct twl4030_platform_data beagle_twldata = {
/* platform_data for children goes here */
.gpio = &beagle_gpio_data,
+ .rtc = NULL,
.vmmc1 = &beagle_vmmc1,
.vsim = &beagle_vsim,
.vdac = &beagle_vdac,
diff --git a/arch/arm/mach-omap2/board-omap3evm.c b/arch/arm/mach-omap2/board-omap3evm.c
index b35efaa..d667843 100644
--- a/arch/arm/mach-omap2/board-omap3evm.c
+++ b/arch/arm/mach-omap2/board-omap3evm.c
@@ -206,6 +206,7 @@ static struct twl4030_platform_data omap3evm_twldata = {
.madc = &omap3evm_madc_data,
.usb = &omap3evm_usb_data,
.gpio = &omap3evm_gpio_data,
+ .rtc = NULL,
};
static struct i2c_board_info __initdata omap3evm_i2c_boardinfo[] = {
diff --git a/arch/arm/mach-omap2/board-omap3pandora.c b/arch/arm/mach-omap2/board-omap3pandora.c
index bf6e09a..663c0ed 100644
--- a/arch/arm/mach-omap2/board-omap3pandora.c
+++ b/arch/arm/mach-omap2/board-omap3pandora.c
@@ -285,6 +285,7 @@ static struct twl4030_platform_data omap3pandora_twldata = {
.irq_base = TWL4030_IRQ_BASE,
.irq_end = TWL4030_IRQ_END,
.gpio = &omap3pandora_gpio_data,
+ .rtc = NULL,
.usb = &omap3pandora_usb_data,
.vmmc1 = &pandora_vmmc1,
.vmmc2 = &pandora_vmmc2,
diff --git a/arch/arm/mach-omap2/board-overo.c b/arch/arm/mach-omap2/board-overo.c
index 7f4937e..6dc590e 100644
--- a/arch/arm/mach-omap2/board-overo.c
+++ b/arch/arm/mach-omap2/board-overo.c
@@ -338,6 +338,7 @@ static struct twl4030_platform_data overo_twldata = {
.irq_base = TWL4030_IRQ_BASE,
.irq_end = TWL4030_IRQ_END,
.gpio = &overo_gpio_data,
+ .rtc = NULL,
.usb = &overo_usb_data,
.vmmc1 = &overo_vmmc1,
};
diff --git a/arch/arm/mach-omap2/board-zoom2.c b/arch/arm/mach-omap2/board-zoom2.c
index 56b6f00..6b84d75 100644
--- a/arch/arm/mach-omap2/board-zoom2.c
+++ b/arch/arm/mach-omap2/board-zoom2.c
@@ -54,6 +54,7 @@ static struct twl4030_platform_data zoom2_twldata = {
/* platform_data for children goes here */
.gpio = &zoom2_gpio_data,
+ .rtc = NULL,
};
static struct i2c_board_info __initdata zoom2_i2c_boardinfo[] = {
diff --git a/arch/arm/mach-omap2/mux.c b/arch/arm/mach-omap2/mux.c
index 43d6b92..9e1caeb 100644
--- a/arch/arm/mach-omap2/mux.c
+++ b/arch/arm/mach-omap2/mux.c
@@ -492,6 +492,11 @@ MUX_CFG_34XX("H16_34XX_SDRC_CKE0", 0x262,
OMAP34XX_MUX_MODE0 | OMAP34XX_PIN_OUTPUT)
MUX_CFG_34XX("H17_34XX_SDRC_CKE1", 0x264,
OMAP34XX_MUX_MODE0 | OMAP34XX_PIN_OUTPUT)
+MUX_CFG_34XX("AF9_34XX_GPIO22_OUT", 0x5ec,
+ OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_OFF_OUTPUT_HIGH)
+/* AF9_34XX_V1_X_GPIO22_OUT pin used only for omap 3430 version<2.0 */
+MUX_CFG_34XX("AF9_34XX_V1_X_GPIO22_OUT", 0xa3c,
+ OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_OUTPUT)
};
#define OMAP34XX_PINS_SZ ARRAY_SIZE(omap34xx_pins)
diff --git a/arch/arm/plat-omap/include/mach/mux.h b/arch/arm/plat-omap/include/mach/mux.h
index 80281c4..efa9d0c 100644
--- a/arch/arm/plat-omap/include/mach/mux.h
+++ b/arch/arm/plat-omap/include/mach/mux.h
@@ -857,6 +857,8 @@ enum omap34xx_index {
/* OMAP3 SDRC CKE signals to SDR/DDR ram chips */
H16_34XX_SDRC_CKE0,
H17_34XX_SDRC_CKE1,
+ AF9_34XX_GPIO22_OUT,
+ AF9_34XX_V1_X_GPIO22_OUT
};
struct omap_mux_cfg {
--
1.6.0.4
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [RFC][PATCH 3/3] board files for msecure line mux configuration
2009-08-12 15:45 [RFC][PATCH 3/3] board files for msecure line mux configuration charu
@ 2009-08-14 12:42 ` Roger Quadros
0 siblings, 0 replies; 2+ messages in thread
From: Roger Quadros @ 2009-08-14 12:42 UTC (permalink / raw)
To: ext charu@ti.com; +Cc: linux-omap, tony, david-b, sameo, p_gortmaker
ext charu@ti.com wrote:
> Board files do platform dependent msecure line mux configuration.
> Board files initialize rtc platform data.
> RTC platform data required for configuring msecure line in rtc-twl4030.c.
> mux.c and mux.h files modified for defining muxed RTC msecure GPIO lines.
> These msecure lines are used in various twl4030 based platforms.
>
>
>
> +int sdp3430_rtc_init(void)
> +{
> + /* msecure mux cfg */
> + if (omap_type() == OMAP2_DEVICE_TYPE_GP &&
> + omap_rev() < OMAP3430_REV_ES2_0)
> + return omap_cfg_reg(AF9_34XX_V1_X_GPIO22_OUT);
> + else
> + return 0;
> +};
> +
> static void __init omap_3430sdp_init(void)
> {
> omap3430_i2c_init();
> @@ -585,6 +600,9 @@ static void __init omap_3430sdp_init(void)
> sdp3430_spi_board_info[0].irq = gpio_to_irq(ts_gpio);
> spi_register_board_info(sdp3430_spi_board_info,
> ARRAY_SIZE(sdp3430_spi_board_info));
> + if (sdp3430_rtc_init())
> + printk(KERN_ERR "Failed to configure msecure gpio: "
> + "RTC functionality will not be available\n");
You are printing this here, but since .rtc is already provided
the GPIO will be allocated and used by the twl4030 rtc driver.
Instead it will be better to set .rtc platform data to null at run time
before calling omap3430_i2c_init() so at least RTC functionality can be used.
> ads7846_dev_init();
> omap_serial_init();
> usb_musb_init();
> diff --git a/arch/arm/mach-omap2/board-ldp.c b/arch/arm/mach-omap2/board-ldp.c
> index 73e2bbb..ee66a35 100644
> --- a/arch/arm/mach-omap2/board-ldp.c
> +++ b/arch/arm/mach-omap2/board-ldp.c
> @@ -33,6 +33,7 @@
> #include <asm/mach/map.h>
>
> #include <mach/mcspi.h>
> +#include <mach/mux.h>
> #include <mach/gpio.h>
> #include <mach/board.h>
> #include <mach/common.h>
> @@ -45,6 +46,8 @@
>
> #include "mmc-twl4030.h"
>
> +#define TWL4030_MSECURE_GPIO 22
> +
> #define LDP_SMSC911X_CS 1
> #define LDP_SMSC911X_GPIO 152
> #define DEBUG_BASE 0x08000000
> @@ -306,6 +309,10 @@ static struct twl4030_gpio_platform_data ldp_gpio_data = {
> .irq_end = TWL4030_GPIO_IRQ_END,
> };
>
> +static struct twl4030_rtc_platform_data ldp_rtc_data = {
> + .msecure_gpio = TWL4030_MSECURE_GPIO,
> +};
> +
> static struct twl4030_madc_platform_data ldp_madc_data = {
> .irq_line = 1,
> };
> @@ -338,6 +345,7 @@ static struct twl4030_platform_data ldp_twldata = {
> .usb = &ldp_usb_data,
> .vmmc1 = &ldp_vmmc1,
> .gpio = &ldp_gpio_data,
> + .rtc = &ldp_rtc_data,
> .keypad = &ldp_kp_twl4030_data,
> };
>
> @@ -375,6 +383,16 @@ static struct platform_device *ldp_devices[] __initdata = {
> &ldp_gpio_keys_device,
> };
>
> +int ldp_rtc_init(void)
> +{
> + /* msecure mux cfg */
> + if (omap_type() == OMAP2_DEVICE_TYPE_GP &&
> + omap_rev() < OMAP3430_REV_ES2_0)
> + return omap_cfg_reg(AF9_34XX_V1_X_GPIO22_OUT);
> + else
> + return 0;
> +}
> +
> static void __init omap_ldp_init(void)
> {
> omap_i2c_init();
> @@ -383,6 +401,9 @@ static void __init omap_ldp_init(void)
> ldp_spi_board_info[0].irq = gpio_to_irq(ts_gpio);
> spi_register_board_info(ldp_spi_board_info,
> ARRAY_SIZE(ldp_spi_board_info));
> + if (ldp_rtc_init())
> + printk(KERN_ERR "Failed to configure msecure gpio: "
> + "RTC functionality will not be available\n");
ditto
> ads7846_dev_init();
> omap_serial_init();
> usb_musb_init();
> diff --git a/arch/arm/mach-omap2/board-omap3beagle.c
b/arch/arm/mach-omap2/board-omap3beagle.c
> index 0c427ec..84e1bca 100644
> --- a/arch/arm/mach-omap2/board-omap3beagle.c
> +++ b/arch/arm/mach-omap2/board-omap3beagle.c
> @@ -259,6 +259,7 @@ static struct twl4030_platform_data beagle_twldata = {
>
> /* platform_data for children goes here */
> .gpio = &beagle_gpio_data,
> + .rtc = NULL,
not required as it will be NULL by default.
> .vmmc1 = &beagle_vmmc1,
> .vsim = &beagle_vsim,
> .vdac = &beagle_vdac,
> diff --git a/arch/arm/mach-omap2/board-omap3evm.c
b/arch/arm/mach-omap2/board-omap3evm.c
> index b35efaa..d667843 100644
> --- a/arch/arm/mach-omap2/board-omap3evm.c
> +++ b/arch/arm/mach-omap2/board-omap3evm.c
> @@ -206,6 +206,7 @@ static struct twl4030_platform_data omap3evm_twldata = {
> .madc = &omap3evm_madc_data,
> .usb = &omap3evm_usb_data,
> .gpio = &omap3evm_gpio_data,
> + .rtc = NULL,
ditto
> };
>
> static struct i2c_board_info __initdata omap3evm_i2c_boardinfo[] = {
> diff --git a/arch/arm/mach-omap2/board-omap3pandora.c
b/arch/arm/mach-omap2/board-omap3pandora.c
> index bf6e09a..663c0ed 100644
> --- a/arch/arm/mach-omap2/board-omap3pandora.c
> +++ b/arch/arm/mach-omap2/board-omap3pandora.c
> @@ -285,6 +285,7 @@ static struct twl4030_platform_data omap3pandora_twldata = {
> .irq_base = TWL4030_IRQ_BASE,
> .irq_end = TWL4030_IRQ_END,
> .gpio = &omap3pandora_gpio_data,
> + .rtc = NULL,
ditto
> .usb = &omap3pandora_usb_data,
> .vmmc1 = &pandora_vmmc1,
> .vmmc2 = &pandora_vmmc2,
> diff --git a/arch/arm/mach-omap2/board-overo.c
b/arch/arm/mach-omap2/board-overo.c
> index 7f4937e..6dc590e 100644
> --- a/arch/arm/mach-omap2/board-overo.c
> +++ b/arch/arm/mach-omap2/board-overo.c
> @@ -338,6 +338,7 @@ static struct twl4030_platform_data overo_twldata = {
> .irq_base = TWL4030_IRQ_BASE,
> .irq_end = TWL4030_IRQ_END,
> .gpio = &overo_gpio_data,
> + .rtc = NULL,
ditto :)
> .usb = &overo_usb_data,
> .vmmc1 = &overo_vmmc1,
> };
> diff --git a/arch/arm/mach-omap2/board-zoom2.c
b/arch/arm/mach-omap2/board-zoom2.c
> index 56b6f00..6b84d75 100644
> --- a/arch/arm/mach-omap2/board-zoom2.c
> +++ b/arch/arm/mach-omap2/board-zoom2.c
> @@ -54,6 +54,7 @@ static struct twl4030_platform_data zoom2_twldata = {
>
> /* platform_data for children goes here */
> .gpio = &zoom2_gpio_data,
> + .rtc = NULL,
:)
> };
>
> static struct i2c_board_info __initdata zoom2_i2c_boardinfo[] = {
> diff --git a/arch/arm/mach-omap2/mux.c b/arch/arm/mach-omap2/mux.c
> index 43d6b92..9e1caeb 100644
> --- a/arch/arm/mach-omap2/mux.c
> +++ b/arch/arm/mach-omap2/mux.c
> @@ -492,6 +492,11 @@ MUX_CFG_34XX("H16_34XX_SDRC_CKE0", 0x262,
> OMAP34XX_MUX_MODE0 | OMAP34XX_PIN_OUTPUT)
> MUX_CFG_34XX("H17_34XX_SDRC_CKE1", 0x264,
> OMAP34XX_MUX_MODE0 | OMAP34XX_PIN_OUTPUT)
> +MUX_CFG_34XX("AF9_34XX_GPIO22_OUT", 0x5ec,
> + OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_OFF_OUTPUT_HIGH)
> +/* AF9_34XX_V1_X_GPIO22_OUT pin used only for omap 3430 version<2.0 */
> +MUX_CFG_34XX("AF9_34XX_V1_X_GPIO22_OUT", 0xa3c,
> + OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_OUTPUT)
> };
>
> #define OMAP34XX_PINS_SZ ARRAY_SIZE(omap34xx_pins)
> diff --git a/arch/arm/plat-omap/include/mach/mux.h
b/arch/arm/plat-omap/include/mach/mux.h
> index 80281c4..efa9d0c 100644
> --- a/arch/arm/plat-omap/include/mach/mux.h
> +++ b/arch/arm/plat-omap/include/mach/mux.h
> @@ -857,6 +857,8 @@ enum omap34xx_index {
> /* OMAP3 SDRC CKE signals to SDR/DDR ram chips */
> H16_34XX_SDRC_CKE0,
> H17_34XX_SDRC_CKE1,
> + AF9_34XX_GPIO22_OUT,
> + AF9_34XX_V1_X_GPIO22_OUT
> };
>
> struct omap_mux_cfg {
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2009-08-14 12:43 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-08-12 15:45 [RFC][PATCH 3/3] board files for msecure line mux configuration charu
2009-08-14 12:42 ` Roger Quadros
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox