Merge branch 'ux500/hickup' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
Pull arm fixes for ux500 mismerge mishap from Arnd Bergmann: "The device tree conversion for arm/ux500 in 3.5 turns out to be incomplete because of a mismerge done by Linus Walleij that I failed to notice early enough and that Lee Jones as the original author of those patches did not manage to fix during the -next cycle. While we originally to get a much larger set of ux500 device tree enablement patches merged, this did not happen in time. After some discussion at Linaro Connect conference this week, Lee has been able to do damage control and provide a series to put the broken platform back into usable shape for both DT and non-DT based booting. This series has not been part of linux-next and is based on top of the current state of the upstream kernel rather than an -rc, but this is the best we could manage given the earlier breakage." * 'ux500/hickup' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: ARM: ux500: Enable probing of pinctrl through Device Tree ARM: ux500: Add support for ab8500 regulators into the Device Tree ARM: ux500: Provide regulator support for SMSC911x via Device Tree ARM: ux500: Allow PRCMU regulator to be probed during a DT enabled boot ARM: ux500: Apply db8500-prcmu regulator information to db8500 Device Tree ARM: ux500: Only initialise STE's UIBs on boards which support them ARM: ux500: Disable platform setup of the ab8500 when DT is enabled ARM: ux500: Use correct format for dynamic IRQ assignment ARM: ux500: Re-enable SMSC911x platform code registration during non-DT boots ARM: ux500: PRCMU related configuration and layout corrections for Device Tree ARM: ux500: Remove DB8500 PRCMU platform registration when DT is enabled ARM: ux500: Disable SMSC911x platform code registration when DT is enabled ARM: ux500: New DT:ed u8500_init_devices for one-by-one device enablement ARM: ux500: New DT:ed snowball_platform_devs for one-by-one device enablement pinctrl-nomadik: Allow Device Tree driver probing
This commit is contained in:
commit
efff0471b0
9 changed files with 301 additions and 22 deletions
|
@ -58,6 +58,8 @@
|
|||
"st,nomadik-gpio";
|
||||
reg = <0x8012e000 0x80>;
|
||||
interrupts = <0 119 0x4>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
supports-sleepmode;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
|
@ -69,6 +71,8 @@
|
|||
"st,nomadik-gpio";
|
||||
reg = <0x8012e080 0x80>;
|
||||
interrupts = <0 120 0x4>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
supports-sleepmode;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
|
@ -80,6 +84,8 @@
|
|||
"st,nomadik-gpio";
|
||||
reg = <0x8000e000 0x80>;
|
||||
interrupts = <0 121 0x4>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
supports-sleepmode;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
|
@ -91,6 +97,8 @@
|
|||
"st,nomadik-gpio";
|
||||
reg = <0x8000e080 0x80>;
|
||||
interrupts = <0 122 0x4>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
supports-sleepmode;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
|
@ -102,6 +110,8 @@
|
|||
"st,nomadik-gpio";
|
||||
reg = <0x8000e100 0x80>;
|
||||
interrupts = <0 123 0x4>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
supports-sleepmode;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
|
@ -113,6 +123,8 @@
|
|||
"st,nomadik-gpio";
|
||||
reg = <0x8000e180 0x80>;
|
||||
interrupts = <0 124 0x4>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
supports-sleepmode;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
|
@ -124,6 +136,8 @@
|
|||
"st,nomadik-gpio";
|
||||
reg = <0x8011e000 0x80>;
|
||||
interrupts = <0 125 0x4>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
supports-sleepmode;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
|
@ -135,6 +149,8 @@
|
|||
"st,nomadik-gpio";
|
||||
reg = <0x8011e080 0x80>;
|
||||
interrupts = <0 126 0x4>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
supports-sleepmode;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
|
@ -146,12 +162,18 @@
|
|||
"st,nomadik-gpio";
|
||||
reg = <0xa03fe000 0x80>;
|
||||
interrupts = <0 127 0x4>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
supports-sleepmode;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
gpio-bank = <8>;
|
||||
};
|
||||
|
||||
pinctrl {
|
||||
compatible = "stericsson,nmk_pinctrl";
|
||||
};
|
||||
|
||||
usb@a03e0000 {
|
||||
compatible = "stericsson,db8500-musb",
|
||||
"mentor,musb";
|
||||
|
@ -169,20 +191,195 @@
|
|||
prcmu@80157000 {
|
||||
compatible = "stericsson,db8500-prcmu";
|
||||
reg = <0x80157000 0x1000>;
|
||||
interrupts = <46 47>;
|
||||
interrupts = <0 47 0x4>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges;
|
||||
|
||||
prcmu-timer-4@80157450 {
|
||||
prcmu-timer-4@80157450 {
|
||||
compatible = "stericsson,db8500-prcmu-timer-4";
|
||||
reg = <0x80157450 0xC>;
|
||||
};
|
||||
|
||||
db8500-prcmu-regulators {
|
||||
compatible = "stericsson,db8500-prcmu-regulator";
|
||||
|
||||
// DB8500_REGULATOR_VAPE
|
||||
db8500_vape_reg: db8500_vape {
|
||||
regulator-name = "db8500-vape";
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
// DB8500_REGULATOR_VARM
|
||||
db8500_varm_reg: db8500_varm {
|
||||
regulator-name = "db8500-varm";
|
||||
};
|
||||
|
||||
// DB8500_REGULATOR_VMODEM
|
||||
db8500_vmodem_reg: db8500_vmodem {
|
||||
regulator-name = "db8500-vmodem";
|
||||
};
|
||||
|
||||
// DB8500_REGULATOR_VPLL
|
||||
db8500_vpll_reg: db8500_vpll {
|
||||
regulator-name = "db8500-vpll";
|
||||
};
|
||||
|
||||
// DB8500_REGULATOR_VSMPS1
|
||||
db8500_vsmps1_reg: db8500_vsmps1 {
|
||||
regulator-name = "db8500-vsmps1";
|
||||
};
|
||||
|
||||
// DB8500_REGULATOR_VSMPS2
|
||||
db8500_vsmps2_reg: db8500_vsmps2 {
|
||||
regulator-name = "db8500-vsmps2";
|
||||
};
|
||||
|
||||
// DB8500_REGULATOR_VSMPS3
|
||||
db8500_vsmps3_reg: db8500_vsmps3 {
|
||||
regulator-name = "db8500-vsmps3";
|
||||
};
|
||||
|
||||
// DB8500_REGULATOR_VRF1
|
||||
db8500_vrf1_reg: db8500_vrf1 {
|
||||
regulator-name = "db8500-vrf1";
|
||||
};
|
||||
|
||||
// DB8500_REGULATOR_SWITCH_SVAMMDSP
|
||||
db8500_sva_mmdsp_reg: db8500_sva_mmdsp {
|
||||
regulator-name = "db8500-sva-mmdsp";
|
||||
};
|
||||
|
||||
// DB8500_REGULATOR_SWITCH_SVAMMDSPRET
|
||||
db8500_sva_mmdsp_ret_reg: db8500_sva_mmdsp_ret {
|
||||
regulator-name = "db8500-sva-mmdsp-ret";
|
||||
};
|
||||
|
||||
// DB8500_REGULATOR_SWITCH_SVAPIPE
|
||||
db8500_sva_pipe_reg: db8500_sva_pipe {
|
||||
regulator-name = "db8500_sva_pipe";
|
||||
};
|
||||
|
||||
// DB8500_REGULATOR_SWITCH_SIAMMDSP
|
||||
db8500_sia_mmdsp_reg: db8500_sia_mmdsp {
|
||||
regulator-name = "db8500_sia_mmdsp";
|
||||
};
|
||||
|
||||
// DB8500_REGULATOR_SWITCH_SIAMMDSPRET
|
||||
db8500_sia_mmdsp_ret_reg: db8500_sia_mmdsp_ret {
|
||||
regulator-name = "db8500-sia-mmdsp-ret";
|
||||
};
|
||||
|
||||
// DB8500_REGULATOR_SWITCH_SIAPIPE
|
||||
db8500_sia_pipe_reg: db8500_sia_pipe {
|
||||
regulator-name = "db8500-sia-pipe";
|
||||
};
|
||||
|
||||
// DB8500_REGULATOR_SWITCH_SGA
|
||||
db8500_sga_reg: db8500_sga {
|
||||
regulator-name = "db8500-sga";
|
||||
vin-supply = <&db8500_vape_reg>;
|
||||
};
|
||||
|
||||
// DB8500_REGULATOR_SWITCH_B2R2_MCDE
|
||||
db8500_b2r2_mcde_reg: db8500_b2r2_mcde {
|
||||
regulator-name = "db8500-b2r2-mcde";
|
||||
vin-supply = <&db8500_vape_reg>;
|
||||
};
|
||||
|
||||
// DB8500_REGULATOR_SWITCH_ESRAM12
|
||||
db8500_esram12_reg: db8500_esram12 {
|
||||
regulator-name = "db8500-esram12";
|
||||
};
|
||||
|
||||
// DB8500_REGULATOR_SWITCH_ESRAM12RET
|
||||
db8500_esram12_ret_reg: db8500_esram12_ret {
|
||||
regulator-name = "db8500-esram12-ret";
|
||||
};
|
||||
|
||||
// DB8500_REGULATOR_SWITCH_ESRAM34
|
||||
db8500_esram34_reg: db8500_esram34 {
|
||||
regulator-name = "db8500-esram34";
|
||||
};
|
||||
|
||||
// DB8500_REGULATOR_SWITCH_ESRAM34RET
|
||||
db8500_esram34_ret_reg: db8500_esram34_ret {
|
||||
regulator-name = "db8500-esram34-ret";
|
||||
};
|
||||
};
|
||||
|
||||
ab8500@5 {
|
||||
compatible = "stericsson,ab8500";
|
||||
reg = <5>; /* mailbox 5 is i2c */
|
||||
interrupts = <0 40 0x4>;
|
||||
|
||||
ab8500-regulators {
|
||||
compatible = "stericsson,ab8500-regulator";
|
||||
|
||||
// supplies to the display/camera
|
||||
ab8500_ldo_aux1_reg: ab8500_ldo_aux1 {
|
||||
regulator-name = "V-DISPLAY";
|
||||
regulator-min-microvolt = <2500000>;
|
||||
regulator-max-microvolt = <2900000>;
|
||||
regulator-boot-on;
|
||||
/* BUG: If turned off MMC will be affected. */
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
// supplies to the on-board eMMC
|
||||
ab8500_ldo_aux2_reg: ab8500_ldo_aux2 {
|
||||
regulator-name = "V-eMMC1";
|
||||
regulator-min-microvolt = <1100000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
};
|
||||
|
||||
// supply for VAUX3; SDcard slots
|
||||
ab8500_ldo_aux3_reg: ab8500_ldo_aux3 {
|
||||
regulator-name = "V-MMC-SD";
|
||||
regulator-min-microvolt = <1100000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
};
|
||||
|
||||
// supply for v-intcore12; VINTCORE12 LDO
|
||||
ab8500_ldo_initcore_reg: ab8500_ldo_initcore {
|
||||
regulator-name = "V-INTCORE";
|
||||
};
|
||||
|
||||
// supply for tvout; gpadc; TVOUT LDO
|
||||
ab8500_ldo_tvout_reg: ab8500_ldo_tvout {
|
||||
regulator-name = "V-TVOUT";
|
||||
};
|
||||
|
||||
// supply for ab8500-usb; USB LDO
|
||||
ab8500_ldo_usb_reg: ab8500_ldo_usb {
|
||||
regulator-name = "dummy";
|
||||
};
|
||||
|
||||
// supply for ab8500-vaudio; VAUDIO LDO
|
||||
ab8500_ldo_audio_reg: ab8500_ldo_audio {
|
||||
regulator-name = "V-AUD";
|
||||
};
|
||||
|
||||
// supply for v-anamic1 VAMic1-LDO
|
||||
ab8500_ldo_anamic1_reg: ab8500_ldo_anamic1 {
|
||||
regulator-name = "V-AMIC1";
|
||||
};
|
||||
|
||||
// supply for v-amic2; VAMIC2 LDO; reuse constants for AMIC1
|
||||
ab8500_ldo_amamic2_reg: ab8500_ldo_amamic2 {
|
||||
regulator-name = "V-AMIC2";
|
||||
};
|
||||
|
||||
// supply for v-dmic; VDMIC LDO
|
||||
ab8500_ldo_dmic_reg: ab8500_ldo_dmic {
|
||||
regulator-name = "V-DMIC";
|
||||
};
|
||||
|
||||
// supply for U8500 CSI/DSI; VANA LDO
|
||||
ab8500_ldo_ana_reg: ab8500_ldo_ana {
|
||||
regulator-name = "V-CSI/DSI";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -235,7 +432,8 @@
|
|||
status = "disabled";
|
||||
|
||||
// Add one of these for each child device
|
||||
cs-gpios = <&gpio0 31 &gpio4 14 &gpio4 16 &gpio6 22 &gpio7 0>;
|
||||
cs-gpios = <&gpio0 31 0x4 &gpio4 14 0x4 &gpio4 16 0x4
|
||||
&gpio6 22 0x4 &gpio7 0 0x4>;
|
||||
|
||||
};
|
||||
|
||||
|
|
|
@ -20,6 +20,16 @@
|
|||
reg = <0x00000000 0x20000000>;
|
||||
};
|
||||
|
||||
en_3v3_reg: en_3v3 {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "en-3v3-fixed-supply";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
gpios = <&gpio0 26 0x4>; // 26
|
||||
startup-delay-us = <5000>;
|
||||
enable-active-high;
|
||||
};
|
||||
|
||||
gpio_keys {
|
||||
compatible = "gpio-keys";
|
||||
#address-cells = <1>;
|
||||
|
@ -30,35 +40,35 @@
|
|||
wakeup = <1>;
|
||||
linux,code = <2>;
|
||||
label = "userpb";
|
||||
gpios = <&gpio1 0 0>;
|
||||
gpios = <&gpio1 0 0x4>;
|
||||
};
|
||||
button@2 {
|
||||
debounce_interval = <50>;
|
||||
wakeup = <1>;
|
||||
linux,code = <3>;
|
||||
label = "extkb1";
|
||||
gpios = <&gpio4 23 0>;
|
||||
gpios = <&gpio4 23 0x4>;
|
||||
};
|
||||
button@3 {
|
||||
debounce_interval = <50>;
|
||||
wakeup = <1>;
|
||||
linux,code = <4>;
|
||||
label = "extkb2";
|
||||
gpios = <&gpio4 24 0>;
|
||||
gpios = <&gpio4 24 0x4>;
|
||||
};
|
||||
button@4 {
|
||||
debounce_interval = <50>;
|
||||
wakeup = <1>;
|
||||
linux,code = <5>;
|
||||
label = "extkb3";
|
||||
gpios = <&gpio5 1 0>;
|
||||
gpios = <&gpio5 1 0x4>;
|
||||
};
|
||||
button@5 {
|
||||
debounce_interval = <50>;
|
||||
wakeup = <1>;
|
||||
linux,code = <6>;
|
||||
label = "extkb4";
|
||||
gpios = <&gpio5 2 0>;
|
||||
gpios = <&gpio5 2 0x4>;
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -66,12 +76,11 @@
|
|||
compatible = "gpio-leds";
|
||||
used-led {
|
||||
label = "user_led";
|
||||
gpios = <&gpio4 14>;
|
||||
gpios = <&gpio4 14 0x4>;
|
||||
};
|
||||
};
|
||||
|
||||
soc-u9500 {
|
||||
|
||||
external-bus@50000000 {
|
||||
status = "okay";
|
||||
|
||||
|
@ -80,6 +89,9 @@
|
|||
reg = <0 0x10000>;
|
||||
interrupts = <12 0x1>;
|
||||
interrupt-parent = <&gpio4>;
|
||||
vdd33a-supply = <&en_3v3_reg>;
|
||||
vddvario-supply = <&db8500_vape_reg>;
|
||||
|
||||
|
||||
reg-shift = <1>;
|
||||
reg-io-width = <2>;
|
||||
|
@ -91,11 +103,13 @@
|
|||
|
||||
sdi@80126000 {
|
||||
status = "enabled";
|
||||
cd-gpios = <&gpio6 26>;
|
||||
vmmc-supply = <&ab8500_ldo_aux3_reg>;
|
||||
cd-gpios = <&gpio6 26 0x4>; // 218
|
||||
};
|
||||
|
||||
sdi@80114000 {
|
||||
status = "enabled";
|
||||
vmmc-supply = <&ab8500_ldo_aux2_reg>;
|
||||
};
|
||||
|
||||
uart@80120000 {
|
||||
|
@ -114,7 +128,7 @@
|
|||
tc3589x@42 {
|
||||
//compatible = "tc3589x";
|
||||
reg = <0x42>;
|
||||
interrupts = <25>;
|
||||
gpios = <&gpio6 25 0x4>;
|
||||
interrupt-parent = <&gpio6>;
|
||||
};
|
||||
tps61052@33 {
|
||||
|
|
|
@ -75,6 +75,7 @@ CONFIG_AB5500_CORE=y
|
|||
CONFIG_AB8500_CORE=y
|
||||
CONFIG_REGULATOR=y
|
||||
CONFIG_REGULATOR_AB8500=y
|
||||
CONFIG_REGULATOR_FIXED_VOLTAGE=y
|
||||
# CONFIG_HID_SUPPORT is not set
|
||||
CONFIG_USB_GADGET=y
|
||||
CONFIG_AB8500_USB=y
|
||||
|
|
|
@ -96,7 +96,7 @@ static void __init __mop500_uib_init(struct uib *uib, const char *why)
|
|||
/*
|
||||
* Detect the UIB attached based on the presence or absence of i2c devices.
|
||||
*/
|
||||
static int __init mop500_uib_init(void)
|
||||
int __init mop500_uib_init(void)
|
||||
{
|
||||
struct uib *uib = mop500_uib;
|
||||
struct i2c_adapter *i2c0;
|
||||
|
@ -131,5 +131,3 @@ static int __init mop500_uib_init(void)
|
|||
|
||||
return 0;
|
||||
}
|
||||
|
||||
module_init(mop500_uib_init);
|
||||
|
|
|
@ -673,9 +673,15 @@ static void __init u8500_cryp1_hash1_init(struct device *parent)
|
|||
static struct platform_device *snowball_platform_devs[] __initdata = {
|
||||
&snowball_led_dev,
|
||||
&snowball_key_dev,
|
||||
&snowball_sbnet_dev,
|
||||
&ab8500_device,
|
||||
};
|
||||
|
||||
static struct platform_device *snowball_of_platform_devs[] __initdata = {
|
||||
&snowball_led_dev,
|
||||
&snowball_key_dev,
|
||||
};
|
||||
|
||||
static void __init mop500_init_machine(void)
|
||||
{
|
||||
struct device *parent = NULL;
|
||||
|
@ -710,6 +716,8 @@ static void __init mop500_init_machine(void)
|
|||
|
||||
/* This board has full regulator constraints */
|
||||
regulator_has_full_constraints();
|
||||
|
||||
mop500_uib_init();
|
||||
}
|
||||
|
||||
static void __init snowball_init_machine(void)
|
||||
|
@ -774,6 +782,8 @@ static void __init hrefv60_init_machine(void)
|
|||
|
||||
/* This board has full regulator constraints */
|
||||
regulator_has_full_constraints();
|
||||
|
||||
mop500_uib_init();
|
||||
}
|
||||
|
||||
MACHINE_START(U8500, "ST-Ericsson MOP500 platform")
|
||||
|
@ -834,6 +844,10 @@ struct of_dev_auxdata u8500_auxdata_lookup[] __initdata = {
|
|||
static const struct of_device_id u8500_local_bus_nodes[] = {
|
||||
/* only create devices below soc node */
|
||||
{ .compatible = "stericsson,db8500", },
|
||||
{ .compatible = "stericsson,db8500-prcmu", },
|
||||
{ .compatible = "stericsson,db8500-prcmu-regulator", },
|
||||
{ .compatible = "stericsson,ab8500", },
|
||||
{ .compatible = "stericsson,ab8500-regulator", },
|
||||
{ .compatible = "simple-bus"},
|
||||
{ },
|
||||
};
|
||||
|
@ -852,7 +866,7 @@ static void __init u8500_init_machine(void)
|
|||
else if (of_machine_is_compatible("st-ericsson,hrefv60+"))
|
||||
hrefv60_pinmaps_init();
|
||||
|
||||
parent = u8500_init_devices();
|
||||
parent = u8500_of_init_devices();
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(mop500_platform_devs); i++)
|
||||
mop500_platform_devs[i]->dev.parent = parent;
|
||||
|
@ -869,15 +883,23 @@ static void __init u8500_init_machine(void)
|
|||
ARRAY_SIZE(mop500_platform_devs));
|
||||
|
||||
mop500_sdi_init(parent);
|
||||
|
||||
i2c0_devs = ARRAY_SIZE(mop500_i2c0_devices);
|
||||
i2c_register_board_info(0, mop500_i2c0_devices, i2c0_devs);
|
||||
i2c_register_board_info(2, mop500_i2c2_devices,
|
||||
ARRAY_SIZE(mop500_i2c2_devices));
|
||||
|
||||
mop500_uib_init();
|
||||
|
||||
} else if (of_machine_is_compatible("calaosystems,snowball-a9500")) {
|
||||
platform_add_devices(snowball_platform_devs,
|
||||
ARRAY_SIZE(snowball_platform_devs));
|
||||
/*
|
||||
* 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+")) {
|
||||
|
@ -898,6 +920,8 @@ static void __init u8500_init_machine(void)
|
|||
i2c_register_board_info(0, mop500_i2c0_devices, i2c0_devs);
|
||||
i2c_register_board_info(2, mop500_i2c2_devices,
|
||||
ARRAY_SIZE(mop500_i2c2_devices));
|
||||
|
||||
mop500_uib_init();
|
||||
}
|
||||
mop500_i2c_init(parent);
|
||||
|
||||
|
|
|
@ -89,7 +89,11 @@ void __init mop500_pinmaps_init(void);
|
|||
void __init snowball_pinmaps_init(void);
|
||||
void __init hrefv60_pinmaps_init(void);
|
||||
|
||||
int __init mop500_uib_init(void);
|
||||
void mop500_uib_i2c_add(int busnum, struct i2c_board_info *info,
|
||||
unsigned n);
|
||||
|
||||
/* TODO: Once all pieces are DT:ed, remove completely. */
|
||||
struct device * __init u8500_of_init_devices(void);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -140,7 +140,6 @@ static struct platform_device *platform_devs[] __initdata = {
|
|||
static struct platform_device *of_platform_devs[] __initdata = {
|
||||
&u8500_dma40_device,
|
||||
&db8500_pmu_device,
|
||||
&db8500_prcmu_device,
|
||||
};
|
||||
|
||||
static resource_size_t __initdata db8500_gpio_base[] = {
|
||||
|
@ -219,6 +218,28 @@ struct device * __init u8500_init_devices(void)
|
|||
db8500_add_gpios(parent);
|
||||
db8500_add_usb(parent, usb_db8500_rx_dma_cfg, usb_db8500_tx_dma_cfg);
|
||||
|
||||
platform_device_register_data(parent,
|
||||
"cpufreq-u8500", -1, NULL, 0);
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(platform_devs); i++)
|
||||
platform_devs[i]->dev.parent = parent;
|
||||
|
||||
platform_add_devices(platform_devs, ARRAY_SIZE(platform_devs));
|
||||
|
||||
return parent;
|
||||
}
|
||||
|
||||
/* TODO: Once all pieces are DT:ed, remove completely. */
|
||||
struct device * __init u8500_of_init_devices(void)
|
||||
{
|
||||
struct device *parent;
|
||||
int i;
|
||||
|
||||
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,
|
||||
"cpufreq-u8500", -1, NULL, 0);
|
||||
|
||||
|
@ -229,7 +250,7 @@ struct device * __init u8500_init_devices(void)
|
|||
* Devices to be DT:ed:
|
||||
* u8500_dma40_device = todo
|
||||
* db8500_pmu_device = todo
|
||||
* db8500_prcmu_device = todo
|
||||
* db8500_prcmu_device = done
|
||||
*/
|
||||
platform_add_devices(of_platform_devs, ARRAY_SIZE(of_platform_devs));
|
||||
|
||||
|
|
|
@ -2735,6 +2735,7 @@ static struct regulator_consumer_supply db8500_vape_consumers[] = {
|
|||
REGULATOR_SUPPLY("vcore", "uart2"),
|
||||
REGULATOR_SUPPLY("v-ape", "nmk-ske-keypad.0"),
|
||||
REGULATOR_SUPPLY("v-hsi", "ste_hsi.0"),
|
||||
REGULATOR_SUPPLY("vddvario", "smsc911x.0"),
|
||||
};
|
||||
|
||||
static struct regulator_consumer_supply db8500_vsmps2_consumers[] = {
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
#include <linux/irq.h>
|
||||
#include <linux/irqdomain.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <linux/pinctrl/pinctrl.h>
|
||||
#include <linux/pinctrl/pinmux.h>
|
||||
#include <linux/pinctrl/pinconf.h>
|
||||
|
@ -1688,18 +1689,34 @@ static struct pinctrl_desc nmk_pinctrl_desc = {
|
|||
.owner = THIS_MODULE,
|
||||
};
|
||||
|
||||
static const struct of_device_id nmk_pinctrl_match[] = {
|
||||
{
|
||||
.compatible = "stericsson,nmk_pinctrl",
|
||||
.data = (void *)PINCTRL_NMK_DB8500,
|
||||
},
|
||||
{},
|
||||
};
|
||||
|
||||
static int __devinit nmk_pinctrl_probe(struct platform_device *pdev)
|
||||
{
|
||||
const struct platform_device_id *platid = platform_get_device_id(pdev);
|
||||
struct device_node *np = pdev->dev.of_node;
|
||||
struct nmk_pinctrl *npct;
|
||||
unsigned int version = 0;
|
||||
int i;
|
||||
|
||||
npct = devm_kzalloc(&pdev->dev, sizeof(*npct), GFP_KERNEL);
|
||||
if (!npct)
|
||||
return -ENOMEM;
|
||||
|
||||
if (platid)
|
||||
version = platid->driver_data;
|
||||
else if (np)
|
||||
version = (unsigned int)
|
||||
of_match_device(nmk_pinctrl_match, &pdev->dev)->data;
|
||||
|
||||
/* Poke in other ASIC variants here */
|
||||
if (platid->driver_data == PINCTRL_NMK_DB8500)
|
||||
if (version == PINCTRL_NMK_DB8500)
|
||||
nmk_pinctrl_db8500_init(&npct->soc);
|
||||
|
||||
/*
|
||||
|
@ -1758,6 +1775,7 @@ static struct platform_driver nmk_pinctrl_driver = {
|
|||
.driver = {
|
||||
.owner = THIS_MODULE,
|
||||
.name = "pinctrl-nomadik",
|
||||
.of_match_table = nmk_pinctrl_match,
|
||||
},
|
||||
.probe = nmk_pinctrl_probe,
|
||||
.id_table = nmk_pinctrl_id,
|
||||
|
|
Loading…
Reference in a new issue