aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
authorBen Dooks <ben-linux@fluff.org>2010-02-02 20:55:39 -0500
committerBen Dooks <ben-linux@fluff.org>2010-02-02 20:55:39 -0500
commit28db4ed52d329ca06da9fbcc9dcf6c4e25cdcac2 (patch)
treec251b8a7bb53514b87ab29591623b156144f3302 /arch/arm
parent87aef30eb3c5dac0491c83fe3b90bc61f1df24ec (diff)
parent91492b4a04586e7cb191c72de9d1b22545a3ce16 (diff)
ARM: Merge next-samsung-devupdates2
Merge branch 'next-samsung-devupdates2' into next-samsung
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/plat-s3c64xx/Makefile9
-rw-r--r--arch/arm/plat-samsung/Kconfig6
-rw-r--r--arch/arm/plat-samsung/adc.c24
-rw-r--r--arch/arm/plat-samsung/dev-usb-hsotg.c7
-rw-r--r--arch/arm/plat-samsung/include/plat/regs-adc.h1
5 files changed, 40 insertions, 7 deletions
diff --git a/arch/arm/plat-s3c64xx/Makefile b/arch/arm/plat-s3c64xx/Makefile
index 80255a5e1789..33a73f3e9f01 100644
--- a/arch/arm/plat-s3c64xx/Makefile
+++ b/arch/arm/plat-s3c64xx/Makefile
@@ -40,11 +40,16 @@ obj-$(CONFIG_S3C64XX_DMA) += dma.o
40 40
41obj-$(CONFIG_S3C_ADC) += dev-adc.o 41obj-$(CONFIG_S3C_ADC) += dev-adc.o
42 42
43# SPI support
44obj-$(CONFIG_S3C64XX_DEV_SPI) += dev-spi.o
45
46# Device support
47obj-y += dev-audio.o
48
43# Device setup 49# Device setup
44 50
45obj-$(CONFIG_S3C64XX_SETUP_I2C0) += setup-i2c0.o 51obj-$(CONFIG_S3C64XX_SETUP_I2C0) += setup-i2c0.o
46obj-$(CONFIG_S3C64XX_SETUP_I2C1) += setup-i2c1.o 52obj-$(CONFIG_S3C64XX_SETUP_I2C1) += setup-i2c1.o
47obj-$(CONFIG_S3C64XX_SETUP_FB_24BPP) += setup-fb-24bpp.o 53obj-$(CONFIG_S3C64XX_SETUP_FB_24BPP) += setup-fb-24bpp.o
48obj-$(CONFIG_S3C64XX_SETUP_SDHCI_GPIO) += setup-sdhci-gpio.o 54obj-$(CONFIG_S3C64XX_SETUP_SDHCI_GPIO) += setup-sdhci-gpio.o
49obj-$(CONFIG_SND_S3C24XX_SOC) += dev-audio.o 55
50obj-$(CONFIG_SPI_S3C64XX) += dev-spi.o
diff --git a/arch/arm/plat-samsung/Kconfig b/arch/arm/plat-samsung/Kconfig
index 1c2fe91c23e9..72da6461db12 100644
--- a/arch/arm/plat-samsung/Kconfig
+++ b/arch/arm/plat-samsung/Kconfig
@@ -132,6 +132,12 @@ config S3C_DEV_NAND
132 help 132 help
133 Compile in platform device definition for NAND controller 133 Compile in platform device definition for NAND controller
134 134
135config S3C64XX_DEV_SPI
136 bool
137 help
138 Compile in platform device definitions for S3C64XX's type
139 SPI controllers.
140
135comment "Power management" 141comment "Power management"
136 142
137config SAMSUNG_PM_DEBUG 143config SAMSUNG_PM_DEBUG
diff --git a/arch/arm/plat-samsung/adc.c b/arch/arm/plat-samsung/adc.c
index c7659b7378b1..81caf2135721 100644
--- a/arch/arm/plat-samsung/adc.c
+++ b/arch/arm/plat-samsung/adc.c
@@ -262,6 +262,7 @@ static irqreturn_t s3c_adc_irq(int irq, void *pw)
262{ 262{
263 struct adc_device *adc = pw; 263 struct adc_device *adc = pw;
264 struct s3c_adc_client *client = adc->cur; 264 struct s3c_adc_client *client = adc->cur;
265 enum s3c_cpu_type cpu = platform_get_device_id(adc->pdev)->driver_data;
265 unsigned long flags; 266 unsigned long flags;
266 unsigned data0, data1; 267 unsigned data0, data1;
267 268
@@ -276,9 +277,17 @@ static irqreturn_t s3c_adc_irq(int irq, void *pw)
276 277
277 client->nr_samples--; 278 client->nr_samples--;
278 279
280 if (cpu == TYPE_S3C64XX) {
281 /* S3C64XX ADC resolution is 12-bit */
282 data0 &= 0xfff;
283 data1 &= 0xfff;
284 } else {
285 data0 &= 0x3ff;
286 data1 &= 0x3ff;
287 }
288
279 if (client->convert_cb) 289 if (client->convert_cb)
280 (client->convert_cb)(client, data0 & 0x3ff, data1 & 0x3ff, 290 (client->convert_cb)(client, data0, data1, &client->nr_samples);
281 &client->nr_samples);
282 291
283 if (client->nr_samples > 0) { 292 if (client->nr_samples > 0) {
284 /* fire another conversion for this */ 293 /* fire another conversion for this */
@@ -295,7 +304,7 @@ static irqreturn_t s3c_adc_irq(int irq, void *pw)
295 } 304 }
296 305
297exit: 306exit:
298 if (platform_get_device_id(adc->pdev)->driver_data == TYPE_S3C64XX) { 307 if (cpu == TYPE_S3C64XX) {
299 /* Clear ADC interrupt */ 308 /* Clear ADC interrupt */
300 writel(0, adc->regs + S3C64XX_ADCCLRINT); 309 writel(0, adc->regs + S3C64XX_ADCCLRINT);
301 } 310 }
@@ -308,6 +317,7 @@ static int s3c_adc_probe(struct platform_device *pdev)
308 struct adc_device *adc; 317 struct adc_device *adc;
309 struct resource *regs; 318 struct resource *regs;
310 int ret; 319 int ret;
320 unsigned tmp;
311 321
312 adc = kzalloc(sizeof(struct adc_device), GFP_KERNEL); 322 adc = kzalloc(sizeof(struct adc_device), GFP_KERNEL);
313 if (adc == NULL) { 323 if (adc == NULL) {
@@ -354,8 +364,12 @@ static int s3c_adc_probe(struct platform_device *pdev)
354 364
355 clk_enable(adc->clk); 365 clk_enable(adc->clk);
356 366
357 writel(adc->prescale | S3C2410_ADCCON_PRSCEN, 367 tmp = adc->prescale | S3C2410_ADCCON_PRSCEN;
358 adc->regs + S3C2410_ADCCON); 368 if (platform_get_device_id(pdev)->driver_data == TYPE_S3C64XX) {
369 /* Enable 12-bit ADC resolution */
370 tmp |= S3C64XX_ADCCON_RESSEL;
371 }
372 writel(tmp, adc->regs + S3C2410_ADCCON);
359 373
360 dev_info(dev, "attached adc driver\n"); 374 dev_info(dev, "attached adc driver\n");
361 375
diff --git a/arch/arm/plat-samsung/dev-usb-hsotg.c b/arch/arm/plat-samsung/dev-usb-hsotg.c
index e2f604b51c86..33a844ab6917 100644
--- a/arch/arm/plat-samsung/dev-usb-hsotg.c
+++ b/arch/arm/plat-samsung/dev-usb-hsotg.c
@@ -14,6 +14,7 @@
14#include <linux/kernel.h> 14#include <linux/kernel.h>
15#include <linux/string.h> 15#include <linux/string.h>
16#include <linux/platform_device.h> 16#include <linux/platform_device.h>
17#include <linux/dma-mapping.h>
17 18
18#include <mach/irqs.h> 19#include <mach/irqs.h>
19#include <mach/map.h> 20#include <mach/map.h>
@@ -33,9 +34,15 @@ static struct resource s3c_usb_hsotg_resources[] = {
33 }, 34 },
34}; 35};
35 36
37static u64 s3c_hsotg_dmamask = DMA_BIT_MASK(32);
38
36struct platform_device s3c_device_usb_hsotg = { 39struct platform_device s3c_device_usb_hsotg = {
37 .name = "s3c-hsotg", 40 .name = "s3c-hsotg",
38 .id = -1, 41 .id = -1,
39 .num_resources = ARRAY_SIZE(s3c_usb_hsotg_resources), 42 .num_resources = ARRAY_SIZE(s3c_usb_hsotg_resources),
40 .resource = s3c_usb_hsotg_resources, 43 .resource = s3c_usb_hsotg_resources,
44 .dev = {
45 .dma_mask = &s3c_hsotg_dmamask,
46 .coherent_dma_mask = DMA_BIT_MASK(32),
47 },
41}; 48};
diff --git a/arch/arm/plat-samsung/include/plat/regs-adc.h b/arch/arm/plat-samsung/include/plat/regs-adc.h
index f43c8dab39e4..7554c4fcddb9 100644
--- a/arch/arm/plat-samsung/include/plat/regs-adc.h
+++ b/arch/arm/plat-samsung/include/plat/regs-adc.h
@@ -25,6 +25,7 @@
25 25
26 26
27/* ADCCON Register Bits */ 27/* ADCCON Register Bits */
28#define S3C64XX_ADCCON_RESSEL (1<<16)
28#define S3C2410_ADCCON_ECFLG (1<<15) 29#define S3C2410_ADCCON_ECFLG (1<<15)
29#define S3C2410_ADCCON_PRSCEN (1<<14) 30#define S3C2410_ADCCON_PRSCEN (1<<14)
30#define S3C2410_ADCCON_PRSCVL(x) (((x)&0xFF)<<6) 31#define S3C2410_ADCCON_PRSCVL(x) (((x)&0xFF)<<6)