13 #include <linux/kernel.h>
25 #include <video/w100fb.h>
27 #include <asm/setup.h>
47 mi->
bank[0].start = 0xa0000000;
48 if (machine_is_e800())
49 mi->
bank[0].size = (128*1024*1024);
51 mi->
bank[0].size = (64*1024*1024);
57 .gpio_pullup_inverted = 1
129 static void clk_32k_dummy(
struct clk *
clk)
133 static const struct clkops clk_32k_dummy_ops = {
134 .enable = clk_32k_dummy,
135 .disable = clk_32k_dummy,
138 static struct clk tmio_dummy_clk = {
139 .ops = &clk_32k_dummy_ops,
143 static struct clk_lookup eseries_clkregs[] = {
147 static void __init eseries_register_clks(
void)
152 #ifdef CONFIG_MACH_E330
166 .platform_data = &e330_tc6387xb_info,
175 &e330_tc6387xb_device,
179 static void __init e330_init(
void)
184 eseries_register_clks();
191 .atag_offset = 0x100,
197 .init_machine = e330_init,
203 #ifdef CONFIG_MACH_E350
217 .platform_data = &e350_t7l66xb_info,
226 &e350_t7l66xb_device,
230 static void __init e350_init(
void)
235 eseries_register_clks();
242 .atag_offset = 0x100,
248 .init_machine = e350_init,
254 #ifdef CONFIG_MACH_E400
272 .
modes = &e400_pxafb_mode_info,
276 .pxafb_backlight_power =
NULL,
281 static unsigned long e400_pin_config[] __initdata = {
305 .
name =
"Internal NAND flash",
310 static uint8_t scan_ff_pattern[] = { 0xff, 0xff };
316 .pattern = scan_ff_pattern
321 .partition = &partition_a,
322 .badblock_pattern = &e400_t7l66xb_nand_bbt,
331 .nand_data = &e400_t7l66xb_nand_config,
338 .platform_data = &e400_t7l66xb_info,
347 &e400_t7l66xb_device,
351 static void __init e400_init(
void)
358 eseries_register_clks();
366 .atag_offset = 0x100,
372 .init_machine = e400_init,
378 #ifdef CONFIG_MACH_E740
383 .lcdd_cntl1 = 0x0f000000,
384 .lcdd_cntl2 = 0x0003ffff,
385 .genlcd_cntl1 = 0x00ffff03,
386 .genlcd_cntl2 = 0x003c0f03,
387 .genlcd_cntl3 = 0x000143aa,
390 static struct w100_mode e740_lcd_mode = {
397 .crtc_ss = 0x80140013,
398 .crtc_ls = 0x81150110,
399 .crtc_gs = 0x80050005,
400 .crtc_vpos_gs = 0x000a0009,
401 .crtc_rev = 0x0040010a,
402 .crtc_dclk = 0xa906000a,
403 .crtc_gclk = 0x80050108,
404 .crtc_goe = 0x80050108,
407 .pixclk_divider_rotated = 4,
411 .crtc_ps1_active = 0x41060010,
416 .gpio_dir1 = 0xffffdeff,
417 .gpio_oe1 = 0x03c00643,
418 .init_data2 = 0x003f003f,
419 .gpio_dir2 = 0xffffffff,
420 .gpio_oe2 = 0x000000ff,
426 .regs = &e740_lcd_regs,
427 .gpio = &e740_w100_gpio_info,
428 .xtal_freq = 14318000,
432 static struct resource e740_fb_resources[] = {
444 .platform_data = &e740_fb_info,
446 .num_resources =
ARRAY_SIZE(e740_fb_resources),
447 .resource = e740_fb_resources,
452 static unsigned long e740_pin_config[] __initdata = {
525 .platform_data = &e740_t7l66xb_info,
532 .
name =
"e740-audio",
540 &e740_t7l66xb_device,
545 static void __init e740_init(
void)
551 eseries_register_clks();
562 .atag_offset = 0x100,
568 .init_machine = e740_init,
574 #ifdef CONFIG_MACH_E750
579 .lcdd_cntl1 = 0x00000000,
580 .lcdd_cntl2 = 0x0003ffff,
581 .genlcd_cntl1 = 0x00fff003,
582 .genlcd_cntl2 = 0x003c0f03,
583 .genlcd_cntl3 = 0x000143aa,
586 static struct w100_mode e750_lcd_mode = {
593 .crtc_ss = 0x80150014,
594 .crtc_ls = 0x8014000d,
595 .crtc_gs = 0xc1000005,
596 .crtc_vpos_gs = 0x00020147,
597 .crtc_rev = 0x0040010a,
598 .crtc_dclk = 0xa1700030,
599 .crtc_gclk = 0x80cc0015,
600 .crtc_goe = 0x80cc0015,
601 .crtc_ps1_active = 0x61060017,
604 .pixclk_divider_rotated = 4,
612 .gpio_dir1 = 0xd5ffdeff,
613 .gpio_oe1 = 0x000020bf,
614 .init_data2 = 0x010f010f,
615 .gpio_dir2 = 0xffffffff,
616 .gpio_oe2 = 0x000001cf,
622 .regs = &e750_lcd_regs,
623 .gpio = &e750_w100_gpio_info,
624 .xtal_freq = 14318000,
628 static struct resource e750_fb_resources[] = {
640 .platform_data = &e750_fb_info,
642 .num_resources =
ARRAY_SIZE(e750_fb_resources),
643 .resource = e750_fb_resources,
648 static unsigned long e750_pin_config[] __initdata = {
712 .scr_pll2cr = 0x0cc1,
725 .platform_data = &e750_tc6393xb_info,
732 .
name =
"e750-audio",
740 &e750_tc6393xb_device,
745 static void __init e750_init(
void)
761 .atag_offset = 0x100,
767 .init_machine = e750_init,
773 #ifdef CONFIG_MACH_E800
776 static unsigned long e800_pin_config[] __initdata = {
786 .lcdd_cntl1 = 0x02a00000,
787 .lcdd_cntl2 = 0x0003ffff,
788 .genlcd_cntl1 = 0x000ff2a3,
789 .genlcd_cntl2 = 0x000002a3,
790 .genlcd_cntl3 = 0x000102aa,
793 static struct w100_mode e800_lcd_mode[2] = {
801 .crtc_ss = 0x80350034,
802 .crtc_ls = 0x802b0026,
803 .crtc_gs = 0x80160016,
804 .crtc_vpos_gs = 0x00020003,
805 .crtc_rev = 0x0040001d,
806 .crtc_dclk = 0xe0000000,
807 .crtc_gclk = 0x82a50049,
808 .crtc_goe = 0x80ee001c,
809 .crtc_ps1_active = 0x00000000,
812 .pixclk_divider_rotated = 6,
824 .crtc_ss = 0xd010000f,
825 .crtc_ls = 0x80070003,
826 .crtc_gs = 0x80000000,
827 .crtc_vpos_gs = 0x01460147,
828 .crtc_rev = 0x00400003,
829 .crtc_dclk = 0xa1700030,
830 .crtc_gclk = 0x814b0008,
831 .crtc_goe = 0x80cc0015,
832 .crtc_ps1_active = 0x00000000,
835 .pixclk_divider_rotated = 6,
845 .gpio_dir1 = 0x3e40df7f,
846 .gpio_oe1 = 0x003c3000,
847 .init_data2 = 0x00000000,
848 .gpio_dir2 = 0x00000000,
849 .gpio_oe2 = 0x00000000,
854 .sdram_mode_reg = 0x00600021,
855 .ext_timing_cntl = 0x10001545,
856 .io_cntl = 0x7ddd7333,
860 static void e800_tg_change(
struct w100fb_par *par)
865 if (par->
mode->xres == 480)
879 .regs = &e800_lcd_regs,
880 .gpio = &e800_w100_gpio_info,
881 .mem = &e800_w100_mem_info,
883 .xtal_freq = 16000000,
886 static struct resource e800_fb_resources[] = {
898 .platform_data = &e800_fb_info,
900 .num_resources =
ARRAY_SIZE(e800_fb_resources),
901 .resource = e800_fb_resources,
909 .gpio_pullup_inverted = 1
916 .platform_data = &e800_udc_info,
925 .scr_pll2cr = 0x0cc1,
938 .platform_data = &e800_tc6393xb_info,
945 .
name =
"e800-audio",
953 &e800_tc6393xb_device,
958 static void __init e800_init(
void)
973 .atag_offset = 0x100,
979 .init_machine = e800_init,