• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  *  linux/include/asm-arm/arch-omap/board.h
3  *
4  *  Information structures for board-specific data
5  *
6  *  Copyright (C) 2004	Nokia Corporation
7  *  Written by Juha Yrj�l� <juha.yrjola@nokia.com>
8  */
9 
10 #ifndef _OMAP_BOARD_H
11 #define _OMAP_BOARD_H
12 
13 #include <linux/types.h>
14 
15 #include <asm/arch/gpio-switch.h>
16 
17 /* Different peripheral ids */
18 #define OMAP_TAG_CLOCK          0x4f01
19 #define OMAP_TAG_MMC            0x4f02
20 #define OMAP_TAG_SERIAL_CONSOLE 0x4f03
21 #define OMAP_TAG_USB            0x4f04
22 #define OMAP_TAG_LCD            0x4f05
23 #define OMAP_TAG_GPIO_SWITCH    0x4f06
24 #define OMAP_TAG_UART           0x4f07
25 #define OMAP_TAG_FBMEM          0x4f08
26 #define OMAP_TAG_STI_CONSOLE    0x4f09
27 #define OMAP_TAG_CAMERA_SENSOR  0x4f0a
28 #define OMAP_TAG_BT             0x4f0b
29 
30 #define OMAP_TAG_BOOT_REASON    0x4f80
31 #define OMAP_TAG_FLASH_PART	    0x4f81
32 #define OMAP_TAG_VERSION_STR    0x4f82
33 
34 struct omap_clock_config {
35 	/* 0 for 12 MHz, 1 for 13 MHz and 2 for 19.2 MHz */
36 	u8 system_clock_type;
37 };
38 
39 struct omap_mmc_conf {
40 	unsigned enabled:1;
41 	/* nomux means "standard" muxing is wrong on this board, and that
42 	 * board-specific code handled it before common init logic.
43 	 */
44 	unsigned nomux:1;
45 	/* switch pin can be for card detect (default) or card cover */
46 	unsigned cover:1;
47 	/* 4 wire signaling is optional, and is only used for SD/SDIO */
48 	unsigned wire4:1;
49 	s16 power_pin;
50 	s16 switch_pin;
51 	s16 wp_pin;
52 };
53 
54 struct omap_mmc_config {
55 	struct omap_mmc_conf mmc[2];
56 };
57 
58 struct omap_serial_console_config {
59 	u8 console_uart;
60 	u32 console_speed;
61 };
62 
63 struct omap_sti_console_config {
64 	unsigned enable:1;
65 	u8 channel;
66 };
67 
68 struct omap_camera_sensor_config {
69 	u16 reset_gpio;
70 	int (*power_on)(void * data);
71 	int (*power_off)(void * data);
72 };
73 
74 struct omap_usb_config {
75 	/* Configure drivers according to the connectors on your board:
76 	 *  - "A" connector (rectagular)
77 	 *	... for host/OHCI use, set "register_host".
78 	 *  - "B" connector (squarish) or "Mini-B"
79 	 *	... for device/gadget use, set "register_dev".
80 	 *  - "Mini-AB" connector (very similar to Mini-B)
81 	 *	... for OTG use as device OR host, initialize "otg"
82 	 */
83 	unsigned	register_host:1;
84 	unsigned	register_dev:1;
85 	u8		otg;	/* port number, 1-based:  usb1 == 2 */
86 
87 	u8		hmc_mode;
88 
89 	/* implicitly true if otg:  host supports remote wakeup? */
90 	u8		rwc;
91 
92 	/* signaling pins used to talk to transceiver on usbN:
93 	 *  0 == usbN unused
94 	 *  2 == usb0-only, using internal transceiver
95 	 *  3 == 3 wire bidirectional
96 	 *  4 == 4 wire bidirectional
97 	 *  6 == 6 wire unidirectional (or TLL)
98 	 */
99 	u8		pins[3];
100 };
101 
102 struct omap_lcd_config {
103 	char panel_name[16];
104 	char ctrl_name[16];
105 	s16  nreset_gpio;
106 	u8   data_lines;
107 };
108 
109 struct device;
110 struct fb_info;
111 struct omap_backlight_config {
112 	int default_intensity;
113 	int (*set_power)(struct device *dev, int state);
114 	int (*check_fb)(struct fb_info *fb);
115 };
116 
117 struct omap_fbmem_config {
118 	u32 start;
119 	u32 size;
120 };
121 
122 struct omap_pwm_led_platform_data {
123 	const char *name;
124 	int intensity_timer;
125 	int blink_timer;
126 	void (*set_power)(struct omap_pwm_led_platform_data *self, int on_off);
127 };
128 
129 /* See include/asm-arm/arch-omap/gpio-switch.h for definitions */
130 struct omap_gpio_switch_config {
131 	char name[12];
132 	u16 gpio;
133 	int flags:4;
134 	int type:4;
135 	int key_code:24; /* Linux key code */
136 };
137 
138 struct omap_uart_config {
139 	/* Bit field of UARTs present; bit 0 --> UART1 */
140 	unsigned int enabled_uarts;
141 };
142 
143 
144 struct omap_flash_part_config {
145 	char part_table[0];
146 };
147 
148 struct omap_boot_reason_config {
149 	char reason_str[12];
150 };
151 
152 struct omap_version_config {
153 	char component[12];
154 	char version[12];
155 };
156 
157 struct omap_board_config_entry {
158 	u16 tag;
159 	u16 len;
160 	u8  data[0];
161 };
162 
163 struct omap_board_config_kernel {
164 	u16 tag;
165 	const void *data;
166 };
167 
168 struct omap_bluetooth_config {
169 	u8   chip_type;
170 	u8   bt_uart;
171 	u8   bd_addr[6];
172 	u8   bt_sysclk;
173 	int  bt_wakeup_gpio;
174 	int  host_wakeup_gpio;
175 	int  reset_gpio;
176 };
177 
178 extern const void *__omap_get_config(u16 tag, size_t len, int nr);
179 
180 #define omap_get_config(tag, type) \
181 	((const type *) __omap_get_config((tag), sizeof(type), 0))
182 #define omap_get_nr_config(tag, type, nr) \
183 	((const type *) __omap_get_config((tag), sizeof(type), (nr)))
184 
185 extern const void *omap_get_var_config(u16 tag, size_t *len);
186 
187 extern struct omap_board_config_kernel *omap_board_config;
188 extern int omap_board_config_size;
189 
190 #endif
191