diff options
author | Ben Dooks <ben-linux@fluff.org> | 2008-11-19 10:41:31 -0500 |
---|---|---|
committer | Ben Dooks <ben-linux@fluff.org> | 2008-12-15 18:56:53 -0500 |
commit | 58435f7b2d1aa1ca1b08a2eecc36e13291342cfc (patch) | |
tree | a803b1a670d75a1e9c8dd83e72d3106c96dcd624 | |
parent | 1aba834da12989bb769d1dcbf6b0ea29f730c92c (diff) |
[ARM] S3C: Add new FB device definition
Add a device definition for the new S3C framebuffer
driver.
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
-rw-r--r-- | arch/arm/mach-s3c6400/include/mach/map.h | 2 | ||||
-rw-r--r-- | arch/arm/plat-s3c/Kconfig | 6 | ||||
-rw-r--r-- | arch/arm/plat-s3c/Makefile | 1 | ||||
-rw-r--r-- | arch/arm/plat-s3c/dev-fb.c | 72 | ||||
-rw-r--r-- | arch/arm/plat-s3c/include/plat/devs.h | 1 |
5 files changed, 82 insertions, 0 deletions
diff --git a/arch/arm/mach-s3c6400/include/mach/map.h b/arch/arm/mach-s3c6400/include/mach/map.h index 4d5cd7ee8c15..cff27d813fc6 100644 --- a/arch/arm/mach-s3c6400/include/mach/map.h +++ b/arch/arm/mach-s3c6400/include/mach/map.h | |||
@@ -38,6 +38,7 @@ | |||
38 | #define S3C_VA_UART2 S3C_VA_UARTx(2) | 38 | #define S3C_VA_UART2 S3C_VA_UARTx(2) |
39 | #define S3C_VA_UART3 S3C_VA_UARTx(3) | 39 | #define S3C_VA_UART3 S3C_VA_UARTx(3) |
40 | 40 | ||
41 | #define S3C64XX_PA_FB (0x77100000) | ||
41 | #define S3C64XX_PA_SYSCON (0x7E00F000) | 42 | #define S3C64XX_PA_SYSCON (0x7E00F000) |
42 | #define S3C64XX_PA_TIMER (0x7F006000) | 43 | #define S3C64XX_PA_TIMER (0x7F006000) |
43 | #define S3C64XX_PA_IIC0 (0x7F004000) | 44 | #define S3C64XX_PA_IIC0 (0x7F004000) |
@@ -62,5 +63,6 @@ | |||
62 | #define S3C_PA_HSMMC2 S3C64XX_PA_HSMMC2 | 63 | #define S3C_PA_HSMMC2 S3C64XX_PA_HSMMC2 |
63 | #define S3C_PA_IIC S3C64XX_PA_IIC0 | 64 | #define S3C_PA_IIC S3C64XX_PA_IIC0 |
64 | #define S3C_PA_IIC1 S3C64XX_PA_IIC1 | 65 | #define S3C_PA_IIC1 S3C64XX_PA_IIC1 |
66 | #define S3C_PA_FB S3C64XX_PA_FB | ||
65 | 67 | ||
66 | #endif /* __ASM_ARCH_6400_MAP_H */ | 68 | #endif /* __ASM_ARCH_6400_MAP_H */ |
diff --git a/arch/arm/plat-s3c/Kconfig b/arch/arm/plat-s3c/Kconfig index d7a6e487f218..e80a32822d88 100644 --- a/arch/arm/plat-s3c/Kconfig +++ b/arch/arm/plat-s3c/Kconfig | |||
@@ -166,3 +166,9 @@ config S3C_DEV_I2C1 | |||
166 | depends on PLAT_S3C | 166 | depends on PLAT_S3C |
167 | help | 167 | help |
168 | Compile in platform device definitions for I2C channel 1 | 168 | Compile in platform device definitions for I2C channel 1 |
169 | |||
170 | config S3C_DEV_FB | ||
171 | bool | ||
172 | depends on PLAT_S3C | ||
173 | help | ||
174 | Compile in platform device definition for framebuffer | ||
diff --git a/arch/arm/plat-s3c/Makefile b/arch/arm/plat-s3c/Makefile index 3fcee0c44e18..39195f972d5e 100644 --- a/arch/arm/plat-s3c/Makefile +++ b/arch/arm/plat-s3c/Makefile | |||
@@ -24,3 +24,4 @@ obj-$(CONFIG_S3C_DEV_HSMMC) += dev-hsmmc.o | |||
24 | obj-$(CONFIG_S3C_DEV_HSMMC1) += dev-hsmmc1.o | 24 | obj-$(CONFIG_S3C_DEV_HSMMC1) += dev-hsmmc1.o |
25 | obj-y += dev-i2c0.o | 25 | obj-y += dev-i2c0.o |
26 | obj-$(CONFIG_S3C_DEV_I2C1) += dev-i2c1.o | 26 | obj-$(CONFIG_S3C_DEV_I2C1) += dev-i2c1.o |
27 | obj-$(CONFIG_S3C_DEV_FB) += dev-fb.o | ||
diff --git a/arch/arm/plat-s3c/dev-fb.c b/arch/arm/plat-s3c/dev-fb.c new file mode 100644 index 000000000000..0454b8ec02e2 --- /dev/null +++ b/arch/arm/plat-s3c/dev-fb.c | |||
@@ -0,0 +1,72 @@ | |||
1 | /* linux/arch/arm/plat-s3c/dev-fb.c | ||
2 | * | ||
3 | * Copyright 2008 Simtec Electronics | ||
4 | * Ben Dooks <ben@simtec.co.uk> | ||
5 | * http://armlinux.simtec.co.uk/ | ||
6 | * | ||
7 | * S3C series device definition for framebuffer device | ||
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 | |||
14 | #include <linux/kernel.h> | ||
15 | #include <linux/string.h> | ||
16 | #include <linux/platform_device.h> | ||
17 | #include <linux/fb.h> | ||
18 | |||
19 | #include <mach/map.h> | ||
20 | #include <mach/regs-fb.h> | ||
21 | |||
22 | #include <plat/fb.h> | ||
23 | #include <plat/devs.h> | ||
24 | #include <plat/cpu.h> | ||
25 | |||
26 | static struct resource s3c_fb_resource[] = { | ||
27 | [0] = { | ||
28 | .start = S3C_PA_FB, | ||
29 | .end = S3C_PA_FB + SZ_16K - 1, | ||
30 | .flags = IORESOURCE_MEM, | ||
31 | }, | ||
32 | [1] = { | ||
33 | .start = IRQ_LCD_VSYNC, | ||
34 | .end = IRQ_LCD_VSYNC, | ||
35 | .flags = IORESOURCE_IRQ, | ||
36 | }, | ||
37 | [2] = { | ||
38 | .start = IRQ_LCD_FIFO, | ||
39 | .end = IRQ_LCD_FIFO, | ||
40 | .flags = IORESOURCE_IRQ, | ||
41 | }, | ||
42 | [3] = { | ||
43 | .start = IRQ_LCD_SYSTEM, | ||
44 | .end = IRQ_LCD_SYSTEM, | ||
45 | .flags = IORESOURCE_IRQ, | ||
46 | }, | ||
47 | }; | ||
48 | |||
49 | struct platform_device s3c_device_fb = { | ||
50 | .name = "s3c-fb", | ||
51 | .id = -1, | ||
52 | .num_resources = ARRAY_SIZE(s3c_fb_resource), | ||
53 | .resource = s3c_fb_resource, | ||
54 | .dev.dma_mask = &s3c_device_fb.dev.coherent_dma_mask, | ||
55 | .dev.coherent_dma_mask = 0xffffffffUL, | ||
56 | }; | ||
57 | |||
58 | void __init s3c_fb_set_platdata(struct s3c_fb_platdata *pd) | ||
59 | { | ||
60 | struct s3c_fb_platdata *npd; | ||
61 | |||
62 | if (!pd) { | ||
63 | printk(KERN_ERR "%s: no platform data\n", __func__); | ||
64 | return; | ||
65 | } | ||
66 | |||
67 | npd = kmemdup(pd, sizeof(struct s3c_fb_platdata), GFP_KERNEL); | ||
68 | if (!npd) | ||
69 | printk(KERN_ERR "%s: no memory for platform data\n", __func__); | ||
70 | |||
71 | s3c_device_fb.dev.platform_data = npd; | ||
72 | } | ||
diff --git a/arch/arm/plat-s3c/include/plat/devs.h b/arch/arm/plat-s3c/include/plat/devs.h index 0e342d1fafbb..6b1b5231511c 100644 --- a/arch/arm/plat-s3c/include/plat/devs.h +++ b/arch/arm/plat-s3c/include/plat/devs.h | |||
@@ -24,6 +24,7 @@ extern struct platform_device *s3c24xx_uart_src[]; | |||
24 | 24 | ||
25 | extern struct platform_device s3c_device_timer[]; | 25 | extern struct platform_device s3c_device_timer[]; |
26 | 26 | ||
27 | extern struct platform_device s3c_device_fb; | ||
27 | extern struct platform_device s3c_device_usb; | 28 | extern struct platform_device s3c_device_usb; |
28 | extern struct platform_device s3c_device_lcd; | 29 | extern struct platform_device s3c_device_lcd; |
29 | extern struct platform_device s3c_device_wdt; | 30 | extern struct platform_device s3c_device_wdt; |