mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-05 10:29:37 +00:00
Merge branch 'samsung/board' into next/boards
* samsung/board: ARM: S3C64XX: Hook up VDDINT on Cragganmore ARM: S3C2440: Add new LCD (W35i) support for Mini2440 board ARM: S3C64XX: Power gate unused domains ARM: S3C64XX: Hook up Littlemill audio card on Cragganmore ARM: S3C64XX: Hook up platform data for Kilchomin module on Cragganmore ARM: S3C64XX: Run Tobermory interrupts in the default mode ARM: S3C64XX: Improve logging of unknown Cragganmore module types ARM: S3C64XX: Configure WM1250 EV1 GPIOs on Cragganmore ARM: S3C64XX: Use software initiated powerdown for Cragganmore ARM: S3C64XX: Raise the frequency of the second I2C bus on Cragganmore ARM: S3C64XX: Correct reservation of GPIOs for CPU module on Cragganmore ARM: SAMSUNG: Fix GPIO space reservation for S3C64xx platforms ARM: S3C64XX: Update for conversion to SAMSUNG_GPIO_EXTRA Conflicts: arch/arm/mach-s3c64xx/mach-crag6410.c
This commit is contained in:
commit
8df97495c1
9 changed files with 139 additions and 13 deletions
|
@ -167,6 +167,24 @@ static struct s3c2410fb_display mini2440_lcd_cfg[] __initdata = {
|
|||
.lcdcon5 = (S3C2410_LCDCON5_FRM565 |
|
||||
S3C2410_LCDCON5_HWSWP),
|
||||
},
|
||||
/* mini2440 + 3.5" TFT (LCD-W35i, LQ035Q1DG06 type) + touchscreen*/
|
||||
[3] = {
|
||||
_LCD_DECLARE(
|
||||
/* clock */
|
||||
7,
|
||||
/* xres, margin_right, margin_left, hsync */
|
||||
320, 68, 66, 4,
|
||||
/* yres, margin_top, margin_bottom, vsync */
|
||||
240, 4, 4, 9,
|
||||
/* refresh rate */
|
||||
60),
|
||||
.lcdcon5 = (S3C2410_LCDCON5_FRM565 |
|
||||
S3C2410_LCDCON5_INVVDEN |
|
||||
S3C2410_LCDCON5_INVVFRAME |
|
||||
S3C2410_LCDCON5_INVVLINE |
|
||||
S3C2410_LCDCON5_INVVCLK |
|
||||
S3C2410_LCDCON5_HWSWP),
|
||||
},
|
||||
};
|
||||
|
||||
/* todo - put into gpio header */
|
||||
|
|
|
@ -188,7 +188,7 @@ config SMDK6410_WM1190_EV1
|
|||
depends on MACH_SMDK6410
|
||||
select REGULATOR
|
||||
select REGULATOR_WM8350
|
||||
select S3C24XX_GPIO_EXTRA64
|
||||
select SAMSUNG_GPIO_EXTRA64
|
||||
select MFD_WM8350_I2C
|
||||
select MFD_WM8350_CONFIG_MODE_0
|
||||
select MFD_WM8350_CONFIG_MODE_3
|
||||
|
@ -206,7 +206,7 @@ config SMDK6410_WM1192_EV1
|
|||
depends on MACH_SMDK6410
|
||||
select REGULATOR
|
||||
select REGULATOR_WM831X
|
||||
select S3C24XX_GPIO_EXTRA64
|
||||
select SAMSUNG_GPIO_EXTRA64
|
||||
select MFD_WM831X
|
||||
select MFD_WM831X_I2C
|
||||
help
|
||||
|
@ -287,7 +287,7 @@ config MACH_WLF_CRAGG_6410
|
|||
select S3C_DEV_WDT
|
||||
select S3C_DEV_RTC
|
||||
select S3C64XX_DEV_SPI
|
||||
select S3C24XX_GPIO_EXTRA128
|
||||
select SAMSUNG_GPIO_EXTRA128
|
||||
select I2C
|
||||
help
|
||||
Machine support for the Wolfson Cragganmore S3C6410 variant.
|
||||
|
|
|
@ -15,9 +15,11 @@
|
|||
|
||||
#define BANFF_PMIC_IRQ_BASE IRQ_BOARD_START
|
||||
#define GLENFARCLAS_PMIC_IRQ_BASE (IRQ_BOARD_START + 64)
|
||||
#define CODEC_IRQ_BASE (IRQ_BOARD_START + 128)
|
||||
|
||||
#define PCA935X_GPIO_BASE GPIO_BOARD_START
|
||||
#define CODEC_GPIO_BASE (GPIO_BOARD_START + 8)
|
||||
#define GLENFARCLAS_PMIC_GPIO_BASE (GPIO_BOARD_START + 16)
|
||||
#define CODEC_GPIO_BASE (GPIO_BOARD_START + 8)
|
||||
#define GLENFARCLAS_PMIC_GPIO_BASE (GPIO_BOARD_START + 32)
|
||||
#define BANFF_PMIC_GPIO_BASE (GPIO_BOARD_START + 64)
|
||||
|
||||
#endif
|
||||
|
|
|
@ -88,6 +88,6 @@ enum s3c_gpio_number {
|
|||
/* define the number of gpios we need to the one after the GPQ() range */
|
||||
#define GPIO_BOARD_START (S3C64XX_GPQ(S3C64XX_GPIO_Q_NR) + 1)
|
||||
|
||||
#define BOARD_NR_GPIOS 16
|
||||
#define BOARD_NR_GPIOS (16 + CONFIG_SAMSUNG_GPIO_EXTRA)
|
||||
|
||||
#define ARCH_NR_GPIOS (GPIO_BOARD_START + BOARD_NR_GPIOS)
|
||||
|
|
|
@ -169,7 +169,7 @@
|
|||
#define IRQ_BOARD_START (IRQ_EINT_GROUP9_BASE + IRQ_EINT_GROUP9_NR + 1)
|
||||
|
||||
#ifdef CONFIG_MACH_WLF_CRAGG_6410
|
||||
#define IRQ_BOARD_NR 128
|
||||
#define IRQ_BOARD_NR 160
|
||||
#elif defined(CONFIG_SMDK6410_WM1190_EV1)
|
||||
#define IRQ_BOARD_NR 64
|
||||
#elif defined(CONFIG_SMDK6410_WM1192_EV1)
|
||||
|
|
|
@ -14,13 +14,43 @@
|
|||
|
||||
#include <linux/mfd/wm831x/irq.h>
|
||||
#include <linux/mfd/wm831x/gpio.h>
|
||||
#include <linux/mfd/wm8994/pdata.h>
|
||||
|
||||
#include <sound/wm5100.h>
|
||||
#include <sound/wm8996.h>
|
||||
#include <sound/wm8962.h>
|
||||
#include <sound/wm9081.h>
|
||||
|
||||
#include <mach/crag6410.h>
|
||||
|
||||
static struct wm5100_pdata wm5100_pdata = {
|
||||
.ldo_ena = S3C64XX_GPN(7),
|
||||
.irq_flags = IRQF_TRIGGER_HIGH,
|
||||
.gpio_base = CODEC_GPIO_BASE,
|
||||
|
||||
.in_mode = {
|
||||
WM5100_IN_DIFF,
|
||||
WM5100_IN_DIFF,
|
||||
WM5100_IN_DIFF,
|
||||
WM5100_IN_SE,
|
||||
},
|
||||
|
||||
.hp_pol = CODEC_GPIO_BASE + 3,
|
||||
.jack_modes = {
|
||||
{ WM5100_MICDET_MICBIAS3, 0, 0 },
|
||||
{ WM5100_MICDET_MICBIAS2, 1, 1 },
|
||||
},
|
||||
|
||||
.gpio_defaults = {
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0x2, /* IRQ: CMOS output */
|
||||
0x3, /* CLKOUT: CMOS output */
|
||||
},
|
||||
};
|
||||
|
||||
static struct wm8996_retune_mobile_config wm8996_retune[] = {
|
||||
{
|
||||
.name = "Sub LPF",
|
||||
|
@ -72,7 +102,6 @@ static struct wm8962_pdata wm8962_pdata __initdata = {
|
|||
0x8000 | WM8962_GPIO_FN_DMICDAT,
|
||||
WM8962_GPIO_FN_IRQ, /* Open drain mode */
|
||||
},
|
||||
.irq_active_low = true,
|
||||
};
|
||||
|
||||
static struct wm9081_pdata wm9081_pdata __initdata = {
|
||||
|
@ -91,6 +120,7 @@ static const struct i2c_board_info wm1254_devs[] = {
|
|||
|
||||
static const struct i2c_board_info wm1255_devs[] = {
|
||||
{ I2C_BOARD_INFO("wm5100", 0x1a),
|
||||
.platform_data = &wm5100_pdata,
|
||||
.irq = GLENFARCLAS_PMIC_IRQ_BASE + WM831X_IRQ_GPIO_2,
|
||||
},
|
||||
{ I2C_BOARD_INFO("wm9081", 0x6c),
|
||||
|
@ -104,6 +134,24 @@ static const struct i2c_board_info wm1259_devs[] = {
|
|||
},
|
||||
};
|
||||
|
||||
static struct wm8994_pdata wm8994_pdata = {
|
||||
.gpio_base = CODEC_GPIO_BASE,
|
||||
.gpio_defaults = {
|
||||
0x3, /* IRQ out, active high, CMOS */
|
||||
},
|
||||
.irq_base = CODEC_IRQ_BASE,
|
||||
.ldo = {
|
||||
{ .supply = "WALLVDD" },
|
||||
{ .supply = "WALLVDD" },
|
||||
},
|
||||
};
|
||||
|
||||
static const struct i2c_board_info wm1277_devs[] = {
|
||||
{ I2C_BOARD_INFO("wm8958", 0x1a), /* WM8958 is the superset */
|
||||
.platform_data = &wm8994_pdata,
|
||||
.irq = GLENFARCLAS_PMIC_IRQ_BASE + WM831X_IRQ_GPIO_2,
|
||||
},
|
||||
};
|
||||
|
||||
static __devinitdata const struct {
|
||||
u8 id;
|
||||
|
@ -125,6 +173,8 @@ static __devinitdata const struct {
|
|||
{ .id = 0x3b, .name = "1255-EV1 Kilchoman",
|
||||
.i2c_devs = wm1255_devs, .num_i2c_devs = ARRAY_SIZE(wm1255_devs) },
|
||||
{ .id = 0x3c, .name = "1273-EV1 Longmorn" },
|
||||
{ .id = 0x3d, .name = "1277-EV1 Littlemill",
|
||||
.i2c_devs = wm1277_devs, .num_i2c_devs = ARRAY_SIZE(wm1277_devs) },
|
||||
};
|
||||
|
||||
static __devinit int wlf_gf_module_probe(struct i2c_client *i2c,
|
||||
|
@ -154,8 +204,8 @@ static __devinit int wlf_gf_module_probe(struct i2c_client *i2c,
|
|||
"Failed to register dev: %d\n", ret);
|
||||
}
|
||||
} else {
|
||||
dev_warn(&i2c->dev, "Unknown module ID %d revision %d\n",
|
||||
id, rev);
|
||||
dev_warn(&i2c->dev, "Unknown module ID 0x%x revision %d\n",
|
||||
id, rev + 1);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -37,6 +37,8 @@
|
|||
#include <linux/mfd/wm831x/irq.h>
|
||||
#include <linux/mfd/wm831x/gpio.h>
|
||||
|
||||
#include <sound/wm1250-ev1.h>
|
||||
|
||||
#include <asm/hardware/vic.h>
|
||||
#include <asm/mach/arch.h>
|
||||
#include <asm/mach-types.h>
|
||||
|
@ -288,6 +290,11 @@ static struct platform_device speyside_wm8962_device = {
|
|||
.id = -1,
|
||||
};
|
||||
|
||||
static struct platform_device littlemill_device = {
|
||||
.name = "littlemill",
|
||||
.id = -1,
|
||||
};
|
||||
|
||||
static struct regulator_consumer_supply wallvdd_consumers[] = {
|
||||
REGULATOR_SUPPLY("SPKVDD1", "1-001a"),
|
||||
REGULATOR_SUPPLY("SPKVDD2", "1-001a"),
|
||||
|
@ -340,6 +347,7 @@ static struct platform_device *crag6410_devices[] __initdata = {
|
|||
&crag6410_backlight_device,
|
||||
&speyside_device,
|
||||
&speyside_wm8962_device,
|
||||
&littlemill_device,
|
||||
&lowland_device,
|
||||
&wallvdd_device,
|
||||
};
|
||||
|
@ -373,6 +381,10 @@ static struct regulator_init_data vddarm __initdata = {
|
|||
.driver_data = &vddarm_pdata,
|
||||
};
|
||||
|
||||
static struct regulator_consumer_supply vddint_consumers[] __initdata = {
|
||||
REGULATOR_SUPPLY("vddint", NULL),
|
||||
};
|
||||
|
||||
static struct regulator_init_data vddint __initdata = {
|
||||
.constraints = {
|
||||
.name = "VDDINT",
|
||||
|
@ -381,6 +393,9 @@ static struct regulator_init_data vddint __initdata = {
|
|||
.always_on = 1,
|
||||
.valid_ops_mask = REGULATOR_CHANGE_VOLTAGE,
|
||||
},
|
||||
.num_consumer_supplies = ARRAY_SIZE(vddint_consumers),
|
||||
.consumer_supplies = vddint_consumers,
|
||||
.supply_regulator = "WALLVDD",
|
||||
};
|
||||
|
||||
static struct regulator_init_data vddmem __initdata = {
|
||||
|
@ -501,7 +516,8 @@ static struct wm831x_touch_pdata touch_pdata __initdata = {
|
|||
static struct wm831x_pdata crag_pmic_pdata __initdata = {
|
||||
.wm831x_num = 1,
|
||||
.irq_base = BANFF_PMIC_IRQ_BASE,
|
||||
.gpio_base = GPIO_BOARD_START + 8,
|
||||
.gpio_base = BANFF_PMIC_GPIO_BASE,
|
||||
.soft_shutdown = true,
|
||||
|
||||
.backup = &banff_backup_pdata,
|
||||
|
||||
|
@ -606,6 +622,7 @@ static struct wm831x_pdata glenfarclas_pmic_pdata __initdata = {
|
|||
.wm831x_num = 2,
|
||||
.irq_base = GLENFARCLAS_PMIC_IRQ_BASE,
|
||||
.gpio_base = GLENFARCLAS_PMIC_GPIO_BASE,
|
||||
.soft_shutdown = true,
|
||||
|
||||
.gpio_defaults = {
|
||||
/* GPIO1-3: IRQ inputs, rising edge triggered, CMOS */
|
||||
|
@ -623,6 +640,16 @@ static struct wm831x_pdata glenfarclas_pmic_pdata __initdata = {
|
|||
.disable_touch = true,
|
||||
};
|
||||
|
||||
static struct wm1250_ev1_pdata wm1250_ev1_pdata = {
|
||||
.gpios = {
|
||||
[WM1250_EV1_GPIO_CLK_ENA] = S3C64XX_GPN(12),
|
||||
[WM1250_EV1_GPIO_CLK_SEL0] = S3C64XX_GPL(12),
|
||||
[WM1250_EV1_GPIO_CLK_SEL1] = S3C64XX_GPL(13),
|
||||
[WM1250_EV1_GPIO_OSR] = S3C64XX_GPL(14),
|
||||
[WM1250_EV1_GPIO_MASTER] = S3C64XX_GPL(8),
|
||||
},
|
||||
};
|
||||
|
||||
static struct i2c_board_info i2c_devs1[] __initdata = {
|
||||
{ I2C_BOARD_INFO("wm8311", 0x34),
|
||||
.irq = S3C_EINT(0),
|
||||
|
@ -632,7 +659,13 @@ static struct i2c_board_info i2c_devs1[] __initdata = {
|
|||
{ I2C_BOARD_INFO("wlf-gf-module", 0x25) },
|
||||
{ I2C_BOARD_INFO("wlf-gf-module", 0x26) },
|
||||
|
||||
{ I2C_BOARD_INFO("wm1250-ev1", 0x27) },
|
||||
{ I2C_BOARD_INFO("wm1250-ev1", 0x27),
|
||||
.platform_data = &wm1250_ev1_pdata },
|
||||
};
|
||||
|
||||
static struct s3c2410_platform_i2c i2c1_pdata = {
|
||||
.frequency = 400000,
|
||||
.bus_num = 1,
|
||||
};
|
||||
|
||||
static void __init crag6410_map_io(void)
|
||||
|
@ -693,7 +726,7 @@ static void __init crag6410_machine_init(void)
|
|||
s3c_sdhci2_set_platdata(&crag6410_hsmmc2_pdata);
|
||||
|
||||
s3c_i2c0_set_platdata(&i2c0_pdata);
|
||||
s3c_i2c1_set_platdata(NULL);
|
||||
s3c_i2c1_set_platdata(&i2c1_pdata);
|
||||
s3c_fb_set_platdata(&crag6410_lcd_pdata);
|
||||
|
||||
i2c_register_board_info(0, i2c_devs0, ARRAY_SIZE(i2c_devs0));
|
||||
|
|
|
@ -89,6 +89,8 @@ static struct sleep_save misc_save[] = {
|
|||
|
||||
SAVE_ITEM(S3C64XX_SDMA_SEL),
|
||||
SAVE_ITEM(S3C64XX_MODEM_MIFPCON),
|
||||
|
||||
SAVE_ITEM(S3C64XX_NORMAL_CFG),
|
||||
};
|
||||
|
||||
void s3c_pm_configure_extint(void)
|
||||
|
@ -181,10 +183,23 @@ static void s3c64xx_pm_prepare(void)
|
|||
|
||||
static int s3c64xx_pm_init(void)
|
||||
{
|
||||
u32 val;
|
||||
|
||||
pm_cpu_prep = s3c64xx_pm_prepare;
|
||||
pm_cpu_sleep = s3c64xx_cpu_suspend;
|
||||
pm_uart_udivslot = 1;
|
||||
|
||||
/*
|
||||
* Unconditionally disable power domains that contain only
|
||||
* blocks which have no mainline driver support.
|
||||
*/
|
||||
val = __raw_readl(S3C64XX_NORMAL_CFG);
|
||||
val &= ~(S3C64XX_NORMALCFG_DOMAIN_G_ON |
|
||||
S3C64XX_NORMALCFG_DOMAIN_V_ON |
|
||||
S3C64XX_NORMALCFG_DOMAIN_I_ON |
|
||||
S3C64XX_NORMALCFG_DOMAIN_P_ON);
|
||||
__raw_writel(val, S3C64XX_NORMAL_CFG);
|
||||
|
||||
#ifdef CONFIG_S3C_PM_DEBUG_LED_SMDK
|
||||
gpio_request(S3C64XX_GPN(12), "DEBUG_LED0");
|
||||
gpio_request(S3C64XX_GPN(13), "DEBUG_LED1");
|
||||
|
|
|
@ -88,12 +88,20 @@ config S5P_GPIO_DRVSTR
|
|||
|
||||
config SAMSUNG_GPIO_EXTRA
|
||||
int "Number of additional GPIO pins"
|
||||
default 128 if SAMSUNG_GPIO_EXTRA128
|
||||
default 64 if SAMSUNG_GPIO_EXTRA64
|
||||
default 0
|
||||
help
|
||||
Use additional GPIO space in addition to the GPIO's the SOC
|
||||
provides. This allows expanding the GPIO space for use with
|
||||
GPIO expanders.
|
||||
|
||||
config SAMSUNG_GPIO_EXTRA64
|
||||
bool
|
||||
|
||||
config SAMSUNG_GPIO_EXTRA128
|
||||
bool
|
||||
|
||||
config S3C_GPIO_SPACE
|
||||
int "Space between gpio banks"
|
||||
default 0
|
||||
|
|
Loading…
Reference in a new issue