Path: blob/master/arch/sh/boards/mach-microdev/setup.c
15125 views
/*1* arch/sh/boards/superh/microdev/setup.c2*3* Copyright (C) 2003 Sean McGoogan ([email protected])4* Copyright (C) 2003, 2004 SuperH, Inc.5* Copyright (C) 2004, 2005 Paul Mundt6*7* SuperH SH4-202 MicroDev board support.8*9* May be copied or modified under the terms of the GNU General Public10* License. See linux/COPYING for more information.11*/12#include <linux/init.h>13#include <linux/platform_device.h>14#include <linux/ioport.h>15#include <video/s1d13xxxfb.h>16#include <mach/microdev.h>17#include <asm/io.h>18#include <asm/machvec.h>19#include <asm/sizes.h>2021static struct resource smc91x_resources[] = {22[0] = {23.start = 0x300,24.end = 0x300 + SZ_4K - 1,25.flags = IORESOURCE_MEM,26},27[1] = {28.start = MICRODEV_LINUX_IRQ_ETHERNET,29.end = MICRODEV_LINUX_IRQ_ETHERNET,30.flags = IORESOURCE_IRQ,31},32};3334static struct platform_device smc91x_device = {35.name = "smc91x",36.id = -1,37.num_resources = ARRAY_SIZE(smc91x_resources),38.resource = smc91x_resources,39};4041static struct s1d13xxxfb_regval s1d13806_initregs[] = {42{ S1DREG_MISC, 0x00 },43{ S1DREG_COM_DISP_MODE, 0x00 },44{ S1DREG_GPIO_CNF0, 0x00 },45{ S1DREG_GPIO_CNF1, 0x00 },46{ S1DREG_GPIO_CTL0, 0x00 },47{ S1DREG_GPIO_CTL1, 0x00 },48{ S1DREG_CLK_CNF, 0x02 },49{ S1DREG_LCD_CLK_CNF, 0x01 },50{ S1DREG_CRT_CLK_CNF, 0x03 },51{ S1DREG_MPLUG_CLK_CNF, 0x03 },52{ S1DREG_CPU2MEM_WST_SEL, 0x02 },53{ S1DREG_SDRAM_REF_RATE, 0x03 },54{ S1DREG_SDRAM_TC0, 0x00 },55{ S1DREG_SDRAM_TC1, 0x01 },56{ S1DREG_MEM_CNF, 0x80 },57{ S1DREG_PANEL_TYPE, 0x25 },58{ S1DREG_MOD_RATE, 0x00 },59{ S1DREG_LCD_DISP_HWIDTH, 0x63 },60{ S1DREG_LCD_NDISP_HPER, 0x1e },61{ S1DREG_TFT_FPLINE_START, 0x06 },62{ S1DREG_TFT_FPLINE_PWIDTH, 0x03 },63{ S1DREG_LCD_DISP_VHEIGHT0, 0x57 },64{ S1DREG_LCD_DISP_VHEIGHT1, 0x02 },65{ S1DREG_LCD_NDISP_VPER, 0x00 },66{ S1DREG_TFT_FPFRAME_START, 0x0a },67{ S1DREG_TFT_FPFRAME_PWIDTH, 0x81 },68{ S1DREG_LCD_DISP_MODE, 0x03 },69{ S1DREG_LCD_MISC, 0x00 },70{ S1DREG_LCD_DISP_START0, 0x00 },71{ S1DREG_LCD_DISP_START1, 0x00 },72{ S1DREG_LCD_DISP_START2, 0x00 },73{ S1DREG_LCD_MEM_OFF0, 0x90 },74{ S1DREG_LCD_MEM_OFF1, 0x01 },75{ S1DREG_LCD_PIX_PAN, 0x00 },76{ S1DREG_LCD_DISP_FIFO_HTC, 0x00 },77{ S1DREG_LCD_DISP_FIFO_LTC, 0x00 },78{ S1DREG_CRT_DISP_HWIDTH, 0x63 },79{ S1DREG_CRT_NDISP_HPER, 0x1f },80{ S1DREG_CRT_HRTC_START, 0x04 },81{ S1DREG_CRT_HRTC_PWIDTH, 0x8f },82{ S1DREG_CRT_DISP_VHEIGHT0, 0x57 },83{ S1DREG_CRT_DISP_VHEIGHT1, 0x02 },84{ S1DREG_CRT_NDISP_VPER, 0x1b },85{ S1DREG_CRT_VRTC_START, 0x00 },86{ S1DREG_CRT_VRTC_PWIDTH, 0x83 },87{ S1DREG_TV_OUT_CTL, 0x10 },88{ S1DREG_CRT_DISP_MODE, 0x05 },89{ S1DREG_CRT_DISP_START0, 0x00 },90{ S1DREG_CRT_DISP_START1, 0x00 },91{ S1DREG_CRT_DISP_START2, 0x00 },92{ S1DREG_CRT_MEM_OFF0, 0x20 },93{ S1DREG_CRT_MEM_OFF1, 0x03 },94{ S1DREG_CRT_PIX_PAN, 0x00 },95{ S1DREG_CRT_DISP_FIFO_HTC, 0x00 },96{ S1DREG_CRT_DISP_FIFO_LTC, 0x00 },97{ S1DREG_LCD_CUR_CTL, 0x00 },98{ S1DREG_LCD_CUR_START, 0x01 },99{ S1DREG_LCD_CUR_XPOS0, 0x00 },100{ S1DREG_LCD_CUR_XPOS1, 0x00 },101{ S1DREG_LCD_CUR_YPOS0, 0x00 },102{ S1DREG_LCD_CUR_YPOS1, 0x00 },103{ S1DREG_LCD_CUR_BCTL0, 0x00 },104{ S1DREG_LCD_CUR_GCTL0, 0x00 },105{ S1DREG_LCD_CUR_RCTL0, 0x00 },106{ S1DREG_LCD_CUR_BCTL1, 0x1f },107{ S1DREG_LCD_CUR_GCTL1, 0x3f },108{ S1DREG_LCD_CUR_RCTL1, 0x1f },109{ S1DREG_LCD_CUR_FIFO_HTC, 0x00 },110{ S1DREG_CRT_CUR_CTL, 0x00 },111{ S1DREG_CRT_CUR_START, 0x01 },112{ S1DREG_CRT_CUR_XPOS0, 0x00 },113{ S1DREG_CRT_CUR_XPOS1, 0x00 },114{ S1DREG_CRT_CUR_YPOS0, 0x00 },115{ S1DREG_CRT_CUR_YPOS1, 0x00 },116{ S1DREG_CRT_CUR_BCTL0, 0x00 },117{ S1DREG_CRT_CUR_GCTL0, 0x00 },118{ S1DREG_CRT_CUR_RCTL0, 0x00 },119{ S1DREG_CRT_CUR_BCTL1, 0x1f },120{ S1DREG_CRT_CUR_GCTL1, 0x3f },121{ S1DREG_CRT_CUR_RCTL1, 0x1f },122{ S1DREG_CRT_CUR_FIFO_HTC, 0x00 },123{ S1DREG_BBLT_CTL0, 0x00 },124{ S1DREG_BBLT_CTL1, 0x00 },125{ S1DREG_BBLT_CC_EXP, 0x00 },126{ S1DREG_BBLT_OP, 0x00 },127{ S1DREG_BBLT_SRC_START0, 0x00 },128{ S1DREG_BBLT_SRC_START1, 0x00 },129{ S1DREG_BBLT_SRC_START2, 0x00 },130{ S1DREG_BBLT_DST_START0, 0x00 },131{ S1DREG_BBLT_DST_START1, 0x00 },132{ S1DREG_BBLT_DST_START2, 0x00 },133{ S1DREG_BBLT_MEM_OFF0, 0x00 },134{ S1DREG_BBLT_MEM_OFF1, 0x00 },135{ S1DREG_BBLT_WIDTH0, 0x00 },136{ S1DREG_BBLT_WIDTH1, 0x00 },137{ S1DREG_BBLT_HEIGHT0, 0x00 },138{ S1DREG_BBLT_HEIGHT1, 0x00 },139{ S1DREG_BBLT_BGC0, 0x00 },140{ S1DREG_BBLT_BGC1, 0x00 },141{ S1DREG_BBLT_FGC0, 0x00 },142{ S1DREG_BBLT_FGC1, 0x00 },143{ S1DREG_LKUP_MODE, 0x00 },144{ S1DREG_LKUP_ADDR, 0x00 },145{ S1DREG_PS_CNF, 0x10 },146{ S1DREG_PS_STATUS, 0x00 },147{ S1DREG_CPU2MEM_WDOGT, 0x00 },148{ S1DREG_COM_DISP_MODE, 0x02 },149};150151static struct s1d13xxxfb_pdata s1d13806_platform_data = {152.initregs = s1d13806_initregs,153.initregssize = ARRAY_SIZE(s1d13806_initregs),154};155156static struct resource s1d13806_resources[] = {157[0] = {158.start = 0x07200000,159.end = 0x07200000 + SZ_2M - 1,160.flags = IORESOURCE_MEM,161},162[1] = {163.start = 0x07000000,164.end = 0x07000000 + SZ_2M - 1,165.flags = IORESOURCE_MEM,166},167};168169static struct platform_device s1d13806_device = {170.name = "s1d13806fb",171.id = -1,172.num_resources = ARRAY_SIZE(s1d13806_resources),173.resource = s1d13806_resources,174175.dev = {176.platform_data = &s1d13806_platform_data,177},178};179180static struct platform_device *microdev_devices[] __initdata = {181&smc91x_device,182&s1d13806_device,183};184185static int __init microdev_devices_setup(void)186{187return platform_add_devices(microdev_devices, ARRAY_SIZE(microdev_devices));188}189device_initcall(microdev_devices_setup);190191/*192* The Machine Vector193*/194static struct sh_machine_vector mv_sh4202_microdev __initmv = {195.mv_name = "SH4-202 MicroDev",196.mv_nr_irqs = 72,197.mv_ioport_map = microdev_ioport_map,198.mv_init_irq = init_microdev_irq,199};200201202