static void pca100_usb_init(void) { u32 reg; reg = readl(MX27_USB_OTG_BASE_ADDR + 0x600); reg &= ~((3 << 21) | 1); reg |= (1 << 5) | (1 << 16) | (1 << 19) | (1 << 11) | (1 << 20); writel(reg, MX27_USB_OTG_BASE_ADDR + 0x600); /* * switch usbotg and usbh2 to ulpi mode. Do this *before* * the iomux setup to prevent funny hardware bugs from * triggering. Also, do this even when USB support is * disabled to give Linux USB support a good start. */ reg = readl(MX27_USB_OTG_BASE_ADDR + 0x584); reg &= ~(3 << 30); reg |= 2 << 30; writel(reg, MX27_USB_OTG_BASE_ADDR + 0x584); reg = readl(MX27_USB_OTG_BASE_ADDR + 0x184); reg &= ~(3 << 30); reg |= 2 << 30; writel(reg, MX27_USB_OTG_BASE_ADDR + 0x184); /* disable the usb phys */ imx_gpio_mode((GPIO_PORTB | 23) | GPIO_GPIO | GPIO_IN); gpio_direction_output(GPIO_PORTB + 23, 1); imx_gpio_mode((GPIO_PORTB | 24) | GPIO_GPIO | GPIO_IN); gpio_direction_output(GPIO_PORTB + 24, 1); }
static int scb9328_devices_init(void) { int i; imx_gpio_mode(PA23_PF_CS5); imx_gpio_mode(GPIO_PORTB | GPIO_GPIO | GPIO_OUT | 21); imx_gpio_mode(GPIO_PORTB | GPIO_GPIO | GPIO_OUT | 22); imx_gpio_mode(GPIO_PORTB | GPIO_GPIO | GPIO_OUT | 23); imx_gpio_mode(GPIO_PORTB | GPIO_GPIO | GPIO_OUT | 24); for (i = 0; i < ARRAY_SIZE(leds); i++) led_gpio_register(&leds[i]); /* CS3 becomes CS3 by clearing reset default bit 1 in FMCR */ writel(0x1, MX1_SCM_BASE_ADDR + MX1_FMCR); imx1_setup_eimcs(0, 0x000F2000, 0x11110d01); imx1_setup_eimcs(1, 0x000F0a00, 0x11110601); imx1_setup_eimcs(3, 0x000FFFFF, 0x00000303); imx1_setup_eimcs(4, 0x000F0a00, 0x11110301); imx1_setup_eimcs(5, 0x00008400, 0x00000D03); add_cfi_flash_device(DEVICE_ID_DYNAMIC, 0x10000000, 16 * 1024 * 1024, 0); add_dm9000_device(DEVICE_ID_DYNAMIC, 0x16000000, 0x16000004, IORESOURCE_MEM_16BIT, &dm9000_data); 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); armlinux_set_bootparams((void *)0x08000100); armlinux_set_architecture(MACH_TYPE_SCB9328); return 0; }
static int scb9328_console_init(void) { /* init gpios for serial port */ imx_gpio_mode(PC11_PF_UART1_TXD); imx_gpio_mode(PC12_PF_UART1_RXD); register_device(&scb9328_serial_device); return 0; }
static int scb9328_console_init(void) { /* init gpios for serial port */ imx_gpio_mode(PC11_PF_UART1_TXD); imx_gpio_mode(PC12_PF_UART1_RXD); imx1_add_uart0(); return 0; }
static int apf9328_fpga_pre( void ) { /* Initialize GPIO pins */ imx_gpio_mode(FPGA_INIT | GPIO_GIUS | GPIO_DR | GPIO_IN); imx_gpio_mode(FPGA_DONE | GPIO_GIUS | GPIO_DR | GPIO_IN); imx_gpio_mode(FPGA_DIN | GPIO_GIUS | GPIO_DR | GPIO_OUT); imx_gpio_mode(FPGA_PROGRAM | GPIO_GIUS | GPIO_DR | GPIO_OUT); imx_gpio_mode(FPGA_CLOCK | GPIO_GIUS | GPIO_DR | GPIO_OUT); return 1; }
int fpga_post_fn(int cookie) { debug("%s:%d: FPGA POST ", __func__, __LINE__); imx_gpio_mode(ACFG_FPGA_RW | GPIO_PF | GPIO_PUEN); imx_gpio_mode(ACFG_FPGA_CS | GPIO_PF | GPIO_PUEN); imx_gpio_mode(ACFG_FPGA_CLK | GPIO_PF | GPIO_PUEN); gpio_set_value(ACFG_FPGA_PRG, 1); gpio_set_value(ACFG_FPGA_RESET, 0); imx_gpio_mode(ACFG_FPGA_RESET | GPIO_OUT | GPIO_PUEN | GPIO_GPIO); return cookie; }
void base_board_init(void) { int i, ret; /* initialize gpios */ for (i = 0; i < ARRAY_SIZE(tx28_starterkit_pad_setup); i++) imx_gpio_mode(tx28_starterkit_pad_setup[i]); add_generic_device("mxs_mci", 0, NULL, IMX_SSP0_BASE, 0x2000, IORESOURCE_MEM, &mci_pdata); if (tx28_fb_pdata.fixed_screen < (void *)&_end) { printf("Warning: fixed_screen overlaps barebox\n"); tx28_fb_pdata.fixed_screen = NULL; } add_generic_device("stmfb", 0, NULL, IMX_FB_BASE, 0x2000, IORESOURCE_MEM, &tx28_fb_pdata); tx28_get_ethaddr(); add_generic_device("imx28-fec", 0, NULL, IMX_FEC0_BASE, 0x4000, IORESOURCE_MEM, &fec_info); ret = register_persistent_environment(); if (ret != 0) printf("Cannot create the 'env0' persistent environment " "storage (%d)\n", ret); }
static int cfa10036_devices_init(void) { int i, ret; /* initizalize muxing */ for (i = 0; i < ARRAY_SIZE(cfa10036_pads); i++) imx_gpio_mode(cfa10036_pads[i]); armlinux_set_bootparams((void *)IMX_MEMORY_BASE + 0x100); armlinux_set_architecture(MACH_TYPE_CFA10036); add_generic_device("mxs_mci", 0, NULL, IMX_SSP0_BASE, SZ_8K, IORESOURCE_MEM, &mci_pdata); add_generic_device("ocotp", 0, NULL, IMX_OCOTP_BASE, SZ_8K, IORESOURCE_MEM, NULL); i2c_register_board_info(0, cfa10036_i2c_devices, ARRAY_SIZE(cfa10036_i2c_devices)); add_generic_device_res("i2c-gpio", 0, NULL, 0, &i2c_gpio_pdata); cfa10036_detect_hw(); ret = envfs_register_partition("disk0", 1); if (ret != 0) printf("Cannot create the 'env0' persistent " "environment storage (%d)\n", ret); 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 mx28_evk_devices_init(void) { int i; /* initizalize muxing */ for (i = 0; i < ARRAY_SIZE(mx28evk_pads); i++) imx_gpio_mode(mx28evk_pads[i]); /* enable IOCLK0 to run at the PLL frequency */ imx_set_ioclk(0, 480000000); /* run the SSP unit clock at 100 MHz */ imx_set_sspclk(0, 100000000, 1); armlinux_set_bootparams((void *)IMX_MEMORY_BASE + 0x100); armlinux_set_architecture(MACH_TYPE_MX28EVK); add_generic_device("mxs_mci", 0, NULL, IMX_SSP0_BASE, 0x2000, IORESOURCE_MEM, &mci_pdata); add_generic_device("stmfb", 0, NULL, IMX_FB_BASE, 0x2000, IORESOURCE_MEM, &mx28_evk_fb_pdata); add_generic_device("ocotp", 0, NULL, IMX_OCOTP_BASE, 0x2000, IORESOURCE_MEM, NULL); mx28_evk_get_ethaddr(); /* must be after registering ocotp */ imx_enable_enetclk(); mx28_evk_fec_reset(); add_generic_device("fec_imx", 0, NULL, IMX_FEC0_BASE, 0x4000, IORESOURCE_MEM, &fec_info); return 0; }
static int cfa10036_devices_init(void) { int i; /* initizalize muxing */ for (i = 0; i < ARRAY_SIZE(cfa10036_pads); i++) imx_gpio_mode(cfa10036_pads[i]); armlinux_set_architecture(MACH_TYPE_CFA10036); add_generic_device("mxs_mci", 0, NULL, IMX_SSP0_BASE, SZ_8K, IORESOURCE_MEM, &mci_pdata); add_generic_device("ocotp", 0, NULL, IMX_OCOTP_BASE, SZ_8K, IORESOURCE_MEM, NULL); i2c_register_board_info(0, cfa10036_i2c_devices, ARRAY_SIZE(cfa10036_i2c_devices)); add_generic_device_res("i2c-gpio", 0, NULL, 0, &i2c_gpio_pdata); cfa10036_detect_hw(); default_environment_path_set("/dev/disk0.1"); return 0; }
static int falconwing_devices_init(void) { int i, rc; /* initizalize gpios */ for (i = 0; i < ARRAY_SIZE(pad_setup); i++) imx_gpio_mode(pad_setup[i]); imx_set_ioclk(480000000); /* enable IOCLK to run at the PLL frequency */ /* run the SSP unit clock at 100,000 kHz */ imx_set_sspclk(0, 100000000, 1); add_generic_device("mxs_mci", 0, NULL, IMX_SSP1_BASE, 0, IORESOURCE_MEM, &mci_pdata); add_generic_device("stmfb", 0, NULL, IMX_FB_BASE, 4096, IORESOURCE_MEM, &fb_mode); falconwing_init_usb(); armlinux_set_bootparams((void *)IMX_MEMORY_BASE + 0x100); armlinux_set_architecture(MACH_TYPE_CHUMBY); rc = register_persistant_environment(); if (rc != 0) printf("Cannot create the 'env0' persistant environment storage (%d)\n", rc); return 0; }
static int scb9328_devices_init(void) { imx_gpio_mode(PA23_PF_CS5); /* CS3 becomes CS3 by clearing reset default bit 1 in FMCR */ FMCR = 0x1; CS0U = 0x000F2000; CS0L = 0x11110d01; CS1U = 0x000F0a00; CS1L = 0x11110601; CS2U = 0x0; CS2L = 0x0; CS3U = 0x000FFFFF; CS3L = 0x00000303; CS4U = 0x000F0a00; CS4L = 0x11110301; CS5U = 0x00008400; CS5L = 0x00000D03; register_device(&cfi_dev); register_device(&sdram_dev); register_device(&dm9000_dev); devfs_add_partition("nor0", 0x00000, 0x20000, PARTITION_FIXED, "self0"); devfs_add_partition("nor0", 0x40000, 0x20000, PARTITION_FIXED, "env0"); protect_file("/dev/env0", 1); armlinux_add_dram(&sdram_dev); armlinux_set_bootparams((void *)0x08000100); armlinux_set_architecture(MACH_TYPE_SCB9328); return 0; }
static int mx23_evk_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_architecture(MACH_TYPE_MX23EVK); add_generic_device("mxs_mci", DEVICE_ID_DYNAMIC, NULL, IMX_SSP1_BASE, 0x8000, IORESOURCE_MEM, &mci_pdata); rc = register_persistant_environment(); if (rc != 0) printf("Cannot create the 'env0' persistant " "environment storage (%d)\n", rc); #ifdef CONFIG_USB_GADGET_DRIVER_ARC imx23_usb_phy_enable(); add_generic_usb_ehci_device(DEVICE_ID_DYNAMIC, IMX_USB_BASE, NULL); add_generic_device("fsl-udc", DEVICE_ID_DYNAMIC, NULL, IMX_USB_BASE, 0x200, IORESOURCE_MEM, &usb_pdata); #endif return 0; }
static void __init mx1ads_init(void) { #ifdef CONFIG_LEDS imx_gpio_mode(GPIO_PORTA | GPIO_OUT | 2); #endif platform_add_devices(devices, ARRAY_SIZE(devices)); }
static int stm_serial_init_port(struct console_device *cdev) { struct device_d *dev = cdev->dev; /* * If the board specific file registers this console we should force * the usage of the debug UART pins, to be able to let the user see * the output, even if the board file forgets to configure these pins. */ imx_gpio_mode(PWM1_DUART_TX); imx_gpio_mode(PWM0_DUART_RX); /* Disable UART */ writel(0, dev->map_base + UARTDBGCR); /* Mask interrupts */ writel(0, dev->map_base + UARTDBGIMSC); return 0; }
static int pcm970_init(void) { int i; unsigned int mode[] = { /* USB Host 2 */ PA0_PF_USBH2_CLK, PA1_PF_USBH2_DIR, PA2_PF_USBH2_DATA7, PA3_PF_USBH2_NXT, 4 | GPIO_PORTA | GPIO_GPIO | GPIO_OUT, PD19_AF_USBH2_DATA4, PD20_AF_USBH2_DATA3, PD21_AF_USBH2_DATA6, PD22_AF_USBH2_DATA0, PD23_AF_USBH2_DATA2, PD24_AF_USBH2_DATA1, PD26_AF_USBH2_DATA5, }; for (i = 0; i < ARRAY_SIZE(mode); i++) imx_gpio_mode(mode[i]); /* Configure SJA1000 on cs4 */ imx27_setup_weimcs(4, 0x0000DCF6, 0x444A0301, 0x44443302); if (IS_ENABLED(CONFIG_USB)) { /* Stop ULPI */ gpio_direction_output(4, 1); mdelay(1); imx_gpio_mode(PA4_PF_USBH2_STP); imx27_add_usbh2(&pcm970_usbh2_pdata); } #ifdef CONFIG_DISK_INTF_PLATFORM_IDE pcm970_ide_init(); #endif if (IS_ENABLED(CONFIG_MCI_IMX)) pcm970_mmc_init(); return 0; }
static int mx21ads_devices_init(void) { int i; unsigned int mode[] = { PA5_PF_LSCLK, PA6_PF_LD0, PA7_PF_LD1, PA8_PF_LD2, PA9_PF_LD3, PA10_PF_LD4, PA11_PF_LD5, PA12_PF_LD6, PA13_PF_LD7, PA14_PF_LD8, PA15_PF_LD9, PA16_PF_LD10, PA17_PF_LD11, PA18_PF_LD12, PA19_PF_LD13, PA20_PF_LD14, PA21_PF_LD15, PA22_PF_LD16, PA23_PF_LD17, PA24_PF_REV, PA25_PF_CLS, PA26_PF_PS, PA27_PF_SPL_SPR, PA28_PF_HSYNC, PA29_PF_VSYNC, PA30_PF_CONTRAST, PA31_PF_OE_ACD, PE12_PF_UART1_TXD, PE13_PF_UART1_RXD, PE14_PF_UART1_CTS, PE15_PF_UART1_RTS, }; /* initizalize gpios */ for (i = 0; i < ARRAY_SIZE(mode); i++) imx_gpio_mode(mode[i]); add_cfi_flash_device(DEVICE_ID_DYNAMIC, MX21_CS0_BASE_ADDR, 32 * 1024 * 1024, 0); imx21_add_nand(&nand_info); add_generic_device("cs8900", DEVICE_ID_DYNAMIC, NULL, MX21_CS1_BASE_ADDR, 0x1000, IORESOURCE_MEM, NULL); imx21_add_fb(&imx_fb_data); armlinux_set_bootparams((void *)0xc0000100); armlinux_set_architecture(MACH_TYPE_MX21ADS); return 0; }
static int tx28_devices_init(void) { int i; /* initizalize gpios */ for (i = 0; i < ARRAY_SIZE(tx28_pad_setup); i++) imx_gpio_mode(tx28_pad_setup[i]); armlinux_set_architecture(MACH_TYPE_TX28); base_board_init(); imx28_add_nand(); return 0; }
static noinline void karo_tx28_init(void) { int i; /* initialize muxing */ for (i = 0; i < ARRAY_SIZE(iomux_pads); i++) imx_gpio_mode(iomux_pads[i]); pr_debug("initializing power...\n"); mx28_power_init(0, 1, 0); pr_debug("initializing SDRAM...\n"); mx28_mem_init(mx28_dram_vals_default); pr_debug("DONE\n"); }
static noinline void freescale_mx28evk_init(void) { int i; /* initialize muxing */ for (i = 0; i < ARRAY_SIZE(iomux_pads); i++) imx_gpio_mode(iomux_pads[i]); pr_debug("initializing power...\n"); mx28_power_init(0, 1, 0); pr_debug("initializing SDRAM...\n"); mx28_mem_init(); pr_debug("DONE\n"); }
static void pcm970_mmc_init(void) { uint32_t i; unsigned int mode[] = { /* SD2 */ PB4_PF_SD2_D0, PB5_PF_SD2_D1, PB6_PF_SD2_D2, PB7_PF_SD2_D3, PB8_PF_SD2_CMD, PB9_PF_SD2_CLK, }; for (i = 0; i < ARRAY_SIZE(mode); i++) imx_gpio_mode(mode[i]); imx27_add_mmc1(NULL); }
static int mx27ads_devices_init(void) { int i; unsigned int mode[] = { PD0_AIN_FEC_TXD0, PD1_AIN_FEC_TXD1, PD2_AIN_FEC_TXD2, PD3_AIN_FEC_TXD3, PD4_AOUT_FEC_RX_ER, PD5_AOUT_FEC_RXD1, PD6_AOUT_FEC_RXD2, PD7_AOUT_FEC_RXD3, PD8_AF_FEC_MDIO, PD9_AIN_FEC_MDC | GPIO_PUEN, PD10_AOUT_FEC_CRS, PD11_AOUT_FEC_TX_CLK, PD12_AOUT_FEC_RXD0, PD13_AOUT_FEC_RX_DV, PD14_AOUT_FEC_RX_CLK, PD15_AOUT_FEC_COL, PD16_AIN_FEC_TX_ER, PF23_AIN_FEC_TX_EN, PE12_PF_UART1_TXD, PE13_PF_UART1_RXD, PE14_PF_UART1_CTS, PE15_PF_UART1_RTS, }; /* initizalize gpios */ for (i = 0; i < ARRAY_SIZE(mode); i++) imx_gpio_mode(mode[i]); add_cfi_flash_device(-1, 0xC0000000, 32 * 1024 * 1024, 0); imx27_add_fec(&fec_info); devfs_add_partition("nor0", 0x00000, 0x20000, DEVFS_PARTITION_FIXED, "self0"); devfs_add_partition("nor0", 0x20000, 0x20000, DEVFS_PARTITION_FIXED, "env0"); protect_file("/dev/env0", 1); armlinux_set_bootparams((void *)0xa0000100); armlinux_set_architecture(MACH_TYPE_MX27ADS); return 0; }
/* init and exit */ int cbob_uart_init(void) { int error, i; cbob_uart_tty_driver = alloc_tty_driver(CBOB_UART_MINORS); if(!cbob_uart_tty_driver) return -ENOMEM; cbob_uart_tty_driver->owner = THIS_MODULE; cbob_uart_tty_driver->driver_name = "cbob_uart"; cbob_uart_tty_driver->name = "uart"; cbob_uart_tty_driver->devfs_name = "cbc/uart%d"; cbob_uart_tty_driver->major = CBOB_UART_MAJOR; cbob_uart_tty_driver->type = TTY_DRIVER_TYPE_SERIAL, cbob_uart_tty_driver->subtype = SERIAL_TYPE_NORMAL; cbob_uart_tty_driver->flags = TTY_DRIVER_REAL_RAW | TTY_DRIVER_NO_DEVFS; cbob_uart_tty_driver->init_termios = tty_std_termios; cbob_uart_tty_driver->init_termios.c_iflag = IGNBRK | IGNPAR; cbob_uart_tty_driver->init_termios.c_oflag = 0; cbob_uart_tty_driver->init_termios.c_cflag = B115200 | CS8 | CREAD | CLOCAL; cbob_uart_tty_driver->init_termios.c_lflag = 0; cbob_uart_tty_driver->init_termios.c_cc[VMIN] = 1; cbob_uart_tty_driver->init_termios.c_cc[VTIME] = 0; tty_set_operations(cbob_uart_tty_driver, &cbob_uart_ops); error = tty_register_driver(cbob_uart_tty_driver); if(error) { printk(KERN_ERR "failed to register cbob uart tty driver"); put_tty_driver(cbob_uart_tty_driver); return error; } for(i = 0;i < CBOB_UART_MINORS; i++) { tty_register_device(cbob_uart_tty_driver, i, NULL); cbob_uarts[i] = NULL; } cbob_uart_workqueue = create_singlethread_workqueue("CBOB UART"); imx_gpio_mode(GPIO_PORTD | 27 | GPIO_IN | GPIO_GPIO | GPIO_IRQ_RISING); request_irq(IRQ_GPIOD(27), cbob_uart_handler, 0, "CBOB", 0); return error; }
/* * Initialize GPIO port B before download */ int fpga_pre_fn(int cookie) { /* Initialize GPIO pins */ gpio_set_value(ACFG_FPGA_PWR, 1); imx_gpio_mode(ACFG_FPGA_INIT | GPIO_IN | GPIO_PUEN | GPIO_GPIO); imx_gpio_mode(ACFG_FPGA_DONE | GPIO_IN | GPIO_PUEN | GPIO_GPIO); imx_gpio_mode(ACFG_FPGA_PRG | GPIO_OUT | GPIO_PUEN | GPIO_GPIO); imx_gpio_mode(ACFG_FPGA_CLK | GPIO_OUT | GPIO_PUEN | GPIO_GPIO); imx_gpio_mode(ACFG_FPGA_RW | GPIO_OUT | GPIO_PUEN | GPIO_GPIO); imx_gpio_mode(ACFG_FPGA_CS | GPIO_OUT | GPIO_PUEN | GPIO_GPIO); imx_gpio_mode(ACFG_FPGA_SUSPEND|GPIO_OUT|GPIO_PUEN|GPIO_GPIO); gpio_set_value(ACFG_FPGA_RESET, 1); imx_gpio_mode(ACFG_FPGA_RESET | GPIO_OUT | GPIO_PUEN | GPIO_GPIO); imx_gpio_mode(ACFG_FPGA_PWR | GPIO_OUT | GPIO_PUEN | GPIO_GPIO); gpio_set_value(ACFG_FPGA_PRG, 1); gpio_set_value(ACFG_FPGA_CLK, 1); gpio_set_value(ACFG_FPGA_RW, 1); gpio_set_value(ACFG_FPGA_CS, 1); gpio_set_value(ACFG_FPGA_SUSPEND, 0); gpio_set_value(ACFG_FPGA_PWR, 0); udelay(30000); /*wait until supply started*/ return cookie; }
static int imx23_olinuxino_devices_init(void) { int i; /* initizalize gpios */ for (i = 0; i < ARRAY_SIZE(pad_setup); i++) imx_gpio_mode(pad_setup[i]); armlinux_set_architecture(MACH_TYPE_IMX233_OLINUXINO); add_generic_device("mxs_mci", DEVICE_ID_DYNAMIC, NULL, IMX_SSP1_BASE, 0x8000, IORESOURCE_MEM, &mci_pdata); olinuxino_init_usb(); default_environment_path_set("/dev/disk0.1"); return 0; }
static int mx28_evk_devices_init(void) { int i; /* initizalize muxing */ for (i = 0; i < ARRAY_SIZE(mx28evk_pads); i++) imx_gpio_mode(mx28evk_pads[i]); armlinux_set_architecture(MACH_TYPE_MX28EVK); add_generic_device("mxs_mci", 0, NULL, IMX_SSP0_BASE, 0x2000, IORESOURCE_MEM, &mci_pdata); add_generic_device("stmfb", 0, NULL, IMX_FB_BASE, 0x2000, IORESOURCE_MEM, &mx28_evk_fb_pdata); mx28_evk_get_ethaddr(); /* must be after registering ocotp */ mx28_evk_fec_reset(); add_generic_device("imx28-fec", 0, NULL, IMX_FEC0_BASE, 0x4000, IORESOURCE_MEM, &fec_info); imx28_add_nand(); spi_register_board_info(mx28evk_spi_board_info, ARRAY_SIZE(mx28evk_spi_board_info)); add_generic_device("mxs_spi", 2, NULL, IMX_SSP2_BASE, 0x2000, IORESOURCE_MEM, NULL); #ifdef CONFIG_USB_GADGET_DRIVER_ARC imx28_usb_phy0_enable(); imx28_usb_phy1_enable(); add_generic_usb_ehci_device(DEVICE_ID_DYNAMIC, IMX_USB1_BASE, NULL); add_generic_device("fsl-udc", DEVICE_ID_DYNAMIC, NULL, IMX_USB0_BASE, 0x200, IORESOURCE_MEM, &usb_pdata); #endif return 0; }
static noinline void karo_tx28_init(void) { int i; /* initialize muxing */ for (i = 0; i < ARRAY_SIZE(iomux_pads); i++) imx_gpio_mode(iomux_pads[i]); pr_debug("initializing power...\n"); mx28_power_init(POWER_USE_BATTERY_INPUT | POWER_ENABLE_4P2, &mx28_power_default); pr_debug("initializing SDRAM...\n"); /* EMI_CLK of 480 / 2 * (18/21) = 205.7 MHz */ mxs_mem_init_clock(2, 21); mx28_mem_init(PINCTRL_EMI_DS_CTRL_DDR_MODE_DDR2, mx28_dram_vals_default); pr_debug("DONE\n"); }
void base_board_init(void) { int i, ret; /* initialize gpios */ for (i = 0; i < ARRAY_SIZE(tx28_starterkit_pad_setup); i++) imx_gpio_mode(tx28_starterkit_pad_setup[i]); /* enable IOCLK0 to run at the PLL frequency */ imx_set_ioclk(0, 480000000); /* run the SSP unit clock at 100 MHz */ imx_set_sspclk(0, 100000000, 1); add_generic_device("mxs_mci", 0, NULL, IMX_SSP0_BASE, 0, IORESOURCE_MEM, &mci_pdata); if (tx28_fb_pdata.fixed_screen < (void *)&_end) { printf("Warning: fixed_screen overlaps barebox\n"); tx28_fb_pdata.fixed_screen = NULL; } add_generic_device("stmfb", 0, NULL, IMX_FB_BASE, 4096, IORESOURCE_MEM, &tx28_fb_pdata); add_generic_device("ocotp", 0, NULL, IMX_OCOTP_BASE, 0, IORESOURCE_MEM, NULL); tx28_get_ethaddr(); imx_enable_enetclk(); add_generic_device("fec_imx", 0, NULL, IMX_FEC0_BASE, 0, IORESOURCE_MEM, &fec_info); ret = register_persistent_environment(); if (ret != 0) printf("Cannot create the 'env0' persistent environment " "storage (%d)\n", ret); }
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_architecture(MACH_TYPE_IMX233_OLINUXINO); 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; }