2 * arch/sh/boards/superh/microdev/setup.c
4 * Copyright (C) 2003 Sean McGoogan (Sean.McGoogan@superh.com)
5 * Copyright (C) 2003, 2004 SuperH, Inc.
6 * Copyright (C) 2004, 2005 Paul Mundt
8 * SuperH SH4-202 MicroDev board support.
10 * May be copied or modified under the terms of the GNU General Public
11 * License. See linux/COPYING for more information.
13 #include <linux/init.h>
14 #include <linux/platform_device.h>
15 #include <linux/ioport.h>
16 #include <video/s1d13xxxfb.h>
17 #include <mach/microdev.h>
19 #include <asm/machvec.h>
20 #include <asm/sizes.h>
22 static struct resource smc91x_resources
[] = {
25 .end
= 0x300 + SZ_4K
- 1,
26 .flags
= IORESOURCE_MEM
,
29 .start
= MICRODEV_LINUX_IRQ_ETHERNET
,
30 .end
= MICRODEV_LINUX_IRQ_ETHERNET
,
31 .flags
= IORESOURCE_IRQ
,
35 static struct platform_device smc91x_device
= {
38 .num_resources
= ARRAY_SIZE(smc91x_resources
),
39 .resource
= smc91x_resources
,
42 static struct s1d13xxxfb_regval s1d13806_initregs
[] = {
43 { S1DREG_MISC
, 0x00 },
44 { S1DREG_COM_DISP_MODE
, 0x00 },
45 { S1DREG_GPIO_CNF0
, 0x00 },
46 { S1DREG_GPIO_CNF1
, 0x00 },
47 { S1DREG_GPIO_CTL0
, 0x00 },
48 { S1DREG_GPIO_CTL1
, 0x00 },
49 { S1DREG_CLK_CNF
, 0x02 },
50 { S1DREG_LCD_CLK_CNF
, 0x01 },
51 { S1DREG_CRT_CLK_CNF
, 0x03 },
52 { S1DREG_MPLUG_CLK_CNF
, 0x03 },
53 { S1DREG_CPU2MEM_WST_SEL
, 0x02 },
54 { S1DREG_SDRAM_REF_RATE
, 0x03 },
55 { S1DREG_SDRAM_TC0
, 0x00 },
56 { S1DREG_SDRAM_TC1
, 0x01 },
57 { S1DREG_MEM_CNF
, 0x80 },
58 { S1DREG_PANEL_TYPE
, 0x25 },
59 { S1DREG_MOD_RATE
, 0x00 },
60 { S1DREG_LCD_DISP_HWIDTH
, 0x63 },
61 { S1DREG_LCD_NDISP_HPER
, 0x1e },
62 { S1DREG_TFT_FPLINE_START
, 0x06 },
63 { S1DREG_TFT_FPLINE_PWIDTH
, 0x03 },
64 { S1DREG_LCD_DISP_VHEIGHT0
, 0x57 },
65 { S1DREG_LCD_DISP_VHEIGHT1
, 0x02 },
66 { S1DREG_LCD_NDISP_VPER
, 0x00 },
67 { S1DREG_TFT_FPFRAME_START
, 0x0a },
68 { S1DREG_TFT_FPFRAME_PWIDTH
, 0x81 },
69 { S1DREG_LCD_DISP_MODE
, 0x03 },
70 { S1DREG_LCD_MISC
, 0x00 },
71 { S1DREG_LCD_DISP_START0
, 0x00 },
72 { S1DREG_LCD_DISP_START1
, 0x00 },
73 { S1DREG_LCD_DISP_START2
, 0x00 },
74 { S1DREG_LCD_MEM_OFF0
, 0x90 },
75 { S1DREG_LCD_MEM_OFF1
, 0x01 },
76 { S1DREG_LCD_PIX_PAN
, 0x00 },
77 { S1DREG_LCD_DISP_FIFO_HTC
, 0x00 },
78 { S1DREG_LCD_DISP_FIFO_LTC
, 0x00 },
79 { S1DREG_CRT_DISP_HWIDTH
, 0x63 },
80 { S1DREG_CRT_NDISP_HPER
, 0x1f },
81 { S1DREG_CRT_HRTC_START
, 0x04 },
82 { S1DREG_CRT_HRTC_PWIDTH
, 0x8f },
83 { S1DREG_CRT_DISP_VHEIGHT0
, 0x57 },
84 { S1DREG_CRT_DISP_VHEIGHT1
, 0x02 },
85 { S1DREG_CRT_NDISP_VPER
, 0x1b },
86 { S1DREG_CRT_VRTC_START
, 0x00 },
87 { S1DREG_CRT_VRTC_PWIDTH
, 0x83 },
88 { S1DREG_TV_OUT_CTL
, 0x10 },
89 { S1DREG_CRT_DISP_MODE
, 0x05 },
90 { S1DREG_CRT_DISP_START0
, 0x00 },
91 { S1DREG_CRT_DISP_START1
, 0x00 },
92 { S1DREG_CRT_DISP_START2
, 0x00 },
93 { S1DREG_CRT_MEM_OFF0
, 0x20 },
94 { S1DREG_CRT_MEM_OFF1
, 0x03 },
95 { S1DREG_CRT_PIX_PAN
, 0x00 },
96 { S1DREG_CRT_DISP_FIFO_HTC
, 0x00 },
97 { S1DREG_CRT_DISP_FIFO_LTC
, 0x00 },
98 { S1DREG_LCD_CUR_CTL
, 0x00 },
99 { S1DREG_LCD_CUR_START
, 0x01 },
100 { S1DREG_LCD_CUR_XPOS0
, 0x00 },
101 { S1DREG_LCD_CUR_XPOS1
, 0x00 },
102 { S1DREG_LCD_CUR_YPOS0
, 0x00 },
103 { S1DREG_LCD_CUR_YPOS1
, 0x00 },
104 { S1DREG_LCD_CUR_BCTL0
, 0x00 },
105 { S1DREG_LCD_CUR_GCTL0
, 0x00 },
106 { S1DREG_LCD_CUR_RCTL0
, 0x00 },
107 { S1DREG_LCD_CUR_BCTL1
, 0x1f },
108 { S1DREG_LCD_CUR_GCTL1
, 0x3f },
109 { S1DREG_LCD_CUR_RCTL1
, 0x1f },
110 { S1DREG_LCD_CUR_FIFO_HTC
, 0x00 },
111 { S1DREG_CRT_CUR_CTL
, 0x00 },
112 { S1DREG_CRT_CUR_START
, 0x01 },
113 { S1DREG_CRT_CUR_XPOS0
, 0x00 },
114 { S1DREG_CRT_CUR_XPOS1
, 0x00 },
115 { S1DREG_CRT_CUR_YPOS0
, 0x00 },
116 { S1DREG_CRT_CUR_YPOS1
, 0x00 },
117 { S1DREG_CRT_CUR_BCTL0
, 0x00 },
118 { S1DREG_CRT_CUR_GCTL0
, 0x00 },
119 { S1DREG_CRT_CUR_RCTL0
, 0x00 },
120 { S1DREG_CRT_CUR_BCTL1
, 0x1f },
121 { S1DREG_CRT_CUR_GCTL1
, 0x3f },
122 { S1DREG_CRT_CUR_RCTL1
, 0x1f },
123 { S1DREG_CRT_CUR_FIFO_HTC
, 0x00 },
124 { S1DREG_BBLT_CTL0
, 0x00 },
125 { S1DREG_BBLT_CTL1
, 0x00 },
126 { S1DREG_BBLT_CC_EXP
, 0x00 },
127 { S1DREG_BBLT_OP
, 0x00 },
128 { S1DREG_BBLT_SRC_START0
, 0x00 },
129 { S1DREG_BBLT_SRC_START1
, 0x00 },
130 { S1DREG_BBLT_SRC_START2
, 0x00 },
131 { S1DREG_BBLT_DST_START0
, 0x00 },
132 { S1DREG_BBLT_DST_START1
, 0x00 },
133 { S1DREG_BBLT_DST_START2
, 0x00 },
134 { S1DREG_BBLT_MEM_OFF0
, 0x00 },
135 { S1DREG_BBLT_MEM_OFF1
, 0x00 },
136 { S1DREG_BBLT_WIDTH0
, 0x00 },
137 { S1DREG_BBLT_WIDTH1
, 0x00 },
138 { S1DREG_BBLT_HEIGHT0
, 0x00 },
139 { S1DREG_BBLT_HEIGHT1
, 0x00 },
140 { S1DREG_BBLT_BGC0
, 0x00 },
141 { S1DREG_BBLT_BGC1
, 0x00 },
142 { S1DREG_BBLT_FGC0
, 0x00 },
143 { S1DREG_BBLT_FGC1
, 0x00 },
144 { S1DREG_LKUP_MODE
, 0x00 },
145 { S1DREG_LKUP_ADDR
, 0x00 },
146 { S1DREG_PS_CNF
, 0x10 },
147 { S1DREG_PS_STATUS
, 0x00 },
148 { S1DREG_CPU2MEM_WDOGT
, 0x00 },
149 { S1DREG_COM_DISP_MODE
, 0x02 },
152 static struct s1d13xxxfb_pdata s1d13806_platform_data
= {
153 .initregs
= s1d13806_initregs
,
154 .initregssize
= ARRAY_SIZE(s1d13806_initregs
),
157 static struct resource s1d13806_resources
[] = {
160 .end
= 0x07200000 + SZ_2M
- 1,
161 .flags
= IORESOURCE_MEM
,
165 .end
= 0x07000000 + SZ_2M
- 1,
166 .flags
= IORESOURCE_MEM
,
170 static struct platform_device s1d13806_device
= {
171 .name
= "s1d13806fb",
173 .num_resources
= ARRAY_SIZE(s1d13806_resources
),
174 .resource
= s1d13806_resources
,
177 .platform_data
= &s1d13806_platform_data
,
181 static struct platform_device
*microdev_devices
[] __initdata
= {
186 static int __init
microdev_devices_setup(void)
188 return platform_add_devices(microdev_devices
, ARRAY_SIZE(microdev_devices
));
190 device_initcall(microdev_devices_setup
);
195 static struct sh_machine_vector mv_sh4202_microdev __initmv
= {
196 .mv_name
= "SH4-202 MicroDev",
199 .mv_inb
= microdev_inb
,
200 .mv_inw
= microdev_inw
,
201 .mv_inl
= microdev_inl
,
202 .mv_outb
= microdev_outb
,
203 .mv_outw
= microdev_outw
,
204 .mv_outl
= microdev_outl
,
206 .mv_inb_p
= microdev_inb_p
,
207 .mv_inw_p
= microdev_inw_p
,
208 .mv_inl_p
= microdev_inl_p
,
209 .mv_outb_p
= microdev_outb_p
,
210 .mv_outw_p
= microdev_outw_p
,
211 .mv_outl_p
= microdev_outl_p
,
213 .mv_insb
= microdev_insb
,
214 .mv_insw
= microdev_insw
,
215 .mv_insl
= microdev_insl
,
216 .mv_outsb
= microdev_outsb
,
217 .mv_outsw
= microdev_outsw
,
218 .mv_outsl
= microdev_outsl
,
220 .mv_init_irq
= init_microdev_irq
,