Commit | Line | Data |
---|---|---|
ff6552e4 JB |
1 | /* |
2 | * Copyright (C) 2008 Juergen Beisert (kernel@pengutronix.de) | |
3 | * | |
4 | * This program is free software; you can redistribute it and/or | |
5 | * modify it under the terms of the GNU General Public License | |
6 | * as published by the Free Software Foundation; either version 2 | |
7 | * of the License, or (at your option) any later version. | |
8 | * This program is distributed in the hope that it will be useful, | |
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
11 | * GNU General Public License for more details. | |
12 | * | |
13 | * You should have received a copy of the GNU General Public License | |
14 | * along with this program; if not, write to the Free Software | |
15 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, | |
16 | * MA 02110-1301, USA. | |
17 | */ | |
18 | ||
19 | #include <linux/platform_device.h> | |
9db973a5 | 20 | |
ff6552e4 JB |
21 | #include <asm/mach/arch.h> |
22 | ||
9db973a5 SH |
23 | #include <mach/hardware.h> |
24 | #include <mach/common.h> | |
25 | #include <mach/imxfb.h> | |
26 | #include <mach/iomux.h> | |
27 | ||
28 | #include "devices.h" | |
29 | ||
30 | static int mxc_fb_pins[] = { | |
31 | PA5_PF_LSCLK, PA6_PF_LD0, PA7_PF_LD1, PA8_PF_LD2, | |
32 | PA9_PF_LD3, PA10_PF_LD4, PA11_PF_LD5, PA12_PF_LD6, | |
33 | PA13_PF_LD7, PA14_PF_LD8, PA15_PF_LD9, PA16_PF_LD10, | |
34 | PA17_PF_LD11, PA18_PF_LD12, PA19_PF_LD13, PA20_PF_LD14, | |
35 | PA21_PF_LD15, PA22_PF_LD16, PA23_PF_LD17, PA24_PF_REV, | |
36 | PA25_PF_CLS, PA26_PF_PS, PA27_PF_SPL_SPR, PA28_PF_HSYNC, | |
37 | PA29_PF_VSYNC, PA30_PF_CONTRAST, PA31_PF_OE_ACD | |
38 | }; | |
39 | ||
40 | static int pcm038_fb_init(struct platform_device *pdev) | |
41 | { | |
42 | return mxc_gpio_setup_multiple_pins(mxc_fb_pins, | |
43 | ARRAY_SIZE(mxc_fb_pins), "FB"); | |
44 | } | |
45 | ||
46 | static int pcm038_fb_exit(struct platform_device *pdev) | |
47 | { | |
48 | mxc_gpio_release_multiple_pins(mxc_fb_pins, ARRAY_SIZE(mxc_fb_pins)); | |
49 | ||
50 | return 0; | |
51 | } | |
52 | ||
53 | /* | |
54 | * Connected is a portrait Sharp-QVGA display | |
55 | * of type: LQ035Q7DH06 | |
56 | */ | |
57 | static struct imx_fb_platform_data pcm038_fb_data = { | |
58 | .pixclock = 188679, /* in ps (5.3MHz) */ | |
59 | .xres = 240, | |
60 | .yres = 320, | |
61 | ||
62 | .bpp = 16, | |
63 | .hsync_len = 7, | |
64 | .left_margin = 5, | |
65 | .right_margin = 16, | |
66 | ||
67 | .vsync_len = 1, | |
68 | .upper_margin = 7, | |
69 | .lower_margin = 9, | |
70 | .fixed_screen_cpu = 0, | |
71 | ||
72 | /* | |
73 | * - HSYNC active high | |
74 | * - VSYNC active high | |
75 | * - clk notenabled while idle | |
76 | * - clock not inverted | |
77 | * - data not inverted | |
78 | * - data enable low active | |
79 | * - enable sharp mode | |
80 | */ | |
81 | .pcr = 0xFA0080C0, | |
82 | .pwmr = 0x00A903FF, | |
83 | .lscr1 = 0x00120300, | |
84 | .dmacr = 0x00020010, | |
85 | ||
86 | .init = pcm038_fb_init, | |
87 | .exit = pcm038_fb_exit, | |
88 | }; | |
89 | ||
ff6552e4 JB |
90 | /* |
91 | * system init for baseboard usage. Will be called by pcm038 init. | |
92 | * | |
93 | * Add platform devices present on this baseboard and init | |
94 | * them from CPU side as far as required to use them later on | |
95 | */ | |
96 | void __init pcm970_baseboard_init(void) | |
97 | { | |
9db973a5 | 98 | mxc_register_device(&mxc_fb_device, &pcm038_fb_data); |
ff6552e4 | 99 | } |