static int mini2440_devices_init(void) { uint32_t reg; int i; /* ----------- configure the access to the outer space ---------- */ for (i = 0; i < ARRAY_SIZE(pin_usage); i++) s3c_gpio_mode(pin_usage[i]); reg = readl(S3C_BWSCON); /* CS#4 to access the network controller */ reg &= ~0x000f0000; reg |= 0x000d0000; /* 16 bit */ writel(0x1f4c, S3C_BANKCON4); writel(reg, S3C_BWSCON); /* release the reset signal to external devices */ reg = readl(S3C_MISCCR); reg |= 0x10000; writel(reg, S3C_MISCCR); add_generic_device("s3c24x0_nand", DEVICE_ID_DYNAMIC, NULL, S3C24X0_NAND_BASE, 0, IORESOURCE_MEM, &nand_info); add_dm9000_device(0, S3C_CS4_BASE + 0x300, S3C_CS4_BASE + 0x304, IORESOURCE_MEM_16BIT, &dm9000_data); #ifdef CONFIG_NAND /* ----------- add some vital partitions -------- */ devfs_del_partition("self_raw"); devfs_add_partition("nand0", 0x00000, 0x40000, DEVFS_PARTITION_FIXED, "self_raw"); dev_add_bb_dev("self_raw", "self0"); devfs_del_partition("env_raw"); devfs_add_partition("nand0", 0x40000, 0x20000, DEVFS_PARTITION_FIXED, "env_raw"); dev_add_bb_dev("env_raw", "env0"); #endif add_generic_device("s3c_mci", 0, NULL, S3C2410_SDI_BASE, 0, IORESOURCE_MEM, &mci_data); add_generic_device("s3c_fb", 0, NULL, S3C2410_LCD_BASE, 0, IORESOURCE_MEM, &s3c24x0_fb_data); add_generic_device("ohci", 0, NULL, S3C2410_USB_HOST_BASE, 0x100, IORESOURCE_MEM, NULL); armlinux_set_bootparams((void*)S3C_SDRAM_BASE + 0x100); armlinux_set_architecture(MACH_TYPE_MINI2440); return 0; }
static int da923rc_devices_init(void) { add_cfi_flash_device(0, 0xfe000000, 32 << 20, 0); devfs_add_partition("nor0", 0x0, 0x8000, DEVFS_PARTITION_FIXED, "env0"); devfs_add_partition("nor0", 0x1f80000, 8 << 16, DEVFS_PARTITION_FIXED, "self0"); add_generic_device("i2c-fsl", 0, NULL, I2C1_BASE_ADDR, 0x100, IORESOURCE_MEM, &i2cplat[0]); add_generic_device("i2c-fsl", 1, NULL, I2C2_BASE_ADDR, 0x100, IORESOURCE_MEM, &i2cplat[1]); board_eth_init(); return 0; }
static int p1010rdb_devices_init(void) { add_cfi_flash_device(DEVICE_ID_DYNAMIC, CFG_FLASH_BASE, 32 << 20, 0); devfs_add_partition("nor0", 0x1f80000, 0x80000, DEVFS_PARTITION_FIXED, "self0"); devfs_add_partition("nor0", 0x1f60000, 0x10000, DEVFS_PARTITION_FIXED, "env0"); add_generic_device("i2c-fsl", 0, NULL, I2C1_BASE_ADDR, 0x100, IORESOURCE_MEM, &i2cplat[0]); add_generic_device("i2c-fsl", 1, NULL, I2C2_BASE_ADDR, 0x100, IORESOURCE_MEM, &i2cplat[1]); board_eth_init(); return 0; }
static int tx28kit_console_init(void) { add_generic_device("stm_serial", 0, NULL, IMX_DBGUART_BASE, 8192, IORESOURCE_MEM, NULL); return 0; }
static int stmpe_probe(struct device_d *dev) { struct stmpe_platform_data *pdata = dev->platform_data; struct stmpe *stmpe_dev; struct stmpe_client_info *i2c_ci; if (!pdata) { dev_dbg(dev, "no platform data\n"); return -ENODEV; } stmpe_dev = xzalloc(sizeof(struct stmpe)); stmpe_dev->cdev.name = DRIVERNAME; stmpe_dev->client = to_i2c_client(dev); stmpe_dev->cdev.size = 191; /* 191 known registers */ stmpe_dev->cdev.dev = dev; stmpe_dev->cdev.ops = &stmpe_fops; stmpe_dev->pdata = pdata; dev->priv = stmpe_dev; i2c_ci = xzalloc(sizeof(struct stmpe_client_info)); i2c_ci->stmpe = stmpe_dev; i2c_ci->read_reg = stmpe_reg_read; i2c_ci->write_reg = stmpe_reg_write; if (pdata->blocks &= STMPE_BLOCK_GPIO) add_generic_device("stmpe-gpio", DEVICE_ID_DYNAMIC, NULL, 0, 0, IORESOURCE_MEM, i2c_ci); devfs_create(&stmpe_dev->cdev); return 0; }
static void socfpga_mmc_init(void) { clks[mmc] = clk_fixed("mmc", 400000000); clkdev_add_physbase(clks[mmc], CYCLONE5_SDMMC_ADDRESS, NULL); add_generic_device("dw_mmc", 0, NULL, CYCLONE5_SDMMC_ADDRESS, SZ_4K, IORESOURCE_MEM, &mmc_pdata); }
static void socfpga_timer_init(void) { clks[timer] = clk_fixed("timer", 200000000); clkdev_add_physbase(clks[timer], CYCLONE5_SMP_TWD_ADDRESS, NULL); add_generic_device("smp_twd", 0, NULL, CYCLONE5_SMP_TWD_ADDRESS, 0x100, IORESOURCE_MEM, NULL); }
static int ep93xx_devices_init(void) { add_cfi_flash_device(DEVICE_ID_DYNAMIC, 0x60000000, EDB93XX_CFI_FLASH_SIZE, 0); /* * Create partitions that should be * not touched by any regular user */ devfs_add_partition("nor0", 0x00000, 0x40000, DEVFS_PARTITION_FIXED, "self0"); devfs_add_partition("nor0", 0x40000, 0x20000, DEVFS_PARTITION_FIXED, "env0"); protect_file("/dev/env0", 1); /* * Up to 32MiB NOR type flash, connected to * CS line 6, data width is 16 bit */ add_generic_device("ep93xx_eth", DEVICE_ID_DYNAMIC, NULL, 0, 0, IORESOURCE_MEM, NULL); armlinux_set_bootparams((void *)CONFIG_EP93XX_SDRAM_BANK0_BASE + 0x100); armlinux_set_architecture(MACH_TYPE); return 0; }
void __init at91_add_device_lcdc(struct atmel_lcdfb_platform_data *data) { BUG_ON(!data); at91_set_A_periph(AT91_PIN_PA24, 0); /* LCDPWM */ at91_set_A_periph(AT91_PIN_PA25, 0); /* LCDDISP */ at91_set_A_periph(AT91_PIN_PA26, 0); /* LCDVSYNC */ at91_set_A_periph(AT91_PIN_PA27, 0); /* LCDHSYNC */ at91_set_A_periph(AT91_PIN_PA28, 0); /* LCDDOTCK */ at91_set_A_periph(AT91_PIN_PA29, 0); /* LCDDEN */ at91_set_A_periph(AT91_PIN_PA2, 0); /* LCDD2 */ at91_set_A_periph(AT91_PIN_PA3, 0); /* LCDD3 */ at91_set_A_periph(AT91_PIN_PA4, 0); /* LCDD4 */ at91_set_A_periph(AT91_PIN_PA5, 0); /* LCDD5 */ at91_set_A_periph(AT91_PIN_PA6, 0); /* LCDD6 */ at91_set_A_periph(AT91_PIN_PA7, 0); /* LCDD7 */ at91_set_A_periph(AT91_PIN_PA10, 0); /* LCDD10 */ at91_set_A_periph(AT91_PIN_PA11, 0); /* LCDD11 */ at91_set_A_periph(AT91_PIN_PA12, 0); /* LCDD12 */ at91_set_A_periph(AT91_PIN_PA13, 0); /* LCDD13 */ at91_set_A_periph(AT91_PIN_PA14, 0); /* LCDD14 */ at91_set_A_periph(AT91_PIN_PA15, 0); /* LCDD15 */ at91_set_A_periph(AT91_PIN_PA18, 0); /* LCDD18 */ at91_set_A_periph(AT91_PIN_PA19, 0); /* LCDD19 */ at91_set_A_periph(AT91_PIN_PA20, 0); /* LCDD20 */ at91_set_A_periph(AT91_PIN_PA21, 0); /* LCDD21 */ at91_set_A_periph(AT91_PIN_PA22, 0); /* LCDD22 */ at91_set_A_periph(AT91_PIN_PA23, 0); /* LCDD23 */ add_generic_device("atmel_hlcdfb", DEVICE_ID_SINGLE, NULL, SAMA5D4_BASE_LCDC, SZ_4K, IORESOURCE_MEM, data); }
static int nhk8815_devices_init(void) { writel(0xC37800F0, NOMADIK_GPIO1_BASE + 0x20); writel(0x00000000, NOMADIK_GPIO1_BASE + 0x24); writel(0x00000000, NOMADIK_GPIO1_BASE + 0x28); writel(readl(NOMADIK_SRC_BASE) | 0x8000, NOMADIK_SRC_BASE); /* Set up SMCS1 for Ethernet: sram-like, enabled, timing values */ writel(0x0000305b, FSMC_BCR(1)); writel(0x00033f33, FSMC_BTR(1)); add_generic_device("smc91c111", DEVICE_ID_DYNAMIC, NULL, 0x34000300, 16, IORESOURCE_MEM, NULL); platform_device_register(&nhk8815_nand_device); armlinux_set_architecture(MACH_TYPE_NOMADIK); armlinux_set_bootparams((void *)(0x00000100)); devfs_add_partition("nand0", 0x0000000, 0x040000, DEVFS_PARTITION_FIXED, "xloader_raw"); devfs_add_partition("nand0", 0x0040000, 0x080000, DEVFS_PARTITION_FIXED, "meminit_raw"); devfs_add_partition("nand0", 0x0080000, 0x200000, DEVFS_PARTITION_FIXED, "self_raw"); dev_add_bb_dev("self_raw", "self0"); devfs_add_partition("nand0", 0x7FE0000, 0x020000, DEVFS_PARTITION_FIXED, "env_raw"); dev_add_bb_dev("env_raw", "env0"); return 0; }
static int imx23_olinuxino_devices_init(void) { int i, rc; /* initizalize gpios */ for (i = 0; i < ARRAY_SIZE(pad_setup); i++) imx_gpio_mode(pad_setup[i]); armlinux_set_bootparams((void *)IMX_MEMORY_BASE + 0x100); armlinux_set_architecture(MACH_TYPE_IMX233_OLINUXINO); /* enable IOCLK to run at the PLL frequency */ imx_set_ioclk(480000000); /* run the SSP unit clock at 100,000 kHz */ imx_set_sspclk(0, 100000000, 1); add_generic_device("mxs_mci", DEVICE_ID_DYNAMIC, NULL, IMX_SSP1_BASE, 0x8000, IORESOURCE_MEM, &mci_pdata); olinuxino_init_usb(); rc = envfs_register_partition("disk0", 1); if (rc != 0) printf("Cannot create the 'env0' persistent " "environment storage (%d)\n", rc); return 0; }
static int imx53_init(void) { add_generic_device("imx_iim", 0, NULL, MX53_IIM_BASE_ADDR, SZ_4K, IORESOURCE_MEM, NULL); return 0; }
void at91_add_device_nand(struct atmel_nand_data *data) { unsigned long csa; if (!data) return; csa = readl(AT91SAM9261_BASE_MATRIX + AT91SAM9261_MATRIX_EBICSA); csa |= AT91SAM9261_MATRIX_CS3A_SMC_SMARTMEDIA; writel(csa, AT91SAM9261_BASE_MATRIX + AT91SAM9261_MATRIX_EBICSA); /* enable pin */ if (gpio_is_valid(data->enable_pin)) at91_set_gpio_output(data->enable_pin, 1); /* ready/busy pin */ if (gpio_is_valid(data->rdy_pin)) at91_set_gpio_input(data->rdy_pin, 1); /* card detect pin */ if (gpio_is_valid(data->det_pin)) at91_set_gpio_input(data->det_pin, 1); at91_set_A_periph(AT91_PIN_PC0, 0); /* NANDOE */ at91_set_A_periph(AT91_PIN_PC1, 0); /* NANDWE */ add_generic_device("atmel_nand", 0, NULL, AT91_CHIPSELECT_3, 0x10, IORESOURCE_MEM, data); }
static void pcm049_network_init(void) { gpmc_cs_config(5, &net_cfg); add_generic_device("smc911x", -1, NULL, 0x2C000000, 0x4000, IORESOURCE_MEM, NULL); }
void __init at91_add_device_lcdc(struct atmel_lcdfb_platform_data *data) { BUG_ON(!data); data->have_intensity_bit = true; at91_set_A_periph(AT91_PIN_PC1, 0); /* LCDHSYNC */ at91_set_A_periph(AT91_PIN_PC2, 0); /* LCDDOTCK */ at91_set_A_periph(AT91_PIN_PC3, 0); /* LCDDEN */ at91_set_B_periph(AT91_PIN_PB9, 0); /* LCDCC */ at91_set_A_periph(AT91_PIN_PC6, 0); /* LCDD2 */ at91_set_A_periph(AT91_PIN_PC7, 0); /* LCDD3 */ at91_set_A_periph(AT91_PIN_PC8, 0); /* LCDD4 */ at91_set_A_periph(AT91_PIN_PC9, 0); /* LCDD5 */ at91_set_A_periph(AT91_PIN_PC10, 0); /* LCDD6 */ at91_set_A_periph(AT91_PIN_PC11, 0); /* LCDD7 */ at91_set_A_periph(AT91_PIN_PC14, 0); /* LCDD10 */ at91_set_A_periph(AT91_PIN_PC15, 0); /* LCDD11 */ at91_set_A_periph(AT91_PIN_PC16, 0); /* LCDD12 */ at91_set_B_periph(AT91_PIN_PC12, 0); /* LCDD13 */ at91_set_A_periph(AT91_PIN_PC18, 0); /* LCDD14 */ at91_set_A_periph(AT91_PIN_PC19, 0); /* LCDD15 */ at91_set_A_periph(AT91_PIN_PC22, 0); /* LCDD18 */ at91_set_A_periph(AT91_PIN_PC23, 0); /* LCDD19 */ at91_set_A_periph(AT91_PIN_PC24, 0); /* LCDD20 */ at91_set_B_periph(AT91_PIN_PC17, 0); /* LCDD21 */ at91_set_A_periph(AT91_PIN_PC26, 0); /* LCDD22 */ at91_set_A_periph(AT91_PIN_PC27, 0); /* LCDD23 */ add_generic_device("atmel_lcdfb", DEVICE_ID_SINGLE, NULL, AT91SAM9263_LCDC_BASE, SZ_4K, IORESOURCE_MEM, data); }
static int mx28_evk_console_init(void) { add_generic_device("stm_serial", 0, NULL, IMX_DBGUART_BASE, 0x2000, IORESOURCE_MEM, NULL); return 0; }
static int devices_init(void) { add_cfi_flash_device(DEVICE_ID_DYNAMIC, CFG_FLASH_BASE, 16 << 20, 0); add_generic_device("i2c-fsl", 0, NULL, I2C1_BASE_ADDR, 0x100, IORESOURCE_MEM, &i2cplat); add_generic_device("i2c-fsl", 1, NULL, I2C2_BASE_ADDR, 0x100, IORESOURCE_MEM, &i2cplat); fsl_eth_init(2, &gfar_info[0]); fsl_eth_init(3, &gfar_info[1]); devfs_add_partition("nor0", 0xf80000, 0x80000, DEVFS_PARTITION_FIXED, "self0"); return 0; }
void at91_add_device_spi(int spi_id, struct at91_spi_platform_data *pdata) { int i; int cs_pin; BUG_ON(spi_id > 0); if (!pdata) pdata = &spi_pdata[spi_id]; for (i = 0; i < pdata->num_chipselect; i++) { cs_pin = pdata->chipselect[i]; /* enable chip-select pin */ if (cs_pin > 0) at91_set_gpio_output(cs_pin, 1); } at91_set_A_periph(AT91_PIN_PA0, 0); /* MISO */ at91_set_A_periph(AT91_PIN_PA1, 0); /* MOSI */ at91_set_A_periph(AT91_PIN_PA2, 0); /* SPCK */ add_generic_device("atmel_spi", spi_id, NULL, AT91RM9200_BASE_SPI, SZ_16K, IORESOURCE_MEM, pdata); }
static int cfa10036_console_init(void) { add_generic_device("stm_serial", 0, NULL, IMX_DBGUART_BASE, SZ_8K, IORESOURCE_MEM, NULL); return 0; }
/* Consider only one slot : slot 0 */ void __init at91_add_device_mci(short mmc_id, struct atmel_mci_platform_data *data) { if (!data) return; /* Must have at least one usable slot */ if (!data->bus_width) return; /* input/irq */ if (gpio_is_valid(data->detect_pin)) { at91_set_gpio_input(data->detect_pin, 1); at91_set_deglitch(data->detect_pin, 1); } if (gpio_is_valid(data->wp_pin)) at91_set_gpio_input(data->wp_pin, 1); /* CLK */ at91_set_A_periph(AT91_PIN_PA17, 0); /* CMD */ at91_set_A_periph(AT91_PIN_PA16, 1); /* DAT0, maybe DAT1..DAT3 */ at91_set_A_periph(AT91_PIN_PA15, 1); if (data->bus_width == 4) { at91_set_A_periph(AT91_PIN_PA18, 1); at91_set_A_periph(AT91_PIN_PA19, 1); at91_set_A_periph(AT91_PIN_PA20, 1); } add_generic_device("atmel_mci", DEVICE_ID_SINGLE, NULL, AT91SAM9N12_BASE_MCI, SZ_16K, IORESOURCE_MEM, data); }
void at91_add_device_eth(int id, struct macb_platform_data *data) { if (!data) return; at91_set_A_periph(AT91_PIN_PE21, 0); /* ETXCK_EREFCK */ at91_set_B_periph(AT91_PIN_PC25, 0); /* ERXDV */ at91_set_A_periph(AT91_PIN_PE25, 0); /* ERX0 */ at91_set_A_periph(AT91_PIN_PE26, 0); /* ERX1 */ at91_set_A_periph(AT91_PIN_PE27, 0); /* ERXER */ at91_set_A_periph(AT91_PIN_PE28, 0); /* ETXEN */ at91_set_A_periph(AT91_PIN_PE23, 0); /* ETX0 */ at91_set_A_periph(AT91_PIN_PE24, 0); /* ETX1 */ at91_set_A_periph(AT91_PIN_PE30, 0); /* EMDIO */ at91_set_A_periph(AT91_PIN_PE29, 0); /* EMDC */ if (data->phy_interface != PHY_INTERFACE_MODE_RMII) { at91_set_A_periph(AT91_PIN_PE22, 0); /* ECRS */ at91_set_B_periph(AT91_PIN_PC26, 0); /* ECOL */ at91_set_B_periph(AT91_PIN_PC22, 0); /* ERX2 */ at91_set_B_periph(AT91_PIN_PC23, 0); /* ERX3 */ at91_set_B_periph(AT91_PIN_PC27, 0); /* ERXCK */ at91_set_B_periph(AT91_PIN_PC20, 0); /* ETX2 */ at91_set_B_periph(AT91_PIN_PC21, 0); /* ETX3 */ at91_set_B_periph(AT91_PIN_PC24, 0); /* ETXER */ } add_generic_device("macb", 0, NULL, AT91SAM9263_BASE_EMAC, 0x1000, IORESOURCE_MEM, data); }
void at91_add_device_eth(int id, struct at91_ether_platform_data *data) { if (!data) return; /* Pins used for MII and RMII */ at91_set_A_periph(AT91_PIN_PA17, 0); /* ETXCK_EREFCK */ at91_set_A_periph(AT91_PIN_PA15, 0); /* ERXDV */ at91_set_A_periph(AT91_PIN_PA12, 0); /* ERX0 */ at91_set_A_periph(AT91_PIN_PA13, 0); /* ERX1 */ at91_set_A_periph(AT91_PIN_PA16, 0); /* ERXER */ at91_set_A_periph(AT91_PIN_PA14, 0); /* ETXEN */ at91_set_A_periph(AT91_PIN_PA10, 0); /* ETX0 */ at91_set_A_periph(AT91_PIN_PA11, 0); /* ETX1 */ at91_set_A_periph(AT91_PIN_PA19, 0); /* EMDIO */ at91_set_A_periph(AT91_PIN_PA18, 0); /* EMDC */ if (!(data->flags & AT91SAM_ETHER_RMII)) { at91_set_B_periph(AT91_PIN_PA29, 0); /* ECRS */ at91_set_B_periph(AT91_PIN_PA30, 0); /* ECOL */ at91_set_B_periph(AT91_PIN_PA8, 0); /* ERX2 */ at91_set_B_periph(AT91_PIN_PA9, 0); /* ERX3 */ at91_set_B_periph(AT91_PIN_PA28, 0); /* ERXCK */ at91_set_B_periph(AT91_PIN_PA6, 0); /* ETX2 */ at91_set_B_periph(AT91_PIN_PA7, 0); /* ETX3 */ at91_set_B_periph(AT91_PIN_PA27, 0); /* ETXER */ } add_generic_device("macb", 0, NULL, AT91SAM9G45_BASE_EMAC, 0x1000, IORESOURCE_MEM, data); }
void __init at91_add_device_usbh_ohci(struct at91_usbh_data *data) { if (!data) return; add_generic_device("at91_ohci", -1, NULL, AT91SAM9260_UHP_BASE, 1024 * 1024, IORESOURCE_MEM, data); }
static void vexpress_ax_devices_init(void) { add_cfi_flash_device(0, 0x08000000, SZ_64M, 0); add_cfi_flash_device(1, 0x0c000000, SZ_64M, 0); add_generic_device("smc911x", DEVICE_ID_DYNAMIC, NULL, 0x1a000000, 64 * 1024, IORESOURCE_MEM, NULL); armlinux_set_bootparams((void *)(0x80000100)); }
void __init at91_add_device_usbh_ohci(struct at91_usbh_data *data) { if (!data) return; add_generic_device("at91_ohci", DEVICE_ID_DYNAMIC, NULL, AT91RM9200_UHP_BASE, 1024 * 1024, IORESOURCE_MEM, data); }
static int imx31_init(void) { add_generic_device("imx_iim", 0, NULL, MX31_IIM_BASE_ADDR, SZ_4K, IORESOURCE_MEM, NULL); add_generic_device("imx31-iomux", 0, NULL, MX31_IOMUXC_BASE_ADDR, 0x1000, IORESOURCE_MEM, NULL); add_generic_device("imx31-ccm", 0, NULL, MX31_CCM_BASE_ADDR, 0x1000, IORESOURCE_MEM, NULL); add_generic_device("imx31-gpt", 0, NULL, MX31_GPT1_BASE_ADDR, 0x100, IORESOURCE_MEM, NULL); add_generic_device("imx31-gpio", 0, NULL, MX31_GPIO1_BASE_ADDR, 0x1000, IORESOURCE_MEM, NULL); add_generic_device("imx31-gpio", 1, NULL, MX31_GPIO2_BASE_ADDR, 0x1000, IORESOURCE_MEM, NULL); add_generic_device("imx31-gpio", 2, NULL, MX31_GPIO3_BASE_ADDR, 0x1000, IORESOURCE_MEM, NULL); add_generic_device("imx21-wdt", 0, NULL, MX31_WDOG_BASE_ADDR, 0x1000, IORESOURCE_MEM, NULL); add_generic_device("imx31-esdctl", 0, NULL, MX31_ESDCTL_BASE_ADDR, 0x1000, IORESOURCE_MEM, NULL); add_generic_device("imx31-usb-misc", 0, NULL, MX31_USB_OTG_BASE_ADDR + 0x600, 0x100, IORESOURCE_MEM, NULL); return 0; }
static int netx_devices_init(void) { add_cfi_flash_device(-1, 0xC0000000, 32 * 1024 * 1024, 0); add_generic_device("netx-eth", -1, NULL, 0, 0, IORESOURCE_MEM, ð0_data); add_generic_device("netx-eth", -1, NULL, 0, 0, IORESOURCE_MEM, ð1_data); devfs_add_partition("nor0", 0x00000, 0x40000, PARTITION_FIXED, "self0"); /* Do not overwrite primary env for now */ devfs_add_partition("nor0", 0xc0000, 0x80000, PARTITION_FIXED, "env0"); protect_file("/dev/env0", 1); armlinux_set_bootparams((void *)0x80000100); armlinux_set_architecture(MACH_TYPE_NXDB500); return 0; }
/* Consider only one slot : slot 0 */ void __init at91_add_device_mci(short mmc_id, struct atmel_mci_platform_data *data) { resource_size_t start = ~0; if (!data) return; /* Must have at least one usable slot */ if (!data->bus_width) return; /* input/irq */ if (gpio_is_valid(data->detect_pin)) { at91_set_gpio_input(data->detect_pin, 1); at91_set_deglitch(data->detect_pin, 1); } if (gpio_is_valid(data->wp_pin)) at91_set_gpio_input(data->wp_pin, 1); if (mmc_id == 0) { /* MCI0 */ start = AT91SAM9X5_BASE_MCI0; /* CLK */ at91_set_A_periph(AT91_PIN_PA17, 0); /* CMD */ at91_set_A_periph(AT91_PIN_PA16, 1); /* DAT0, maybe DAT1..DAT3 */ at91_set_A_periph(AT91_PIN_PA15, 1); if (data->bus_width == 4) { at91_set_A_periph(AT91_PIN_PA18, 1); at91_set_A_periph(AT91_PIN_PA19, 1); at91_set_A_periph(AT91_PIN_PA20, 1); } } else { /* MCI1 */ start = AT91SAM9X5_BASE_MCI1; /* CLK */ at91_set_B_periph(AT91_PIN_PA13, 0); /* CMD */ at91_set_B_periph(AT91_PIN_PA12, 1); /* DAT0, maybe DAT1..DAT3 */ at91_set_B_periph(AT91_PIN_PA11, 1); if (data->bus_width == 4) { at91_set_B_periph(AT91_PIN_PA2, 1); at91_set_B_periph(AT91_PIN_PA3, 1); at91_set_B_periph(AT91_PIN_PA4, 1); } } add_generic_device("atmel_mci", mmc_id, NULL, start, SZ_16K, IORESOURCE_MEM, data); }
static int imx23_olinuxino_console_init(void) { barebox_set_model("Olimex.ltd imx233-olinuxino"); barebox_set_hostname("imx233-olinuxino"); add_generic_device("stm_serial", 0, NULL, IMX_DBGUART_BASE, 8192, IORESOURCE_MEM, NULL); return 0; }
static int mx23_evk_console_init(void) { barebox_set_model("Freescale i.MX23 EVK"); barebox_set_hostname("mx23evk"); add_generic_device("stm_serial", 0, NULL, IMX_DBGUART_BASE, 8192, IORESOURCE_MEM, NULL); return 0; }