diff options
Diffstat (limited to 'arch/arm/boards')
37 files changed, 399 insertions, 462 deletions
diff --git a/arch/arm/boards/crystalfontz-cfa10036/hwdetect.c b/arch/arm/boards/crystalfontz-cfa10036/hwdetect.c index 5eb3ca4cf7..21199d6433 100644 --- a/arch/arm/boards/crystalfontz-cfa10036/hwdetect.c +++ b/arch/arm/boards/crystalfontz-cfa10036/hwdetect.c @@ -29,6 +29,10 @@ enum board_type { BOARD_ID_CFA10036 = 0, BOARD_ID_CFA10037 = 1, BOARD_ID_CFA10049 = 2, + BOARD_ID_CFA10055 = 3, + BOARD_ID_CFA10056 = 4, + BOARD_ID_CFA10057 = 5, + BOARD_ID_CFA10058 = 6, }; struct cfa_eeprom_info { @@ -83,6 +87,18 @@ void cfa10036_detect_hw(void) case BOARD_ID_CFA10049: board_name = "cfa10049"; break; + case BOARD_ID_CFA10055: + board_name = "cfa10055"; + break; + case BOARD_ID_CFA10056: + board_name = "cfa10056"; + break; + case BOARD_ID_CFA10057: + board_name = "cfa10057"; + break; + case BOARD_ID_CFA10058: + board_name = "cfa10058"; + break; default: pr_err("Board ID not supported\n"); return; diff --git a/arch/arm/boards/freescale-mx51-pdk/Makefile b/arch/arm/boards/freescale-mx51-pdk/Makefile index d44f697718..f1baae24ff 100644 --- a/arch/arm/boards/freescale-mx51-pdk/Makefile +++ b/arch/arm/boards/freescale-mx51-pdk/Makefile @@ -1,3 +1,3 @@ -obj-y += board.o -lwl-y += flash_header.o +obj-y += board.o flash-header.o +extra-y += flash-header.S flash-header.dcd lwl-y += lowlevel.o diff --git a/arch/arm/boards/freescale-mx51-pdk/board.c b/arch/arm/boards/freescale-mx51-pdk/board.c index db340564f9..6807796ab9 100644 --- a/arch/arm/boards/freescale-mx51-pdk/board.c +++ b/arch/arm/boards/freescale-mx51-pdk/board.c @@ -39,80 +39,8 @@ #include <mach/iomux-mx51.h> #include <mach/devices-imx51.h> #include <mach/revision.h> -#include <mach/iim.h> #include <mach/imx-flash-header.h> -static struct fec_platform_data fec_info = { - .xcv_type = PHY_INTERFACE_MODE_MII, -}; - -static iomux_v3_cfg_t f3s_pads[] = { - /* UART1 */ - MX51_PAD_UART1_RXD__UART1_RXD, - MX51_PAD_UART1_TXD__UART1_TXD, - MX51_PAD_UART1_RTS__UART1_RTS, - MX51_PAD_UART1_CTS__UART1_CTS, - /* FEC */ - MX51_PAD_EIM_EB2__FEC_MDIO, - MX51_PAD_EIM_EB3__FEC_RDATA1, - MX51_PAD_EIM_CS2__FEC_RDATA2, - MX51_PAD_EIM_CS3__FEC_RDATA3, - MX51_PAD_EIM_CS4__FEC_RX_ER, - MX51_PAD_EIM_CS5__FEC_CRS, - MX51_PAD_NANDF_RB2__FEC_COL, - MX51_PAD_NANDF_RB3__FEC_RX_CLK, - MX51_PAD_NANDF_CS2__FEC_TX_ER, - MX51_PAD_NANDF_CS3__FEC_MDC, - MX51_PAD_NANDF_CS4__FEC_TDATA1, - MX51_PAD_NANDF_CS5__FEC_TDATA2, - MX51_PAD_NANDF_CS6__FEC_TDATA3, - MX51_PAD_NANDF_CS7__FEC_TX_EN, - MX51_PAD_NANDF_RDY_INT__FEC_TX_CLK, - MX51_PAD_NANDF_D11__FEC_RX_DV, - MX51_PAD_NANDF_D9__FEC_RDATA0, - MX51_PAD_NANDF_D8__FEC_TDATA0, - MX51_PAD_CSPI1_SS0__ECSPI1_SS0, - MX51_PAD_CSPI1_MOSI__ECSPI1_MOSI, - MX51_PAD_CSPI1_MISO__ECSPI1_MISO, - MX51_PAD_CSPI1_RDY__ECSPI1_RDY, - MX51_PAD_CSPI1_SCLK__ECSPI1_SCLK, - MX51_PAD_EIM_A20__GPIO2_14, /* LAN8700 reset pin */ - IOMUX_PAD(0x60C, 0x21C, 3, 0x0, 0, 0x85), /* FIXME: needed? */ - /* SD 1 */ - MX51_PAD_SD1_CMD__SD1_CMD, - MX51_PAD_SD1_CLK__SD1_CLK, - MX51_PAD_SD1_DATA0__SD1_DATA0, - MX51_PAD_SD1_DATA1__SD1_DATA1, - MX51_PAD_SD1_DATA2__SD1_DATA2, - MX51_PAD_SD1_DATA3__SD1_DATA3, - /* SD 2 */ - MX51_PAD_SD2_CMD__SD2_CMD, - MX51_PAD_SD2_CLK__SD2_CLK, - MX51_PAD_SD2_DATA0__SD2_DATA0, - MX51_PAD_SD2_DATA1__SD2_DATA1, - MX51_PAD_SD2_DATA2__SD2_DATA2, - MX51_PAD_SD2_DATA3__SD2_DATA3, - /* CD/WP gpio */ - MX51_PAD_GPIO1_6__GPIO1_6, - MX51_PAD_GPIO1_5__GPIO1_5, -}; - -#define BABBAGE_ECSPI1_CS0 (3 * 32 + 24) -static int spi_0_cs[] = {BABBAGE_ECSPI1_CS0}; - -static struct spi_imx_master spi_0_data = { - .chipselect = spi_0_cs, - .num_chipselect = ARRAY_SIZE(spi_0_cs), -}; - -static const struct spi_board_info mx51_babbage_spi_board_info[] = { - { - .name = "mc13xxx-spi", - .bus_num = 0, - .chip_select = 0, - }, -}; - #define MX51_CCM_CACRR 0x10 static void babbage_power_init(void) @@ -229,32 +157,22 @@ static void babbage_power_init(void) mdelay(50); } -#define DCD_NAME static struct imx_dcd_entry dcd_entry - -#include "dcd-data.h" +extern char flash_header_start[], flash_header_end[]; static int f3s_devices_init(void) { - spi_register_board_info(mx51_babbage_spi_board_info, - ARRAY_SIZE(mx51_babbage_spi_board_info)); - imx51_add_spi0(&spi_0_data); - babbage_power_init(); console_flush(); imx51_init_lowlevel(800); clock_notifier_call_chain(); - imx51_iim_register_fec_ethaddr(); - imx51_add_fec(&fec_info); - imx51_add_mmc0(NULL); - imx51_add_mmc1(NULL); - armlinux_set_bootparams((void *)0x90000100); armlinux_set_architecture(MACH_TYPE_MX51_BABBAGE); - imx51_bbu_internal_mmc_register_handler("mmc", "/dev/disk0", - BBU_HANDLER_FLAG_DEFAULT, dcd_entry, sizeof(dcd_entry), 0); + imx51_bbu_internal_mmc_register_handler("mmc", "/dev/mmc0", + BBU_HANDLER_FLAG_DEFAULT, (void *)flash_header_start, + flash_header_end - flash_header_start, 0); return 0; } @@ -263,21 +181,9 @@ device_initcall(f3s_devices_init); static int f3s_part_init(void) { - devfs_add_partition("disk0", 0x00000, 0x40000, DEVFS_PARTITION_FIXED, "self0"); - devfs_add_partition("disk0", 0x40000, 0x20000, DEVFS_PARTITION_FIXED, "env0"); + devfs_add_partition("mmc0", 0x00000, 0x40000, DEVFS_PARTITION_FIXED, "self0"); + devfs_add_partition("mmc0", 0x40000, 0x20000, DEVFS_PARTITION_FIXED, "env0"); return 0; } late_initcall(f3s_part_init); - -static int f3s_console_init(void) -{ - mxc_iomux_v3_setup_multiple_pads(f3s_pads, ARRAY_SIZE(f3s_pads)); - - imx51_add_uart0(); - - return 0; -} - -console_initcall(f3s_console_init); - diff --git a/arch/arm/boards/freescale-mx51-pdk/dcd-data.h b/arch/arm/boards/freescale-mx51-pdk/dcd-data.h deleted file mode 100644 index 4dd6c0d26c..0000000000 --- a/arch/arm/boards/freescale-mx51-pdk/dcd-data.h +++ /dev/null @@ -1,60 +0,0 @@ - -DCD_NAME[] = { - { .ptr_type = 4, .addr = 0x73fa88a0, .val = 0x00000200, }, - { .ptr_type = 4, .addr = 0x73fa850c, .val = 0x000020c5, }, - { .ptr_type = 4, .addr = 0x73fa8510, .val = 0x000020c5, }, - { .ptr_type = 4, .addr = 0x73fa883c, .val = 0x00000002, }, - { .ptr_type = 4, .addr = 0x73fa8848, .val = 0x00000002, }, - { .ptr_type = 4, .addr = 0x73fa84b8, .val = 0x000000e7, }, - { .ptr_type = 4, .addr = 0x73fa84bc, .val = 0x00000045, }, - { .ptr_type = 4, .addr = 0x73fa84c0, .val = 0x00000045, }, - { .ptr_type = 4, .addr = 0x73fa84c4, .val = 0x00000045, }, - { .ptr_type = 4, .addr = 0x73fa84c8, .val = 0x00000045, }, - { .ptr_type = 4, .addr = 0x73fa8820, .val = 0x00000000, }, - { .ptr_type = 4, .addr = 0x73fa84a4, .val = 0x00000003, }, - { .ptr_type = 4, .addr = 0x73fa84a8, .val = 0x00000003, }, - { .ptr_type = 4, .addr = 0x73fa84ac, .val = 0x000000e3, }, - { .ptr_type = 4, .addr = 0x73fa84b0, .val = 0x000000e3, }, - { .ptr_type = 4, .addr = 0x73fa84b4, .val = 0x000000e3, }, - { .ptr_type = 4, .addr = 0x73fa84cc, .val = 0x000000e3, }, - { .ptr_type = 4, .addr = 0x73fa84d0, .val = 0x000000e2, }, - { .ptr_type = 4, .addr = 0x73fa882c, .val = 0x00000004, }, - { .ptr_type = 4, .addr = 0x73fa88a4, .val = 0x00000004, }, - { .ptr_type = 4, .addr = 0x73fa88ac, .val = 0x00000004, }, - { .ptr_type = 4, .addr = 0x73fa88b8, .val = 0x00000004, }, - { .ptr_type = 4, .addr = 0x83fd9000, .val = 0x82a20000, }, - { .ptr_type = 4, .addr = 0x83fd9008, .val = 0x82a20000, }, - { .ptr_type = 4, .addr = 0x83fd9010, .val = 0x000ad0d0, }, - { .ptr_type = 4, .addr = 0x83fd9004, .val = 0x3f3584ab, }, - { .ptr_type = 4, .addr = 0x83fd900c, .val = 0x3f3584ab, }, - { .ptr_type = 4, .addr = 0x83fd9014, .val = 0x04008008, }, - { .ptr_type = 4, .addr = 0x83fd9014, .val = 0x0000801a, }, - { .ptr_type = 4, .addr = 0x83fd9014, .val = 0x0000801b, }, - { .ptr_type = 4, .addr = 0x83fd9014, .val = 0x00448019, }, - { .ptr_type = 4, .addr = 0x83fd9014, .val = 0x07328018, }, - { .ptr_type = 4, .addr = 0x83fd9014, .val = 0x04008008, }, - { .ptr_type = 4, .addr = 0x83fd9014, .val = 0x00008010, }, - { .ptr_type = 4, .addr = 0x83fd9014, .val = 0x00008010, }, - { .ptr_type = 4, .addr = 0x83fd9014, .val = 0x06328018, }, - { .ptr_type = 4, .addr = 0x83fd9014, .val = 0x03808019, }, - { .ptr_type = 4, .addr = 0x83fd9014, .val = 0x00408019, }, - { .ptr_type = 4, .addr = 0x83fd9014, .val = 0x00008000, }, - { .ptr_type = 4, .addr = 0x83fd9014, .val = 0x0400800c, }, - { .ptr_type = 4, .addr = 0x83fd9014, .val = 0x0000801e, }, - { .ptr_type = 4, .addr = 0x83fd9014, .val = 0x0000801f, }, - { .ptr_type = 4, .addr = 0x83fd9014, .val = 0x0000801d, }, - { .ptr_type = 4, .addr = 0x83fd9014, .val = 0x0732801c, }, - { .ptr_type = 4, .addr = 0x83fd9014, .val = 0x0400800c, }, - { .ptr_type = 4, .addr = 0x83fd9014, .val = 0x00008014, }, - { .ptr_type = 4, .addr = 0x83fd9014, .val = 0x00008014, }, - { .ptr_type = 4, .addr = 0x83fd9014, .val = 0x0632801c, }, - { .ptr_type = 4, .addr = 0x83fd9014, .val = 0x0380801d, }, - { .ptr_type = 4, .addr = 0x83fd9014, .val = 0x0040801d, }, - { .ptr_type = 4, .addr = 0x83fd9014, .val = 0x00008004, }, - { .ptr_type = 4, .addr = 0x83fd9000, .val = 0xb2a20000, }, - { .ptr_type = 4, .addr = 0x83fd9008, .val = 0xb2a20000, }, - { .ptr_type = 4, .addr = 0x83fd9010, .val = 0x000ad6d0, }, - { .ptr_type = 4, .addr = 0x83fd9034, .val = 0x90000000, }, - { .ptr_type = 4, .addr = 0x83fd9014, .val = 0x00000000, }, -}; - diff --git a/arch/arm/boards/freescale-mx51-pdk/flash-header.imxcfg b/arch/arm/boards/freescale-mx51-pdk/flash-header.imxcfg new file mode 100644 index 0000000000..bac6816fee --- /dev/null +++ b/arch/arm/boards/freescale-mx51-pdk/flash-header.imxcfg @@ -0,0 +1,59 @@ +loadaddr 0x90000000 +soc imx51 +dcdofs 0x400 +wm 32 0x73fa88a0 0x00000200 +wm 32 0x73fa850c 0x000020c5 +wm 32 0x73fa8510 0x000020c5 +wm 32 0x73fa883c 0x00000002 +wm 32 0x73fa8848 0x00000002 +wm 32 0x73fa84b8 0x000000e7 +wm 32 0x73fa84bc 0x00000045 +wm 32 0x73fa84c0 0x00000045 +wm 32 0x73fa84c4 0x00000045 +wm 32 0x73fa84c8 0x00000045 +wm 32 0x73fa8820 0x00000000 +wm 32 0x73fa84a4 0x00000003 +wm 32 0x73fa84a8 0x00000003 +wm 32 0x73fa84ac 0x000000e3 +wm 32 0x73fa84b0 0x000000e3 +wm 32 0x73fa84b4 0x000000e3 +wm 32 0x73fa84cc 0x000000e3 +wm 32 0x73fa84d0 0x000000e2 +wm 32 0x73fa882c 0x00000004 +wm 32 0x73fa88a4 0x00000004 +wm 32 0x73fa88ac 0x00000004 +wm 32 0x73fa88b8 0x00000004 +wm 32 0x83fd9000 0x82a20000 +wm 32 0x83fd9008 0x82a20000 +wm 32 0x83fd9010 0x000ad0d0 +wm 32 0x83fd9004 0x3f3584ab +wm 32 0x83fd900c 0x3f3584ab +wm 32 0x83fd9014 0x04008008 +wm 32 0x83fd9014 0x0000801a +wm 32 0x83fd9014 0x0000801b +wm 32 0x83fd9014 0x00448019 +wm 32 0x83fd9014 0x07328018 +wm 32 0x83fd9014 0x04008008 +wm 32 0x83fd9014 0x00008010 +wm 32 0x83fd9014 0x00008010 +wm 32 0x83fd9014 0x06328018 +wm 32 0x83fd9014 0x03808019 +wm 32 0x83fd9014 0x00408019 +wm 32 0x83fd9014 0x00008000 +wm 32 0x83fd9014 0x0400800c +wm 32 0x83fd9014 0x0000801e +wm 32 0x83fd9014 0x0000801f +wm 32 0x83fd9014 0x0000801d +wm 32 0x83fd9014 0x0732801c +wm 32 0x83fd9014 0x0400800c +wm 32 0x83fd9014 0x00008014 +wm 32 0x83fd9014 0x00008014 +wm 32 0x83fd9014 0x0632801c +wm 32 0x83fd9014 0x0380801d +wm 32 0x83fd9014 0x0040801d +wm 32 0x83fd9014 0x00008004 +wm 32 0x83fd9000 0xb2a20000 +wm 32 0x83fd9008 0xb2a20000 +wm 32 0x83fd9010 0x000ad6d0 +wm 32 0x83fd9034 0x90000000 +wm 32 0x83fd9014 0x00000000 diff --git a/arch/arm/boards/freescale-mx51-pdk/flash_header.c b/arch/arm/boards/freescale-mx51-pdk/flash_header.c deleted file mode 100644 index f3f1e4bfd5..0000000000 --- a/arch/arm/boards/freescale-mx51-pdk/flash_header.c +++ /dev/null @@ -1,29 +0,0 @@ -#include <common.h> -#include <mach/imx-flash-header.h> -#include <asm/barebox-arm-head.h> - -void __naked __flash_header_start go(void) -{ - barebox_arm_head(); -} - -#define DCD_NAME struct imx_dcd_entry __dcd_entry_section dcd_entry - -#include "dcd-data.h" - -#define APP_DEST 0x90000000 - -struct imx_flash_header __flash_header_section flash_header = { - .app_code_jump_vector = APP_DEST + 0x1000, - .app_code_barker = APP_CODE_BARKER, - .app_code_csf = 0, - .dcd_ptr_ptr = APP_DEST + 0x400 + offsetof(struct imx_flash_header, dcd), - .super_root_key = 0, - .dcd = APP_DEST + 0x400 + offsetof(struct imx_flash_header, dcd_barker), - .app_dest = APP_DEST, - .dcd_barker = DCD_BARKER, - .dcd_block_len = sizeof (dcd_entry), -}; - -unsigned long __image_len_section barebox_len = DCD_BAREBOX_SIZE; - diff --git a/arch/arm/boards/freescale-mx6-sabrelite/board.c b/arch/arm/boards/freescale-mx6-sabrelite/board.c index 2afaae3007..ff27b05b14 100644 --- a/arch/arm/boards/freescale-mx6-sabrelite/board.c +++ b/arch/arm/boards/freescale-mx6-sabrelite/board.c @@ -29,6 +29,7 @@ #include <mach/generic.h> #include <sizes.h> #include <net.h> +#include <linux/micrel_phy.h> #include <mach/imx6.h> #include <mach/devices-imx6.h> #include <mach/iomux-mx6.h> @@ -37,73 +38,8 @@ #include <mach/spi.h> #include <mach/usb.h> -#define SABRELITE_SD3_WP IMX_GPIO_NR(7, 1) -#define SABRELITE_SD3_CD IMX_GPIO_NR(7, 0) - -#define SABRELITE_SD4_CD IMX_GPIO_NR(2, 6) - -static iomux_v3_cfg_t sabrelite_pads[] = { - /* UART1 */ - MX6Q_PAD_SD3_DAT6__UART1_RXD, - MX6Q_PAD_SD3_DAT7__UART1_TXD, - MX6Q_PAD_EIM_D26__UART2_TXD, - MX6Q_PAD_EIM_D27__UART2_RXD, - - /* SD3 (bottom) */ - MX6Q_PAD_SD3_CMD__USDHC3_CMD, - MX6Q_PAD_SD3_CLK__USDHC3_CLK, - MX6Q_PAD_SD3_DAT0__USDHC3_DAT0, - MX6Q_PAD_SD3_DAT1__USDHC3_DAT1, - MX6Q_PAD_SD3_DAT2__USDHC3_DAT2, - MX6Q_PAD_SD3_DAT3__USDHC3_DAT3, - MX6Q_PAD_SD3_DAT4__GPIO_7_1, /* WP */ - MX6Q_PAD_SD3_DAT5__GPIO_7_0, /* CD */ - - /* SD4 (top) */ - MX6Q_PAD_SD4_CLK__USDHC4_CLK, - MX6Q_PAD_SD4_CMD__USDHC4_CMD, - MX6Q_PAD_SD4_DAT0__USDHC4_DAT0, - MX6Q_PAD_SD4_DAT1__USDHC4_DAT1, - MX6Q_PAD_SD4_DAT2__USDHC4_DAT2, - MX6Q_PAD_SD4_DAT3__USDHC4_DAT3, - MX6Q_PAD_NANDF_D6__GPIO_2_6, /* CD */ - - /* ECSPI */ - MX6Q_PAD_EIM_D16__ECSPI1_SCLK, - MX6Q_PAD_EIM_D17__ECSPI1_MISO, - MX6Q_PAD_EIM_D18__ECSPI1_MOSI, - MX6Q_PAD_EIM_D19__GPIO_3_19, /* CS1 */ - - /* I2C0 */ - MX6Q_PAD_EIM_D21__I2C1_SCL, - MX6Q_PAD_EIM_D28__I2C1_SDA, - - /* I2C1 */ - MX6Q_PAD_KEY_COL3__I2C2_SCL, - MX6Q_PAD_KEY_ROW3__I2C2_SDA, - - /* I2C2 */ - MX6Q_PAD_GPIO_5__I2C3_SCL, - MX6Q_PAD_GPIO_16__I2C3_SDA, - - /* USB */ - MX6Q_PAD_GPIO_17__GPIO_7_12, - MX6Q_PAD_EIM_D22__GPIO_3_22, - MX6Q_PAD_EIM_D30__USBOH3_USBH1_OC, -}; - -static iomux_v3_cfg_t sabrelite_enet_pads[] = { +static iomux_v3_cfg_t sabrelite_enet_gpio_pads[] = { /* Ethernet */ - MX6Q_PAD_ENET_MDC__ENET_MDC, - MX6Q_PAD_ENET_MDIO__ENET_MDIO, - MX6Q_PAD_ENET_REF_CLK__GPIO_1_23, // LED mode - MX6Q_PAD_ENET_REF_CLK__ENET_TX_CLK, - MX6Q_PAD_RGMII_TXC__ENET_RGMII_TXC, - MX6Q_PAD_RGMII_TD0__ENET_RGMII_TD0, - MX6Q_PAD_RGMII_TD1__ENET_RGMII_TD1, - MX6Q_PAD_RGMII_TD2__ENET_RGMII_TD2, - MX6Q_PAD_RGMII_TD3__ENET_RGMII_TD3, - MX6Q_PAD_RGMII_TX_CTL__ENET_RGMII_TX_CTL, MX6Q_PAD_EIM_D23__GPIO_3_23, /* RGMII_nRST */ MX6Q_PAD_RGMII_RXC__GPIO_6_30, /* PHYAD */ MX6Q_PAD_RGMII_RD0__GPIO_6_25, /* MODE0 */ @@ -113,16 +49,6 @@ static iomux_v3_cfg_t sabrelite_enet_pads[] = { MX6Q_PAD_RGMII_RX_CTL__GPIO_6_24, }; -static iomux_v3_cfg_t sabrelite_enet2_pads[] = { - MX6Q_PAD_ENET_REF_CLK__ENET_TX_CLK, - MX6Q_PAD_RGMII_RXC__ENET_RGMII_RXC, - MX6Q_PAD_RGMII_RD0__ENET_RGMII_RD0, - MX6Q_PAD_RGMII_RD1__ENET_RGMII_RD1, - MX6Q_PAD_RGMII_RD2__ENET_RGMII_RD2, - MX6Q_PAD_RGMII_RD3__ENET_RGMII_RD3, - MX6Q_PAD_RGMII_RX_CTL__ENET_RGMII_RX_CTL, -}; - static int sabrelite_mem_init(void) { arm_add_mem_device("ram0", 0x10000000, SZ_1G); @@ -131,7 +57,7 @@ static int sabrelite_mem_init(void) } mem_initcall(sabrelite_mem_init); -static void mx6_rgmii_rework(struct phy_device *dev) +static int ksz9021rn_phy_fixup(struct phy_device *dev) { phy_write(dev, 0x09, 0x0f00); @@ -144,17 +70,14 @@ static void mx6_rgmii_rework(struct phy_device *dev) phy_write(dev, 0x0b, 0x8104); phy_write(dev, 0x0c, 0xf0f0); phy_write(dev, 0x0b, 0x104); -} -static struct fec_platform_data fec_info = { - .xcv_type = PHY_INTERFACE_MODE_RGMII, - .phy_init = mx6_rgmii_rework, - .phy_addr = 6, -}; + return 0; +} static int sabrelite_ksz9021rn_setup(void) { - mxc_iomux_v3_setup_multiple_pads(sabrelite_enet_pads, ARRAY_SIZE(sabrelite_enet_pads)); + mxc_iomux_v3_setup_multiple_pads(sabrelite_enet_gpio_pads, + ARRAY_SIZE(sabrelite_enet_gpio_pads)); gpio_direction_output(87, 0); /* GPIO 3-23 */ @@ -175,10 +98,13 @@ static int sabrelite_ksz9021rn_setup(void) mdelay(10); gpio_set_value(87, 1); - mxc_iomux_v3_setup_multiple_pads(sabrelite_enet2_pads, ARRAY_SIZE(sabrelite_enet2_pads)); - return 0; } +/* + * Do this before the fec initializes but after our + * gpios are available. + */ +fs_initcall(sabrelite_ksz9021rn_setup); static inline int imx6_iim_register_fec_ethaddr(void) { @@ -200,35 +126,6 @@ static inline int imx6_iim_register_fec_ethaddr(void) return 0; } -static int sabrelite_spi_cs[] = {IMX_GPIO_NR(3, 19)}; - -static struct spi_imx_master sabrelite_spi_0_data = { - .chipselect = sabrelite_spi_cs, - .num_chipselect = ARRAY_SIZE(sabrelite_spi_cs), -}; - -static const struct spi_board_info sabrelite_spi_board_info[] = { - { - .name = "m25p80", - .max_speed_hz = 40000000, - .bus_num = 0, - .chip_select = 0, - } -}; - -static struct esdhc_platform_data sabrelite_sd3_data = { - .cd_gpio = SABRELITE_SD3_CD, - .cd_type = ESDHC_CD_GPIO, - .wp_gpio = SABRELITE_SD3_WP, - .wp_type = ESDHC_WP_GPIO, -}; - -static struct esdhc_platform_data sabrelite_sd4_data = { - .cd_gpio = SABRELITE_SD4_CD, - .cd_type = ESDHC_CD_GPIO, - .wp_type = ESDHC_WP_NONE, -}; - static void sabrelite_ehci_init(void) { imx6_usb_phy2_disable_oc(); @@ -244,19 +141,8 @@ static void sabrelite_ehci_init(void) static int sabrelite_devices_init(void) { - imx6_add_mmc2(&sabrelite_sd3_data); - imx6_add_mmc3(&sabrelite_sd4_data); - - sabrelite_ksz9021rn_setup(); - imx6_iim_register_fec_ethaddr(); - imx6_add_fec(&fec_info); - sabrelite_ehci_init(); - spi_register_board_info(sabrelite_spi_board_info, - ARRAY_SIZE(sabrelite_spi_board_info)); - imx6_add_spi0(&sabrelite_spi_0_data); - armlinux_set_bootparams((void *)0x10000100); armlinux_set_architecture(3769); @@ -265,17 +151,23 @@ static int sabrelite_devices_init(void) return 0; } - device_initcall(sabrelite_devices_init); -static int sabrelite_console_init(void) +static int sabrelite_coredevices_init(void) { - mxc_iomux_v3_setup_multiple_pads(sabrelite_pads, ARRAY_SIZE(sabrelite_pads)); + phy_register_fixup_for_uid(PHY_ID_KSZ9021, MICREL_PHY_ID_MASK, + ksz9021rn_phy_fixup); - imx6_init_lowlevel(); + imx6_iim_register_fec_ethaddr(); + + return 0; +} +coredevice_initcall(sabrelite_coredevices_init); - imx6_add_uart1(); +static int sabrelite_core_init(void) +{ + imx6_init_lowlevel(); return 0; } -console_initcall(sabrelite_console_init); +core_initcall(sabrelite_core_init); diff --git a/arch/arm/boards/freescale-mx6-sabresd/board.c b/arch/arm/boards/freescale-mx6-sabresd/board.c index e41dc77bf5..033a253a23 100644 --- a/arch/arm/boards/freescale-mx6-sabresd/board.c +++ b/arch/arm/boards/freescale-mx6-sabresd/board.c @@ -41,92 +41,6 @@ #define PHY_ID_AR8031 0x004dd074 #define AR_PHY_ID_MASK 0xffffffff -#define SABRESD_SD2_CD IMX_GPIO_NR(2, 2) -#define SABRESD_SD2_WP IMX_GPIO_NR(2, 3) - -#define SABRESD_SD3_CD IMX_GPIO_NR(2, 0) -#define SABRESD_SD3_WP IMX_GPIO_NR(2, 1) - -static iomux_v3_cfg_t sabresd_pads[] = { - /* UART1 */ - MX6Q_PAD_CSI0_DAT11__UART1_RXD, - MX6Q_PAD_CSI0_DAT10__UART1_TXD, - - /* Ethernet */ - MX6Q_PAD_ENET_MDC__ENET_MDC, - MX6Q_PAD_ENET_MDIO__ENET_MDIO, - MX6Q_PAD_ENET_REF_CLK__ENET_TX_CLK, - - MX6Q_PAD_RGMII_TXC__ENET_RGMII_TXC, - MX6Q_PAD_RGMII_TD0__ENET_RGMII_TD0, - MX6Q_PAD_RGMII_TD1__ENET_RGMII_TD1, - MX6Q_PAD_RGMII_TD2__ENET_RGMII_TD2, - MX6Q_PAD_RGMII_TD3__ENET_RGMII_TD3, - MX6Q_PAD_RGMII_TX_CTL__ENET_RGMII_TX_CTL, - - MX6Q_PAD_RGMII_RXC__ENET_RGMII_RXC, - MX6Q_PAD_RGMII_RD0__ENET_RGMII_RD0, - MX6Q_PAD_RGMII_RD1__ENET_RGMII_RD1, - MX6Q_PAD_RGMII_RD2__ENET_RGMII_RD2, - MX6Q_PAD_RGMII_RD3__ENET_RGMII_RD3, - MX6Q_PAD_RGMII_RX_CTL__ENET_RGMII_RX_CTL, - - MX6Q_PAD_ENET_CRS_DV__GPIO_1_25, /* AR8031 PHY Reset */ - MX6Q_PAD_GPIO_16__ENET_ANATOP_ETHERNET_REF_OUT, - - /* SD2 */ - MX6Q_PAD_SD2_CLK__USDHC2_CLK, - MX6Q_PAD_SD2_CMD__USDHC2_CMD, - MX6Q_PAD_SD2_DAT0__USDHC2_DAT0, - MX6Q_PAD_SD2_DAT1__USDHC2_DAT1, - MX6Q_PAD_SD2_DAT2__USDHC2_DAT2, - MX6Q_PAD_SD2_DAT3__USDHC2_DAT3, - MX6Q_PAD_NANDF_D4__USDHC2_DAT4, - MX6Q_PAD_NANDF_D5__USDHC2_DAT5, - MX6Q_PAD_NANDF_D6__USDHC2_DAT6, - MX6Q_PAD_NANDF_D7__USDHC2_DAT7, - MX6Q_PAD_NANDF_D2__GPIO_2_2, /* CD */ - MX6Q_PAD_NANDF_D3__GPIO_2_3, /* WP */ - - /* SD3 */ - MX6Q_PAD_SD3_CMD__USDHC3_CMD, - MX6Q_PAD_SD3_CLK__USDHC3_CLK, - MX6Q_PAD_SD3_DAT0__USDHC3_DAT0, - MX6Q_PAD_SD3_DAT1__USDHC3_DAT1, - MX6Q_PAD_SD3_DAT2__USDHC3_DAT2, - MX6Q_PAD_SD3_DAT3__USDHC3_DAT3, - MX6Q_PAD_SD3_DAT4__USDHC3_DAT4, - MX6Q_PAD_SD3_DAT5__USDHC3_DAT5, - MX6Q_PAD_SD3_DAT6__USDHC3_DAT6, - MX6Q_PAD_SD3_DAT7__USDHC3_DAT7, - MX6Q_PAD_NANDF_D0__GPIO_2_0, /* CD */ - MX6Q_PAD_NANDF_D1__GPIO_2_1, /* WP */ - - /* SD4 */ - MX6Q_PAD_SD4_CLK__USDHC4_CLK, - MX6Q_PAD_SD4_CMD__USDHC4_CMD, - MX6Q_PAD_SD4_DAT0__USDHC4_DAT0, - MX6Q_PAD_SD4_DAT1__USDHC4_DAT1, - MX6Q_PAD_SD4_DAT2__USDHC4_DAT2, - MX6Q_PAD_SD4_DAT3__USDHC4_DAT3, - MX6Q_PAD_SD4_DAT4__USDHC4_DAT4, - MX6Q_PAD_SD4_DAT5__USDHC4_DAT5, - MX6Q_PAD_SD4_DAT6__USDHC4_DAT6, - MX6Q_PAD_SD4_DAT7__USDHC4_DAT7, - - /* I2C0 */ - MX6Q_PAD_CSI0_DAT8__I2C1_SDA, - MX6Q_PAD_CSI0_DAT9__I2C1_SCL, - - /* I2C1 */ - MX6Q_PAD_KEY_COL3__I2C2_SCL, - MX6Q_PAD_KEY_ROW3__I2C2_SDA, - - /* I2C2 */ - MX6Q_PAD_GPIO_3__I2C3_SCL, - MX6Q_PAD_GPIO_6__I2C3_SDA, -}; - static int sabresd_mem_init(void) { arm_add_mem_device("ram0", 0x10000000, SZ_1G); @@ -158,11 +72,6 @@ static int ar8031_phy_fixup(struct phy_device *dev) return 0; } -static struct fec_platform_data fec_info = { - .xcv_type = PHY_INTERFACE_MODE_RGMII, - .phy_addr = 1, -}; - static void sabresd_phy_reset(void) { /* Reset AR8031 PHY */ @@ -191,37 +100,8 @@ static inline int imx6_iim_register_fec_ethaddr(void) return 0; } -static struct esdhc_platform_data sabresd_sd2_data = { - .cd_gpio = SABRESD_SD2_CD, - .cd_type = ESDHC_CD_GPIO, - .wp_gpio = SABRESD_SD2_WP, - .wp_type = ESDHC_WP_GPIO, -}; - -static struct esdhc_platform_data sabresd_sd3_data = { - .cd_gpio = SABRESD_SD3_CD, - .cd_type = ESDHC_CD_GPIO, - .wp_gpio = SABRESD_SD3_WP, - .wp_type = ESDHC_WP_GPIO, -}; - -static struct esdhc_platform_data sabresd_sd4_data = { - .cd_type = ESDHC_CD_PERMANENT, - .wp_type = ESDHC_WP_CONTROLLER, -}; - static int sabresd_devices_init(void) { - imx6_add_mmc3(&sabresd_sd4_data); - imx6_add_mmc1(&sabresd_sd2_data); - imx6_add_mmc2(&sabresd_sd3_data); - - phy_register_fixup_for_uid(PHY_ID_AR8031, AR_PHY_ID_MASK, ar8031_phy_fixup); - - sabresd_phy_reset(); - imx6_iim_register_fec_ethaddr(); - imx6_add_fec(&fec_info); - armlinux_set_bootparams((void *)0x10000100); armlinux_set_architecture(3980); @@ -231,14 +111,27 @@ static int sabresd_devices_init(void) } device_initcall(sabresd_devices_init); -static int sabresd_console_init(void) +static int sabresd_coredevices_init(void) { - mxc_iomux_v3_setup_multiple_pads(sabresd_pads, ARRAY_SIZE(sabresd_pads)); + sabresd_phy_reset(); - imx6_init_lowlevel(); + phy_register_fixup_for_uid(PHY_ID_AR8031, AR_PHY_ID_MASK, + ar8031_phy_fixup); - imx6_add_uart0(); + imx6_iim_register_fec_ethaddr(); + + return 0; +} +/* + * Do this before the fec initializes but after our + * gpios are available. + */ +fs_initcall(sabresd_coredevices_init); + +static int sabresd_core_init(void) +{ + imx6_init_lowlevel(); return 0; } -console_initcall(sabresd_console_init); +core_initcall(sabresd_core_init); diff --git a/arch/arm/boards/globalscale-guruplug/Makefile b/arch/arm/boards/globalscale-guruplug/Makefile new file mode 100644 index 0000000000..dcfc2937d3 --- /dev/null +++ b/arch/arm/boards/globalscale-guruplug/Makefile @@ -0,0 +1 @@ +obj-y += board.o diff --git a/arch/arm/boards/globalscale-guruplug/board.c b/arch/arm/boards/globalscale-guruplug/board.c new file mode 100644 index 0000000000..9c800c5410 --- /dev/null +++ b/arch/arm/boards/globalscale-guruplug/board.c @@ -0,0 +1,17 @@ +/* + * Copyright + * (C) 2013 Thomas Petazzoni <thomas.petazzoni@free-electrons.com> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + */ + +/* empty */ diff --git a/arch/arm/boards/globalscale-guruplug/config.h b/arch/arm/boards/globalscale-guruplug/config.h new file mode 100644 index 0000000000..ca15136817 --- /dev/null +++ b/arch/arm/boards/globalscale-guruplug/config.h @@ -0,0 +1,4 @@ +#ifndef __CONFIG_H +#define __CONFIG_H + +#endif /* __CONFIG_H */ diff --git a/arch/arm/boards/globalscale-guruplug/kwbimage.cfg b/arch/arm/boards/globalscale-guruplug/kwbimage.cfg new file mode 100644 index 0000000000..d0f3bdb01f --- /dev/null +++ b/arch/arm/boards/globalscale-guruplug/kwbimage.cfg @@ -0,0 +1,27 @@ +VERSION 0 +BOOT_FROM nand +NAND_ECCMODE default +NAND_PAGESZ 00000800 +DATA ffd100e0 1b1b9b9b +DATA ffd01400 43000c30 +DATA ffd01404 37543000 +DATA ffd01408 22125451 +DATA ffd0140c 00000a33 +DATA ffd01410 000000cc +DATA ffd01414 00000000 +DATA ffd01418 00000000 +DATA ffd0141c 00000c52 +DATA ffd01420 00000040 +DATA ffd01424 0000f17f +DATA ffd01428 00085520 +DATA ffd0147c 00008552 +DATA ffd01500 00000000 +DATA ffd01504 0ffffff1 +DATA ffd01508 10000000 +DATA ffd0150c 0ffffff5 +DATA ffd01514 00000000 +DATA ffd0151c 00000000 +DATA ffd01494 00030000 +DATA ffd01498 00000000 +DATA ffd0149c 0000e803 +DATA ffd01480 00000001 diff --git a/arch/arm/boards/globalscale-mirabox/Makefile b/arch/arm/boards/globalscale-mirabox/Makefile new file mode 100644 index 0000000000..9320510bab --- /dev/null +++ b/arch/arm/boards/globalscale-mirabox/Makefile @@ -0,0 +1 @@ +obj-y += board.c diff --git a/arch/arm/boards/globalscale-mirabox/board.c b/arch/arm/boards/globalscale-mirabox/board.c new file mode 100644 index 0000000000..9c800c5410 --- /dev/null +++ b/arch/arm/boards/globalscale-mirabox/board.c @@ -0,0 +1,17 @@ +/* + * Copyright + * (C) 2013 Thomas Petazzoni <thomas.petazzoni@free-electrons.com> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + */ + +/* empty */ diff --git a/arch/arm/boards/globalscale-mirabox/config.h b/arch/arm/boards/globalscale-mirabox/config.h new file mode 100644 index 0000000000..ca15136817 --- /dev/null +++ b/arch/arm/boards/globalscale-mirabox/config.h @@ -0,0 +1,4 @@ +#ifndef __CONFIG_H +#define __CONFIG_H + +#endif /* __CONFIG_H */ diff --git a/arch/arm/boards/globalscale-mirabox/kwbimage.cfg b/arch/arm/boards/globalscale-mirabox/kwbimage.cfg new file mode 100644 index 0000000000..72283d9b69 --- /dev/null +++ b/arch/arm/boards/globalscale-mirabox/kwbimage.cfg @@ -0,0 +1,5 @@ +VERSION 1 +BOOT_FROM nand +NAND_BLKSZ 00020000 +NAND_BADBLK_LOCATION 01 +BINARY globalscale-mirabox-binary.0 0000005b 00000068 diff --git a/arch/arm/boards/marvell-armada-xp-gp/Makefile b/arch/arm/boards/marvell-armada-xp-gp/Makefile new file mode 100644 index 0000000000..dcfc2937d3 --- /dev/null +++ b/arch/arm/boards/marvell-armada-xp-gp/Makefile @@ -0,0 +1 @@ +obj-y += board.o diff --git a/arch/arm/boards/marvell-armada-xp-gp/board.c b/arch/arm/boards/marvell-armada-xp-gp/board.c new file mode 100644 index 0000000000..9c800c5410 --- /dev/null +++ b/arch/arm/boards/marvell-armada-xp-gp/board.c @@ -0,0 +1,17 @@ +/* + * Copyright + * (C) 2013 Thomas Petazzoni <thomas.petazzoni@free-electrons.com> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + */ + +/* empty */ diff --git a/arch/arm/boards/marvell-armada-xp-gp/config.h b/arch/arm/boards/marvell-armada-xp-gp/config.h new file mode 100644 index 0000000000..ca15136817 --- /dev/null +++ b/arch/arm/boards/marvell-armada-xp-gp/config.h @@ -0,0 +1,4 @@ +#ifndef __CONFIG_H +#define __CONFIG_H + +#endif /* __CONFIG_H */ diff --git a/arch/arm/boards/marvell-armada-xp-gp/kwbimage.cfg b/arch/arm/boards/marvell-armada-xp-gp/kwbimage.cfg new file mode 100644 index 0000000000..db75969fe0 --- /dev/null +++ b/arch/arm/boards/marvell-armada-xp-gp/kwbimage.cfg @@ -0,0 +1,3 @@ +VERSION 1 +BOOT_FROM spi +BINARY marvell-armada-xp-gp-binary.0 0000005b 00000068 diff --git a/arch/arm/boards/pcm038/pcm038.c b/arch/arm/boards/pcm038/pcm038.c index 4b2fa6c6ca..372aea59d5 100644 --- a/arch/arm/boards/pcm038/pcm038.c +++ b/arch/arm/boards/pcm038/pcm038.c @@ -48,13 +48,20 @@ #define PCM038_GPIO_FEC_RST (GPIO_PORTC + 30) #define PCM038_GPIO_SPI_CS0 (GPIO_PORTD + 28) +#define PCM970_GPIO_SPI_CS1 (GPIO_PORTD + 27) +#define PCM038_GPIO_OTG_STP (GPIO_PORTE + 1) static struct fec_platform_data fec_info = { .xcv_type = PHY_INTERFACE_MODE_MII, .phy_addr = 1, }; -static int pcm038_spi_cs[] = { PCM038_GPIO_SPI_CS0 }; +static int pcm038_spi_cs[] = { + PCM038_GPIO_SPI_CS0, +#ifdef CONFIG_MACH_PCM970_BASEBOARD + PCM970_GPIO_SPI_CS1, +#endif +}; static struct spi_imx_master pcm038_spi_0_data = { .chipselect = pcm038_spi_cs, @@ -186,6 +193,11 @@ static int pcm038_power_init(void) return 0; } +struct imxusb_platformdata pcm038_otg_pdata = { + .mode = IMX_USB_MODE_DEVICE, + .flags = MXC_EHCI_MODE_ULPI | MXC_EHCI_INTERFACE_DIFF_UNI, +}; + static int pcm038_devices_init(void) { int i; @@ -221,10 +233,13 @@ static int pcm038_devices_init(void) PE15_PF_UART1_RTS, /* CSPI1 */ PD25_PF_CSPI1_RDY, - PCM038_GPIO_SPI_CS0 | GPIO_GPIO | GPIO_OUT, PD29_PF_CSPI1_SCLK, PD30_PF_CSPI1_MISO, PD31_PF_CSPI1_MOSI, + PCM038_GPIO_SPI_CS0 | GPIO_GPIO | GPIO_OUT, +#ifdef CONFIG_MACH_PCM970_BASEBOARD + PCM970_GPIO_SPI_CS1 | GPIO_GPIO | GPIO_OUT, +#endif /* Display */ PA5_PF_LSCLK, PA6_PF_LD0, @@ -253,7 +268,7 @@ static int pcm038_devices_init(void) PA29_PF_VSYNC, PA30_PF_CONTRAST, PA31_PF_OE_ACD, - /* OTG host */ + /* USB OTG */ PC7_PF_USBOTG_DATA5, PC8_PF_USBOTG_DATA6, PC9_PF_USBOTG_DATA0, @@ -262,7 +277,7 @@ static int pcm038_devices_init(void) PC12_PF_USBOTG_DATA4, PC13_PF_USBOTG_DATA3, PE0_PF_USBOTG_NXT, - PE1_PF_USBOTG_STP, + PCM038_GPIO_OTG_STP | GPIO_GPIO | GPIO_OUT, PE2_PF_USBOTG_DIR, PE24_PF_USBOTG_CLK, PE25_PF_USBOTG_DATA7, @@ -308,6 +323,13 @@ static int pcm038_devices_init(void) gpio_set_value(PCM038_GPIO_FEC_RST, 1); imx27_add_fec(&fec_info); + /* Apply delay for STP line to stop ULPI */ + gpio_direction_output(PCM038_GPIO_OTG_STP, 1); + mdelay(1); + imx_gpio_mode(PE1_PF_USBOTG_STP); + + imx27_add_usbotg(&pcm038_otg_pdata); + switch (bootsource_get()) { case BOOTSOURCE_NAND: devfs_add_partition("nand0", 0x00000, 0x80000, diff --git a/arch/arm/boards/pcm049/board.c b/arch/arm/boards/pcm049/board.c index b0d689bf02..3c4b1a7dbe 100644 --- a/arch/arm/boards/pcm049/board.c +++ b/arch/arm/boards/pcm049/board.c @@ -48,7 +48,11 @@ console_initcall(pcm049_console_init); static int pcm049_mem_init(void) { +#ifdef CONFIG_1024MB_DDR2RAM + omap_add_ram0(SZ_1G); +#else omap_add_ram0(SZ_512M); +#endif omap44xx_add_sram0(); return 0; diff --git a/arch/arm/boards/pcm049/lowlevel.c b/arch/arm/boards/pcm049/lowlevel.c index 5075bbba3b..8bcecb14b1 100644 --- a/arch/arm/boards/pcm049/lowlevel.c +++ b/arch/arm/boards/pcm049/lowlevel.c @@ -30,6 +30,7 @@ void set_muxconf_regs(void); +/* 512MB */ static const struct ddr_regs ddr_regs_mt42L64M64_25_400_mhz = { .tim1 = 0x0EEB0662, .tim2 = 0x20370DD2, @@ -43,6 +44,20 @@ static const struct ddr_regs ddr_regs_mt42L64M64_25_400_mhz = { .mr2 = 0x4 }; +/* 1GB */ +static const struct ddr_regs ddr_regs_mt42L128M64_25_400_mhz = { + .tim1 = 0x0EEB0663, + .tim2 = 0x205715D2, + .tim3 = 0x00BFC53F, + .phy_ctrl_1 = 0x849FF408, + .ref_ctrl = 0x00000618, + .config_init = 0x80001AB9, + .config_final = 0x80001AB9, + .zq_config = 0x50093215, + .mr1 = 0x83, + .mr2 = 0x4 +}; + static void noinline pcm049_init_lowlevel(void) { struct dpll_param core = OMAP4_CORE_DPLL_PARAM_19M2_DDR400; @@ -55,7 +70,11 @@ static void noinline pcm049_init_lowlevel(void) set_muxconf_regs(); - omap4_ddr_init(&ddr_regs_mt42L64M64_25_400_mhz, &core); +#ifdef CONFIG_1024MB_DDR2RAM + omap4_ddr_init(&ddr_regs_mt42L128M64_25_400_mhz, &core); +#else + omap4_ddr_init(&ddr_regs_mt42L64M64_25_400_mhz, &core); +#endif /* Set VCORE1 = 1.3 V, VCORE2 = VCORE3 = 1.21V */ omap4_scale_vcores(TPS62361_VSEL0_GPIO); @@ -76,11 +95,11 @@ static void noinline pcm049_init_lowlevel(void) /* Enable all clocks */ omap4_enable_all_clocks(); - sr32(0x4A30a31C, 8, 1, 0x1); /* enable software ioreq */ - sr32(0x4A30a31C, 1, 2, 0x0); /* set for sys_clk (19.2MHz) */ - sr32(0x4A30a31C, 16, 4, 0x0); /* set divisor to 1 */ - sr32(0x4A30a110, 0, 1, 0x1); /* set the clock source to active */ - sr32(0x4A30a110, 2, 2, 0x3); /* enable clocks */ + sr32(OMAP44XX_SCRM_AUXCLK3, 8, 1, 0x1); /* enable software ioreq */ + sr32(OMAP44XX_SCRM_AUXCLK3, 1, 2, 0x0); /* set for sys_clk (19.2MHz) */ + sr32(OMAP44XX_SCRM_AUXCLK3, 16, 4, 0x0); /* set divisor to 1 */ + sr32(OMAP44XX_SCRM_ALTCLKSRC, 0, 1, 0x1); /* activate clock source */ + sr32(OMAP44XX_SCRM_ALTCLKSRC, 2, 2, 0x3); /* enable clocks */ } void barebox_arm_reset_vector(void) diff --git a/arch/arm/boards/plathome-openblocks-ax3/Makefile b/arch/arm/boards/plathome-openblocks-ax3/Makefile new file mode 100644 index 0000000000..dcfc2937d3 --- /dev/null +++ b/arch/arm/boards/plathome-openblocks-ax3/Makefile @@ -0,0 +1 @@ +obj-y += board.o diff --git a/arch/arm/boards/plathome-openblocks-ax3/board.c b/arch/arm/boards/plathome-openblocks-ax3/board.c new file mode 100644 index 0000000000..9c800c5410 --- /dev/null +++ b/arch/arm/boards/plathome-openblocks-ax3/board.c @@ -0,0 +1,17 @@ +/* + * Copyright + * (C) 2013 Thomas Petazzoni <thomas.petazzoni@free-electrons.com> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + */ + +/* empty */ diff --git a/arch/arm/boards/plathome-openblocks-ax3/config.h b/arch/arm/boards/plathome-openblocks-ax3/config.h new file mode 100644 index 0000000000..ca15136817 --- /dev/null +++ b/arch/arm/boards/plathome-openblocks-ax3/config.h @@ -0,0 +1,4 @@ +#ifndef __CONFIG_H +#define __CONFIG_H + +#endif /* __CONFIG_H */ diff --git a/arch/arm/boards/plathome-openblocks-ax3/kwbimage.cfg b/arch/arm/boards/plathome-openblocks-ax3/kwbimage.cfg new file mode 100644 index 0000000000..69fd1fd1c1 --- /dev/null +++ b/arch/arm/boards/plathome-openblocks-ax3/kwbimage.cfg @@ -0,0 +1,3 @@ +VERSION 1 +BOOT_FROM spi +BINARY plathome-openblocks-ax3-binary.0 0000005b 00000068 diff --git a/arch/arm/boards/qil-a9260/Makefile b/arch/arm/boards/qil-a926x/Makefile index eb072c0161..eb072c0161 100644 --- a/arch/arm/boards/qil-a9260/Makefile +++ b/arch/arm/boards/qil-a926x/Makefile diff --git a/arch/arm/boards/qil-a9260/config.h b/arch/arm/boards/qil-a926x/config.h index d97181032f..d97181032f 100644 --- a/arch/arm/boards/qil-a9260/config.h +++ b/arch/arm/boards/qil-a926x/config.h diff --git a/arch/arm/boards/qil-a9260/env/bin/init_board b/arch/arm/boards/qil-a926x/env/bin/init_board index 0a6baf722b..0a6baf722b 100644 --- a/arch/arm/boards/qil-a9260/env/bin/init_board +++ b/arch/arm/boards/qil-a926x/env/bin/init_board diff --git a/arch/arm/boards/qil-a9260/env/config b/arch/arm/boards/qil-a926x/env/config index 99711062f8..793a73f11e 100644 --- a/arch/arm/boards/qil-a9260/env/config +++ b/arch/arm/boards/qil-a926x/env/config @@ -3,7 +3,8 @@ # use 'dhcp' to do dhcp in barebox and in kernel # use 'none' if you want to skip kernel ip autoconfiguration ip=dhcp-barebox -global.dhcp.vendor_id=barebox-qil-a9260 +[ x$armlinux_architecture = x1711 ] && global.dhcp.vendor_id=barebox-qil-a9260 +[ x$armlinux_architecture = x1844 ] && global.dhcp.vendor_id=barebox-qil-a9g20 # or set your networking parameters here #eth0.ipaddr=a.b.c.d diff --git a/arch/arm/boards/qil-a9260/init.c b/arch/arm/boards/qil-a926x/init.c index 56b51c245a..504abc6566 100644 --- a/arch/arm/boards/qil-a9260/init.c +++ b/arch/arm/boards/qil-a926x/init.c @@ -28,6 +28,14 @@ #include <mach/at91_pmc.h> #include <mach/at91_rstc.h> +static void qil_a9260_set_board_type(void) +{ + if (machine_is_qil_a9g20()) + armlinux_set_architecture(MACH_TYPE_QIL_A9G20); + else + armlinux_set_architecture(MACH_TYPE_QIL_A9260); +} + static struct atmel_nand_data nand_pdata = { .ale = 21, .cle = 22, @@ -37,7 +45,7 @@ static struct atmel_nand_data nand_pdata = { .on_flash_bbt = 1, }; -static struct sam9_smc_config nand_smc_config = { +static struct sam9_smc_config qil_a9260_nand_smc_config = { .ncs_read_setup = 0, .nrd_setup = 1, .ncs_write_setup = 0, @@ -55,10 +63,31 @@ static struct sam9_smc_config nand_smc_config = { .tdf_cycles = 2, }; +static struct sam9_smc_config qil_a9g20_nand_smc_config = { + .ncs_read_setup = 0, + .nrd_setup = 2, + .ncs_write_setup = 0, + .nwe_setup = 2, + + .ncs_read_pulse = 4, + .nrd_pulse = 4, + .ncs_write_pulse = 4, + .nwe_pulse = 4, + + .read_cycle = 7, + .write_cycle = 7, + + .mode = AT91_SMC_READMODE | AT91_SMC_WRITEMODE | AT91_SMC_EXNWMODE_DISABLE | AT91_SMC_DBW_8, + .tdf_cycles = 3, +}; + static void qil_a9260_add_device_nand(void) { /* configure chip-select 3 (NAND) */ - sam9_smc_configure(0, 3, &nand_smc_config); + if (machine_is_qil_a9g20()) + sam9_smc_configure(0, 3, &qil_a9g20_nand_smc_config); + else + sam9_smc_configure(0, 3, &qil_a9260_nand_smc_config); at91_add_device_nand(&nand_pdata); } @@ -174,7 +203,7 @@ static int qil_a9260_devices_init(void) qil_a9260_add_device_mb(); armlinux_set_bootparams((void *)(AT91_CHIPSELECT_1 + 0x100)); - armlinux_set_architecture(MACH_TYPE_QIL_A9260); + qil_a9260_set_board_type(); devfs_add_partition("nand0", 0x00000, SZ_128K, DEVFS_PARTITION_FIXED, "at91bootstrap_raw"); dev_add_bb_dev("at91bootstrap_raw", "at91bootstrap"); diff --git a/arch/arm/boards/qil-a9260/qil-a9260.dox b/arch/arm/boards/qil-a926x/qil-a9260.dox index da5c197b34..da5c197b34 100644 --- a/arch/arm/boards/qil-a9260/qil-a9260.dox +++ b/arch/arm/boards/qil-a926x/qil-a9260.dox diff --git a/arch/arm/boards/solidrun-cubox/Makefile b/arch/arm/boards/solidrun-cubox/Makefile new file mode 100644 index 0000000000..9320510bab --- /dev/null +++ b/arch/arm/boards/solidrun-cubox/Makefile @@ -0,0 +1 @@ +obj-y += board.c diff --git a/arch/arm/boards/solidrun-cubox/board.c b/arch/arm/boards/solidrun-cubox/board.c new file mode 100644 index 0000000000..a28f4197df --- /dev/null +++ b/arch/arm/boards/solidrun-cubox/board.c @@ -0,0 +1,17 @@ +/* + * Copyright (C) 2013 + * Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + */ + +/* empty */ diff --git a/arch/arm/boards/solidrun-cubox/config.h b/arch/arm/boards/solidrun-cubox/config.h new file mode 100644 index 0000000000..ca15136817 --- /dev/null +++ b/arch/arm/boards/solidrun-cubox/config.h @@ -0,0 +1,4 @@ +#ifndef __CONFIG_H +#define __CONFIG_H + +#endif /* __CONFIG_H */ diff --git a/arch/arm/boards/solidrun-cubox/kwbimage.cfg b/arch/arm/boards/solidrun-cubox/kwbimage.cfg new file mode 100644 index 0000000000..db35acacd4 --- /dev/null +++ b/arch/arm/boards/solidrun-cubox/kwbimage.cfg @@ -0,0 +1,37 @@ +VERSION 0 +BOOT_FROM spi +DATA d0020104 00000000 +DATA d0800020 00022430 +DATA d0800030 00022430 +DATA d0800050 911500c3 +DATA d0800060 646602c4 +DATA d0800190 c2003053 +DATA d08001c0 34f4a187 +DATA d0800650 000f0121 +DATA d0800660 04040200 +DATA d0800080 00000000 +DATA d0800090 00080000 +DATA d08000f0 c0000000 +DATA d08001a0 20c0c009 +DATA d0800280 010e0202 +DATA d0800760 00000000 +DATA d0800770 0000000a +DATA d0800140 20004044 +DATA d08001d0 133c2339 +DATA d08001e0 07700330 +DATA d08001f0 00000033 +DATA d0800200 0011311c +DATA d0800210 00300000 +DATA d0800240 80000000 +DATA d0800510 010e0101 +DATA d0800230 2028006a +DATA d0800e10 00280062 +DATA d0800e20 00280062 +DATA d0800e30 00280062 +DATA d0800100 000d0001 +DATA d0800110 200d0001 +DATA d0020104 00000000 +DATA d0020104 00000000 +DATA d0020104 00000000 +DATA d0020104 00000000 +DATA d0020104 00000000 |