static void __init mioa701_machine_init(void) { PSLR = 0xff100000; /* SYSDEL=125ms, PWRDEL=125ms, PSLR_SL_ROD=1 */ PCFR = PCFR_DC_EN | PCFR_GPR_EN | PCFR_OPDE; RTTR = 32768 - 1; /* Reset crazy WinCE value */ UP2OCR = UP2OCR_HXOE; pxa2xx_mfp_config(ARRAY_AND_SIZE(mioa701_pin_config)); mio_gpio_request(ARRAY_AND_SIZE(global_gpios)); bootstrap_init(); set_pxa_fb_info(&mioa701_pxafb_info); pxa_set_mci_info(&mioa701_mci_info); pxa_set_keypad_info(&mioa701_keypad_info); wm97xx_bat_set_pdata(&mioa701_battery_data); pxa_set_udc_info(&mioa701_udc_info); pxa_set_ac97_info(&mioa701_ac97_info); pm_power_off = mioa701_poweroff; arm_pm_restart = mioa701_restart; platform_add_devices(devices, ARRAY_SIZE(devices)); gsm_init(); pxa_set_i2c_info(&i2c_pdata); pxa_set_camera_info(&mioa701_pxacamera_platform_data); i2c_register_board_info(0, ARRAY_AND_SIZE(mioa701_i2c_devices)); }
static void __init raumfeld_lcd_init(void) { int ret; set_pxa_fb_info(&raumfeld_sharp_lcd_info); /* Earlier devices had the backlight regulator controlled * via PWM, later versions use another controller for that */ if ((system_rev & 0xff) < 2) { mfp_cfg_t raumfeld_pwm_pin_config = GPIO17_PWM0_OUT; pxa3xx_mfp_config(&raumfeld_pwm_pin_config, 1); platform_device_register(&raumfeld_pwm_backlight_device); } else platform_device_register(&raumfeld_lt3593_device); ret = gpio_request(GPIO_TFT_VA_EN, "display VA enable"); if (ret < 0) pr_warning("Unable to request GPIO_TFT_VA_EN\n"); else gpio_direction_output(GPIO_TFT_VA_EN, 1); ret = gpio_request(GPIO_DISPLAY_ENABLE, "display enable"); if (ret < 0) pr_warning("Unable to request GPIO_DISPLAY_ENABLE\n"); else gpio_direction_output(GPIO_DISPLAY_ENABLE, 1); platform_device_register(&pxa3xx_device_gcu); }
static void __init balloon3_lcd_init(void) { int ret; if (!balloon3_has(BALLOON3_FEATURE_TOPPOLY)) return; pxa2xx_mfp_config(ARRAY_AND_SIZE(balloon3_lcd_pin_config)); ret = gpio_request(BALLOON3_GPIO_RUN_BACKLIGHT, "BKL-ON"); if (ret) { pr_err("Requesting BKL-ON GPIO failed!\n"); goto err; } ret = gpio_direction_output(BALLOON3_GPIO_RUN_BACKLIGHT, 1); if (ret) { pr_err("Setting BKL-ON GPIO direction failed!\n"); goto err2; } balloon3_lcd_screen.pxafb_backlight_power = balloon3_backlight_power; set_pxa_fb_info(&balloon3_lcd_screen); return; err2: gpio_free(BALLOON3_GPIO_RUN_BACKLIGHT); err: return; }
static void __init common_init(void) { pm_power_off = spitz_poweroff; arm_pm_restart = spitz_restart; PMCR = 0x00; /* setup sleep mode values */ PWER = 0x00000002; PFER = 0x00000000; PRER = 0x00000002; PGSR0 = 0x0158C000; PGSR1 = 0x00FF0080; PGSR2 = 0x0001C004; /* Stop 3.6MHz and drive HIGH to PCMCIA and CS */ PCFR |= PCFR_OPDE; corgi_ssp_set_machinfo(&spitz_ssp_machinfo); pxa_gpio_mode(SPITZ_GPIO_HSYNC | GPIO_IN); platform_add_devices(devices, ARRAY_SIZE(devices)); pxa_set_mci_info(&spitz_mci_platform_data); pxa_set_ohci_info(&spitz_ohci_platform_data); pxa_set_ficp_info(&spitz_ficp_platform_data); set_pxa_fb_parent(&spitzssp_device.dev); set_pxa_fb_info(&spitz_pxafb_info); }
void __init colibri_pxa3xx_init_lcd(int bl_pin) { lcd_bl_pin = bl_pin; gpio_request(bl_pin, "lcd backlight"); gpio_direction_output(bl_pin, 0); set_pxa_fb_info(&sharp_lq43_info); }
static void __init lubbock_init(void) { pxa_set_udc_info(&udc_info); set_pxa_fb_info(&sharp_lm8v31); pxa_set_mci_info(&lubbock_mci_platform_data); (void) platform_add_devices(devices, ARRAY_SIZE(devices)); }
static void __init common_init(void) { init_gpio_reset(SPITZ_GPIO_ON_RESET, 1); pm_power_off = spitz_poweroff; arm_pm_restart = spitz_restart; if (machine_is_spitz()) { sharpsl_nand_partitions[1].size = 5 * 1024 * 1024; } else if (machine_is_akita()) { sharpsl_nand_partitions[1].size = 58 * 1024 * 1024; } else if (machine_is_borzoi()) { sharpsl_nand_partitions[1].size = 32 * 1024 * 1024; } PMCR = 0x00; /* Stop 3.6MHz and drive HIGH to PCMCIA and CS */ PCFR |= PCFR_OPDE; pxa2xx_mfp_config(ARRAY_AND_SIZE(spitz_pin_config)); spitz_init_spi(); platform_add_devices(devices, ARRAY_SIZE(devices)); pxa_set_mci_info(&spitz_mci_platform_data); pxa_set_ohci_info(&spitz_ohci_platform_data); pxa_set_ficp_info(&spitz_ficp_platform_data); set_pxa_fb_info(&spitz_pxafb_info); pxa_set_i2c_info(NULL); }
static void __init magician_init(void) { platform_add_devices(devices, ARRAY_SIZE(devices)); pxa_set_ohci_info(&magician_ohci_info); pxa_set_ficp_info(&magician_ficp_info); set_pxa_fb_info(&toppoly_info); }
static void __init balloon3_init(void) { pr_info("Initialising Balloon3\n"); ARB_CNTRL = ARB_CORE_PARK | 0x234; pxa_set_i2c_info(NULL); if (balloon3_has(BALLOON3_FEATURE_AUDIO)) pxa_set_ac97_info(NULL); if (balloon3_has(BALLOON3_FEATURE_TOPPOLY)) { pxa2xx_mfp_config(ARRAY_AND_SIZE(balloon3_lcd_pin_config)); gpio_request(BALLOON3_GPIO_RUN_BACKLIGHT, "LCD Backlight Power"); gpio_direction_output(BALLOON3_GPIO_RUN_BACKLIGHT, 1); set_pxa_fb_info(&balloon3_pxafb_info); } if (balloon3_has(BALLOON3_FEATURE_MMC)) { pxa2xx_mfp_config(ARRAY_AND_SIZE(balloon3_mmc_pin_config)); pxa_set_mci_info(&balloon3_mci_platform_data); } pxa_set_ficp_info(&balloon3_ficp_platform_data); if (balloon3_has(BALLOON3_FEATURE_OHCI)) { pxa2xx_mfp_config(ARRAY_AND_SIZE(balloon3_ohci_pin_config)); pxa_set_ohci_info(&balloon3_ohci_platform_data); } pxa_set_udc_info(&balloon3_udc_info); pxa2xx_mfp_config(ARRAY_AND_SIZE(balloon3_pin_config)); platform_device_register(&balloon3led_device); }
static void __init ez_pxa270_map_io(void) { pxa_map_io(); iotable_init(ez_pxa270_io_desc, ARRAY_SIZE(ez_pxa270_io_desc)); // FF-UART pxa_gpio_mode(GPIO34_FFRXD_MD); pxa_gpio_mode(GPIO39_FFTXD_MD); // ST-UART pxa_gpio_mode(GPIO46_STRXD_MD); pxa_gpio_mode(GPIO47_STTXD_MD); // BT-UART pxa_gpio_mode(GPIO42_BTRXD_MD); pxa_gpio_mode(GPIO43_BTTXD_MD); // AC97 pxa_gpio_mode(GPIO89_SYSCLK_AC97_MD); // FB pxafb_set_gpio(); // pxa_gpio_mode(19|GPIO_OUT); // pxa_gpio_set_value(19, 1); set_pxa_fb_info(&falinux_ezlcd); }
static void __init lubbock_init(void) { int flashboot = (LUB_CONF_SWITCHES & 1); pxa2xx_mfp_config(ARRAY_AND_SIZE(lubbock_pin_config)); pxa_set_ffuart_info(NULL); pxa_set_btuart_info(NULL); pxa_set_stuart_info(NULL); clk_add_alias("SA1111_CLK", NULL, "GPIO11_CLK", NULL); pxa_set_udc_info(&udc_info); set_pxa_fb_info(&sharp_lm8v31); pxa_set_mci_info(&lubbock_mci_platform_data); pxa_set_ficp_info(&lubbock_ficp_platform_data); pxa_set_ac97_info(NULL); lubbock_flash_data[0].width = lubbock_flash_data[1].width = (BOOT_DEF & 1) ? 2 : 4; /* Compensate for the nROMBT switch which swaps the flash banks */ printk(KERN_NOTICE "Lubbock configured to boot from %s (bank %d)\n", flashboot?"Flash":"ROM", flashboot); lubbock_flash_data[flashboot^1].name = "application-flash"; lubbock_flash_data[flashboot].name = "boot-rom"; (void) platform_add_devices(devices, ARRAY_SIZE(devices)); pxa2xx_set_spi_info(1, &pxa_ssp_master_info); spi_register_board_info(spi_board_info, ARRAY_SIZE(spi_board_info)); }
static void __init poodle_init(void) { int ret = 0; pm_power_off = poodle_poweroff; arm_pm_restart = poodle_restart; PCFR |= PCFR_OPDE; pxa2xx_mfp_config(ARRAY_AND_SIZE(poodle_pin_config)); pxa_set_ffuart_info(NULL); pxa_set_btuart_info(NULL); pxa_set_stuart_info(NULL); platform_scoop_config = &poodle_pcmcia_config; ret = platform_add_devices(devices, ARRAY_SIZE(devices)); if (ret) pr_warning("poodle: Unable to register LoCoMo device\n"); set_pxa_fb_parent(&poodle_locomo_device.dev); set_pxa_fb_info(&poodle_fb_info); pxa_set_udc_info(&udc_info); pxa_set_mci_info(&poodle_mci_platform_data); pxa_set_ficp_info(&poodle_ficp_platform_data); pxa_set_i2c_info(NULL); i2c_register_board_info(0, ARRAY_AND_SIZE(poodle_i2c_devices)); poodle_init_spi(); }
static void __init mainstone_init(void) { int SW7 = 0; /* FIXME: get from SCR (Mst doc section 3.2.1.1) */ mst_flash_data[0].width = (BOOT_DEF & 1) ? 2 : 4; mst_flash_data[1].width = 4; /* Compensate for SW7 which swaps the flash banks */ mst_flash_data[SW7].name = "processor-flash"; mst_flash_data[SW7 ^ 1].name = "mainboard-flash"; printk(KERN_NOTICE "Mainstone configured to boot from %s\n", mst_flash_data[0].name); /* system bus arbiter setting * - Core_Park * - LCD_wt:DMA_wt:CORE_Wt = 2:3:4 */ ARB_CNTRL = ARB_CORE_PARK | 0x234; /* * On Mainstone, we route AC97_SYSCLK via GPIO45 to * the audio daughter card */ pxa_gpio_mode(GPIO45_SYSCLK_AC97_MD); GPSR(GPIO48_nPOE) = GPIO_bit(GPIO48_nPOE) | GPIO_bit(GPIO49_nPWE) | GPIO_bit(GPIO50_nPIOR) | GPIO_bit(GPIO51_nPIOW) | GPIO_bit(GPIO85_nPCE_1) | GPIO_bit(GPIO54_nPCE_2); pxa_gpio_mode(GPIO48_nPOE_MD); pxa_gpio_mode(GPIO49_nPWE_MD); pxa_gpio_mode(GPIO50_nPIOR_MD); pxa_gpio_mode(GPIO51_nPIOW_MD); pxa_gpio_mode(GPIO85_nPCE_1_MD); pxa_gpio_mode(GPIO54_nPCE_2_MD); pxa_gpio_mode(GPIO79_pSKTSEL_MD); pxa_gpio_mode(GPIO55_nPREG_MD); pxa_gpio_mode(GPIO56_nPWAIT_MD); pxa_gpio_mode(GPIO57_nIOIS16_MD); platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices)); /* reading Mainstone's "Virtual Configuration Register" might be handy to select LCD type here */ if (0) mainstone_pxafb_info.modes = &toshiba_ltm04c380k_mode; else mainstone_pxafb_info.modes = &toshiba_ltm035a776c_mode; set_pxa_fb_info(&mainstone_pxafb_info); pxa_set_mci_info(&mainstone_mci_platform_data); pxa_set_ficp_info(&mainstone_ficp_platform_data); pxa_set_ohci_info(&mainstone_ohci_platform_data); }
static void __init poodle_init(void) { int ret = 0; pm_power_off = poodle_poweroff; arm_pm_restart = poodle_restart; /* setup sleep mode values */ PWER = 0x00000002; PFER = 0x00000000; PRER = 0x00000002; PGSR0 = 0x00008000; PGSR1 = 0x003F0202; PGSR2 = 0x0001C000; PCFR |= PCFR_OPDE; /* cpu initialize */ /* Pgsr Register */ PGSR0 = 0x0146dd80; PGSR1 = 0x03bf0890; PGSR2 = 0x0001c000; /* Alternate Register */ GAFR0_L = 0x01001000; GAFR0_U = 0x591a8010; GAFR1_L = 0x900a8451; GAFR1_U = 0xaaa5aaaa; GAFR2_L = 0x8aaaaaaa; GAFR2_U = 0x00000002; /* Direction Register */ GPDR0 = 0xd3f0904c; GPDR1 = 0xfcffb7d3; GPDR2 = 0x0001ffff; /* Output Register */ GPCR0 = 0x00000000; GPCR1 = 0x00000000; GPCR2 = 0x00000000; GPSR0 = 0x00400000; GPSR1 = 0x00000000; GPSR2 = 0x00000000; set_pxa_fb_parent(&poodle_locomo_device.dev); set_pxa_fb_info(&poodle_fb_info); pxa_gpio_mode(POODLE_GPIO_USB_PULLUP | GPIO_OUT); pxa_gpio_mode(POODLE_GPIO_IR_ON | GPIO_OUT); pxa_set_udc_info(&udc_info); pxa_set_mci_info(&poodle_mci_platform_data); pxa_set_ficp_info(&poodle_ficp_platform_data); platform_scoop_config = &poodle_pcmcia_config; ret = platform_add_devices(devices, ARRAY_SIZE(devices)); if (ret) { printk(KERN_WARNING "poodle: Unable to register LoCoMo device\n"); } corgi_ssp_set_machinfo(&poodle_ssp_machinfo); }
static void __init zeus_init(void) { u16 dm9000_msc = 0xe279; system_rev = __raw_readw(ZEUS_CPLD_VERSION); pr_info("Zeus CPLD V%dI%d\n", (system_rev & 0xf0) >> 4, (system_rev & 0x0f)); /* Fix timings for dm9000s (CS1/CS2)*/ MSC0 = (MSC0 & 0xffff) | (dm9000_msc << 16); MSC1 = (MSC1 & 0xffff0000) | dm9000_msc; pm_power_off = zeus_power_off; pxa2xx_mfp_config(ARRAY_AND_SIZE(zeus_pin_config)); platform_add_devices(zeus_devices, ARRAY_SIZE(zeus_devices)); pxa_set_ohci_info(&zeus_ohci_platform_data); if (zeus_setup_fb_gpios()) pr_err("Failed to setup fb gpios\n"); else set_pxa_fb_info(&zeus_fb_info); pxa_set_mci_info(&zeus_mci_platform_data); pxa_set_udc_info(&zeus_udc_info); pxa_set_ac97_info(&zeus_ac97_info); pxa_set_i2c_info(NULL); i2c_register_board_info(0, ARRAY_AND_SIZE(zeus_i2c_devices)); }
static void __init a910_init(void) { pxa2xx_mfp_config(ARRAY_AND_SIZE(ezx_pin_config)); pxa2xx_mfp_config(ARRAY_AND_SIZE(gen2_pin_config)); pxa2xx_mfp_config(ARRAY_AND_SIZE(a910_pin_config)); pxa_set_ffuart_info(NULL); pxa_set_btuart_info(NULL); pxa_set_stuart_info(NULL); pxa_set_i2c_info(NULL); i2c_register_board_info(0, ARRAY_AND_SIZE(a910_i2c_board_info)); set_pxa_fb_info(&ezx_fb_info_2); pxa_set_keypad_info(&a910_keypad_platform_data); if (a910_camera_init() == 0) { pxa_set_camera_info(&a910_pxacamera_platform_data); platform_device_register(&a910_camera); } platform_add_devices(ARRAY_AND_SIZE(ezx_devices)); platform_add_devices(ARRAY_AND_SIZE(a910_devices)); }
static int __init e400_lcd_init( void ) { if(!machine_is_e400()) return -ENODEV; set_pxa_fb_info(&e400_pxafb_mach_info); return 0; }
static void __init h3900_init (void) { platform_add_devices (devices, ARRAY_SIZE (devices)); pxa_set_udc_info (&h3900_udc_mach_info); set_pxa_fb_info (&h3900_fb_info); #ifdef CONFIG_PM h3900_ll_pm_init(); #endif }
static void pxafb_config_lcd_panel(void) { if (lcd_id & 0x20) { #ifdef CONFIG_FB_PXA_LCD_QVGA set_pxa_fb_info(&sharp_ls037_qvga); #endif #ifdef CONFIG_FB_PXA_LCD_VGA set_pxa_fb_info(&sharp_ls037_vga); #endif } else { #ifdef CONFIG_FB_PXA_LCD_QVGA set_pxa_fb_info(&toshiba_ltm035a776c); #endif #ifdef CONFIG_FB_PXA_LCD_VGA set_pxa_fb_info(&toshiba_ltm04c380k); #endif } }
/* this gets called as part of our init. these steps must be done now so * that we can use set_pxa_fb_info */ static void __init am200_presetup_fb(void) { int fw; int fh; int padding_size; int totalsize; switch (panel_type) { case 6: am200_fb_info.modes = &am200_fb_mode_6inch; break; case 8: am200_fb_info.modes = &am200_fb_mode_8inch; break; case 97: am200_fb_info.modes = &am200_fb_mode_9inch7; break; default: dev_err(&am200_device->dev, "invalid panel_type selection," " setting to 6\n"); am200_fb_info.modes = &am200_fb_mode_6inch; break; } /* the frame buffer is divided as follows: command | CRC | padding 16kb waveform data | CRC | padding image data | CRC */ fw = am200_fb_info.modes->xres; fh = am200_fb_info.modes->yres; /* waveform must be 16k + 2 for checksum */ am200_board.wfm_size = roundup(16*1024 + 2, fw); padding_size = PAGE_SIZE + (4 * fw); /* total is 1 cmd , 1 wfm, padding and image */ totalsize = fw + am200_board.wfm_size + padding_size + (fw*fh); /* save this off because we're manipulating fw after this and * we'll need it when we're ready to setup the framebuffer */ am200_board.fw = fw; am200_board.fh = fh; /* the reason we do this adjustment is because we want to acquire * more framebuffer memory without imposing custom awareness on the * underlying pxafb driver */ am200_fb_info.modes->yres = DIV_ROUND_UP(totalsize, fw); /* we divide since we told the LCD controller we're 16bpp */ am200_fb_info.modes->xres /= 2; set_pxa_fb_info(&am200_fb_info); }
static void __init idp_init(void) { printk("idp_init()\n"); platform_device_register(&smc91x_device); //platform_device_register(&mst_audio_device); set_pxa_fb_info(&sharp_lm8v31); pxa_set_mci_info(&idp_mci_platform_data); }
static void __init e400_init(void) { pxa2xx_mfp_config(ARRAY_AND_SIZE(e400_pin_config)); /* Fixme - e400 may have a switched clock */ eseries_register_clks(); eseries_get_tmio_gpios(); set_pxa_fb_info(&e400_pxafb_mach_info); platform_add_devices(devices, ARRAY_SIZE(devices)); pxa_set_udc_info(&e7xx_udc_mach_info); }
static void __init palmz72_init(void) { pxa2xx_mfp_config(ARRAY_AND_SIZE(palmz72_pin_config)); set_pxa_fb_info(&palmz72_lcd_screen); pxa_set_mci_info(&palmz72_mci_platform_data); pxa_set_ac97_info(NULL); pxa_set_ficp_info(&palmz72_ficp_platform_data); pxa_set_keypad_info(&palmz72_keypad_platform_data); platform_add_devices(devices, ARRAY_SIZE(devices)); }
static void __init zylonite_init_lcd(void) { platform_device_register(&zylonite_backlight_device); if (lcd_id & 0x20) { set_pxa_fb_info(&zylonite_sharp_lcd_info); return; } /* legacy LCD panels, it would be handy here if LCD panel type can * be decided at run-time */ if (1) zylonite_toshiba_lcd_info.modes = &toshiba_ltm035a776c_mode; else zylonite_toshiba_lcd_info.modes = &toshiba_ltm04c380k_mode; set_pxa_fb_info(&zylonite_toshiba_lcd_info); }
static void __init zylonite_init_lcd(void) { /* backlight GPIO: output, default on */ gpio_direction_output(gpio_backlight, 1); if (lcd_id & 0x20) { set_pxa_fb_info(&zylonite_sharp_lcd_info); return; } /* legacy LCD panels, it would be handy here if LCD panel type can * be decided at run-time */ if (1) zylonite_toshiba_lcd_info.modes = &toshiba_ltm035a776c_mode; else zylonite_toshiba_lcd_info.modes = &toshiba_ltm04c380k_mode; set_pxa_fb_info(&zylonite_toshiba_lcd_info); }
static void __init trizeps4_init(void) { platform_add_devices(trizeps4_devices, ARRAY_SIZE(trizeps4_devices)); /* set_pxa_fb_info(&sharp_lcd); */ set_pxa_fb_info(&toshiba_lcd); pxa_set_mci_info(&trizeps4_mci_platform_data); pxa_set_ficp_info(&trizeps4_ficp_platform_data); pxa_set_ohci_info(&trizeps4_ohci_platform_data); }
static void __init e400_init(void) { pxa2xx_mfp_config(ARRAY_AND_SIZE(e400_pin_config)); pxa_set_ffuart_info(NULL); pxa_set_btuart_info(NULL); pxa_set_stuart_info(NULL); eseries_register_clks(); eseries_get_tmio_gpios(); set_pxa_fb_info(&e400_pxafb_mach_info); platform_add_devices(ARRAY_AND_SIZE(e400_devices)); pxa_set_udc_info(&e7xx_udc_mach_info); }
static void __init mainstone_init(void) { /* * On Mainstone, we route AC97_SYSCLK via GPIO45 to * the audio daughter card */ pxa_gpio_mode(GPIO45_SYSCLK_AC97_MD); platform_device_register(&smc91x_device); platform_device_register(&mst_audio_device); /* reading Mainstone's "Virtual Configuration Register" might be handy to select LCD type here */ if (0) set_pxa_fb_info(&toshiba_ltm04c380k); else set_pxa_fb_info(&toshiba_ltm035a776c); pxa_set_mci_info(&mainstone_mci_platform_data); pxa_set_udc_info(&mainstone_udc_info); pxa_set_ficp_info(&mainstone_ficp_platform_data); }
static void __init a730_init (void) { a730_hw_init(); platform_add_devices(a730_devices, ARRAY_SIZE(a730_devices)); set_pxa_fb_info(&asus730_fb_info); // pxa_set_ohci_info(&a730_ohci_platform_data); #ifdef CONFIG_PM apm_get_power_status = &a730_apm_get_power_status; a730_ll_pm_init(); #endif }
static void __init palmte2_init(void) { pxa2xx_mfp_config(ARRAY_AND_SIZE(palmte2_pin_config)); set_pxa_fb_info(&palmte2_lcd_screen); pxa_set_mci_info(&palmte2_mci_platform_data); palmte2_udc_init(); pxa_set_ac97_info(NULL); pxa_set_ficp_info(&palmte2_ficp_platform_data); wm97xx_bat_set_pdata(&wm97xx_batt_pdata); platform_add_devices(devices, ARRAY_SIZE(devices)); }