RE: [pm-wip/uart][PATCH 2/6] Serial: Add UART4 hwmod data.
From: Kevin Hilman [khil...@deeprootsystems.com] Sent: Monday, May 24, 2010 7:07 PM To: Raja, Govindraj; Aguirre, Sergio Cc: linux-omap@vger.kernel.org Subject: Re: [pm-wip/uart][PATCH 2/6] Serial: Add UART4 hwmod data. Govindraj.R govindraj.r...@ti.com writes: not in my This happening because we are missing these patches: https://patchwork.kernel.org/patch/84748/ https://patchwork.kernel.org/patch/84749/ https://patchwork.kernel.org/patch/84755/ https://patchwork.kernel.org/patch/84750/ Not part of LO yet. But we need these patches for uart4 support for 3630. Ah, OK. I thought these had been merged already. Looks like these need to be refreshed/resubmitted for l-o. Sergio? Ah, I forgot about resubmitting these for the merge window. Got dragged for this last weeks into high priority work and have abandoned them a little bit. :/ I'm in a business trip at this point and I don't have access to the 3630SDP to try this. You can either wait for me to go back and test them, or I can just send them, and somebody else can help me out re-vaidating them, once i rebase and resend. Does that sound ok? Regards, Sergio Kevin -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [pm-wip/uart][PATCH 2/6] Serial: Add UART4 hwmod data.
Govindraj.R govindraj.r...@ti.com writes: This happening because we are missing these patches: https://patchwork.kernel.org/patch/84748/ https://patchwork.kernel.org/patch/84749/ https://patchwork.kernel.org/patch/84755/ https://patchwork.kernel.org/patch/84750/ Not part of LO yet. But we need these patches for uart4 support for 3630. Ah, OK. I thought these had been merged already. Looks like these need to be refreshed/resubmitted for l-o. Sergio? Kevin -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [pm-wip/uart][PATCH 2/6] Serial: Add UART4 hwmod data.
Govindraj.R govindraj.r...@ti.com writes: Introduce UART4 hwmod data for OMAP3630 Cc: Kevin Hilman khil...@deeprootsystems.com Signed-off-by: Govindraj.R govindraj.r...@ti.com Looks good, except omap4_hwmod was not added to the master list of hwmods to initialize. Fixed up locally. Kevin -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [pm-wip/uart][PATCH 2/6] Serial: Add UART4 hwmod data.
Govindraj.R govindraj.r...@ti.com writes: Introduce UART4 hwmod data for OMAP3630 Cc: Kevin Hilman khil...@deeprootsystems.com Signed-off-by: Govindraj.R govindraj.r...@ti.com Just FYI... After adding UART4 to the master list, it hangs on 3630/Zoom3 (log below) I didn't dig into this one yet. Kevin [...] Clocking rate (Crystal/Core/MPU): 26.0/400/600 MHz omap_hwmod: uart4: cannot clk_get main_clk uart4_fck omap_hwmod: uart4: cannot clk_get interface_clk uart4_ick omap_hwmod: l3_hwmod: cannot be enabled (3) omap_hwmod: l4_core_hwmod: cannot be enabled (3) omap_hwmod: l4_per_hwmod: cannot be enabled (3) omap_hwmod: l4_wkup_hwmod: cannot be enabled (3) Unhandled fault: external abort on non-linefetch (0x1028) at 0xfb042054 Internal error: : 1028 [#1] PREEMPT last sysfs file: Modules linked in: CPU: 0Not tainted (2.6.34-pm-next-default-10673-g60b93ed #3) PC is at omap_hwmod_readl+0x10/0x18 LR is at _update_sysc_cache+0x44/0x74 pc : [c0523adc]lr : [c05240bc]psr: a1d3 sp : c08c5f10 ip : c08c5f20 fp : c08c5f1c r10: 001f r9 : 413fc082 r8 : 80028340 r7 : c08c82cc r6 : c0524c98 r5 : 0001 r4 : c08dcc2c r3 : fb042000 r2 : 0004 r1 : 0054 r0 : c08dcc2c Flags: NzCv IRQs off FIQs off Mode SVC_32 ISA ARM Segment kernel Control: 10c5387f Table: 80004019 DAC: 0017 Process swapper (pid: 0, stack limit = 0xc08c42e8) Stack: (0xc08c5f10 to 0xc08c6000) 5f00: c08c5f34 c08c5f20 c05240bc c0523ad8 5f20: c08dcc2c c08c5f4c c08c5f38 c0524740 c0524084 0012 c08dcc2c 5f40: c08c5f64 c08c5f50 c0524d28 c052463c c08dcc2c c08c5f84 c08c5f68 5f60: c0523e14 c0524ca4 c090ae5c c08e4e30 c08e4e30 c050c014 c08c5f94 c08c5f88 5f80: c05241d0 c0523df0 c08c5fac c08c5f98 c000e530 c052417c c090a200 c050c018 5fa0: c08c5fbc c08c5fb0 c0013894 c000e460 c08c5fcc c08c5fc0 c000b438 c001386c 5fc0: c08c5ff4 c08c5fd0 c0008a6c c000b40c c00086b8 c050c018 5fe0: 10c53c7d c090a5a0 c08c5ff8 80008034 c0008914 Backtrace: [c0523acc] (omap_hwmod_readl+0x0/0x18) from [c05240bc] (_update_sysc_cache+) [c0524078] (_update_sysc_cache+0x0/0x74) from [c0524740] (_enable+0x110/0x1) r4:c08dcc2c r3: [c0524630] (_enable+0x0/0x134) from [c0524d28] (_setup+0x90/0x100) r4:c08dcc2c r3:0012 [c0524c98] (_setup+0x0/0x100) from [c0523e14] (omap_hwmod_for_each+0x30/0x7) r5: r4:c08dcc2c [c0523de4] (omap_hwmod_for_each+0x0/0x78) from [c05241d0] (omap_hwmod_late_) r6:c050c014 r5:c08e4e30 r4:c08e4e30 r3:c090ae5c [c0524170] (omap_hwmod_late_init+0x0/0x8c) from [c000e530] (omap2_init_comm) [c000e454] (omap2_init_common_hw+0x0/0x194) from [c0013894] (omap_zoom_init) r5:c050c018 r4:c090a200 [c0013860] (omap_zoom_init_irq+0x0/0x50) from [c000b438] (init_IRQ+0x38/0x4) [c000b400] (init_IRQ+0x0/0x48) from [c0008a6c] (start_kernel+0x164/0x2d0) [c0008908] (start_kernel+0x0/0x2d0) from [80008034] (0x80008034) r5:c090a5a0 r4:10c53c7d Code: e1a0c00d e92dd800 e24cb004 e5903038 (e7910003) -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[pm-wip/uart][PATCH 2/6] Serial: Add UART4 hwmod data.
Introduce UART4 hwmod data for OMAP3630 Cc: Kevin Hilman khil...@deeprootsystems.com Signed-off-by: Govindraj.R govindraj.r...@ti.com --- arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | 54 arch/arm/mach-omap2/prcm-common.h |2 + arch/arm/plat-omap/include/plat/dma.h |2 + arch/arm/plat-omap/include/plat/irqs.h |2 + 4 files changed, 60 insertions(+), 0 deletions(-) diff --git a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c index 5f74c34..079a65e 100644 --- a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c @@ -86,6 +86,7 @@ static struct omap_hwmod omap3xxx_l4_wkup_hwmod; static struct omap_hwmod omap3xxx_uart1_hwmod; static struct omap_hwmod omap3xxx_uart2_hwmod; static struct omap_hwmod omap3xxx_uart3_hwmod; +static struct omap_hwmod omap3xxx_uart4_hwmod; static struct omap_hwmod omap3xxx_mmc1_hwmod; static struct omap_hwmod omap3xxx_mmc2_hwmod; static struct omap_hwmod omap3xxx_mmc3_hwmod; @@ -151,6 +152,24 @@ static struct omap_hwmod_ocp_if omap3_l4_per__uart3 = { .user = OCP_USER_MPU | OCP_USER_SDMA, }; +/* L4 PER - UART4 interface */ +static struct omap_hwmod_addr_space omap3xxx_uart4_addr_space[] = { + { + .pa_start = OMAP3_UART4_BASE, + .pa_end = OMAP3_UART4_BASE + SZ_1K - 1, + .flags = ADDR_MAP_ON_INIT | ADDR_TYPE_RT, + }, +}; + +static struct omap_hwmod_ocp_if omap3_l4_per__uart4 = { + .master = omap3xxx_l4_per_hwmod, + .slave = omap3xxx_uart4_hwmod, + .clk= uart4_ick, + .addr = omap3xxx_uart4_addr_space, + .addr_cnt = ARRAY_SIZE(omap3xxx_uart4_addr_space), + .user = OCP_USER_MPU | OCP_USER_SDMA, +}; + /* L4 CORE - MMC1 interface */ static struct omap_hwmod_addr_space omap3xxx_mmc1_addr_space[] = { { @@ -257,6 +276,7 @@ static struct omap_hwmod_ocp_if *omap3xxx_l4_per_slaves[] = { /* Master interfaces on the L4_PER interconnect */ static struct omap_hwmod_ocp_if *omap3xxx_l4_per_masters[] = { omap3_l4_per__uart3, + omap3_l4_per__uart4, }; /* L4 PER */ @@ -425,6 +445,40 @@ static struct omap_hwmod omap3xxx_uart3_hwmod = { .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430), }; +/* UART4 */ + +static struct omap_hwmod_irq_info uart4_mpu_irqs[] = { + { .irq = INT_36XX_UART4_IRQ, }, +}; + +static struct omap_hwmod_dma_info uart4_sdma_chs[] = { + { .name = rx, .dma_ch = OMAP36XX_DMA_UART4_RX, }, + { .name = tx, .dma_ch = OMAP36XX_DMA_UART4_TX, }, +}; + +static struct omap_hwmod_ocp_if *omap3xxx_uart4_slaves[] = { + omap3_l4_per__uart4, +}; + +static struct omap_hwmod omap3xxx_uart4_hwmod = { + .name = uart4, + .mpu_irqs = uart4_mpu_irqs, + .mpu_irqs_cnt = ARRAY_SIZE(uart4_mpu_irqs), + .sdma_chs = uart4_sdma_chs, + .sdma_chs_cnt = ARRAY_SIZE(uart4_sdma_chs), + .main_clk = uart4_fck, + .prcm = { + .omap2 = { + .prcm_reg_id = 1, + .module_bit = OMAP3630_EN_UART4_SHIFT, + }, + }, + .slaves = omap3xxx_uart4_slaves, + .slaves_cnt = ARRAY_SIZE(omap3xxx_uart4_slaves), + .class = uart_class, + .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3630ES1), +}; + /* MMC/SD/SDIO common */ static struct omap_hwmod_class_sysconfig mmc_sysc = { diff --git a/arch/arm/mach-omap2/prcm-common.h b/arch/arm/mach-omap2/prcm-common.h index 90f603d..0fc20c9 100644 --- a/arch/arm/mach-omap2/prcm-common.h +++ b/arch/arm/mach-omap2/prcm-common.h @@ -390,6 +390,8 @@ #define OMAP3430_EN_MPU_SHIFT 1 /* CM_FCLKEN_PER, CM_ICLKEN_PER, PM_WKEN_PER shared bits */ +#define OMAP3630_EN_UART4 (1 18) +#define OMAP3630_EN_UART4_SHIFT18 #define OMAP3430_EN_GPIO6 (1 17) #define OMAP3430_EN_GPIO6_SHIFT17 #define OMAP3430_EN_GPIO5 (1 16) diff --git a/arch/arm/plat-omap/include/plat/dma.h b/arch/arm/plat-omap/include/plat/dma.h index 02232ca..105bdb5 100644 --- a/arch/arm/plat-omap/include/plat/dma.h +++ b/arch/arm/plat-omap/include/plat/dma.h @@ -319,6 +319,8 @@ #define OMAP34XX_DMA_USIM_TX 79 /* S_DMA_78 */ #define OMAP34XX_DMA_USIM_RX 80 /* S_DMA_79 */ +#define OMAP36XX_DMA_UART4_TX 81 /* S_DMA_80 */ +#define OMAP36XX_DMA_UART4_RX 82 /* S_DMA_81 */ /**/ #define OMAP1_DMA_TOUT_IRQ (1 0) diff --git a/arch/arm/plat-omap/include/plat/irqs.h b/arch/arm/plat-omap/include/plat/irqs.h index 4017019..1732cca 100644 ---