Module Name: src Committed By: matt Date: Wed Aug 29 17:48:17 UTC 2012
Modified Files: src/sys/arch/arm/omap: files.omap2 omap2_gpio.c omap2_gpmcreg.h omap2_intr.h omap2_obioreg.h omap2_reg.h Log Message: Add some more OMAP4430 support. Add defines needed to determine clock rates of OMAP3530/TIAM37XX and OMAP4430. To generate a diff of this commit: cvs rdiff -u -r1.13 -r1.14 src/sys/arch/arm/omap/files.omap2 cvs rdiff -u -r1.10 -r1.11 src/sys/arch/arm/omap/omap2_gpio.c cvs rdiff -u -r1.7 -r1.8 src/sys/arch/arm/omap/omap2_gpmcreg.h \ src/sys/arch/arm/omap/omap2_intr.h cvs rdiff -u -r1.5 -r1.6 src/sys/arch/arm/omap/omap2_obioreg.h cvs rdiff -u -r1.9 -r1.10 src/sys/arch/arm/omap/omap2_reg.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/arm/omap/files.omap2 diff -u src/sys/arch/arm/omap/files.omap2:1.13 src/sys/arch/arm/omap/files.omap2:1.14 --- src/sys/arch/arm/omap/files.omap2:1.13 Wed Aug 22 22:18:21 2012 +++ src/sys/arch/arm/omap/files.omap2 Wed Aug 29 17:48:17 2012 @@ -1,4 +1,4 @@ -# $NetBSD: files.omap2,v 1.13 2012/08/22 22:18:21 matt Exp $ +# $NetBSD: files.omap2,v 1.14 2012/08/29 17:48:17 matt Exp $ # # Configuration info for Texas Instruments OMAP2/OMAP3 CPU support # Based on xscale/files.pxa2x0 @@ -39,7 +39,7 @@ file arch/arm/arm/bus_space_a4x.S obio device omapicu: pic, pic_splfuncs attach omapicu at obio with omap2icu file arch/arm/omap/omap2_icu.c (omap2 | omap3) & omapicu -file arch/arm/omap/omap2430_intr.c omap2 & !omapicu +file arch/arm/omap/omap2430_intr.c omap2 & !omapicu & !omap4 # OMAP2 GPIO controllers device omapgpio: gpiobus Index: src/sys/arch/arm/omap/omap2_gpio.c diff -u src/sys/arch/arm/omap/omap2_gpio.c:1.10 src/sys/arch/arm/omap/omap2_gpio.c:1.11 --- src/sys/arch/arm/omap/omap2_gpio.c:1.10 Wed Aug 22 22:18:21 2012 +++ src/sys/arch/arm/omap/omap2_gpio.c Wed Aug 29 17:48:17 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: omap2_gpio.c,v 1.10 2012/08/22 22:18:21 matt Exp $ */ +/* $NetBSD: omap2_gpio.c,v 1.11 2012/08/29 17:48:17 matt Exp $ */ /*- * Copyright (c) 2007 The NetBSD Foundation, Inc. * All rights reserved. @@ -28,7 +28,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: omap2_gpio.c,v 1.10 2012/08/22 22:18:21 matt Exp $"); +__KERNEL_RCSID(0, "$NetBSD: omap2_gpio.c,v 1.11 2012/08/29 17:48:17 matt Exp $"); #define _INTR_PRIVATE @@ -348,6 +348,17 @@ gpio_match(device_t parent, cfdata_t cfd || oa->obio_addr == GPIO6_BASE_3530) return 1; #endif + +#ifdef OMAP_4430 + if (oa->obio_addr == GPIO1_BASE_4430 + || oa->obio_addr == GPIO2_BASE_4430 + || oa->obio_addr == GPIO3_BASE_4430 + || oa->obio_addr == GPIO4_BASE_4430 + || oa->obio_addr == GPIO5_BASE_4430 + || oa->obio_addr == GPIO6_BASE_4430) + return 1; +#endif + #ifdef TI_AM335X if (oa->obio_addr == GPIO0_BASE_TI_AM335X || oa->obio_addr == GPIO1_BASE_TI_AM335X @@ -355,6 +366,7 @@ gpio_match(device_t parent, cfdata_t cfd || oa->obio_addr == GPIO3_BASE_TI_AM335X) return 1; #endif + #ifdef TI_DM37XX if (oa->obio_addr == GPIO1_BASE_TI_DM37XX || oa->obio_addr == GPIO2_BASE_TI_DM37XX Index: src/sys/arch/arm/omap/omap2_gpmcreg.h diff -u src/sys/arch/arm/omap/omap2_gpmcreg.h:1.7 src/sys/arch/arm/omap/omap2_gpmcreg.h:1.8 --- src/sys/arch/arm/omap/omap2_gpmcreg.h:1.7 Wed Aug 22 22:18:21 2012 +++ src/sys/arch/arm/omap/omap2_gpmcreg.h Wed Aug 29 17:48:17 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: omap2_gpmcreg.h,v 1.7 2012/08/22 22:18:21 matt Exp $ */ +/* $NetBSD: omap2_gpmcreg.h,v 1.8 2012/08/29 17:48:17 matt Exp $ */ /* * Copyright (c) 2007 Microsoft * All rights reserved. @@ -47,7 +47,7 @@ #ifdef OMAP_3530 #define GPMC_BASE 0x6e000000 #endif -#ifdef TI_AM335X +#if defined(TI_AM335X) || defined(OMAP_4430) #define GPMC_BASE 0x50000000 #endif #ifdef TI_DM37XX Index: src/sys/arch/arm/omap/omap2_intr.h diff -u src/sys/arch/arm/omap/omap2_intr.h:1.7 src/sys/arch/arm/omap/omap2_intr.h:1.8 --- src/sys/arch/arm/omap/omap2_intr.h:1.7 Sat Jul 14 07:42:57 2012 +++ src/sys/arch/arm/omap/omap2_intr.h Wed Aug 29 17:48:17 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: omap2_intr.h,v 1.7 2012/07/14 07:42:57 matt Exp $ */ +/* $NetBSD: omap2_intr.h,v 1.8 2012/08/29 17:48:17 matt Exp $ */ /* * Define the SDP2430 specific information and then include the generic OMAP @@ -39,11 +39,10 @@ #include <arm/cpufunc.h> #endif -#if defined(OMAP2) || defined(OMAP3) -#include <arm/omap/omap2430_intr.h> -#endif #if defined(OMAP_4430) #include <arm/omap/omap4430_intr.h> +#elif defined(OMAP2) || defined(OMAP3) +#include <arm/omap/omap2430_intr.h> #endif #ifndef _LOCORE Index: src/sys/arch/arm/omap/omap2_obioreg.h diff -u src/sys/arch/arm/omap/omap2_obioreg.h:1.5 src/sys/arch/arm/omap/omap2_obioreg.h:1.6 --- src/sys/arch/arm/omap/omap2_obioreg.h:1.5 Wed Aug 22 22:18:21 2012 +++ src/sys/arch/arm/omap/omap2_obioreg.h Wed Aug 29 17:48:17 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: omap2_obioreg.h,v 1.5 2012/08/22 22:18:21 matt Exp $ */ +/* $NetBSD: omap2_obioreg.h,v 1.6 2012/08/29 17:48:17 matt Exp $ */ /* * Copyright (c) 2007 Microsoft @@ -74,6 +74,28 @@ #define GPIO3_BASE GPIO3_BASE_3530 #define GPIO4_BASE GPIO4_BASE_3530 #define GPIO5_BASE GPIO5_BASE_3530 +#define GPIO6_BASE GPIO6_BASE_3530 +#endif + +#if defined(OMAP_4430) +#define OMAP2_OBIO_0_BASE OMAP4430_L4_CORE_BASE +#define OMAP2_OBIO_0_SIZE OMAP4430_L4_CORE_SIZE + +#define OMAP2_OBIO_1_BASE OMAP4430_L4_WAKEUP_BASE +#define OMAP2_OBIO_1_SIZE OMAP4430_L4_WAKEUP_SIZE + +#define OMAP2_OBIO_2_BASE OMAP4430_L4_PERIPHERAL_BASE +#define OMAP2_OBIO_2_SIZE OMAP4430_L4_PERIPHERAL_SIZE + +#define OMAP2_OBIO_3_BASE OMAP4430_L4_ABE_BASE +#define OMAP2_OBIO_3_SIZE OMAP4430_L4_ABE_SIZE + +#define GPIO1_BASE GPIO1_BASE_4430 +#define GPIO2_BASE GPIO2_BASE_4430 +#define GPIO3_BASE GPIO3_BASE_4430 +#define GPIO4_BASE GPIO4_BASE_4430 +#define GPIO5_BASE GPIO5_BASE_4430 +#define GPIO6_BASE GPIO6_BASE_4430 #endif #if defined(TI_AM335X) Index: src/sys/arch/arm/omap/omap2_reg.h diff -u src/sys/arch/arm/omap/omap2_reg.h:1.9 src/sys/arch/arm/omap/omap2_reg.h:1.10 --- src/sys/arch/arm/omap/omap2_reg.h:1.9 Fri Aug 24 06:34:08 2012 +++ src/sys/arch/arm/omap/omap2_reg.h Wed Aug 29 17:48:17 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: omap2_reg.h,v 1.9 2012/08/24 06:34:08 matt Exp $ */ +/* $NetBSD: omap2_reg.h,v 1.10 2012/08/29 17:48:17 matt Exp $ */ /* * Copyright (c) 2007 Microsoft @@ -61,17 +61,17 @@ /* OMAP4 processors */ -#define OMAP4430_L4_CORE_BASE 0x48000000 -#define OMAP4430_L4_CORE_SIZE 0x01000000 /* 16 MB */ +#define OMAP4430_L4_CORE_BASE 0x4A000000 +#define OMAP4430_L4_CORE_SIZE 0x01000000 /* 16MB - CFG */ #define OMAP4430_L4_WAKEUP_BASE 0x4A300000 #define OMAP4430_L4_WAKEUP_SIZE 0x00040000 /* 256KB */ #define OMAP4430_L4_PERIPHERAL_BASE 0x49000000 -#define OMAP4430_L4_PERIPHERAL_SIZE 0x00100000 /* 1MB of 16MB */ +#define OMAP4430_L4_PERIPHERAL_SIZE 0x01000000 /* 16MB */ -#define OMAP4430_L4_EMULATION_BASE 0x54000000 /* Actually L3 */ -#define OMAP4430_L4_EMULATION_SIZE 0x00800000 /* 8MB */ +#define OMAP4430_L4_ABE_BASE 0x40000000 /* Actually L3 */ +#define OMAP4430_L4_ABE_SIZE 0x01000000 /* 16MB */ /* TI Sitara AM335x (OMAP like) */ @@ -282,12 +282,25 @@ #define OMAP3_CM_CLKSEL1_PLL_MPU 0x940 #define OMAP3_CM_CLKSEL2_PLL_MPU 0x944 -#define OMAP3_CM_CLKSEL1_PLL_MPU_CLK_SRC __BITS(21,9) +#define OMAP3_CM_CLKSEL1_PLL_MPU_CLK_SRC __BITS(21,19) #define OMAP3_CM_CLKSEL1_PLL_MPU_DPLL_MULT __BITS(18,8) #define OMAP3_CM_CLKSEL1_PLL_MPU_DPLL_DIV __BITS(6,0) #define OMAP3_CM_CLKSEL2_PLL_MPU_DPLL_CLKOUT_DIV __BITS(4,0) +#define OMAP4_CM_SYS_CLKSEL 0x110 +#define OMAP4_CM_CLKSEL_DPLL_MPU 0x16c +#define OMAP4_CM_DIV_M2_DPLL_MPU 0x170 + +#define OMAP4_CM_SYS_CLKSEL_CLKIN __BITS(2,0) +#define OMAP4_CM_CLKSEL_FREQS { 0, 12000, 13000, 16800, 19200, 26000, 27000, 38400 } +#define OMAP4_CM_CLKSEL_MULT 1000 + +#define OMAP4_CM_CLKSEL_DPLL_MPU_DCC_EN __BIT(22) +#define OMAP4_CM_CLKSEL_DPLL_MPU_DPLL_MULT __BITS(18,8) +#define OMAP4_CM_CLKSEL_DPLL_MPU_DPLL_DIV __BITS(6,0) + +#define OMAP4_CM_DIV_M2_DPLL_MPU_DPLL_CLKOUT_DIV __BITS(4,0) /* * Power Management registers base, offsets, and size */ @@ -295,7 +308,7 @@ #define OMAP2_PRM_BASE 0x48306000 #endif #ifdef OMAP_4430 -#define OMAP2_PRM_BASE 0x4A306000 +#define OMAP2_PRM_BASE (OMAP4430_L4_WAKEUP_BASE + 0x6000) #endif #ifdef TI_AM335X #define OMAP2_PRM_BASE 0x48306000 @@ -599,6 +612,13 @@ #define GPIO5_BASE_3530 0x49056000 #define GPIO6_BASE_3530 0x49058000 +#define GPIO1_BASE_4430 0x4a310000 +#define GPIO2_BASE_4430 0x48055000 +#define GPIO3_BASE_4430 0x48057000 +#define GPIO4_BASE_4430 0x48059000 +#define GPIO5_BASE_4430 0x4805b000 +#define GPIO6_BASE_4430 0x4805d000 + #define GPIO0_BASE_TI_AM335X 0x44e07000 #define GPIO1_BASE_TI_AM335X 0x4804c000 #define GPIO2_BASE_TI_AM335X 0x481ac000