Commit 28db4ed5 authored by Ben Dooks's avatar Ben Dooks

ARM: Merge next-samsung-devupdates2

Merge branch 'next-samsung-devupdates2' into next-samsung
parents 87aef30e 91492b4a
...@@ -40,11 +40,16 @@ obj-$(CONFIG_S3C64XX_DMA) += dma.o ...@@ -40,11 +40,16 @@ obj-$(CONFIG_S3C64XX_DMA) += dma.o
obj-$(CONFIG_S3C_ADC) += dev-adc.o obj-$(CONFIG_S3C_ADC) += dev-adc.o
# SPI support
obj-$(CONFIG_S3C64XX_DEV_SPI) += dev-spi.o
# Device support
obj-y += dev-audio.o
# Device setup # Device setup
obj-$(CONFIG_S3C64XX_SETUP_I2C0) += setup-i2c0.o obj-$(CONFIG_S3C64XX_SETUP_I2C0) += setup-i2c0.o
obj-$(CONFIG_S3C64XX_SETUP_I2C1) += setup-i2c1.o obj-$(CONFIG_S3C64XX_SETUP_I2C1) += setup-i2c1.o
obj-$(CONFIG_S3C64XX_SETUP_FB_24BPP) += setup-fb-24bpp.o obj-$(CONFIG_S3C64XX_SETUP_FB_24BPP) += setup-fb-24bpp.o
obj-$(CONFIG_S3C64XX_SETUP_SDHCI_GPIO) += setup-sdhci-gpio.o obj-$(CONFIG_S3C64XX_SETUP_SDHCI_GPIO) += setup-sdhci-gpio.o
obj-$(CONFIG_SND_S3C24XX_SOC) += dev-audio.o
obj-$(CONFIG_SPI_S3C64XX) += dev-spi.o
...@@ -132,6 +132,12 @@ config S3C_DEV_NAND ...@@ -132,6 +132,12 @@ config S3C_DEV_NAND
help help
Compile in platform device definition for NAND controller Compile in platform device definition for NAND controller
config S3C64XX_DEV_SPI
bool
help
Compile in platform device definitions for S3C64XX's type
SPI controllers.
comment "Power management" comment "Power management"
config SAMSUNG_PM_DEBUG config SAMSUNG_PM_DEBUG
......
...@@ -262,6 +262,7 @@ static irqreturn_t s3c_adc_irq(int irq, void *pw) ...@@ -262,6 +262,7 @@ static irqreturn_t s3c_adc_irq(int irq, void *pw)
{ {
struct adc_device *adc = pw; struct adc_device *adc = pw;
struct s3c_adc_client *client = adc->cur; struct s3c_adc_client *client = adc->cur;
enum s3c_cpu_type cpu = platform_get_device_id(adc->pdev)->driver_data;
unsigned long flags; unsigned long flags;
unsigned data0, data1; unsigned data0, data1;
...@@ -276,9 +277,17 @@ static irqreturn_t s3c_adc_irq(int irq, void *pw) ...@@ -276,9 +277,17 @@ static irqreturn_t s3c_adc_irq(int irq, void *pw)
client->nr_samples--; client->nr_samples--;
if (cpu == TYPE_S3C64XX) {
/* S3C64XX ADC resolution is 12-bit */
data0 &= 0xfff;
data1 &= 0xfff;
} else {
data0 &= 0x3ff;
data1 &= 0x3ff;
}
if (client->convert_cb) if (client->convert_cb)
(client->convert_cb)(client, data0 & 0x3ff, data1 & 0x3ff, (client->convert_cb)(client, data0, data1, &client->nr_samples);
&client->nr_samples);
if (client->nr_samples > 0) { if (client->nr_samples > 0) {
/* fire another conversion for this */ /* fire another conversion for this */
...@@ -295,7 +304,7 @@ static irqreturn_t s3c_adc_irq(int irq, void *pw) ...@@ -295,7 +304,7 @@ static irqreturn_t s3c_adc_irq(int irq, void *pw)
} }
exit: exit:
if (platform_get_device_id(adc->pdev)->driver_data == TYPE_S3C64XX) { if (cpu == TYPE_S3C64XX) {
/* Clear ADC interrupt */ /* Clear ADC interrupt */
writel(0, adc->regs + S3C64XX_ADCCLRINT); writel(0, adc->regs + S3C64XX_ADCCLRINT);
} }
...@@ -308,6 +317,7 @@ static int s3c_adc_probe(struct platform_device *pdev) ...@@ -308,6 +317,7 @@ static int s3c_adc_probe(struct platform_device *pdev)
struct adc_device *adc; struct adc_device *adc;
struct resource *regs; struct resource *regs;
int ret; int ret;
unsigned tmp;
adc = kzalloc(sizeof(struct adc_device), GFP_KERNEL); adc = kzalloc(sizeof(struct adc_device), GFP_KERNEL);
if (adc == NULL) { if (adc == NULL) {
...@@ -354,8 +364,12 @@ static int s3c_adc_probe(struct platform_device *pdev) ...@@ -354,8 +364,12 @@ static int s3c_adc_probe(struct platform_device *pdev)
clk_enable(adc->clk); clk_enable(adc->clk);
writel(adc->prescale | S3C2410_ADCCON_PRSCEN, tmp = adc->prescale | S3C2410_ADCCON_PRSCEN;
adc->regs + S3C2410_ADCCON); if (platform_get_device_id(pdev)->driver_data == TYPE_S3C64XX) {
/* Enable 12-bit ADC resolution */
tmp |= S3C64XX_ADCCON_RESSEL;
}
writel(tmp, adc->regs + S3C2410_ADCCON);
dev_info(dev, "attached adc driver\n"); dev_info(dev, "attached adc driver\n");
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/string.h> #include <linux/string.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/dma-mapping.h>
#include <mach/irqs.h> #include <mach/irqs.h>
#include <mach/map.h> #include <mach/map.h>
...@@ -33,9 +34,15 @@ static struct resource s3c_usb_hsotg_resources[] = { ...@@ -33,9 +34,15 @@ static struct resource s3c_usb_hsotg_resources[] = {
}, },
}; };
static u64 s3c_hsotg_dmamask = DMA_BIT_MASK(32);
struct platform_device s3c_device_usb_hsotg = { struct platform_device s3c_device_usb_hsotg = {
.name = "s3c-hsotg", .name = "s3c-hsotg",
.id = -1, .id = -1,
.num_resources = ARRAY_SIZE(s3c_usb_hsotg_resources), .num_resources = ARRAY_SIZE(s3c_usb_hsotg_resources),
.resource = s3c_usb_hsotg_resources, .resource = s3c_usb_hsotg_resources,
.dev = {
.dma_mask = &s3c_hsotg_dmamask,
.coherent_dma_mask = DMA_BIT_MASK(32),
},
}; };
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
/* ADCCON Register Bits */ /* ADCCON Register Bits */
#define S3C64XX_ADCCON_RESSEL (1<<16)
#define S3C2410_ADCCON_ECFLG (1<<15) #define S3C2410_ADCCON_ECFLG (1<<15)
#define S3C2410_ADCCON_PRSCEN (1<<14) #define S3C2410_ADCCON_PRSCEN (1<<14)
#define S3C2410_ADCCON_PRSCVL(x) (((x)&0xFF)<<6) #define S3C2410_ADCCON_PRSCVL(x) (((x)&0xFF)<<6)
......
...@@ -447,7 +447,7 @@ config SERIAL_CLPS711X_CONSOLE ...@@ -447,7 +447,7 @@ config SERIAL_CLPS711X_CONSOLE
config SERIAL_SAMSUNG config SERIAL_SAMSUNG
tristate "Samsung SoC serial support" tristate "Samsung SoC serial support"
depends on ARM && PLAT_S3C depends on ARM && PLAT_SAMSUNG
select SERIAL_CORE select SERIAL_CORE
help help
Support for the on-chip UARTs on the Samsung S3C24XX series CPUs, Support for the on-chip UARTs on the Samsung S3C24XX series CPUs,
...@@ -455,11 +455,18 @@ config SERIAL_SAMSUNG ...@@ -455,11 +455,18 @@ config SERIAL_SAMSUNG
provide all of these ports, depending on how the serial port provide all of these ports, depending on how the serial port
pins are configured. pins are configured.
config SERIAL_SAMSUNG_UARTS_4
bool
depends on ARM && PLAT_SAMSUNG
default y if CPU_S3C2443
help
Internal node for the common case of 4 Samsung compatible UARTs
config SERIAL_SAMSUNG_UARTS config SERIAL_SAMSUNG_UARTS
int int
depends on ARM && PLAT_S3C depends on ARM && PLAT_SAMSUNG
default 2 if ARCH_S3C2400 default 2 if ARCH_S3C2400
default 4 if ARCH_S5P6440 || ARCH_S5PC1XX || ARCH_S5PV210 || ARCH_S3C64XX || CPU_S3C2443 default 4 if SERIAL_SAMSUNG_UARTS_4
default 3 default 3
help help
Select the number of available UART ports for the Samsung S3C Select the number of available UART ports for the Samsung S3C
...@@ -526,8 +533,9 @@ config SERIAL_S3C24A0 ...@@ -526,8 +533,9 @@ config SERIAL_S3C24A0
Serial port support for the Samsung S3C24A0 SoC Serial port support for the Samsung S3C24A0 SoC
config SERIAL_S3C6400 config SERIAL_S3C6400
tristate "Samsung S3C6400/S3C6410/S5P6440 Serial port support" tristate "Samsung S3C6400/S3C6410/S5P6440 Seria port support"
depends on SERIAL_SAMSUNG && (CPU_S3C6400 || CPU_S3C6410 || CPU_S5P6440) depends on SERIAL_SAMSUNG && (CPU_S3C6400 || CPU_S3C6410 || CPU_S5P6440)
select SERIAL_SAMSUNG_UARTS_4
default y default y
help help
Serial port support for the Samsung S3C6400, S3C6410 and S5P6440 Serial port support for the Samsung S3C6400, S3C6410 and S5P6440
...@@ -536,6 +544,7 @@ config SERIAL_S3C6400 ...@@ -536,6 +544,7 @@ config SERIAL_S3C6400
config SERIAL_S5PC100 config SERIAL_S5PC100
tristate "Samsung S5PC100 Serial port support" tristate "Samsung S5PC100 Serial port support"
depends on SERIAL_SAMSUNG && CPU_S5PC100 depends on SERIAL_SAMSUNG && CPU_S5PC100
select SERIAL_SAMSUNG_UARTS_4
default y default y
help help
Serial port support for the Samsung S5PC100 SoCs Serial port support for the Samsung S5PC100 SoCs
...@@ -543,6 +552,7 @@ config SERIAL_S5PC100 ...@@ -543,6 +552,7 @@ config SERIAL_S5PC100
config SERIAL_S5PV210 config SERIAL_S5PV210
tristate "Samsung S5PV210 Serial port support" tristate "Samsung S5PV210 Serial port support"
depends on SERIAL_SAMSUNG && CPU_S5PV210 depends on SERIAL_SAMSUNG && CPU_S5PV210
select SERIAL_SAMSUNG_UARTS_4
default y default y
help help
Serial port support for Samsung's S5P Family of SoC's Serial port support for Samsung's S5P Family of SoC's
......
...@@ -102,6 +102,7 @@ static struct s3c24xx_uart_info s3c2412_uart_inf = { ...@@ -102,6 +102,7 @@ static struct s3c24xx_uart_info s3c2412_uart_inf = {
.name = "Samsung S3C2412 UART", .name = "Samsung S3C2412 UART",
.type = PORT_S3C2412, .type = PORT_S3C2412,
.fifosize = 64, .fifosize = 64,
.has_divslot = 1,
.rx_fifomask = S3C2440_UFSTAT_RXMASK, .rx_fifomask = S3C2440_UFSTAT_RXMASK,
.rx_fifoshift = S3C2440_UFSTAT_RXSHIFT, .rx_fifoshift = S3C2440_UFSTAT_RXSHIFT,
.rx_fifofull = S3C2440_UFSTAT_RXFULL, .rx_fifofull = S3C2440_UFSTAT_RXFULL,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment