Merge branch 'for-arm-soc-next' of git://git.linaro.org/people/ljones/linux-3.0-ux500 into next/dt
From Lee Jones <lee.jones@linaro.org>: * 'for-arm-soc-next' of git://git.linaro.org/people/ljones/linux-3.0-ux500: ARM: ux500: Remove PMU platform registration when booting with DT ARM: ux500: Remove temporary snowball_of_platform_devs enablement structure ARM: ux500: Ensure vendor specific properties have the vendor's identifier pinctrl: pinctrl-nomadik: Append sleepmode property with vendor specific prefixes ARM: ux500: Move rtc-pl031 registration to Device Tree when enabled ARM: ux500: Enable the AB8500 RTC for all DT:ed DB8500 based devices ARM: ux500: Correctly reference IRQs supplied by the AB8500 from Device Tree ARM: ux500: Apply ab8500-debug node do the db8500 DT structure ARM: ux500: Add a ab8500-usb Device Tree node for db8500 based devices ARM: ux500: Add db8500 Device Tree node for misc/ab8500-pwm ARM: ux500: Add db8500 Device Tree node for ab8500-sysctrl ARM: ux500: Enable LED heartbeat functionality on Snowbal via DT ARM: ux500: Enable LED heartbeat functionality on Snowball ARM: ux500: Add support for input/ponkey into the db8500's Device Tree ARM: ux500: Add a ab8500-gpadc node to the db8500 Device Tree ARM: ux500: Enable the user LED on Snowball via Device Tree ARM: ux500: Kconfig: Compile in leds-gpio support for Snowball ARM: ux500: Provide auxdata to be used as name base clock search for nmk-i2c ARM: ux500: Remove unused i2c platform_data initialisation code ARM: ux500: Enable Device Tree support mmci for Snowball Signed-off-by: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
commit
d0b1a03704
10 changed files with 108 additions and 72 deletions
|
@ -26,6 +26,6 @@ Example:
|
|||
#gpio-cells = <2>;
|
||||
gpio-controller;
|
||||
interrupt-controller;
|
||||
supports-sleepmode;
|
||||
st,supports-sleepmode;
|
||||
gpio-bank = <1>;
|
||||
};
|
||||
|
|
|
@ -48,7 +48,7 @@
|
|||
};
|
||||
|
||||
rtc@80154000 {
|
||||
compatible = "stericsson,db8500-rtc";
|
||||
compatible = "arm,rtc-pl031", "arm,primecell";
|
||||
reg = <0x80154000 0x1000>;
|
||||
interrupts = <0 18 0x4>;
|
||||
};
|
||||
|
@ -60,7 +60,7 @@
|
|||
interrupts = <0 119 0x4>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
supports-sleepmode;
|
||||
st,supports-sleepmode;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
gpio-bank = <0>;
|
||||
|
@ -73,7 +73,7 @@
|
|||
interrupts = <0 120 0x4>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
supports-sleepmode;
|
||||
st,supports-sleepmode;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
gpio-bank = <1>;
|
||||
|
@ -86,7 +86,7 @@
|
|||
interrupts = <0 121 0x4>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
supports-sleepmode;
|
||||
st,supports-sleepmode;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
gpio-bank = <2>;
|
||||
|
@ -99,7 +99,7 @@
|
|||
interrupts = <0 122 0x4>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
supports-sleepmode;
|
||||
st,supports-sleepmode;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
gpio-bank = <3>;
|
||||
|
@ -112,7 +112,7 @@
|
|||
interrupts = <0 123 0x4>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
supports-sleepmode;
|
||||
st,supports-sleepmode;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
gpio-bank = <4>;
|
||||
|
@ -125,7 +125,7 @@
|
|||
interrupts = <0 124 0x4>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
supports-sleepmode;
|
||||
st,supports-sleepmode;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
gpio-bank = <5>;
|
||||
|
@ -138,7 +138,7 @@
|
|||
interrupts = <0 125 0x4>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
supports-sleepmode;
|
||||
st,supports-sleepmode;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
gpio-bank = <6>;
|
||||
|
@ -151,7 +151,7 @@
|
|||
interrupts = <0 126 0x4>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
supports-sleepmode;
|
||||
st,supports-sleepmode;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
gpio-bank = <7>;
|
||||
|
@ -164,7 +164,7 @@
|
|||
interrupts = <0 127 0x4>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
supports-sleepmode;
|
||||
st,supports-sleepmode;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
gpio-bank = <8>;
|
||||
|
@ -312,6 +312,63 @@
|
|||
compatible = "stericsson,ab8500";
|
||||
reg = <5>; /* mailbox 5 is i2c */
|
||||
interrupts = <0 40 0x4>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
|
||||
ab8500-rtc {
|
||||
compatible = "stericsson,ab8500-rtc";
|
||||
interrupts = <17 0x4
|
||||
18 0x4>;
|
||||
interrupt-names = "60S", "ALARM";
|
||||
};
|
||||
|
||||
ab8500-gpadc {
|
||||
compatible = "stericsson,ab8500-gpadc";
|
||||
interrupts = <32 0x4
|
||||
39 0x4>;
|
||||
interrupt-names = "HW_CONV_END", "SW_CONV_END";
|
||||
vddadc-supply = <&ab8500_ldo_tvout_reg>;
|
||||
};
|
||||
|
||||
ab8500-usb {
|
||||
compatible = "stericsson,ab8500-usb";
|
||||
interrupts = < 90 0x4
|
||||
96 0x4
|
||||
14 0x4
|
||||
15 0x4
|
||||
79 0x4
|
||||
74 0x4
|
||||
75 0x4>;
|
||||
interrupt-names = "ID_WAKEUP_R",
|
||||
"ID_WAKEUP_F",
|
||||
"VBUS_DET_F",
|
||||
"VBUS_DET_R",
|
||||
"USB_LINK_STATUS",
|
||||
"USB_ADP_PROBE_PLUG",
|
||||
"USB_ADP_PROBE_UNPLUG";
|
||||
vddulpivio18-supply = <&ab8500_ldo_initcore_reg>;
|
||||
v-ape-supply = <&db8500_vape_reg>;
|
||||
musb_1v8-supply = <&db8500_vsmps2_reg>;
|
||||
};
|
||||
|
||||
ab8500-ponkey {
|
||||
compatible = "stericsson,ab8500-ponkey";
|
||||
interrupts = <6 0x4
|
||||
7 0x4>;
|
||||
interrupt-names = "ONKEY_DBF", "ONKEY_DBR";
|
||||
};
|
||||
|
||||
ab8500-sysctrl {
|
||||
compatible = "stericsson,ab8500-sysctrl";
|
||||
};
|
||||
|
||||
ab8500-pwm {
|
||||
compatible = "stericsson,ab8500-pwm";
|
||||
};
|
||||
|
||||
ab8500-debugfs {
|
||||
compatible = "stericsson,ab8500-debug";
|
||||
};
|
||||
|
||||
ab8500-regulators {
|
||||
compatible = "stericsson,ab8500-regulator";
|
||||
|
|
|
@ -77,6 +77,8 @@
|
|||
used-led {
|
||||
label = "user_led";
|
||||
gpios = <&gpio4 14 0x4>;
|
||||
default-state = "on";
|
||||
linux,default-trigger = "heartbeat";
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -101,15 +103,30 @@
|
|||
};
|
||||
};
|
||||
|
||||
// External Micro SD slot
|
||||
sdi@80126000 {
|
||||
status = "enabled";
|
||||
arm,primecell-periphid = <0x10480180>;
|
||||
max-frequency = <50000000>;
|
||||
bus-width = <8>;
|
||||
mmc-cap-mmc-highspeed;
|
||||
vmmc-supply = <&ab8500_ldo_aux3_reg>;
|
||||
|
||||
#gpio-cells = <1>;
|
||||
cd-gpios = <&gpio6 26 0x4>; // 218
|
||||
cd-inverted;
|
||||
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
// On-board eMMC
|
||||
sdi@80114000 {
|
||||
status = "enabled";
|
||||
arm,primecell-periphid = <0x10480180>;
|
||||
max-frequency = <50000000>;
|
||||
bus-width = <8>;
|
||||
mmc-cap-mmc-highspeed;
|
||||
vmmc-supply = <&ab8500_ldo_aux2_reg>;
|
||||
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
uart@80120000 {
|
||||
|
|
|
@ -41,6 +41,7 @@ config MACH_HREFV60
|
|||
config MACH_SNOWBALL
|
||||
bool "U8500 Snowball platform"
|
||||
select MACH_MOP500
|
||||
select LEDS_GPIO
|
||||
help
|
||||
Include support for the snowball development platform.
|
||||
|
||||
|
|
|
@ -80,7 +80,7 @@ static struct stedma40_chan_cfg mop500_sdi0_dma_cfg_tx = {
|
|||
};
|
||||
#endif
|
||||
|
||||
static struct mmci_platform_data mop500_sdi0_data = {
|
||||
struct mmci_platform_data mop500_sdi0_data = {
|
||||
.ios_handler = mop500_sdi0_ios_handler,
|
||||
.ocr_mask = MMC_VDD_29_30,
|
||||
.f_max = 50000000,
|
||||
|
@ -227,7 +227,7 @@ static struct stedma40_chan_cfg mop500_sdi4_dma_cfg_tx = {
|
|||
};
|
||||
#endif
|
||||
|
||||
static struct mmci_platform_data mop500_sdi4_data = {
|
||||
struct mmci_platform_data mop500_sdi4_data = {
|
||||
.ocr_mask = MMC_VDD_29_30,
|
||||
.f_max = 50000000,
|
||||
.capabilities = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA |
|
||||
|
|
|
@ -58,7 +58,7 @@
|
|||
static struct gpio_led snowball_led_array[] = {
|
||||
{
|
||||
.name = "user_led",
|
||||
.default_trigger = "none",
|
||||
.default_trigger = "heartbeat",
|
||||
.gpio = 142,
|
||||
},
|
||||
};
|
||||
|
@ -331,43 +331,12 @@ static struct i2c_board_info __initdata mop500_i2c2_devices[] = {
|
|||
},
|
||||
};
|
||||
|
||||
#define U8500_I2C_CONTROLLER(id, _slsu, _tft, _rft, clk, t_out, _sm) \
|
||||
static struct nmk_i2c_controller u8500_i2c##id##_data = { \
|
||||
/* \
|
||||
* slave data setup time, which is \
|
||||
* 250 ns,100ns,10ns which is 14,6,2 \
|
||||
* respectively for a 48 Mhz \
|
||||
* i2c clock \
|
||||
*/ \
|
||||
.slsu = _slsu, \
|
||||
/* Tx FIFO threshold */ \
|
||||
.tft = _tft, \
|
||||
/* Rx FIFO threshold */ \
|
||||
.rft = _rft, \
|
||||
/* std. mode operation */ \
|
||||
.clk_freq = clk, \
|
||||
/* Slave response timeout(ms) */\
|
||||
.timeout = t_out, \
|
||||
.sm = _sm, \
|
||||
}
|
||||
|
||||
/*
|
||||
* The board uses 4 i2c controllers, initialize all of
|
||||
* them with slave data setup time of 250 ns,
|
||||
* Tx & Rx FIFO threshold values as 8 and standard
|
||||
* mode of operation
|
||||
*/
|
||||
U8500_I2C_CONTROLLER(0, 0xe, 1, 8, 100000, 200, I2C_FREQ_MODE_FAST);
|
||||
U8500_I2C_CONTROLLER(1, 0xe, 1, 8, 100000, 200, I2C_FREQ_MODE_FAST);
|
||||
U8500_I2C_CONTROLLER(2, 0xe, 1, 8, 100000, 200, I2C_FREQ_MODE_FAST);
|
||||
U8500_I2C_CONTROLLER(3, 0xe, 1, 8, 100000, 200, I2C_FREQ_MODE_FAST);
|
||||
|
||||
static void __init mop500_i2c_init(struct device *parent)
|
||||
{
|
||||
db8500_add_i2c0(parent, &u8500_i2c0_data);
|
||||
db8500_add_i2c1(parent, &u8500_i2c1_data);
|
||||
db8500_add_i2c2(parent, &u8500_i2c2_data);
|
||||
db8500_add_i2c3(parent, &u8500_i2c3_data);
|
||||
db8500_add_i2c0(parent, NULL);
|
||||
db8500_add_i2c1(parent, NULL);
|
||||
db8500_add_i2c2(parent, NULL);
|
||||
db8500_add_i2c3(parent, NULL);
|
||||
}
|
||||
|
||||
static struct gpio_keys_button mop500_gpio_keys[] = {
|
||||
|
@ -776,6 +745,8 @@ struct of_dev_auxdata u8500_auxdata_lookup[] __initdata = {
|
|||
OF_DEV_AUXDATA("arm,pl011", 0x80007000, "uart2", &uart2_plat),
|
||||
/* Requires DMA bindings. */
|
||||
OF_DEV_AUXDATA("arm,pl022", 0x80002000, "ssp0", &ssp0_plat),
|
||||
OF_DEV_AUXDATA("arm,pl18x", 0x80126000, "sdi0", &mop500_sdi0_data),
|
||||
OF_DEV_AUXDATA("arm,pl18x", 0x80114000, "sdi4", &mop500_sdi4_data),
|
||||
/* Requires clock name bindings. */
|
||||
OF_DEV_AUXDATA("st,nomadik-gpio", 0x8012e000, "gpio.0", NULL),
|
||||
OF_DEV_AUXDATA("st,nomadik-gpio", 0x8012e080, "gpio.1", NULL),
|
||||
|
@ -786,6 +757,11 @@ struct of_dev_auxdata u8500_auxdata_lookup[] __initdata = {
|
|||
OF_DEV_AUXDATA("st,nomadik-gpio", 0x8011e000, "gpio.6", NULL),
|
||||
OF_DEV_AUXDATA("st,nomadik-gpio", 0x8011e080, "gpio.7", NULL),
|
||||
OF_DEV_AUXDATA("st,nomadik-gpio", 0xa03fe000, "gpio.8", NULL),
|
||||
OF_DEV_AUXDATA("st,nomadik-i2c", 0x80004000, "nmk-i2c.0", NULL),
|
||||
OF_DEV_AUXDATA("st,nomadik-i2c", 0x80122000, "nmk-i2c.1", NULL),
|
||||
OF_DEV_AUXDATA("st,nomadik-i2c", 0x80128000, "nmk-i2c.2", NULL),
|
||||
OF_DEV_AUXDATA("st,nomadik-i2c", 0x80110000, "nmk-i2c.3", NULL),
|
||||
OF_DEV_AUXDATA("st,nomadik-i2c", 0x8012a000, "nmk-i2c.4", NULL),
|
||||
/* Requires device name bindings. */
|
||||
OF_DEV_AUXDATA("stericsson,nmk_pinctrl", 0, "pinctrl-db8500", NULL),
|
||||
{},
|
||||
|
@ -820,8 +796,6 @@ static void __init u8500_init_machine(void)
|
|||
|
||||
for (i = 0; i < ARRAY_SIZE(mop500_platform_devs); i++)
|
||||
mop500_platform_devs[i]->dev.parent = parent;
|
||||
for (i = 0; i < ARRAY_SIZE(snowball_platform_devs); i++)
|
||||
snowball_platform_devs[i]->dev.parent = parent;
|
||||
|
||||
/* automatically probe child nodes of db8500 device */
|
||||
of_platform_populate(NULL, u8500_local_bus_nodes, u8500_auxdata_lookup, parent);
|
||||
|
@ -840,18 +814,6 @@ static void __init u8500_init_machine(void)
|
|||
|
||||
mop500_uib_init();
|
||||
|
||||
} else if (of_machine_is_compatible("calaosystems,snowball-a9500")) {
|
||||
/*
|
||||
* Devices to be DT:ed:
|
||||
* snowball_led_dev = todo
|
||||
* snowball_key_dev = todo
|
||||
* snowball_sbnet_dev = done
|
||||
* ab8500_device = done
|
||||
*/
|
||||
platform_add_devices(snowball_of_platform_devs,
|
||||
ARRAY_SIZE(snowball_of_platform_devs));
|
||||
|
||||
snowball_sdi_init(parent);
|
||||
} else if (of_machine_is_compatible("st-ericsson,hrefv60+")) {
|
||||
/*
|
||||
* The HREFv60 board removed a GPIO expander and routed
|
||||
|
@ -873,7 +835,6 @@ static void __init u8500_init_machine(void)
|
|||
|
||||
mop500_uib_init();
|
||||
}
|
||||
mop500_i2c_init(parent);
|
||||
|
||||
/* This board has full regulator constraints */
|
||||
regulator_has_full_constraints();
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
|
||||
/* For NOMADIK_NR_GPIO */
|
||||
#include <mach/irqs.h>
|
||||
#include <linux/amba/mmci.h>
|
||||
|
||||
/* Snowball specific GPIO assignments, this board has no GPIO expander */
|
||||
#define SNOWBALL_ACCEL_INT1_GPIO 163
|
||||
|
@ -78,6 +79,8 @@
|
|||
|
||||
struct device;
|
||||
struct i2c_board_info;
|
||||
extern struct mmci_platform_data mop500_sdi0_data;
|
||||
extern struct mmci_platform_data mop500_sdi4_data;
|
||||
|
||||
extern void mop500_sdi_init(struct device *parent);
|
||||
extern void snowball_sdi_init(struct device *parent);
|
||||
|
|
|
@ -139,7 +139,6 @@ static struct platform_device *platform_devs[] __initdata = {
|
|||
|
||||
static struct platform_device *of_platform_devs[] __initdata = {
|
||||
&u8500_dma40_device,
|
||||
&db8500_pmu_device,
|
||||
};
|
||||
|
||||
static resource_size_t __initdata db8500_gpio_base[] = {
|
||||
|
@ -237,7 +236,6 @@ struct device * __init u8500_of_init_devices(void)
|
|||
|
||||
parent = db8500_soc_device_init();
|
||||
|
||||
db8500_add_rtc(parent);
|
||||
db8500_add_usb(parent, usb_db8500_rx_dma_cfg, usb_db8500_tx_dma_cfg);
|
||||
|
||||
platform_device_register_data(parent,
|
||||
|
@ -249,7 +247,7 @@ struct device * __init u8500_of_init_devices(void)
|
|||
/*
|
||||
* Devices to be DT:ed:
|
||||
* u8500_dma40_device = todo
|
||||
* db8500_pmu_device = todo
|
||||
* db8500_pmu_device = done
|
||||
* db8500_prcmu_device = done
|
||||
*/
|
||||
platform_add_devices(of_platform_devs, ARRAY_SIZE(of_platform_devs));
|
||||
|
|
|
@ -965,8 +965,7 @@ static int __devinit nmk_i2c_probe(struct platform_device *pdev)
|
|||
adap->owner = THIS_MODULE;
|
||||
adap->class = I2C_CLASS_HWMON | I2C_CLASS_SPD;
|
||||
adap->algo = &nmk_i2c_algo;
|
||||
adap->timeout = pdata->timeout ? msecs_to_jiffies(pdata->timeout) :
|
||||
msecs_to_jiffies(20000);
|
||||
adap->timeout = msecs_to_jiffies(pdata->timeout);
|
||||
snprintf(adap->name, sizeof(adap->name),
|
||||
"Nomadik I2C%d at %lx", pdev->id, (unsigned long)res->start);
|
||||
|
||||
|
|
|
@ -1198,7 +1198,7 @@ static int __devinit nmk_gpio_probe(struct platform_device *dev)
|
|||
if (!pdata)
|
||||
return -ENOMEM;
|
||||
|
||||
if (of_get_property(np, "supports-sleepmode", NULL))
|
||||
if (of_get_property(np, "st,supports-sleepmode", NULL))
|
||||
pdata->supports_sleepmode = true;
|
||||
|
||||
if (of_property_read_u32(np, "gpio-bank", &dev->id)) {
|
||||
|
|
Loading…
Reference in a new issue