/* * Critical Link MityOMAP-L138 SoM Baseboard initializtaion file * */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define BASEBOARD_NAME "System9000" #define SPI1_FLASH_CS_N GPIO_TO_PIN(2, 15) // System configuration flash (optional) /* * GPIO pins */ static short sys9000_gpio_pins[] __initdata = { DA850_GPIO0_1, // SYNC_PLL_CLK2_LOS DA850_GPIO0_3, // SYNC_PLL_LOL DA850_GPIO0_5, // SYNC_PLL_CLK1_LOS DA850_GPIO0_7, // SYNC_MASTER_EN DA850_GPIO0_8, // SOM_GP0_8 DA850_GPIO0_9, // TEST_LED_0 DA850_GPIO0_10, // SYS_GOOD_LED_YEL DA850_GPIO0_11, // SYS_GOOD_LED_GRN DA850_GPIO0_12, // SYNC_LED_YEL DA850_GPIO0_13, // SYNC_LED_GRN DA850_GPIO0_14, // REC_LED_RED DA850_GPIO0_15, // REC_LED_GRN DA850_GPIO1_4, // TEST_POINT_1 DA850_GPIO1_5, // TEST_POINT_0 DA850_GPIO4_0, // VCAL_EN DA850_GPIO4_1, // VCAL_EN_n DA850_GPIO4_2, // ECAL_EN_n DA850_GPIO4_3, // ECAL_EN_n DA850_GPIO4_4, // VCAL_ZERO DA850_GPIO4_5, // VCAL_OUT_EN DA850_GPIO4_6, // VCAL_SPARE DA850_GPIO4_7, // SSD_DET_N DA850_GPIO5_14, // TEST_LED_1 DA850_GPIO6_0, // SOM_GP6_0 DA850_GPIO6_1, // SOM_GP6_1 DA850_GPIO6_2, // SOM_GP6_2 DA850_GPIO6_3, // SOM_GP6_3 DA850_GPIO6_4, // SOM_GP6_4 DA850_GPIO6_6, // SOM_GP6_6 DA850_GPIO6_7, // SOM_GP6_7 DA850_GPIO6_8, // SOM_GP6_8 DA850_GPIO6_9, // SOM_GP6_9 DA850_GPIO6_10, // SOM_GP6_10 DA850_GPIO6_11, // SOM_GP6_11 DA850_GPIO7_0, // LDAC0_n DA850_GPIO7_1, // LDAC1_n DA850_GPIO7_2, // LDAC2_n DA850_GPIO7_3, // LDAC3_n DA850_GPIO7_4, // LDAC4_n DA850_GPIO7_5, // LDAC5_n DA850_GPIO7_6, // LDAC6_n DA850_GPIO7_8, // CARD_DET3 DA850_GPIO7_9, // CARD_DET2 DA850_GPIO7_10, // CARD_DET1 DA850_GPIO7_11, // CARD_DET0 DA850_GPIO7_12, // DIO_0_OUT DA850_GPIO7_13, // DIO_0_IN DA850_GPIO7_14, // DIO_1_OUT DA850_GPIO7_15, // DIO_1_IN DA850_GPIO8_8, // SYS_RST_N DA850_GPIO8_10, // Factory Reset In DA850_GPIO8_12, // HW_REV_0 DA850_GPIO8_13, // HW_REV_1 DA850_GPIO8_14, // HW_REV_2 DA850_GPIO8_15, // HW_REV_3 -1, }; /* * SPI Devices: * SPI1_CS1: Flash M25PE80 */ static struct mtd_partition sys9000_spi_flash_partitions[] = { [0] = { .name = "sys9000_cfg", .offset = 0, .size = SZ_512K, .mask_flags = MTD_WRITEABLE, }, [1] = { .name = "sys9000_cal", .offset = MTDPART_OFS_APPEND, .size = MTDPART_SIZ_FULL, .mask_flags = MTD_WRITEABLE, }, }; // Copied from board-mityomapl138.c in this directory static struct flash_platform_data sys9000_spi_flash_data = { .name = "M25PE80", .parts = sys9000_spi_flash_partitions, .nr_parts = ARRAY_SIZE(sys9000_spi_flash_partitions), .type = "m25p64-nonjedec", }; static struct davinci_spi_config spi_M25PE80_config = { .io_type = SPI_IO_TYPE_DMA, .c2tdelay = 8, .t2cdelay = 8, }; static struct spi_board_info sys9000_spi1_info[] = { [0] = { .modalias = "M25PE80", .platform_data = &sys9000_spi_flash_data, .controller_data = &spi_M25PE80_config, .mode = SPI_MODE_0, .max_speed_hz = 30000000, .bus_num = 1, .chip_select = 1, }, }; // TODO: does spi1_cs[] need to have 2 elements? static u8 spi1_cs[] = { SPI_INTERN_CS, SPI1_FLASH_CS_N, }; static void __init baseboard_setup_spi(void) { int ret; ret = gpio_request(SPI1_FLASH_CS_N, "Sys9000 SPI FLASH CS\n"); if (ret) pr_warning("%s: can not open Sys9000 SPI CS %d\n", __func__, SPI1_FLASH_CS_N); ret = spi_register_board_info(sys9000_spi1_info, ARRAY_SIZE(sys9000_spi1_info)); if (ret) pr_warning("%s: Unable to register SPI1 Info: %d\n", __func__, ret); } static int __init baseboard_pre_init(void) { pr_info("%s: Entered\n", __func__); da8xx_spi_pdata[1].chip_sel = spi1_cs; da8xx_spi_pdata[1].num_chipselect = ARRAY_SIZE(spi1_cs); davinci_soc_info.emac_pdata->phy_id = "0:03"; return 0; } postcore_initcall_sync(baseboard_pre_init); static int __init baseboard_init(void) { pr_info("%s [%s]...\n", __func__, BASEBOARD_NAME); davinci_cfg_reg_list(sys9000_gpio_pins); baseboard_setup_spi(); return 0; } arch_initcall_sync(baseboard_init);