mirror of https://gitee.com/openkylin/linux.git
ARM: Merge next-samsung-devupdates2
Merge branch 'next-samsung-devupdates2' into next-samsung
This commit is contained in:
commit
28db4ed52d
|
@ -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
|
||||||
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)
|
||||||
{
|
{
|
||||||
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)
|
||||||
|
|
||||||
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)
|
||||||
}
|
}
|
||||||
|
|
||||||
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)
|
||||||
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)
|
||||||
|
|
||||||
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 @@
|
||||||
#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[] = {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
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 @@
|
||||||
|
|
||||||
|
|
||||||
/* 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
|
||||||
|
|
||||||
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
|
||||||
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
|
||||||
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
|
||||||
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
|
||||||
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 = {
|
||||||
.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,
|
||||||
|
|
Loading…
Reference in New Issue