Omap fixes for 2.6.32-rc1
Subsystems (6)
Tony Lindgren
maintainercover Omap fixes for 2.6.32-rc1
Hi all,
Here are some omap fixes for review.
Regards,
Tony
---
Ajay Kumar Gupta (1):
omap: Add missing mux pin for EHCI phy reset line
Angelo Arrifano (2):
omap: Fix a OMAP_MPUIO_VBASE typo for 850
omap: Fix wrong jtag_id for 850
Hiroshi DOYU (2):
omap: mailbox: Flush posted write when acking mailbox irq
omap: mailbox: Execute softreset at startup
Jarkko Nikula (1):
omap: Fix MMC gpio_wp for BeagleBoard C2 and above
Sanjeev Premi (1):
omap: iovmm: Fix compiler warning
Tobias Klauser (1):
omap: rng: Use resource_size instead of manual calculation
Tony Lindgren (4):
omap: Fix matrix_keymap_data usage
omap: Fix 44xx compile
omap: Fix mcspi compile for 2420
omap: Fix compile for arch/arm/mach-omap2
arch/arm/mach-omap1/id.c | 2 - arch/arm/mach-omap2/board-3430sdp.c | 10 +++- arch/arm/mach-omap2/board-ldp.c | 10 +++- arch/arm/mach-omap2/board-omap3beagle.c | 7 ++- arch/arm/mach-omap2/board-omap3evm.c | 10 +++- arch/arm/mach-omap2/board-omap3pandora.c | 10 +++- arch/arm/mach-omap2/board-rx51-peripherals.c | 10 +++- arch/arm/mach-omap2/board-zoom2.c | 10 +++- arch/arm/mach-omap2/cm4xxx.c | 17 +------ arch/arm/mach-omap2/devices.c | 65 +++++++++++++++++++------- arch/arm/mach-omap2/io.c | 4 +- arch/arm/mach-omap2/mailbox.c | 33 +++++++++++-- arch/arm/mach-omap2/mux.c | 4 ++ arch/arm/mach-omap2/serial.c | 6 +- arch/arm/plat-omap/gpio.c | 2 - arch/arm/plat-omap/include/mach/keypad.h | 5 +- arch/arm/plat-omap/include/mach/mux.h | 2 + arch/arm/plat-omap/iovmm.c | 5 +- drivers/char/hw_random/omap-rng.c | 4 +- 19 files changed, 146 insertions(+), 70 deletions(-)
Signature · 1 line
Signature
Tony Lindgren
maintainerPATCH 1/12 omap: Fix compile for arch/arm/mach-omap2
Patch 941132606c7611246d2034cb7b01f9270c2d1ede split IO_ADDRESS into OMAP1_IO_ADDRESS and OMAP2_IO_ADDRESS except for the omap4 code to avoid merge conflicts with the omap4 code that was queued earlier.
--- arch/arm/mach-omap2/serial.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)
arch/arm/mach-omap2/serial.c +2 -2
@@ -110,7 +110,7 @@ static struct plat_serial8250_port serial_platform_data2[] = { .uartclk = OMAP24XX_BASE_BAUD * 16, }, {#ifdef CONFIG_ARCH_OMAP4 - .membase = IO_ADDRESS(OMAP_UART4_BASE), + .membase = OMAP2_IO_ADDRESS(OMAP_UART4_BASE), .mapbase = OMAP_UART4_BASE, .irq = 70, .flags = UPF_BOOT_AUTOCONF,
@@ -126,7 +126,7 @@ static struct plat_serial8250_port serial_platform_data2[] = { #ifdef CONFIG_ARCH_OMAP4 static struct plat_serial8250_port serial_platform_data3[] = { { - .membase = IO_ADDRESS(OMAP_UART4_BASE), + .membase = OMAP2_IO_ADDRESS(OMAP_UART4_BASE), .mapbase = OMAP_UART4_BASE, .irq = 70, .flags = UPF_BOOT_AUTOCONF,
Tony Lindgren
maintainerPATCH 2/12 omap: Fix mcspi compile for 2420
In reply to Tony LindgrenCommit 7869c0b9ed44404bbc675ef76f8ccb3be5496f39 added support for additional McSPI ports. Unfortunately that broke compile for 2420.
--- arch/arm/mach-omap2/devices.c | 65 ++++++++++++++++++++++++++++++----------- 1 files changed, 48 insertions(+), 17 deletions(-)
arch/arm/mach-omap2/devices.c +48 -17
@@ -355,29 +355,60 @@ static struct platform_device omap2_mcspi4 = { };#endif -static void omap_init_mcspi (void ) +#ifdef CONFIG_ARCH_OMAP4 +static inline void omap4_mcspi_fixup (void ) { -if (cpu_is_omap44xx ()) { - omap2_mcspi1_resources[0 ].start =OMAP4_MCSPI1_BASE ; - omap2_mcspi1_resources[0 ].end =OMAP4_MCSPI1_BASE +0xff ; - omap2_mcspi2_resources[0 ].start =OMAP4_MCSPI2_BASE ; - omap2_mcspi2_resources[0 ].end =OMAP4_MCSPI2_BASE +0xff ; - omap2_mcspi3_resources[0 ].start =OMAP4_MCSPI3_BASE ; - omap2_mcspi3_resources[0 ].end =OMAP4_MCSPI3_BASE +0xff ; - omap2_mcspi4_resources[0 ].start =OMAP4_MCSPI4_BASE ; - omap2_mcspi4_resources[0 ].end =OMAP4_MCSPI4_BASE +0xff ; - } -platform_device_register (&omap2_mcspi1); -platform_device_register (&omap2_mcspi2); + omap2_mcspi1_resources[0 ].start =OMAP4_MCSPI1_BASE ; + omap2_mcspi1_resources[0 ].end =OMAP4_MCSPI1_BASE +0xff ; + omap2_mcspi2_resources[0 ].start =OMAP4_MCSPI2_BASE ; + omap2_mcspi2_resources[0 ].end =OMAP4_MCSPI2_BASE +0xff ; + omap2_mcspi3_resources[0 ].start =OMAP4_MCSPI3_BASE ; + omap2_mcspi3_resources[0 ].end =OMAP4_MCSPI3_BASE +0xff ; + omap2_mcspi4_resources[0 ].start =OMAP4_MCSPI4_BASE ; + omap2_mcspi4_resources[0 ].end =OMAP4_MCSPI4_BASE +0xff ; +} +#else +static inline void omap4_mcspi_fixup (void ) +{ +} +#endif +#if defined(CONFIG_ARCH_OMAP2430 ) || defined(CONFIG_ARCH_OMAP3 ) || \ defined(CONFIG_ARCH_OMAP4 ) -if (cpu_is_omap2430 () ||cpu_is_omap343x () ||cpu_is_omap44xx ()) -platform_device_register (&omap2_mcspi3); +static inline void omap2_mcspi3_init (void ) +{ +platform_device_register (&omap2_mcspi3); +} +#else +static inline void omap2_mcspi3_init (void ) +{ +}#endif +#if defined(CONFIG_ARCH_OMAP3 ) || defined(CONFIG_ARCH_OMAP4 ) -if (cpu_is_omap343x () ||cpu_is_omap44xx ()) -platform_device_register (&omap2_mcspi4); +static inline void omap2_mcspi4_init (void ) +{ +platform_device_register (&omap2_mcspi4); +} +#else +static inline void omap2_mcspi4_init (void ) +{ +}#endif + +static void omap_init_mcspi (void ) +{ +if (cpu_is_omap44xx ()) +omap4_mcspi_fixup (); + +platform_device_register (&omap2_mcspi1); +platform_device_register (&omap2_mcspi2); + +if (cpu_is_omap2430 () ||cpu_is_omap343x () ||cpu_is_omap44xx ()) +omap2_mcspi3_init (); + +if (cpu_is_omap343x () ||cpu_is_omap44xx ()) +omap2_mcspi4_init (); }#else
Tony Lindgren
maintainerPATCH 3/12 omap: Fix 44xx compile
In reply to Tony LindgrenLooks like these patches were not tested that well..
--- arch/arm/mach-omap2/cm4xxx.c | 17 ++--------------- arch/arm/mach-omap2/io.c | 4 ++-- arch/arm/mach-omap2/serial.c | 2 +- 3 files changed, 5 insertions(+), 18 deletions(-)
arch/arm/mach-omap2/cm4xxx.c +2 -15
@@ -22,7 +22,6 @@#include <asm/atomic.h> #include "cm.h" -#include "cm-regbits-4xxx.h" /* XXX move this to cm.h */ /* MAX_MODULE_READY_TIME: max milliseconds for module to leave idle */
@@ -50,19 +49,7 @@*/ int omap4_cm_wait_idlest_ready (u32 prcm_mod,u8 prcm_dev_offs) { -int i =0 ; -u8 cm_id; -u16 prcm_mod_offs; -u32 mask =OMAP4_PRCM_CM_CLKCTRL_IDLEST_MASK ; - - cm_id = prcm_mod >>OMAP4_PRCM_MOD_CM_ID_SHIFT ; - prcm_mod_offs = prcm_mod &OMAP4_PRCM_MOD_OFFS_MASK ; - -while (((omap4_cm_read_mod_reg (cm_id, prcm_mod_offs, prcm_dev_offs, -OMAP4_CM_CLKCTRL_DREG ) & mask) !=0 ) && - (i++ <MAX_MODULE_READY_TIME )) -udelay (1 ); - -return (i <MAX_MODULE_READY_TIME ) ?0 : -EBUSY ; +/* FIXME: Add clock manager related code */ +return 0 ; }
arch/arm/mach-omap2/io.c +2 -2
@@ -294,10 +294,10 @@ void __init omap2_init_common_hw(struct omap_sdrc_params *sdrc_cs0,else if (cpu_is_omap34xx ()) hwmods = omap34xx_hwmods; -omap_hwmod_init (hwmods); -omap2_mux_init ();#ifndef CONFIG_ARCH_OMAP4 /* FIXME: Remove this once the clkdev is ready */ /* The OPP tables have to be registered before a clk init */ +omap_hwmod_init (hwmods); +omap2_mux_init ();omap_pm_if_early_init (mpu_opps, dsp_opps, l3_opps);pwrdm_init (powerdomains_omap);clkdm_init (clockdomains_omap, clkdm_pwrdm_autodeps);
arch/arm/mach-omap2/serial.c +1 -1
@@ -579,7 +579,7 @@ static struct omap_uart_state omap_uart[OMAP_MAX_NR_PORTS] = { { .pdev = { .name = "serial8250", - .id =3 + .id = 3, .dev = { .platform_data = serial_platform_data3, },
Tony Lindgren
maintainerPATCH 4/12 omap: Add missing mux pin for EHCI phy reset line
In reply to Tony LindgrenFrom: Ajay Kumar Gupta <[email protected]>
GPIO135 is used as EHCI (port2) phy reset pin on Multi Media Daughter card connected to OMAP3EVM.
--- arch/arm/mach-omap2/mux.c | 2 ++ arch/arm/plat-omap/include/mach/mux.h | 1 + 2 files changed, 3 insertions(+), 0 deletions(-)
arch/arm/mach-omap2/mux.c +2 -0
@@ -472,6 +472,8 @@ MUX_CFG_34XX("G25_34XX_GPIO86_OUT", 0x0fc, OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_OUTPUT) MUX_CFG_34XX("AG4_34XX_GPIO134_OUT", 0x160, OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_OUTPUT) +MUX_CFG_34XX("AF4_34XX_GPIO135_OUT", 0x162, + OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_OUTPUT) MUX_CFG_34XX("AE4_34XX_GPIO136_OUT", 0x164, OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_OUTPUT) MUX_CFG_34XX("AF6_34XX_GPIO140_UP", 0x16c,
arch/arm/plat-omap/include/mach/mux.h +1 -0
@@ -846,6 +846,7 @@ enum omap34xx_index {L8_34XX_GPIO63 ,G25_34XX_GPIO86_OUT ,AG4_34XX_GPIO134_OUT , +AF4_34XX_GPIO135_OUT ,AE4_34XX_GPIO136_OUT ,AF6_34XX_GPIO140_UP , AE6_34XX_GPIO141,
Tony Lindgren
maintainerPATCH 5/12 omap: mailbox: Execute softreset at startup
In reply to Tony LindgrenFrom: Hiroshi DOYU <[email protected]>
The softreset at startup is introduced as TRM describes and also some register bit definitions are added instead of magic number.
--- arch/arm/mach-omap2/mailbox.c | 30 +++++++++++++++++++++++++----- 1 files changed, 25 insertions(+), 5 deletions(-)
arch/arm/mach-omap2/mailbox.c +25 -5
@@ -30,6 +30,14 @@#define MAILBOX_IRQ_NEWMSG (u) (1 << (2 * (u)))#define MAILBOX_IRQ_NOTFULL (u) (1 << (2 * (u) + 1)) +/* SYSCONFIG: register bit definition */ +#define AUTOIDLE (1 << 0) +#define SOFTRESET (1 << 1) +#define SMARTIDLE (2 << 3) + +/* SYSSTATUS: register bit definition */ +#define RESETDONE (1 << 0) +#define MBOX_REG_SIZE 0x120#define MBOX_NR_REGS (MBOX_REG_SIZE / sizeof(u32))
@@ -69,21 +77,33 @@ static inline void mbox_write_reg(u32 val, size_t ofs)/* Mailbox H/W preparations */ static int omap2_mbox_startup (struct omap_mbox *mbox) { -unsigned int l; +u32 l; +unsigned long timeout; mbox_ick_handle =clk_get (NULL ,"mailboxes_ick" );if (IS_ERR (mbox_ick_handle)) { -printk ("Could not get mailboxes_ick\n" ); +pr_err ("Can't get mailboxes_ick\n" );return -ENODEV ; }clk_enable (mbox_ick_handle); +mbox_write_reg (SOFTRESET ,MAILBOX_SYSCONFIG ); + timeout = jiffies +msecs_to_jiffies (20 ); +do { + l =mbox_read_reg (MAILBOX_SYSSTATUS ); +if (l &RESETDONE ) +break ; + }while (time_after (jiffies, timeout)); + +if (!(l &RESETDONE )) { +pr_err ("Can't take mmu out of reset\n" ); +return -ENODEV ; + } + l =mbox_read_reg (MAILBOX_REVISION );pr_info ("omap mailbox rev %d.%d\n" , (l &0xf0 ) >>4 , (l &0x0f )); -/* set smart-idle & autoidle */ - l =mbox_read_reg (MAILBOX_SYSCONFIG ); - l |=0x00000011 ; + l =SMARTIDLE |AUTOIDLE ;mbox_write_reg (l,MAILBOX_SYSCONFIG );omap2_mbox_enable_irq (mbox,IRQ_RX );
Tony Lindgren
maintainerPATCH 6/12 omap: mailbox: Flush posted write when acking mailbox irq
In reply to Tony LindgrenFrom: Hiroshi DOYU <[email protected]>
The only way to flush posted write to L4 bus is to do a read back of the same register right after the write.
This seems to be mostly needed in interrupt handlers to avoid causing spurious interrupts.
The earlier fix has been to mark the L4 bus as strongly ordered memory, which solves the problem, but causes performance penalties.
Similar to the fix, 03803a71041e3bc3c077f4e7b92f6ceaa9426df3
--- arch/arm/mach-omap2/mailbox.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-)
arch/arm/mach-omap2/mailbox.c +3 -0
@@ -176,6 +176,9 @@ static void omap2_mbox_ack_irq(struct omap_mbox *mbox,u32 bit = (irq ==IRQ_TX ) ? p->notfull_bit : p->newmsg_bit;mbox_write_reg (bit, p->irqstatus); + +/* Flush posted write for irq status to avoid spurious interrupts */ +mbox_read_reg (p->irqstatus); } static int omap2_mbox_is_irq(struct omap_mbox *mbox,
PATCH 6/12 omap: mailbox: Flush posted write when acking mailbox irq
Quoted 4 lines · Tony Lindgren
From: Hiroshi DOYU<[email protected]>
The only way to flush posted write to L4 bus is to do a read back of the same register right after the write.
Just curious, is it really necessary to read back the _same_ register? Would reading back any L4 bus-related register be sufficient?
Signature · 2 lines
Best Regards, Artem Bityutskiy (????? ????????)
Tony Lindgren
maintainerPATCH 6/12 omap: mailbox: Flush posted write when acking mailbox irq
Quoted 8 lines · Artem Bityutskiy
Quoted 4 lines · Tony Lindgren
From: Hiroshi DOYU<[email protected]>
The only way to flush posted write to L4 bus is to do a read back of the same register right after the write.
Just curious, is it really necessary to read back the _same_ register? Would reading back any L4 bus-related register be sufficient?
It seems that reading back any register in the same device will do it.
Tony
Tony Lindgren
maintainerPATCH 7/12 omap: iovmm: Fix compiler warning
In reply to Tony LindgrenFrom: Sanjeev Premi <[email protected]>
This patch fixes these compiler warnings:
arch/arm/plat-omap/iovmm.c: In function 'vmap_sg':arch/arm/plat-omap/iovmm.c:202: warning: passing argument 1 of
'flush_cache_vmap' makes integer from pointer without a castarch/arm/plat-omap/iovmm.c:202: warning: passing argument 2 of
'flush_cache_vmap' makes integer from pointer without a castarch/arm/plat-omap/iovmm.c: In function 'sgtable_fill_vmalloc':arch/arm/plat-omap/iovmm.c:393: warning: passing argument 1 of
'flush_cache_vmap' makes integer from pointer without a castarch/arm/plat-omap/iovmm.c:393: warning: passing argument 2 of
'flush_cache_vmap' makes integer from pointer without a cast
--- arch/arm/plat-omap/iovmm.c | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-)
arch/arm/plat-omap/iovmm.c +3 -2
@@ -199,7 +199,8 @@ static void *vmap_sg(const struct sg_table *sgt) va += bytes; } -flush_cache_vmap (new->addr, new->addr + total); +flush_cache_vmap ((unsigned long )new->addr, + (unsigned long )(new->addr + total));return new->addr; err_out:
@@ -390,7 +391,7 @@ static void sgtable_fill_vmalloc(struct sg_table *sgt, void *_va) } va_end = _va +PAGE_SIZE * i; -flush_cache_vmap (_va, va_end); +flush_cache_vmap ((unsigned long )_va, (unsigned long )va_end); }static inline void sgtable_drain_vmalloc (struct sg_table *sgt)
Tony Lindgren
maintainerPATCH 8/12 omap: Fix wrong jtag_id for 850
In reply to Tony LindgrenFrom: Angelo Arrifano <[email protected]>
Original message:
The previous value of the jtag_id was set for the omap730. For the omap850, this value is different, and this was causing autodetection to fail.
Reported-by:
Cory Maccarrone <[email protected]>
Angelo Arrifano <[email protected]>
Alistair Buxton <[email protected]>
--- arch/arm/mach-omap1/id.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
arch/arm/mach-omap1/id.c +1 -1
@@ -38,7 +38,7 @@ static struct omap_id omap_ids[] __initdata = { { .jtag_id = 0xb574, .die_rev = 0x2, .omap_id = 0x03310315, .type = 0x03100000}, { .jtag_id = 0x355f, .die_rev = 0x0, .omap_id = 0x03320000, .type = 0x07300100}, { .jtag_id = 0xb55f, .die_rev = 0x0, .omap_id = 0x03320000, .type = 0x07300300}, - { .jtag_id = 0xb55f, .die_rev = 0x0, .omap_id = 0x03320500, .type = 0x08500000}, + { .jtag_id = 0xb62c, .die_rev = 0x1, .omap_id = 0x03320500, .type = 0x08500000}, { .jtag_id = 0xb470, .die_rev = 0x0, .omap_id = 0x03310100, .type = 0x15100000}, { .jtag_id = 0xb576, .die_rev = 0x0, .omap_id = 0x03320000, .type = 0x16100000}, { .jtag_id = 0xb576, .die_rev = 0x2, .omap_id = 0x03320100, .type = 0x16110000},
Tony Lindgren
maintainerPATCH 9/12 omap: Fix a OMAP_MPUIO_VBASE typo for 850
In reply to Tony LindgrenFrom: Angelo Arrifano <[email protected]>
This was crashing omap850 devices.
Reported-by:
Alistair Buxton <[email protected]>
--- arch/arm/plat-omap/gpio.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
arch/arm/plat-omap/gpio.c +1 -1
@@ -250,7 +250,7 @@ static struct gpio_bank gpio_bank_730[7] = {#ifdef CONFIG_ARCH_OMAP850 static struct gpio_bank gpio_bank_850[7 ] = { - {OMAP1_MPUIO_BASE ,INT_850_MPUIO ,IH_MPUIO_BASE ,METHOD_MPUIO }, + {OMAP1_MPUIO_VBASE ,INT_850_MPUIO ,IH_MPUIO_BASE ,METHOD_MPUIO }, {OMAP850_GPIO1_BASE ,INT_850_GPIO_BANK1 ,IH_GPIO_BASE ,METHOD_GPIO_850 }, {OMAP850_GPIO2_BASE ,INT_850_GPIO_BANK2 ,IH_GPIO_BASE +32 ,METHOD_GPIO_850 }, { OMAP850_GPIO3_BASE, INT_850_GPIO_BANK3, IH_GPIO_BASE + 64, METHOD_GPIO_850 },
Tony Lindgren
maintainerPATCH 10/12 omap: Fix matrix_keymap_data usage
In reply to Tony LindgrenOtherwise we'll get compile errors like:
arch/arm/plat-omap/include/mach/keypad.h:38:1: warning: "KEY" redefined arch/arm/plat-omap/include/mach/keypad.h:39:1: warning: "PERSISTENT_KEY" redefined
...
--- arch/arm/mach-omap2/board-3430sdp.c | 10 +++++++--- arch/arm/mach-omap2/board-ldp.c | 10 +++++++--- arch/arm/mach-omap2/board-omap3evm.c | 10 +++++++--- arch/arm/mach-omap2/board-omap3pandora.c | 10 +++++++--- arch/arm/mach-omap2/board-rx51-peripherals.c | 10 +++++++--- arch/arm/mach-omap2/board-zoom2.c | 10 +++++++--- arch/arm/plat-omap/include/mach/keypad.h | 5 ++--- 7 files changed, 44 insertions(+), 21 deletions(-)
arch/arm/mach-omap2/board-3430sdp.c +7 -3
@@ -54,7 +54,7 @@#define TWL4030_MSECURE_GPIO 22 -static int sdp3430_keymap[] = { +static int board_keymap[] = {KEY (0 ,0 ,KEY_LEFT ),KEY (0 ,1 ,KEY_RIGHT ),KEY (0 ,2 ,KEY_A ),
@@ -88,11 +88,15 @@ static int sdp3430_keymap[] = { 0 }; +static struct matrix_keymap_data board_map_data = { + .keymap = board_keymap, + .keymap_size =ARRAY_SIZE (board_keymap), +}; +static struct twl4030_keypad_data sdp3430_kp_data = { + .keymap_data = &board_map_data, .rows =5 , .cols =6 , - .keymap = sdp3430_keymap, - .keymapsize =ARRAY_SIZE (sdp3430_keymap), .rep =1 , };
arch/arm/mach-omap2/board-ldp.c +7 -3
@@ -80,7 +80,7 @@ static struct platform_device ldp_smsc911x_device = { }, }; -static int ldp_twl4030_keymap[] = { +static int board_keymap[] = {KEY (0 ,0 ,KEY_1 ),KEY (1 ,0 ,KEY_2 ),KEY (2 ,0 ,KEY_3 ),
@@ -101,11 +101,15 @@ static int ldp_twl4030_keymap[] = { 0 }; +static struct matrix_keymap_data board_map_data = { + .keymap = board_keymap, + .keymap_size =ARRAY_SIZE (board_keymap), +}; +static struct twl4030_keypad_data ldp_kp_twl4030_data = { + .keymap_data = &board_map_data, .rows =6 , .cols =6 , - .keymap = ldp_twl4030_keymap, - .keymapsize =ARRAY_SIZE (ldp_twl4030_keymap), .rep =1 , };
arch/arm/mach-omap2/board-omap3evm.c +7 -3
@@ -159,7 +159,7 @@ static struct twl4030_usb_data omap3evm_usb_data = { .usb_mode = T2_USB_MODE_ULPI, }; -static int omap3evm_keymap[] = { +static int board_keymap[] = {KEY (0 ,0 ,KEY_LEFT ),KEY (0 ,1 ,KEY_RIGHT ),KEY (0 ,2 ,KEY_A ),
@@ -178,11 +178,15 @@ static int omap3evm_keymap[] = { KEY(3, 3, KEY_P) }; +static struct matrix_keymap_data board_map_data = { + .keymap = board_keymap, + .keymap_size =ARRAY_SIZE (board_keymap), +}; +static struct twl4030_keypad_data omap3evm_kp_data = { + .keymap_data = &board_map_data, .rows =4 , .cols =4 , - .keymap = omap3evm_keymap, - .keymapsize =ARRAY_SIZE (omap3evm_keymap), .rep =1 , };
arch/arm/mach-omap2/board-omap3pandora.c +7 -3
@@ -133,7 +133,7 @@ static void __init pandora_keys_gpio_init(void)omap_set_gpio_debounce_time (32 *5 ,GPIO_DEBOUNCE_TIME ); } -static int pandora_keypad_map[] = { +static int board_keymap[] = {/* col, row, code */ KEY (0 ,0 ,KEY_9 ),KEY (0 ,1 ,KEY_0 ),
@@ -180,11 +180,15 @@ static int pandora_keypad_map[] = { KEY(5, 2, KEY_FN), }; +static struct matrix_keymap_data board_map_data = { + .keymap = board_keymap, + .keymap_size =ARRAY_SIZE (board_keymap), +}; +static struct twl4030_keypad_data pandora_kp_data = { + .keymap_data = &board_map_data, .rows =8 , .cols =6 , - .keymap = pandora_keypad_map, - .keymapsize =ARRAY_SIZE (pandora_keypad_map), .rep =1 , };
arch/arm/mach-omap2/board-rx51-peripherals.c +7 -3
@@ -36,7 +36,7 @@#define SYSTEM_REV_B_USES_VAUX3 0x1699#define SYSTEM_REV_S_USES_VAUX3 0x8 -static int rx51_keymap[] = { +static int board_keymap[] = {KEY (0 ,0 ,KEY_Q ),KEY (0 ,1 ,KEY_W ),KEY (0 ,2 ,KEY_E ),
@@ -83,11 +83,15 @@ static int rx51_keymap[] = { KEY(0xff, 5, KEY_F10), }; +static struct matrix_keymap_data board_map_data = { + .keymap = board_keymap, + .keymap_size =ARRAY_SIZE (board_keymap), +}; +static struct twl4030_keypad_data rx51_kp_data = { + .keymap_data = &board_map_data, .rows =8 , .cols =8 , - .keymap = rx51_keymap, - .keymapsize =ARRAY_SIZE (rx51_keymap), .rep =1 , };
arch/arm/mach-omap2/board-zoom2.c +7 -3
@@ -27,7 +27,7 @@#include "mmc-twl4030.h" /* Zoom2 has Qwerty keyboard*/ -static int zoom2_twl4030_keymap[] = { +static int board_keymap[] = {KEY (0 ,0 ,KEY_E ),KEY (1 ,0 ,KEY_R ),KEY (2 ,0 ,KEY_T ),
@@ -82,11 +82,15 @@ static int zoom2_twl4030_keymap[] = { 0 }; +static struct matrix_keymap_data board_map_data = { + .keymap = board_keymap, + .keymap_size =ARRAY_SIZE (board_keymap), +}; +static struct twl4030_keypad_data zoom2_kp_twl4030_data = { + .keymap_data = &board_map_data, .rows =8 , .cols =8 , - .keymap = zoom2_twl4030_keymap, - .keymapsize =ARRAY_SIZE (zoom2_twl4030_keymap), .rep =1 , };
arch/arm/plat-omap/include/mach/keypad.h +2 -3
@@ -10,6 +10,8 @@ #ifndef ASMARM_ARCH_KEYPAD_H #define ASMARM_ARCH_KEYPAD_H +#include <linux/input/matrix_keypad.h> + struct omap_kp_platform_data { int rows; int cols;
@@ -35,9 +37,6 @@ struct omap_kp_platform_data {#define KEY_PERSISTENT 0x00800000#define KEYNUM_MASK 0x00EFFFFF -#define KEY (col, row, val) (((col) << 28) | ((row) << 24) | (val)) -#define PERSISTENT_KEY (col, row) (((col) << 28) | ((row) << 24) | \ - KEY_PERSISTENT)#endif
Tony Lindgren
maintainerPATCH 11/12 omap: Fix MMC gpio_wp for BeagleBoard C2 and above
In reply to Tony LindgrenFrom: Jarkko Nikula <[email protected]>
Earlier BeagleBoards were using pad AH8 muxed to GPIO29 for MMC write-protect. However, this signal has been changed to pad AG9 in board revision C2.
Fix this by adding mux configuration for pad AG9, runtime check for board revisions and set the gpio number and pad muxing accordingly.
--- arch/arm/mach-omap2/board-omap3beagle.c | 7 ++++++- arch/arm/mach-omap2/mux.c | 2 ++ arch/arm/plat-omap/include/mach/mux.h | 1 + 3 files changed, 9 insertions(+), 1 deletions(-)
arch/arm/mach-omap2/board-omap3beagle.c +6 -1
@@ -139,8 +139,13 @@ static struct gpio_led gpio_leds[];static int beagle_twl_gpio_setup (struct device *dev,unsigned gpio,unsigned ngpio) { +if (system_rev >=0x20 && system_rev <=0x34301000 ) { +omap_cfg_reg (AG9_34XX_GPIO23 ); + mmc[0 ].gpio_wp =23 ; + }else { +omap_cfg_reg (AH8_34XX_GPIO29 ); + }/* gpio + 0 is "mmc0_cd" (input/IRQ) */ -omap_cfg_reg (AH8_34XX_GPIO29 ); mmc[0 ].gpio_cd = gpio +0 ;twl4030_mmc_init (mmc);
arch/arm/mach-omap2/mux.c +2 -0
@@ -460,6 +460,8 @@ MUX_CFG_34XX("AF26_34XX_GPIO0", 0x1e0, OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT) MUX_CFG_34XX("AF22_34XX_GPIO9", 0xa18, OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT) +MUX_CFG_34XX("AG9_34XX_GPIO23", 0x5ee, + OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT) MUX_CFG_34XX("AH8_34XX_GPIO29", 0x5fa, OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT) MUX_CFG_34XX("U8_34XX_GPIO54_OUT", 0x0b4,
arch/arm/plat-omap/include/mach/mux.h +1 -0
@@ -840,6 +840,7 @@ enum omap34xx_index {*/ AF26_34XX_GPIO0 ,AF22_34XX_GPIO9 , +AG9_34XX_GPIO23 ,AH8_34XX_GPIO29 ,U8_34XX_GPIO54_OUT , U8_34XX_GPIO54_DOWN,
Tony Lindgren
maintainerPATCH 12/12 omap: rng: Use resource_size instead of manual calculation
In reply to Tony LindgrenFrom: Tobias Klauser <[email protected]>
Use the resource_size function instead of manually calculating the resource size. This reduces the chance of introducing off-by-one-errors.
--- drivers/char/hw_random/omap-rng.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)
drivers/char/hw_random/omap-rng.c +2 -2
@@ -116,7 +116,7 @@ static int __devinit omap_rng_probe(struct platform_device *pdev)if (!res)return -ENOENT ; - mem =request_mem_region (res->start, res->end - res->start +1 , + mem =request_mem_region (res->start,resource_size (res), pdev->name);if (mem ==NULL ) { ret = -EBUSY ;
@@ -124,7 +124,7 @@ static int __devinit omap_rng_probe(struct platform_device *pdev) }dev_set_drvdata (&pdev->dev, mem); - rng_base =ioremap (res->start, res->end - res->start +1 ); + rng_base =ioremap (res->start,resource_size (res));if (!rng_base) { ret = -ENOMEM ; goto err_ioremap;
Tony Lindgren
maintainer[PATCH 13/12] omap: mailbox: Fix wrong condition check in while loop
In reply to Tony LindgrenHere's one more fix for this series.
Regards,
Tony
Tony Lindgren
maintainer[PATCH 13/12] omap: Fix wrong condition check in while loop for mailbox and iommu2
Quoted 1 line · Tony Lindgren
Here's one more fix for this series.
Correction, there were two patches, one for mailbox and one for iommu2 with the same fix. Here are both of them merged into a single patch.
Tony