diff options
Diffstat (limited to 'arch/arm')
34 files changed, 114 insertions, 180 deletions
diff --git a/arch/arm/include/asm/cache.h b/arch/arm/include/asm/cache.h index 66c160b8547f..9d6122096fbe 100644 --- a/arch/arm/include/asm/cache.h +++ b/arch/arm/include/asm/cache.h | |||
@@ -14,7 +14,7 @@ | |||
14 | * cache before the transfer is done, causing old data to be seen by | 14 | * cache before the transfer is done, causing old data to be seen by |
15 | * the CPU. | 15 | * the CPU. |
16 | */ | 16 | */ |
17 | #define ARCH_KMALLOC_MINALIGN L1_CACHE_BYTES | 17 | #define ARCH_DMA_MINALIGN L1_CACHE_BYTES |
18 | 18 | ||
19 | /* | 19 | /* |
20 | * With EABI on ARMv5 and above we must have 64-bit aligned slab pointers. | 20 | * With EABI on ARMv5 and above we must have 64-bit aligned slab pointers. |
diff --git a/arch/arm/include/asm/dma-mapping.h b/arch/arm/include/asm/dma-mapping.h index b5ccc6a993d5..c226fe10553e 100644 --- a/arch/arm/include/asm/dma-mapping.h +++ b/arch/arm/include/asm/dma-mapping.h | |||
@@ -144,16 +144,6 @@ static inline int dma_set_mask(struct device *dev, u64 dma_mask) | |||
144 | return 0; | 144 | return 0; |
145 | } | 145 | } |
146 | 146 | ||
147 | static inline int dma_get_cache_alignment(void) | ||
148 | { | ||
149 | return 32; | ||
150 | } | ||
151 | |||
152 | static inline int dma_is_consistent(struct device *dev, dma_addr_t handle) | ||
153 | { | ||
154 | return !!arch_is_coherent(); | ||
155 | } | ||
156 | |||
157 | /* | 147 | /* |
158 | * DMA errors are defined by all-bits-set in the DMA address. | 148 | * DMA errors are defined by all-bits-set in the DMA address. |
159 | */ | 149 | */ |
diff --git a/arch/arm/include/asm/ioctls.h b/arch/arm/include/asm/ioctls.h index 7f0b6d13296a..0b30894b5482 100644 --- a/arch/arm/include/asm/ioctls.h +++ b/arch/arm/include/asm/ioctls.h | |||
@@ -52,6 +52,7 @@ | |||
52 | #define TCSETSF2 _IOW('T',0x2D, struct termios2) | 52 | #define TCSETSF2 _IOW('T',0x2D, struct termios2) |
53 | #define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ | 53 | #define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ |
54 | #define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */ | 54 | #define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */ |
55 | #define TIOCSIG _IOW('T',0x36, int) /* Generate signal on Pty slave */ | ||
55 | 56 | ||
56 | #define TIOCGRS485 0x542E | 57 | #define TIOCGRS485 0x542E |
57 | #define TIOCSRS485 0x542F | 58 | #define TIOCSRS485 0x542F |
@@ -81,6 +82,7 @@ | |||
81 | #define TIOCPKT_START 8 | 82 | #define TIOCPKT_START 8 |
82 | #define TIOCPKT_NOSTOP 16 | 83 | #define TIOCPKT_NOSTOP 16 |
83 | #define TIOCPKT_DOSTOP 32 | 84 | #define TIOCPKT_DOSTOP 32 |
85 | #define TIOCPKT_IOCTL 64 | ||
84 | 86 | ||
85 | #define TIOCSER_TEMT 0x01 /* Transmitter physically empty */ | 87 | #define TIOCSER_TEMT 0x01 /* Transmitter physically empty */ |
86 | 88 | ||
diff --git a/arch/arm/include/asm/termbits.h b/arch/arm/include/asm/termbits.h index f784d11f40b5..704135d28d1d 100644 --- a/arch/arm/include/asm/termbits.h +++ b/arch/arm/include/asm/termbits.h | |||
@@ -177,6 +177,7 @@ struct ktermios { | |||
177 | #define FLUSHO 0010000 | 177 | #define FLUSHO 0010000 |
178 | #define PENDIN 0040000 | 178 | #define PENDIN 0040000 |
179 | #define IEXTEN 0100000 | 179 | #define IEXTEN 0100000 |
180 | #define EXTPROC 0200000 | ||
180 | 181 | ||
181 | /* tcflow() and TCXONC use these */ | 182 | /* tcflow() and TCXONC use these */ |
182 | #define TCOOFF 0 | 183 | #define TCOOFF 0 |
diff --git a/arch/arm/mach-mx3/mach-armadillo5x0.c b/arch/arm/mach-mx3/mach-armadillo5x0.c index 96aadcadb4ff..68879c996a55 100644 --- a/arch/arm/mach-mx3/mach-armadillo5x0.c +++ b/arch/arm/mach-mx3/mach-armadillo5x0.c | |||
@@ -551,9 +551,9 @@ static void __init armadillo5x0_init(void) | |||
551 | /* USB */ | 551 | /* USB */ |
552 | #if defined(CONFIG_USB_ULPI) | 552 | #if defined(CONFIG_USB_ULPI) |
553 | usbotg_pdata.otg = otg_ulpi_create(&mxc_ulpi_access_ops, | 553 | usbotg_pdata.otg = otg_ulpi_create(&mxc_ulpi_access_ops, |
554 | USB_OTG_DRV_VBUS | USB_OTG_DRV_VBUS_EXT); | 554 | ULPI_OTG_DRVVBUS | ULPI_OTG_DRVVBUS_EXT); |
555 | usbh2_pdata.otg = otg_ulpi_create(&mxc_ulpi_access_ops, | 555 | usbh2_pdata.otg = otg_ulpi_create(&mxc_ulpi_access_ops, |
556 | USB_OTG_DRV_VBUS | USB_OTG_DRV_VBUS_EXT); | 556 | ULPI_OTG_DRVVBUS | ULPI_OTG_DRVVBUS_EXT); |
557 | 557 | ||
558 | mxc_register_device(&mxc_otg_host, &usbotg_pdata); | 558 | mxc_register_device(&mxc_otg_host, &usbotg_pdata); |
559 | mxc_register_device(&mxc_usbh2, &usbh2_pdata); | 559 | mxc_register_device(&mxc_usbh2, &usbh2_pdata); |
diff --git a/arch/arm/mach-mx3/mach-mx31lilly.c b/arch/arm/mach-mx3/mach-mx31lilly.c index 8f66f65e80e2..7c37daabb757 100644 --- a/arch/arm/mach-mx3/mach-mx31lilly.c +++ b/arch/arm/mach-mx3/mach-mx31lilly.c | |||
@@ -245,9 +245,9 @@ static struct mxc_usbh_platform_data usbh2_pdata = { | |||
245 | static void lilly1131_usb_init(void) | 245 | static void lilly1131_usb_init(void) |
246 | { | 246 | { |
247 | usbotg_pdata.otg = otg_ulpi_create(&mxc_ulpi_access_ops, | 247 | usbotg_pdata.otg = otg_ulpi_create(&mxc_ulpi_access_ops, |
248 | USB_OTG_DRV_VBUS | USB_OTG_DRV_VBUS_EXT); | 248 | ULPI_OTG_DRVVBUS | ULPI_OTG_DRVVBUS_EXT); |
249 | usbh2_pdata.otg = otg_ulpi_create(&mxc_ulpi_access_ops, | 249 | usbh2_pdata.otg = otg_ulpi_create(&mxc_ulpi_access_ops, |
250 | USB_OTG_DRV_VBUS | USB_OTG_DRV_VBUS_EXT); | 250 | ULPI_OTG_DRVVBUS | ULPI_OTG_DRVVBUS_EXT); |
251 | 251 | ||
252 | mxc_register_device(&mxc_usbh1, &usbh1_pdata); | 252 | mxc_register_device(&mxc_usbh1, &usbh1_pdata); |
253 | mxc_register_device(&mxc_usbh2, &usbh2_pdata); | 253 | mxc_register_device(&mxc_usbh2, &usbh2_pdata); |
diff --git a/arch/arm/mach-mx3/mach-mx31lite.c b/arch/arm/mach-mx3/mach-mx31lite.c index da236c497d2a..f66a9576d8c2 100644 --- a/arch/arm/mach-mx3/mach-mx31lite.c +++ b/arch/arm/mach-mx3/mach-mx31lite.c | |||
@@ -256,7 +256,7 @@ static void __init mxc_board_init(void) | |||
256 | #if defined(CONFIG_USB_ULPI) | 256 | #if defined(CONFIG_USB_ULPI) |
257 | /* USB */ | 257 | /* USB */ |
258 | usbh2_pdata.otg = otg_ulpi_create(&mxc_ulpi_access_ops, | 258 | usbh2_pdata.otg = otg_ulpi_create(&mxc_ulpi_access_ops, |
259 | USB_OTG_DRV_VBUS | USB_OTG_DRV_VBUS_EXT); | 259 | ULPI_OTG_DRVVBUS | ULPI_OTG_DRVVBUS_EXT); |
260 | 260 | ||
261 | mxc_register_device(&mxc_usbh2, &usbh2_pdata); | 261 | mxc_register_device(&mxc_usbh2, &usbh2_pdata); |
262 | #endif | 262 | #endif |
diff --git a/arch/arm/mach-mx3/mach-mx31moboard.c b/arch/arm/mach-mx3/mach-mx31moboard.c index 67776bc61c33..7a075e8bf2d4 100644 --- a/arch/arm/mach-mx3/mach-mx31moboard.c +++ b/arch/arm/mach-mx3/mach-mx31moboard.c | |||
@@ -412,7 +412,7 @@ static struct mxc_usbh_platform_data usbh2_pdata = { | |||
412 | static int __init moboard_usbh2_init(void) | 412 | static int __init moboard_usbh2_init(void) |
413 | { | 413 | { |
414 | usbh2_pdata.otg = otg_ulpi_create(&mxc_ulpi_access_ops, | 414 | usbh2_pdata.otg = otg_ulpi_create(&mxc_ulpi_access_ops, |
415 | USB_OTG_DRV_VBUS | USB_OTG_DRV_VBUS_EXT); | 415 | ULPI_OTG_DRVVBUS | ULPI_OTG_DRVVBUS_EXT); |
416 | 416 | ||
417 | return mxc_register_device(&mxc_usbh2, &usbh2_pdata); | 417 | return mxc_register_device(&mxc_usbh2, &usbh2_pdata); |
418 | } | 418 | } |
diff --git a/arch/arm/mach-mx3/mach-pcm037.c b/arch/arm/mach-mx3/mach-pcm037.c index 8a292dd1a714..214de11b20b9 100644 --- a/arch/arm/mach-mx3/mach-pcm037.c +++ b/arch/arm/mach-mx3/mach-pcm037.c | |||
@@ -654,13 +654,13 @@ static void __init mxc_board_init(void) | |||
654 | #if defined(CONFIG_USB_ULPI) | 654 | #if defined(CONFIG_USB_ULPI) |
655 | if (otg_mode_host) { | 655 | if (otg_mode_host) { |
656 | otg_pdata.otg = otg_ulpi_create(&mxc_ulpi_access_ops, | 656 | otg_pdata.otg = otg_ulpi_create(&mxc_ulpi_access_ops, |
657 | USB_OTG_DRV_VBUS | USB_OTG_DRV_VBUS_EXT); | 657 | ULPI_OTG_DRVVBUS | ULPI_OTG_DRVVBUS_EXT); |
658 | 658 | ||
659 | mxc_register_device(&mxc_otg_host, &otg_pdata); | 659 | mxc_register_device(&mxc_otg_host, &otg_pdata); |
660 | } | 660 | } |
661 | 661 | ||
662 | usbh2_pdata.otg = otg_ulpi_create(&mxc_ulpi_access_ops, | 662 | usbh2_pdata.otg = otg_ulpi_create(&mxc_ulpi_access_ops, |
663 | USB_OTG_DRV_VBUS | USB_OTG_DRV_VBUS_EXT); | 663 | ULPI_OTG_DRVVBUS | ULPI_OTG_DRVVBUS_EXT); |
664 | 664 | ||
665 | mxc_register_device(&mxc_usbh2, &usbh2_pdata); | 665 | mxc_register_device(&mxc_usbh2, &usbh2_pdata); |
666 | #endif | 666 | #endif |
diff --git a/arch/arm/mach-mx3/mach-pcm043.c b/arch/arm/mach-mx3/mach-pcm043.c index 47f5311b301a..28886f0e62f9 100644 --- a/arch/arm/mach-mx3/mach-pcm043.c +++ b/arch/arm/mach-mx3/mach-pcm043.c | |||
@@ -378,7 +378,7 @@ static void __init mxc_board_init(void) | |||
378 | #if defined(CONFIG_USB_ULPI) | 378 | #if defined(CONFIG_USB_ULPI) |
379 | if (otg_mode_host) { | 379 | if (otg_mode_host) { |
380 | otg_pdata.otg = otg_ulpi_create(&mxc_ulpi_access_ops, | 380 | otg_pdata.otg = otg_ulpi_create(&mxc_ulpi_access_ops, |
381 | USB_OTG_DRV_VBUS | USB_OTG_DRV_VBUS_EXT); | 381 | ULPI_OTG_DRVVBUS | ULPI_OTG_DRVVBUS_EXT); |
382 | 382 | ||
383 | mxc_register_device(&mxc_otg_host, &otg_pdata); | 383 | mxc_register_device(&mxc_otg_host, &otg_pdata); |
384 | } | 384 | } |
diff --git a/arch/arm/mach-mx3/mx31moboard-smartbot.c b/arch/arm/mach-mx3/mx31moboard-smartbot.c index 40c3e7564cb6..417757e78c65 100644 --- a/arch/arm/mach-mx3/mx31moboard-smartbot.c +++ b/arch/arm/mach-mx3/mx31moboard-smartbot.c | |||
@@ -134,7 +134,7 @@ static struct mxc_usbh_platform_data otg_host_pdata = { | |||
134 | static int __init smartbot_otg_host_init(void) | 134 | static int __init smartbot_otg_host_init(void) |
135 | { | 135 | { |
136 | otg_host_pdata.otg = otg_ulpi_create(&mxc_ulpi_access_ops, | 136 | otg_host_pdata.otg = otg_ulpi_create(&mxc_ulpi_access_ops, |
137 | USB_OTG_DRV_VBUS | USB_OTG_DRV_VBUS_EXT); | 137 | ULPI_OTG_DRVVBUS | ULPI_OTG_DRVVBUS_EXT); |
138 | 138 | ||
139 | return mxc_register_device(&mxc_otg_host, &otg_host_pdata); | 139 | return mxc_register_device(&mxc_otg_host, &otg_host_pdata); |
140 | } | 140 | } |
diff --git a/arch/arm/mach-omap2/board-omap3pandora.c b/arch/arm/mach-omap2/board-omap3pandora.c index 55836fa35060..dd3af2be13be 100644 --- a/arch/arm/mach-omap2/board-omap3pandora.c +++ b/arch/arm/mach-omap2/board-omap3pandora.c | |||
@@ -32,6 +32,7 @@ | |||
32 | #include <linux/input.h> | 32 | #include <linux/input.h> |
33 | #include <linux/input/matrix_keypad.h> | 33 | #include <linux/input/matrix_keypad.h> |
34 | #include <linux/gpio_keys.h> | 34 | #include <linux/gpio_keys.h> |
35 | #include <linux/mmc/card.h> | ||
35 | 36 | ||
36 | #include <asm/mach-types.h> | 37 | #include <asm/mach-types.h> |
37 | #include <asm/mach/arch.h> | 38 | #include <asm/mach/arch.h> |
@@ -258,6 +259,20 @@ static struct platform_device pandora_dss_device = { | |||
258 | }, | 259 | }, |
259 | }; | 260 | }; |
260 | 261 | ||
262 | static void pandora_wl1251_init_card(struct mmc_card *card) | ||
263 | { | ||
264 | /* | ||
265 | * We have TI wl1251 attached to MMC3. Pass this information to | ||
266 | * SDIO core because it can't be probed by normal methods. | ||
267 | */ | ||
268 | card->quirks |= MMC_QUIRK_NONSTD_SDIO; | ||
269 | card->cccr.wide_bus = 1; | ||
270 | card->cis.vendor = 0x104c; | ||
271 | card->cis.device = 0x9066; | ||
272 | card->cis.blksize = 512; | ||
273 | card->cis.max_dtr = 20000000; | ||
274 | } | ||
275 | |||
261 | static struct omap2_hsmmc_info omap3pandora_mmc[] = { | 276 | static struct omap2_hsmmc_info omap3pandora_mmc[] = { |
262 | { | 277 | { |
263 | .mmc = 1, | 278 | .mmc = 1, |
@@ -279,6 +294,7 @@ static struct omap2_hsmmc_info omap3pandora_mmc[] = { | |||
279 | .wires = 4, | 294 | .wires = 4, |
280 | .gpio_cd = -EINVAL, | 295 | .gpio_cd = -EINVAL, |
281 | .gpio_wp = -EINVAL, | 296 | .gpio_wp = -EINVAL, |
297 | .init_card = pandora_wl1251_init_card, | ||
282 | }, | 298 | }, |
283 | {} /* Terminator */ | 299 | {} /* Terminator */ |
284 | }; | 300 | }; |
diff --git a/arch/arm/mach-omap2/hsmmc.c b/arch/arm/mach-omap2/hsmmc.c index 1ef54b036103..c8f647b6205e 100644 --- a/arch/arm/mach-omap2/hsmmc.c +++ b/arch/arm/mach-omap2/hsmmc.c | |||
@@ -268,6 +268,7 @@ void __init omap2_hsmmc_init(struct omap2_hsmmc_info *controllers) | |||
268 | mmc->slots[0].gpio_wp = c->gpio_wp; | 268 | mmc->slots[0].gpio_wp = c->gpio_wp; |
269 | 269 | ||
270 | mmc->slots[0].remux = c->remux; | 270 | mmc->slots[0].remux = c->remux; |
271 | mmc->slots[0].init_card = c->init_card; | ||
271 | 272 | ||
272 | if (c->cover_only) | 273 | if (c->cover_only) |
273 | mmc->slots[0].cover = 1; | 274 | mmc->slots[0].cover = 1; |
diff --git a/arch/arm/mach-omap2/hsmmc.h b/arch/arm/mach-omap2/hsmmc.h index 36f0ba8d89e2..1fe6f0187177 100644 --- a/arch/arm/mach-omap2/hsmmc.h +++ b/arch/arm/mach-omap2/hsmmc.h | |||
@@ -6,6 +6,8 @@ | |||
6 | * published by the Free Software Foundation. | 6 | * published by the Free Software Foundation. |
7 | */ | 7 | */ |
8 | 8 | ||
9 | struct mmc_card; | ||
10 | |||
9 | struct omap2_hsmmc_info { | 11 | struct omap2_hsmmc_info { |
10 | u8 mmc; /* controller 1/2/3 */ | 12 | u8 mmc; /* controller 1/2/3 */ |
11 | u8 wires; /* 1/4/8 wires */ | 13 | u8 wires; /* 1/4/8 wires */ |
@@ -23,6 +25,8 @@ struct omap2_hsmmc_info { | |||
23 | int ocr_mask; /* temporary HACK */ | 25 | int ocr_mask; /* temporary HACK */ |
24 | /* Remux (pad configuation) when powering on/off */ | 26 | /* Remux (pad configuation) when powering on/off */ |
25 | void (*remux)(struct device *dev, int slot, int power_on); | 27 | void (*remux)(struct device *dev, int slot, int power_on); |
28 | /* init some special card */ | ||
29 | void (*init_card)(struct mmc_card *card); | ||
26 | }; | 30 | }; |
27 | 31 | ||
28 | #if defined(CONFIG_MMC_OMAP_HS) || defined(CONFIG_MMC_OMAP_HS_MODULE) | 32 | #if defined(CONFIG_MMC_OMAP_HS) || defined(CONFIG_MMC_OMAP_HS_MODULE) |
diff --git a/arch/arm/mach-s3c2416/s3c2416.c b/arch/arm/mach-s3c2416/s3c2416.c index 35dabccd0ac2..bc30245e133b 100644 --- a/arch/arm/mach-s3c2416/s3c2416.c +++ b/arch/arm/mach-s3c2416/s3c2416.c | |||
@@ -55,6 +55,7 @@ | |||
55 | #include <plat/cpu.h> | 55 | #include <plat/cpu.h> |
56 | 56 | ||
57 | #include <plat/iic-core.h> | 57 | #include <plat/iic-core.h> |
58 | #include <plat/fb-core.h> | ||
58 | 59 | ||
59 | static struct map_desc s3c2416_iodesc[] __initdata = { | 60 | static struct map_desc s3c2416_iodesc[] __initdata = { |
60 | IODESC_ENT(WATCHDOG), | 61 | IODESC_ENT(WATCHDOG), |
@@ -90,7 +91,7 @@ int __init s3c2416_init(void) | |||
90 | s3c_i2c0_setname("s3c2440-i2c"); | 91 | s3c_i2c0_setname("s3c2440-i2c"); |
91 | s3c_i2c1_setname("s3c2440-i2c"); | 92 | s3c_i2c1_setname("s3c2440-i2c"); |
92 | 93 | ||
93 | s3c_device_fb.name = "s3c2443-fb"; | 94 | s3c_fb_setname("s3c2443-fb"); |
94 | 95 | ||
95 | return sysdev_register(&s3c2416_sysdev); | 96 | return sysdev_register(&s3c2416_sysdev); |
96 | } | 97 | } |
diff --git a/arch/arm/mach-s3c2440/mach-gta02.c b/arch/arm/mach-s3c2440/mach-gta02.c index 9e39faa283b9..deaabe86741d 100644 --- a/arch/arm/mach-s3c2440/mach-gta02.c +++ b/arch/arm/mach-s3c2440/mach-gta02.c | |||
@@ -90,24 +90,17 @@ | |||
90 | static struct pcf50633 *gta02_pcf; | 90 | static struct pcf50633 *gta02_pcf; |
91 | 91 | ||
92 | /* | 92 | /* |
93 | * This gets called every 1ms when we paniced. | 93 | * This gets called frequently when we paniced. |
94 | */ | 94 | */ |
95 | 95 | ||
96 | static long gta02_panic_blink(long count) | 96 | static long gta02_panic_blink(int state) |
97 | { | 97 | { |
98 | long delay = 0; | 98 | long delay = 0; |
99 | static long last_blink; | 99 | char led; |
100 | static char led; | ||
101 | 100 | ||
102 | /* Fast blink: 200ms period. */ | 101 | led = (state) ? 1 : 0; |
103 | if (count - last_blink < 100) | ||
104 | return 0; | ||
105 | |||
106 | led ^= 1; | ||
107 | gpio_direction_output(GTA02_GPIO_AUX_LED, led); | 102 | gpio_direction_output(GTA02_GPIO_AUX_LED, led); |
108 | 103 | ||
109 | last_blink = count; | ||
110 | |||
111 | return delay; | 104 | return delay; |
112 | } | 105 | } |
113 | 106 | ||
@@ -556,7 +549,7 @@ static void gta02_poweroff(void) | |||
556 | 549 | ||
557 | static void __init gta02_machine_init(void) | 550 | static void __init gta02_machine_init(void) |
558 | { | 551 | { |
559 | /* Set the panic callback to make AUX LED blink at ~5Hz. */ | 552 | /* Set the panic callback to turn AUX LED on or off. */ |
560 | panic_blink = gta02_panic_blink; | 553 | panic_blink = gta02_panic_blink; |
561 | 554 | ||
562 | s3c_pm_init(); | 555 | s3c_pm_init(); |
diff --git a/arch/arm/mach-s3c2443/s3c2443.c b/arch/arm/mach-s3c2443/s3c2443.c index ce2ec3298930..839b6b2ced74 100644 --- a/arch/arm/mach-s3c2443/s3c2443.c +++ b/arch/arm/mach-s3c2443/s3c2443.c | |||
@@ -35,6 +35,7 @@ | |||
35 | #include <plat/s3c2443.h> | 35 | #include <plat/s3c2443.h> |
36 | #include <plat/devs.h> | 36 | #include <plat/devs.h> |
37 | #include <plat/cpu.h> | 37 | #include <plat/cpu.h> |
38 | #include <plat/fb-core.h> | ||
38 | 39 | ||
39 | static struct map_desc s3c2443_iodesc[] __initdata = { | 40 | static struct map_desc s3c2443_iodesc[] __initdata = { |
40 | IODESC_ENT(WATCHDOG), | 41 | IODESC_ENT(WATCHDOG), |
@@ -62,6 +63,7 @@ int __init s3c2443_init(void) | |||
62 | s3c24xx_reset_hook = s3c2443_hard_reset; | 63 | s3c24xx_reset_hook = s3c2443_hard_reset; |
63 | 64 | ||
64 | s3c_device_nand.name = "s3c2412-nand"; | 65 | s3c_device_nand.name = "s3c2412-nand"; |
66 | s3c_fb_setname("s3c2443-fb"); | ||
65 | 67 | ||
66 | /* change WDT IRQ number */ | 68 | /* change WDT IRQ number */ |
67 | s3c_device_wdt.resource[1].start = IRQ_S3C2443_WDT; | 69 | s3c_device_wdt.resource[1].start = IRQ_S3C2443_WDT; |
diff --git a/arch/arm/mach-s3c64xx/include/mach/regs-fb.h b/arch/arm/mach-s3c64xx/include/mach/regs-fb.h index f56611526c63..a06ee0af9a4b 100644 --- a/arch/arm/mach-s3c64xx/include/mach/regs-fb.h +++ b/arch/arm/mach-s3c64xx/include/mach/regs-fb.h | |||
@@ -18,24 +18,4 @@ | |||
18 | 18 | ||
19 | #include <plat/regs-fb-v4.h> | 19 | #include <plat/regs-fb-v4.h> |
20 | 20 | ||
21 | /* Palette registers */ | ||
22 | #define WIN2_PAL(_entry) (0x300 + ((_entry) * 2)) | ||
23 | #define WIN3_PAL(_entry) (0x320 + ((_entry) * 2)) | ||
24 | #define WIN4_PAL(_entry) (0x340 + ((_entry) * 2)) | ||
25 | #define WIN0_PAL(_entry) (0x400 + ((_entry) * 4)) | ||
26 | #define WIN1_PAL(_entry) (0x800 + ((_entry) * 4)) | ||
27 | |||
28 | static inline unsigned int s3c_fb_pal_reg(unsigned int window, int reg) | ||
29 | { | ||
30 | switch (window) { | ||
31 | case 0: return WIN0_PAL(reg); | ||
32 | case 1: return WIN1_PAL(reg); | ||
33 | case 2: return WIN2_PAL(reg); | ||
34 | case 3: return WIN3_PAL(reg); | ||
35 | case 4: return WIN4_PAL(reg); | ||
36 | } | ||
37 | |||
38 | BUG(); | ||
39 | } | ||
40 | |||
41 | #endif /* __ASM_ARCH_MACH_REGS_FB_H */ | 21 | #endif /* __ASM_ARCH_MACH_REGS_FB_H */ |
diff --git a/arch/arm/mach-s3c64xx/mach-anw6410.c b/arch/arm/mach-s3c64xx/mach-anw6410.c index 4a0bb243d14a..742dc87bd9c1 100644 --- a/arch/arm/mach-s3c64xx/mach-anw6410.c +++ b/arch/arm/mach-s3c64xx/mach-anw6410.c | |||
@@ -134,7 +134,6 @@ static struct platform_device anw6410_lcd_powerdev = { | |||
134 | static struct s3c_fb_pd_win anw6410_fb_win0 = { | 134 | static struct s3c_fb_pd_win anw6410_fb_win0 = { |
135 | /* this is to ensure we use win0 */ | 135 | /* this is to ensure we use win0 */ |
136 | .win_mode = { | 136 | .win_mode = { |
137 | .pixclock = 41094, | ||
138 | .left_margin = 8, | 137 | .left_margin = 8, |
139 | .right_margin = 13, | 138 | .right_margin = 13, |
140 | .upper_margin = 7, | 139 | .upper_margin = 7, |
diff --git a/arch/arm/mach-s3c64xx/mach-hmt.c b/arch/arm/mach-s3c64xx/mach-hmt.c index 187441a78dd5..fba90229f0df 100644 --- a/arch/arm/mach-s3c64xx/mach-hmt.c +++ b/arch/arm/mach-s3c64xx/mach-hmt.c | |||
@@ -128,7 +128,6 @@ static struct platform_device hmt_backlight_device = { | |||
128 | 128 | ||
129 | static struct s3c_fb_pd_win hmt_fb_win0 = { | 129 | static struct s3c_fb_pd_win hmt_fb_win0 = { |
130 | .win_mode = { | 130 | .win_mode = { |
131 | .pixclock = 41094, | ||
132 | .left_margin = 8, | 131 | .left_margin = 8, |
133 | .right_margin = 13, | 132 | .right_margin = 13, |
134 | .upper_margin = 7, | 133 | .upper_margin = 7, |
diff --git a/arch/arm/mach-s3c64xx/mach-smartq5.c b/arch/arm/mach-s3c64xx/mach-smartq5.c index 1d0326ead90f..a065062ec2a4 100644 --- a/arch/arm/mach-s3c64xx/mach-smartq5.c +++ b/arch/arm/mach-s3c64xx/mach-smartq5.c | |||
@@ -134,8 +134,6 @@ static struct platform_device smartq5_buttons_device = { | |||
134 | 134 | ||
135 | static struct s3c_fb_pd_win smartq5_fb_win0 = { | 135 | static struct s3c_fb_pd_win smartq5_fb_win0 = { |
136 | .win_mode = { | 136 | .win_mode = { |
137 | .pixclock = 1000000000000ULL / | ||
138 | ((40+1+216+800)*(10+1+35+480)*80), | ||
139 | .left_margin = 40, | 137 | .left_margin = 40, |
140 | .right_margin = 216, | 138 | .right_margin = 216, |
141 | .upper_margin = 10, | 139 | .upper_margin = 10, |
@@ -144,6 +142,7 @@ static struct s3c_fb_pd_win smartq5_fb_win0 = { | |||
144 | .vsync_len = 1, | 142 | .vsync_len = 1, |
145 | .xres = 800, | 143 | .xres = 800, |
146 | .yres = 480, | 144 | .yres = 480, |
145 | .refresh = 80, | ||
147 | }, | 146 | }, |
148 | .max_bpp = 32, | 147 | .max_bpp = 32, |
149 | .default_bpp = 16, | 148 | .default_bpp = 16, |
diff --git a/arch/arm/mach-s3c64xx/mach-smartq7.c b/arch/arm/mach-s3c64xx/mach-smartq7.c index e0bc78ecb156..0ecf45137546 100644 --- a/arch/arm/mach-s3c64xx/mach-smartq7.c +++ b/arch/arm/mach-s3c64xx/mach-smartq7.c | |||
@@ -150,8 +150,6 @@ static struct platform_device smartq7_buttons_device = { | |||
150 | 150 | ||
151 | static struct s3c_fb_pd_win smartq7_fb_win0 = { | 151 | static struct s3c_fb_pd_win smartq7_fb_win0 = { |
152 | .win_mode = { | 152 | .win_mode = { |
153 | .pixclock = 1000000000000ULL / | ||
154 | ((3+10+5+800)*(1+3+20+480)*80), | ||
155 | .left_margin = 3, | 153 | .left_margin = 3, |
156 | .right_margin = 5, | 154 | .right_margin = 5, |
157 | .upper_margin = 1, | 155 | .upper_margin = 1, |
@@ -160,6 +158,7 @@ static struct s3c_fb_pd_win smartq7_fb_win0 = { | |||
160 | .vsync_len = 3, | 158 | .vsync_len = 3, |
161 | .xres = 800, | 159 | .xres = 800, |
162 | .yres = 480, | 160 | .yres = 480, |
161 | .refresh = 80, | ||
163 | }, | 162 | }, |
164 | .max_bpp = 32, | 163 | .max_bpp = 32, |
165 | .default_bpp = 16, | 164 | .default_bpp = 16, |
diff --git a/arch/arm/mach-s3c64xx/mach-smdk6410.c b/arch/arm/mach-s3c64xx/mach-smdk6410.c index b5d78616c774..2d43128f939f 100644 --- a/arch/arm/mach-s3c64xx/mach-smdk6410.c +++ b/arch/arm/mach-s3c64xx/mach-smdk6410.c | |||
@@ -144,7 +144,6 @@ static struct platform_device smdk6410_lcd_powerdev = { | |||
144 | static struct s3c_fb_pd_win smdk6410_fb_win0 = { | 144 | static struct s3c_fb_pd_win smdk6410_fb_win0 = { |
145 | /* this is to ensure we use win0 */ | 145 | /* this is to ensure we use win0 */ |
146 | .win_mode = { | 146 | .win_mode = { |
147 | .pixclock = 41094, | ||
148 | .left_margin = 8, | 147 | .left_margin = 8, |
149 | .right_margin = 13, | 148 | .right_margin = 13, |
150 | .upper_margin = 7, | 149 | .upper_margin = 7, |
diff --git a/arch/arm/mach-s5pc100/cpu.c b/arch/arm/mach-s5pc100/cpu.c index 799d22f41fcd..251c92ac5b22 100644 --- a/arch/arm/mach-s5pc100/cpu.c +++ b/arch/arm/mach-s5pc100/cpu.c | |||
@@ -43,6 +43,7 @@ | |||
43 | #include <plat/sdhci.h> | 43 | #include <plat/sdhci.h> |
44 | #include <plat/adc-core.h> | 44 | #include <plat/adc-core.h> |
45 | #include <plat/onenand-core.h> | 45 | #include <plat/onenand-core.h> |
46 | #include <plat/fb-core.h> | ||
46 | 47 | ||
47 | #include <plat/s5pc100.h> | 48 | #include <plat/s5pc100.h> |
48 | 49 | ||
@@ -96,6 +97,7 @@ void __init s5pc100_map_io(void) | |||
96 | s3c_i2c1_setname("s3c2440-i2c"); | 97 | s3c_i2c1_setname("s3c2440-i2c"); |
97 | 98 | ||
98 | s3c_onenand_setname("s5pc100-onenand"); | 99 | s3c_onenand_setname("s5pc100-onenand"); |
100 | s3c_fb_setname("s5pc100-fb"); | ||
99 | s3c_cfcon_setname("s5pc100-pata"); | 101 | s3c_cfcon_setname("s5pc100-pata"); |
100 | } | 102 | } |
101 | 103 | ||
diff --git a/arch/arm/mach-s5pc100/include/mach/regs-fb.h b/arch/arm/mach-s5pc100/include/mach/regs-fb.h index 1732cd28c765..4be4cc9abf75 100644 --- a/arch/arm/mach-s5pc100/include/mach/regs-fb.h +++ b/arch/arm/mach-s5pc100/include/mach/regs-fb.h | |||
@@ -100,40 +100,6 @@ | |||
100 | #define BLENDCON (0x260) | 100 | #define BLENDCON (0x260) |
101 | #define BLENDCON_8BIT_ALPHA (1 << 0) | 101 | #define BLENDCON_8BIT_ALPHA (1 << 0) |
102 | 102 | ||
103 | /* Per-window palette base addresses (start of palette memory). | ||
104 | * Each window palette area consists of 256 32-bit entries. | ||
105 | * START is the first address (entry 0th), END is the address of 255th entry. | ||
106 | */ | ||
107 | #define WIN0_PAL_BASE (0x2400) | ||
108 | #define WIN0_PAL_END (0x27fc) | ||
109 | #define WIN1_PAL_BASE (0x2800) | ||
110 | #define WIN1_PAL_END (0x2bfc) | ||
111 | #define WIN2_PAL_BASE (0x2c00) | ||
112 | #define WIN2_PAL_END (0x2ffc) | ||
113 | #define WIN3_PAL_BASE (0x3000) | ||
114 | #define WIN3_PAL_END (0x33fc) | ||
115 | #define WIN4_PAL_BASE (0x3400) | ||
116 | #define WIN4_PAL_END (0x37fc) | ||
117 | |||
118 | #define WIN0_PAL(_entry) (WIN0_PAL_BASE + ((_entry) * 4)) | ||
119 | #define WIN1_PAL(_entry) (WIN1_PAL_BASE + ((_entry) * 4)) | ||
120 | #define WIN2_PAL(_entry) (WIN2_PAL_BASE + ((_entry) * 4)) | ||
121 | #define WIN3_PAL(_entry) (WIN3_PAL_BASE + ((_entry) * 4)) | ||
122 | #define WIN4_PAL(_entry) (WIN4_PAL_BASE + ((_entry) * 4)) | ||
123 | |||
124 | static inline unsigned int s3c_fb_pal_reg(unsigned int window, int reg) | ||
125 | { | ||
126 | switch (window) { | ||
127 | case 0: return WIN0_PAL(reg); | ||
128 | case 1: return WIN1_PAL(reg); | ||
129 | case 2: return WIN2_PAL(reg); | ||
130 | case 3: return WIN3_PAL(reg); | ||
131 | case 4: return WIN4_PAL(reg); | ||
132 | } | ||
133 | |||
134 | BUG(); | ||
135 | } | ||
136 | |||
137 | 103 | ||
138 | #endif /* __ASM_ARCH_REGS_FB_H */ | 104 | #endif /* __ASM_ARCH_REGS_FB_H */ |
139 | 105 | ||
diff --git a/arch/arm/mach-s5pc100/mach-smdkc100.c b/arch/arm/mach-s5pc100/mach-smdkc100.c index 2dc519c172ec..020c3f98f81f 100644 --- a/arch/arm/mach-s5pc100/mach-smdkc100.c +++ b/arch/arm/mach-s5pc100/mach-smdkc100.c | |||
@@ -133,7 +133,6 @@ static struct platform_device smdkc100_lcd_powerdev = { | |||
133 | static struct s3c_fb_pd_win smdkc100_fb_win0 = { | 133 | static struct s3c_fb_pd_win smdkc100_fb_win0 = { |
134 | /* this is to ensure we use win0 */ | 134 | /* this is to ensure we use win0 */ |
135 | .win_mode = { | 135 | .win_mode = { |
136 | .pixclock = 1000000000000ULL / ((8+13+3+800)*(7+5+1+480)*80), | ||
137 | .left_margin = 8, | 136 | .left_margin = 8, |
138 | .right_margin = 13, | 137 | .right_margin = 13, |
139 | .upper_margin = 7, | 138 | .upper_margin = 7, |
@@ -142,6 +141,7 @@ static struct s3c_fb_pd_win smdkc100_fb_win0 = { | |||
142 | .vsync_len = 1, | 141 | .vsync_len = 1, |
143 | .xres = 800, | 142 | .xres = 800, |
144 | .yres = 480, | 143 | .yres = 480, |
144 | .refresh = 80, | ||
145 | }, | 145 | }, |
146 | .max_bpp = 32, | 146 | .max_bpp = 32, |
147 | .default_bpp = 16, | 147 | .default_bpp = 16, |
diff --git a/arch/arm/mach-s5pv210/cpu.c b/arch/arm/mach-s5pv210/cpu.c index c7e0b8a65c4a..b9f4d677cf55 100644 --- a/arch/arm/mach-s5pv210/cpu.c +++ b/arch/arm/mach-s5pv210/cpu.c | |||
@@ -31,6 +31,7 @@ | |||
31 | #include <plat/cpu.h> | 31 | #include <plat/cpu.h> |
32 | #include <plat/devs.h> | 32 | #include <plat/devs.h> |
33 | #include <plat/clock.h> | 33 | #include <plat/clock.h> |
34 | #include <plat/fb-core.h> | ||
34 | #include <plat/s5pv210.h> | 35 | #include <plat/s5pv210.h> |
35 | #include <plat/adc-core.h> | 36 | #include <plat/adc-core.h> |
36 | #include <plat/ata-core.h> | 37 | #include <plat/ata-core.h> |
@@ -107,6 +108,8 @@ void __init s5pv210_map_io(void) | |||
107 | s3c_i2c1_setname("s3c2440-i2c"); | 108 | s3c_i2c1_setname("s3c2440-i2c"); |
108 | s3c_i2c2_setname("s3c2440-i2c"); | 109 | s3c_i2c2_setname("s3c2440-i2c"); |
109 | 110 | ||
111 | s3c_fb_setname("s5pv210-fb"); | ||
112 | |||
110 | /* Use s5pv210-keypad instead of samsung-keypad */ | 113 | /* Use s5pv210-keypad instead of samsung-keypad */ |
111 | samsung_keypad_setname("s5pv210-keypad"); | 114 | samsung_keypad_setname("s5pv210-keypad"); |
112 | } | 115 | } |
diff --git a/arch/arm/mach-s5pv210/mach-aquila.c b/arch/arm/mach-s5pv210/mach-aquila.c index e41266419a3f..0dda8012d6b2 100644 --- a/arch/arm/mach-s5pv210/mach-aquila.c +++ b/arch/arm/mach-s5pv210/mach-aquila.c | |||
@@ -92,7 +92,6 @@ static struct s3c2410_uartcfg aquila_uartcfgs[] __initdata = { | |||
92 | /* Frame Buffer */ | 92 | /* Frame Buffer */ |
93 | static struct s3c_fb_pd_win aquila_fb_win0 = { | 93 | static struct s3c_fb_pd_win aquila_fb_win0 = { |
94 | .win_mode = { | 94 | .win_mode = { |
95 | .pixclock = 1000000000000ULL / ((16+16+2+480)*(28+3+2+800)*60), | ||
96 | .left_margin = 16, | 95 | .left_margin = 16, |
97 | .right_margin = 16, | 96 | .right_margin = 16, |
98 | .upper_margin = 3, | 97 | .upper_margin = 3, |
@@ -108,7 +107,6 @@ static struct s3c_fb_pd_win aquila_fb_win0 = { | |||
108 | 107 | ||
109 | static struct s3c_fb_pd_win aquila_fb_win1 = { | 108 | static struct s3c_fb_pd_win aquila_fb_win1 = { |
110 | .win_mode = { | 109 | .win_mode = { |
111 | .pixclock = 1000000000000ULL / ((16+16+2+480)*(28+3+2+800)*60), | ||
112 | .left_margin = 16, | 110 | .left_margin = 16, |
113 | .right_margin = 16, | 111 | .right_margin = 16, |
114 | .upper_margin = 3, | 112 | .upper_margin = 3, |
diff --git a/arch/arm/plat-omap/include/plat/mmc.h b/arch/arm/plat-omap/include/plat/mmc.h index c835f1e994c6..9b89ec601ee2 100644 --- a/arch/arm/plat-omap/include/plat/mmc.h +++ b/arch/arm/plat-omap/include/plat/mmc.h | |||
@@ -122,6 +122,8 @@ struct omap_mmc_platform_data { | |||
122 | /* Call back after enabling / disabling regulators */ | 122 | /* Call back after enabling / disabling regulators */ |
123 | void (*after_set_reg)(struct device *dev, int slot, | 123 | void (*after_set_reg)(struct device *dev, int slot, |
124 | int power_on, int vdd); | 124 | int power_on, int vdd); |
125 | /* if we have special card, init it using this callback */ | ||
126 | void (*init_card)(struct mmc_card *card); | ||
125 | 127 | ||
126 | /* return MMC cover switch state, can be NULL if not supported. | 128 | /* return MMC cover switch state, can be NULL if not supported. |
127 | * | 129 | * |
diff --git a/arch/arm/plat-samsung/include/plat/fb-core.h b/arch/arm/plat-samsung/include/plat/fb-core.h new file mode 100644 index 000000000000..bca383efcf6d --- /dev/null +++ b/arch/arm/plat-samsung/include/plat/fb-core.h | |||
@@ -0,0 +1,29 @@ | |||
1 | /* | ||
2 | * arch/arm/plat-samsung/include/plat/fb-core.h | ||
3 | * | ||
4 | * Copyright 2010 Samsung Electronics Co., Ltd. | ||
5 | * Pawel Osciak <p.osciak@samsung.com> | ||
6 | * | ||
7 | * Samsung framebuffer driver core functions | ||
8 | * | ||
9 | * This program is free software; you can redistribute it and/or modify | ||
10 | * it under the terms of the GNU General Public License version 2 as | ||
11 | * published by the Free Software Foundation. | ||
12 | */ | ||
13 | #ifndef __ASM_PLAT_FB_CORE_H | ||
14 | #define __ASM_PLAT_FB_CORE_H __FILE__ | ||
15 | |||
16 | /* | ||
17 | * These functions are only for use with the core support code, such as | ||
18 | * the CPU-specific initialization code. | ||
19 | */ | ||
20 | |||
21 | /* Re-define device name depending on support. */ | ||
22 | static inline void s3c_fb_setname(char *name) | ||
23 | { | ||
24 | #ifdef CONFIG_S3C_DEV_FB | ||
25 | s3c_device_fb.name = name; | ||
26 | #endif | ||
27 | } | ||
28 | |||
29 | #endif /* __ASM_PLAT_FB_CORE_H */ | ||
diff --git a/arch/arm/plat-samsung/include/plat/fb.h b/arch/arm/plat-samsung/include/plat/fb.h index 27d3b497b55b..cb3ca3adc685 100644 --- a/arch/arm/plat-samsung/include/plat/fb.h +++ b/arch/arm/plat-samsung/include/plat/fb.h | |||
@@ -42,6 +42,7 @@ struct s3c_fb_pd_win { | |||
42 | * @setup_gpio: Setup the external GPIO pins to the right state to transfer | 42 | * @setup_gpio: Setup the external GPIO pins to the right state to transfer |
43 | * the data from the display system to the connected display | 43 | * the data from the display system to the connected display |
44 | * device. | 44 | * device. |
45 | * @default_win: default window layer number to be used for UI layer. | ||
45 | * @vidcon0: The base vidcon0 values to control the panel data format. | 46 | * @vidcon0: The base vidcon0 values to control the panel data format. |
46 | * @vidcon1: The base vidcon1 values to control the panel data output. | 47 | * @vidcon1: The base vidcon1 values to control the panel data output. |
47 | * @win: The setup data for each hardware window, or NULL for unused. | 48 | * @win: The setup data for each hardware window, or NULL for unused. |
@@ -58,6 +59,8 @@ struct s3c_fb_platdata { | |||
58 | 59 | ||
59 | struct s3c_fb_pd_win *win[S3C_FB_MAX_WIN]; | 60 | struct s3c_fb_pd_win *win[S3C_FB_MAX_WIN]; |
60 | 61 | ||
62 | u32 default_win; | ||
63 | |||
61 | u32 vidcon0; | 64 | u32 vidcon0; |
62 | u32 vidcon1; | 65 | u32 vidcon1; |
63 | }; | 66 | }; |
diff --git a/arch/arm/plat-samsung/include/plat/regs-fb-v4.h b/arch/arm/plat-samsung/include/plat/regs-fb-v4.h index 0f43599248ad..4c3647f80057 100644 --- a/arch/arm/plat-samsung/include/plat/regs-fb-v4.h +++ b/arch/arm/plat-samsung/include/plat/regs-fb-v4.h | |||
@@ -40,16 +40,10 @@ | |||
40 | 40 | ||
41 | /* OSD1 and OSD4 do not have register D */ | 41 | /* OSD1 and OSD4 do not have register D */ |
42 | 42 | ||
43 | #define VIDOSD_A(_win) (0x40 + ((_win) * 16)) | 43 | #define VIDOSD_BASE (0x40) |
44 | #define VIDOSD_B(_win) (0x44 + ((_win) * 16)) | ||
45 | #define VIDOSD_C(_win) (0x48 + ((_win) * 16)) | ||
46 | #define VIDOSD_D(_win) (0x4C + ((_win) * 16)) | ||
47 | |||
48 | 44 | ||
49 | #define VIDINTCON0 (0x130) | 45 | #define VIDINTCON0 (0x130) |
50 | 46 | ||
51 | #define WxKEYCONy(_win, _con) ((0x140 + ((_win) * 8)) + ((_con) * 4)) | ||
52 | |||
53 | /* WINCONx */ | 47 | /* WINCONx */ |
54 | 48 | ||
55 | #define WINCONx_CSCWIDTH_MASK (0x3 << 26) | 49 | #define WINCONx_CSCWIDTH_MASK (0x3 << 26) |
@@ -143,76 +137,6 @@ | |||
143 | #define WPALCON_W2PAL_16BPP_A555 (1 << 6) | 137 | #define WPALCON_W2PAL_16BPP_A555 (1 << 6) |
144 | 138 | ||
145 | 139 | ||
146 | /* system specific implementation code for palette sizes, and other | ||
147 | * information that changes depending on which architecture is being | ||
148 | * compiled. | ||
149 | */ | ||
150 | |||
151 | /* return true if window _win has OSD register D */ | ||
152 | #define s3c_fb_has_osd_d(_win) ((_win) != 4 && (_win) != 0) | ||
153 | |||
154 | static inline unsigned int s3c_fb_win_pal_size(unsigned int win) | ||
155 | { | ||
156 | if (win < 2) | ||
157 | return 256; | ||
158 | if (win < 4) | ||
159 | return 16; | ||
160 | if (win == 4) | ||
161 | return 4; | ||
162 | |||
163 | BUG(); /* shouldn't get here */ | ||
164 | } | ||
165 | |||
166 | static inline int s3c_fb_validate_win_bpp(unsigned int win, unsigned int bpp) | ||
167 | { | ||
168 | /* all windows can do 1/2 bpp */ | ||
169 | |||
170 | if ((bpp == 25 || bpp == 19) && win == 0) | ||
171 | return 0; /* win 0 does not have 19 or 25bpp modes */ | ||
172 | |||
173 | if (bpp == 4 && win == 4) | ||
174 | return 0; | ||
175 | |||
176 | if (bpp == 8 && (win >= 3)) | ||
177 | return 0; /* win 3/4 cannot do 8bpp in any mode */ | ||
178 | |||
179 | return 1; | ||
180 | } | ||
181 | |||
182 | static inline int s3c_fb_pal_is16(unsigned int window) | ||
183 | { | ||
184 | return window > 1; | ||
185 | } | ||
186 | |||
187 | struct s3c_fb_palette { | ||
188 | struct fb_bitfield r; | ||
189 | struct fb_bitfield g; | ||
190 | struct fb_bitfield b; | ||
191 | struct fb_bitfield a; | ||
192 | }; | ||
193 | |||
194 | static inline void s3c_fb_init_palette(unsigned int window, | ||
195 | struct s3c_fb_palette *palette) | ||
196 | { | ||
197 | if (window < 2) { | ||
198 | /* Windows 0/1 are 8/8/8 or A/8/8/8 */ | ||
199 | palette->r.offset = 16; | ||
200 | palette->r.length = 8; | ||
201 | palette->g.offset = 8; | ||
202 | palette->g.length = 8; | ||
203 | palette->b.offset = 0; | ||
204 | palette->b.length = 8; | ||
205 | } else { | ||
206 | /* currently we assume RGB 5/6/5 */ | ||
207 | palette->r.offset = 11; | ||
208 | palette->r.length = 5; | ||
209 | palette->g.offset = 5; | ||
210 | palette->g.length = 6; | ||
211 | palette->b.offset = 0; | ||
212 | palette->b.length = 5; | ||
213 | } | ||
214 | } | ||
215 | |||
216 | /* Notes on per-window bpp settings | 140 | /* Notes on per-window bpp settings |
217 | * | 141 | * |
218 | * Value Win0 Win1 Win2 Win3 Win 4 | 142 | * Value Win0 Win1 Win2 Win3 Win 4 |
diff --git a/arch/arm/plat-samsung/include/plat/regs-fb.h b/arch/arm/plat-samsung/include/plat/regs-fb.h index 0ef806e50344..8f39aa5b26ea 100644 --- a/arch/arm/plat-samsung/include/plat/regs-fb.h +++ b/arch/arm/plat-samsung/include/plat/regs-fb.h | |||
@@ -112,6 +112,13 @@ | |||
112 | #define VIDCON2_ORGYCbCr (1 << 8) | 112 | #define VIDCON2_ORGYCbCr (1 << 8) |
113 | #define VIDCON2_YUVORDCrCb (1 << 7) | 113 | #define VIDCON2_YUVORDCrCb (1 << 7) |
114 | 114 | ||
115 | /* PRTCON (S3C6410, S5PC100) | ||
116 | * Might not be present in the S3C6410 documentation, | ||
117 | * but tests prove it's there almost for sure; shouldn't hurt in any case. | ||
118 | */ | ||
119 | #define PRTCON (0x0c) | ||
120 | #define PRTCON_PROTECT (1 << 11) | ||
121 | |||
115 | /* VIDTCON0 */ | 122 | /* VIDTCON0 */ |
116 | 123 | ||
117 | #define VIDTCON0_VBPDE_MASK (0xff << 24) | 124 | #define VIDTCON0_VBPDE_MASK (0xff << 24) |
@@ -173,6 +180,7 @@ | |||
173 | #define WINCONx_BITSWP (1 << 18) | 180 | #define WINCONx_BITSWP (1 << 18) |
174 | #define WINCONx_BYTSWP (1 << 17) | 181 | #define WINCONx_BYTSWP (1 << 17) |
175 | #define WINCONx_HAWSWP (1 << 16) | 182 | #define WINCONx_HAWSWP (1 << 16) |
183 | #define WINCONx_WSWP (1 << 15) | ||
176 | #define WINCONx_BURSTLEN_MASK (0x3 << 9) | 184 | #define WINCONx_BURSTLEN_MASK (0x3 << 9) |
177 | #define WINCONx_BURSTLEN_SHIFT (9) | 185 | #define WINCONx_BURSTLEN_SHIFT (9) |
178 | #define WINCONx_BURSTLEN_16WORD (0x0 << 9) | 186 | #define WINCONx_BURSTLEN_16WORD (0x0 << 9) |
@@ -212,6 +220,13 @@ | |||
212 | #define WINCON1_BPPMODE_25BPP_A1888 (0xd << 2) | 220 | #define WINCON1_BPPMODE_25BPP_A1888 (0xd << 2) |
213 | #define WINCON1_BPPMODE_28BPP_A4888 (0xd << 2) | 221 | #define WINCON1_BPPMODE_28BPP_A4888 (0xd << 2) |
214 | 222 | ||
223 | /* S5PV210 */ | ||
224 | #define SHADOWCON (0x34) | ||
225 | #define SHADOWCON_WINx_PROTECT(_win) (1 << (10 + (_win))) | ||
226 | /* DMA channels (all windows) */ | ||
227 | #define SHADOWCON_CHx_ENABLE(_win) (1 << (_win)) | ||
228 | /* Local input channels (windows 0-2) */ | ||
229 | #define SHADOWCON_CHx_LOCAL_ENABLE(_win) (1 << (5 + (_win))) | ||
215 | 230 | ||
216 | #define VIDOSDxA_TOPLEFT_X_MASK (0x7ff << 11) | 231 | #define VIDOSDxA_TOPLEFT_X_MASK (0x7ff << 11) |
217 | #define VIDOSDxA_TOPLEFT_X_SHIFT (11) | 232 | #define VIDOSDxA_TOPLEFT_X_SHIFT (11) |
@@ -291,11 +306,12 @@ | |||
291 | #define VIDINTCON0_FRAMESEL0_ACTIVE (0x2 << 15) | 306 | #define VIDINTCON0_FRAMESEL0_ACTIVE (0x2 << 15) |
292 | #define VIDINTCON0_FRAMESEL0_FRONTPORCH (0x3 << 15) | 307 | #define VIDINTCON0_FRAMESEL0_FRONTPORCH (0x3 << 15) |
293 | 308 | ||
294 | #define VIDINTCON0_FRAMESEL1 (1 << 14) | 309 | #define VIDINTCON0_FRAMESEL1 (1 << 13) |
295 | #define VIDINTCON0_FRAMESEL1_NONE (0x0 << 14) | 310 | #define VIDINTCON0_FRAMESEL1_MASK (0x3 << 13) |
296 | #define VIDINTCON0_FRAMESEL1_BACKPORCH (0x1 << 14) | 311 | #define VIDINTCON0_FRAMESEL1_NONE (0x0 << 13) |
297 | #define VIDINTCON0_FRAMESEL1_VSYNC (0x2 << 14) | 312 | #define VIDINTCON0_FRAMESEL1_BACKPORCH (0x1 << 13) |
298 | #define VIDINTCON0_FRAMESEL1_FRONTPORCH (0x3 << 14) | 313 | #define VIDINTCON0_FRAMESEL1_VSYNC (0x2 << 13) |
314 | #define VIDINTCON0_FRAMESEL1_FRONTPORCH (0x3 << 13) | ||
299 | 315 | ||
300 | #define VIDINTCON0_INT_FRAME (1 << 12) | 316 | #define VIDINTCON0_INT_FRAME (1 << 12) |
301 | #define VIDINTCON0_FIFIOSEL_MASK (0x7f << 5) | 317 | #define VIDINTCON0_FIFIOSEL_MASK (0x7f << 5) |
@@ -321,6 +337,10 @@ | |||
321 | #define VIDINTCON1_INT_FIFO (1 << 0) | 337 | #define VIDINTCON1_INT_FIFO (1 << 0) |
322 | 338 | ||
323 | /* Window colour-key control registers */ | 339 | /* Window colour-key control registers */ |
340 | #define WKEYCON (0x140) /* 6410,V210 */ | ||
341 | |||
342 | #define WKEYCON0 (0x00) | ||
343 | #define WKEYCON1 (0x04) | ||
324 | 344 | ||
325 | #define WxKEYCON0_KEYBL_EN (1 << 26) | 345 | #define WxKEYCON0_KEYBL_EN (1 << 26) |
326 | #define WxKEYCON0_KEYEN_F (1 << 25) | 346 | #define WxKEYCON0_KEYEN_F (1 << 25) |
diff --git a/arch/arm/plat-samsung/include/plat/regs-usb-hsotg.h b/arch/arm/plat-samsung/include/plat/regs-usb-hsotg.h index 8d18d9d4d148..dc90f5ede88f 100644 --- a/arch/arm/plat-samsung/include/plat/regs-usb-hsotg.h +++ b/arch/arm/plat-samsung/include/plat/regs-usb-hsotg.h | |||
@@ -226,6 +226,7 @@ | |||
226 | 226 | ||
227 | #define S3C_DIEPMSK S3C_HSOTG_REG(0x810) | 227 | #define S3C_DIEPMSK S3C_HSOTG_REG(0x810) |
228 | 228 | ||
229 | #define S3C_DIEPMSK_TxFIFOEmpty (1 << 7) | ||
229 | #define S3C_DIEPMSK_INEPNakEffMsk (1 << 6) | 230 | #define S3C_DIEPMSK_INEPNakEffMsk (1 << 6) |
230 | #define S3C_DIEPMSK_INTknEPMisMsk (1 << 5) | 231 | #define S3C_DIEPMSK_INTknEPMisMsk (1 << 5) |
231 | #define S3C_DIEPMSK_INTknTXFEmpMsk (1 << 4) | 232 | #define S3C_DIEPMSK_INTknTXFEmpMsk (1 << 4) |
@@ -371,6 +372,7 @@ | |||
371 | 372 | ||
372 | #define S3C_DIEPDMA(_a) S3C_HSOTG_REG(0x914 + ((_a) * 0x20)) | 373 | #define S3C_DIEPDMA(_a) S3C_HSOTG_REG(0x914 + ((_a) * 0x20)) |
373 | #define S3C_DOEPDMA(_a) S3C_HSOTG_REG(0xB14 + ((_a) * 0x20)) | 374 | #define S3C_DOEPDMA(_a) S3C_HSOTG_REG(0xB14 + ((_a) * 0x20)) |
375 | #define S3C_DTXFSTS(_a) S3C_HSOTG_REG(0x918 + ((_a) * 0x20)) | ||
374 | 376 | ||
375 | #define S3C_EPFIFO(_a) S3C_HSOTG_REG(0x1000 + ((_a) * 0x1000)) | 377 | #define S3C_EPFIFO(_a) S3C_HSOTG_REG(0x1000 + ((_a) * 0x1000)) |
376 | 378 | ||