Commit 616d8cf0 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc

Pull ARM SoC fixes from Arnd Bergmann:
 "Here are are a couple of last-minute fixes for 4.16, mostly for
  regressions. As usual, the majory are device tree changes:

   - USB 3 support on rk3399 didn't work and is being reverted for now

   - One fix for an old suspend/resume bug on rk3399

   - A few regulator related fixes on Banana Pi M2, and on imx7d-sdb

   - A boot regression fix for all Aspeed SoCs failing to find their
     memory

   - One more dtc warning fix

  The other changes are:

   - A few updates to the MAINTAINERS file

   - A revert for an incorrect orion5x cleanup

   - Two power management fixes for OMAP"

* tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
  ARM: OMAP: Fix SRAM W+X mapping
  ARM: dts: aspeed: Add default memory node
  mailmap: Update email address for Gregory CLEMENT
  ARM: davinci: fix the GPIO lookup for omapl138-hawk
  MAINTAINERS: Update Tegra IOMMU maintainer
  ARM: dts: imx7d-sdb: Fix regulator-usb-otg2-vbus node name
  ARM: ux500: Fix PMU IRQ regression
  ARM: dts: rockchip: Add missing #sound-dai-cells on rk3288
  Revert "arm64: dts: rockchip: add usb3-phy otg-port support for rk3399"
  arm64: dts: rockchip: Fix rk3399-gru-* s2r (pinctrl hogs, wifi reset)
  ARM: OMAP: Fix dmtimer init for omap1
  MAINTAINERS: update email address for Maxime Ripard
  ARM: dts: sun6i: a31s: bpi-m2: add missing regulators
  ARM: dts: sun6i: a31s: bpi-m2: improve pmic properties
parents d2b35e00 bbad2093
...@@ -62,6 +62,7 @@ Frank Zago <fzago@systemfabricworks.com> ...@@ -62,6 +62,7 @@ Frank Zago <fzago@systemfabricworks.com>
Greg Kroah-Hartman <greg@echidna.(none)> Greg Kroah-Hartman <greg@echidna.(none)>
Greg Kroah-Hartman <gregkh@suse.de> Greg Kroah-Hartman <gregkh@suse.de>
Greg Kroah-Hartman <greg@kroah.com> Greg Kroah-Hartman <greg@kroah.com>
Gregory CLEMENT <gregory.clement@bootlin.com> <gregory.clement@free-electrons.com>
Henk Vergonet <Henk.Vergonet@gmail.com> Henk Vergonet <Henk.Vergonet@gmail.com>
Henrik Kretzschmar <henne@nachtwindheim.de> Henrik Kretzschmar <henne@nachtwindheim.de>
Henrik Rydberg <rydberg@bitmath.org> Henrik Rydberg <rydberg@bitmath.org>
......
...@@ -1152,7 +1152,7 @@ S: Maintained ...@@ -1152,7 +1152,7 @@ S: Maintained
F: drivers/clk/sunxi/ F: drivers/clk/sunxi/
ARM/Allwinner sunXi SoC support ARM/Allwinner sunXi SoC support
M: Maxime Ripard <maxime.ripard@free-electrons.com> M: Maxime Ripard <maxime.ripard@bootlin.com>
M: Chen-Yu Tsai <wens@csie.org> M: Chen-Yu Tsai <wens@csie.org>
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
S: Maintained S: Maintained
...@@ -4626,7 +4626,7 @@ F: include/uapi/drm/drm* ...@@ -4626,7 +4626,7 @@ F: include/uapi/drm/drm*
F: include/linux/vga* F: include/linux/vga*
DRM DRIVERS FOR ALLWINNER A10 DRM DRIVERS FOR ALLWINNER A10
M: Maxime Ripard <maxime.ripard@free-electrons.com> M: Maxime Ripard <maxime.ripard@bootlin.com>
L: dri-devel@lists.freedesktop.org L: dri-devel@lists.freedesktop.org
S: Supported S: Supported
F: drivers/gpu/drm/sun4i/ F: drivers/gpu/drm/sun4i/
...@@ -13644,7 +13644,8 @@ S: Supported ...@@ -13644,7 +13644,8 @@ S: Supported
F: drivers/i2c/busses/i2c-tegra.c F: drivers/i2c/busses/i2c-tegra.c
TEGRA IOMMU DRIVERS TEGRA IOMMU DRIVERS
M: Hiroshi Doyu <hdoyu@nvidia.com> M: Thierry Reding <thierry.reding@gmail.com>
L: linux-tegra@vger.kernel.org
S: Supported S: Supported
F: drivers/iommu/tegra* F: drivers/iommu/tegra*
......
...@@ -42,6 +42,11 @@ cpu@0 { ...@@ -42,6 +42,11 @@ cpu@0 {
}; };
}; };
memory@40000000 {
device_type = "memory";
reg = <0x40000000 0>;
};
ahb { ahb {
compatible = "simple-bus"; compatible = "simple-bus";
#address-cells = <1>; #address-cells = <1>;
......
...@@ -42,6 +42,11 @@ cpu@0 { ...@@ -42,6 +42,11 @@ cpu@0 {
}; };
}; };
memory@80000000 {
device_type = "memory";
reg = <0x80000000 0>;
};
ahb { ahb {
compatible = "simple-bus"; compatible = "simple-bus";
#address-cells = <1>; #address-cells = <1>;
......
...@@ -82,7 +82,7 @@ reg_usb_otg1_vbus: regulator-usb-otg1-vbus { ...@@ -82,7 +82,7 @@ reg_usb_otg1_vbus: regulator-usb-otg1-vbus {
enable-active-high; enable-active-high;
}; };
reg_usb_otg2_vbus: regulator-usb-otg1-vbus { reg_usb_otg2_vbus: regulator-usb-otg2-vbus {
compatible = "regulator-fixed"; compatible = "regulator-fixed";
regulator-name = "usb_otg2_vbus"; regulator-name = "usb_otg2_vbus";
regulator-min-microvolt = <5000000>; regulator-min-microvolt = <5000000>;
......
...@@ -927,6 +927,7 @@ spdif: sound@ff88b0000 { ...@@ -927,6 +927,7 @@ spdif: sound@ff88b0000 {
i2s: i2s@ff890000 { i2s: i2s@ff890000 {
compatible = "rockchip,rk3288-i2s", "rockchip,rk3066-i2s"; compatible = "rockchip,rk3288-i2s", "rockchip,rk3066-i2s";
reg = <0x0 0xff890000 0x0 0x10000>; reg = <0x0 0xff890000 0x0 0x10000>;
#sound-dai-cells = <0>;
interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
...@@ -1176,6 +1177,7 @@ hdmi: hdmi@ff980000 { ...@@ -1176,6 +1177,7 @@ hdmi: hdmi@ff980000 {
compatible = "rockchip,rk3288-dw-hdmi"; compatible = "rockchip,rk3288-dw-hdmi";
reg = <0x0 0xff980000 0x0 0x20000>; reg = <0x0 0xff980000 0x0 0x20000>;
reg-io-width = <4>; reg-io-width = <4>;
#sound-dai-cells = <0>;
rockchip,grf = <&grf>; rockchip,grf = <&grf>;
interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru PCLK_HDMI_CTRL>, <&cru SCLK_HDMI_HDCP>, <&cru SCLK_HDMI_CEC>; clocks = <&cru PCLK_HDMI_CTRL>, <&cru SCLK_HDMI_HDCP>, <&cru SCLK_HDMI_CEC>;
......
...@@ -42,7 +42,6 @@ ...@@ -42,7 +42,6 @@
/dts-v1/; /dts-v1/;
#include "sun6i-a31s.dtsi" #include "sun6i-a31s.dtsi"
#include "sunxi-common-regulators.dtsi"
#include <dt-bindings/gpio/gpio.h> #include <dt-bindings/gpio/gpio.h>
/ { / {
...@@ -99,6 +98,7 @@ &gmac { ...@@ -99,6 +98,7 @@ &gmac {
pinctrl-0 = <&gmac_pins_rgmii_a>, <&gmac_phy_reset_pin_bpi_m2>; pinctrl-0 = <&gmac_pins_rgmii_a>, <&gmac_phy_reset_pin_bpi_m2>;
phy = <&phy1>; phy = <&phy1>;
phy-mode = "rgmii"; phy-mode = "rgmii";
phy-supply = <&reg_dldo1>;
snps,reset-gpio = <&pio 0 21 GPIO_ACTIVE_HIGH>; /* PA21 */ snps,reset-gpio = <&pio 0 21 GPIO_ACTIVE_HIGH>; /* PA21 */
snps,reset-active-low; snps,reset-active-low;
snps,reset-delays-us = <0 10000 30000>; snps,reset-delays-us = <0 10000 30000>;
...@@ -118,7 +118,7 @@ &ir { ...@@ -118,7 +118,7 @@ &ir {
&mmc0 { &mmc0 {
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_bpi_m2>; pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_bpi_m2>;
vmmc-supply = <&reg_vcc3v0>; vmmc-supply = <&reg_dcdc1>;
bus-width = <4>; bus-width = <4>;
cd-gpios = <&pio 0 4 GPIO_ACTIVE_HIGH>; /* PA4 */ cd-gpios = <&pio 0 4 GPIO_ACTIVE_HIGH>; /* PA4 */
cd-inverted; cd-inverted;
...@@ -132,7 +132,7 @@ &mmc0_pins_a { ...@@ -132,7 +132,7 @@ &mmc0_pins_a {
&mmc2 { &mmc2 {
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&mmc2_pins_a>; pinctrl-0 = <&mmc2_pins_a>;
vmmc-supply = <&reg_vcc3v0>; vmmc-supply = <&reg_aldo1>;
mmc-pwrseq = <&mmc2_pwrseq>; mmc-pwrseq = <&mmc2_pwrseq>;
bus-width = <4>; bus-width = <4>;
non-removable; non-removable;
...@@ -163,6 +163,8 @@ axp22x: pmic@68 { ...@@ -163,6 +163,8 @@ axp22x: pmic@68 {
reg = <0x68>; reg = <0x68>;
interrupt-parent = <&nmi_intc>; interrupt-parent = <&nmi_intc>;
interrupts = <0 IRQ_TYPE_LEVEL_LOW>; interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
eldoin-supply = <&reg_dcdc1>;
x-powers,drive-vbus-en;
}; };
}; };
...@@ -193,7 +195,28 @@ mmc2_pwrseq_pin_bpi_m2: mmc2_pwrseq_pin@0 { ...@@ -193,7 +195,28 @@ mmc2_pwrseq_pin_bpi_m2: mmc2_pwrseq_pin@0 {
#include "axp22x.dtsi" #include "axp22x.dtsi"
&reg_aldo1 {
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-name = "vcc-wifi";
};
&reg_aldo2 {
regulator-always-on;
regulator-min-microvolt = <2500000>;
regulator-max-microvolt = <2500000>;
regulator-name = "vcc-gmac";
};
&reg_aldo3 {
regulator-always-on;
regulator-min-microvolt = <3000000>;
regulator-max-microvolt = <3000000>;
regulator-name = "avcc";
};
&reg_dc5ldo { &reg_dc5ldo {
regulator-always-on;
regulator-min-microvolt = <700000>; regulator-min-microvolt = <700000>;
regulator-max-microvolt = <1320000>; regulator-max-microvolt = <1320000>;
regulator-name = "vdd-cpus"; regulator-name = "vdd-cpus";
...@@ -233,6 +256,40 @@ &reg_dcdc5 { ...@@ -233,6 +256,40 @@ &reg_dcdc5 {
regulator-name = "vcc-dram"; regulator-name = "vcc-dram";
}; };
&reg_dldo1 {
regulator-min-microvolt = <3000000>;
regulator-max-microvolt = <3000000>;
regulator-name = "vcc-mac";
};
&reg_dldo2 {
regulator-min-microvolt = <2800000>;
regulator-max-microvolt = <2800000>;
regulator-name = "avdd-csi";
};
&reg_dldo3 {
regulator-always-on;
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-name = "vcc-pb";
};
&reg_eldo1 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-name = "vdd-csi";
status = "okay";
};
&reg_ldo_io1 {
regulator-always-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-name = "vcc-pm-cpus";
status = "okay";
};
&uart0 { &uart0 {
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&uart0_pins_a>; pinctrl-0 = <&uart0_pins_a>;
......
...@@ -127,8 +127,8 @@ static struct gpiod_lookup_table mmc_gpios_table = { ...@@ -127,8 +127,8 @@ static struct gpiod_lookup_table mmc_gpios_table = {
.dev_id = "da830-mmc.0", .dev_id = "da830-mmc.0",
.table = { .table = {
/* CD: gpio3_12: gpio60: chip 1 contains gpio range 32-63*/ /* CD: gpio3_12: gpio60: chip 1 contains gpio range 32-63*/
GPIO_LOOKUP("davinci_gpio.1", 28, "cd", GPIO_ACTIVE_LOW), GPIO_LOOKUP("davinci_gpio.0", 28, "cd", GPIO_ACTIVE_LOW),
GPIO_LOOKUP("davinci_gpio.1", 29, "wp", GPIO_ACTIVE_LOW), GPIO_LOOKUP("davinci_gpio.0", 29, "wp", GPIO_ACTIVE_LOW),
}, },
}; };
......
...@@ -133,6 +133,9 @@ static void __init u8500_init_machine(void) ...@@ -133,6 +133,9 @@ static void __init u8500_init_machine(void)
if (of_machine_is_compatible("st-ericsson,u8540")) if (of_machine_is_compatible("st-ericsson,u8540"))
of_platform_populate(NULL, u8500_local_bus_nodes, of_platform_populate(NULL, u8500_local_bus_nodes,
u8540_auxdata_lookup, NULL); u8540_auxdata_lookup, NULL);
else
of_platform_populate(NULL, u8500_local_bus_nodes,
NULL, NULL);
} }
static const char * stericsson_dt_platform_compat[] = { static const char * stericsson_dt_platform_compat[] = {
......
...@@ -888,11 +888,8 @@ static int omap_dm_timer_probe(struct platform_device *pdev) ...@@ -888,11 +888,8 @@ static int omap_dm_timer_probe(struct platform_device *pdev)
timer->irq = irq->start; timer->irq = irq->start;
timer->pdev = pdev; timer->pdev = pdev;
/* Skip pm_runtime_enable for OMAP1 */ pm_runtime_enable(dev);
if (!(timer->capability & OMAP_TIMER_NEEDS_RESET)) { pm_runtime_irq_safe(dev);
pm_runtime_enable(dev);
pm_runtime_irq_safe(dev);
}
if (!timer->reserved) { if (!timer->reserved) {
ret = pm_runtime_get_sync(dev); ret = pm_runtime_get_sync(dev);
......
...@@ -5,13 +5,4 @@ void omap_map_sram(unsigned long start, unsigned long size, ...@@ -5,13 +5,4 @@ void omap_map_sram(unsigned long start, unsigned long size,
unsigned long skip, int cached); unsigned long skip, int cached);
void omap_sram_reset(void); void omap_sram_reset(void);
extern void *omap_sram_push_address(unsigned long size); extern void *omap_sram_push(void *funcp, unsigned long size);
/* Macro to push a function to the internal SRAM, using the fncpy API */
#define omap_sram_push(funcp, size) ({ \
typeof(&(funcp)) _res = NULL; \
void *_sram_address = omap_sram_push_address(size); \
if (_sram_address) \
_res = fncpy(_sram_address, &(funcp), size); \
_res; \
})
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
#include <asm/fncpy.h> #include <asm/fncpy.h>
#include <asm/tlb.h> #include <asm/tlb.h>
#include <asm/cacheflush.h> #include <asm/cacheflush.h>
#include <asm/set_memory.h>
#include <asm/mach/map.h> #include <asm/mach/map.h>
...@@ -42,7 +43,7 @@ static void __iomem *omap_sram_ceil; ...@@ -42,7 +43,7 @@ static void __iomem *omap_sram_ceil;
* Note that fncpy requires the returned address to be aligned * Note that fncpy requires the returned address to be aligned
* to an 8-byte boundary. * to an 8-byte boundary.
*/ */
void *omap_sram_push_address(unsigned long size) static void *omap_sram_push_address(unsigned long size)
{ {
unsigned long available, new_ceil = (unsigned long)omap_sram_ceil; unsigned long available, new_ceil = (unsigned long)omap_sram_ceil;
...@@ -60,6 +61,30 @@ void *omap_sram_push_address(unsigned long size) ...@@ -60,6 +61,30 @@ void *omap_sram_push_address(unsigned long size)
return (void *)omap_sram_ceil; return (void *)omap_sram_ceil;
} }
void *omap_sram_push(void *funcp, unsigned long size)
{
void *sram;
unsigned long base;
int pages;
void *dst = NULL;
sram = omap_sram_push_address(size);
if (!sram)
return NULL;
base = (unsigned long)sram & PAGE_MASK;
pages = PAGE_ALIGN(size) / PAGE_SIZE;
set_memory_rw(base, pages);
dst = fncpy(sram, funcp, size);
set_memory_ro(base, pages);
set_memory_x(base, pages);
return dst;
}
/* /*
* The SRAM context is lost during off-idle and stack * The SRAM context is lost during off-idle and stack
* needs to be reset. * needs to be reset.
...@@ -75,6 +100,9 @@ void omap_sram_reset(void) ...@@ -75,6 +100,9 @@ void omap_sram_reset(void)
void __init omap_map_sram(unsigned long start, unsigned long size, void __init omap_map_sram(unsigned long start, unsigned long size,
unsigned long skip, int cached) unsigned long skip, int cached)
{ {
unsigned long base;
int pages;
if (size == 0) if (size == 0)
return; return;
...@@ -95,4 +123,10 @@ void __init omap_map_sram(unsigned long start, unsigned long size, ...@@ -95,4 +123,10 @@ void __init omap_map_sram(unsigned long start, unsigned long size,
*/ */
memset_io(omap_sram_base + omap_sram_skip, 0, memset_io(omap_sram_base + omap_sram_skip, 0,
omap_sram_size - omap_sram_skip); omap_sram_size - omap_sram_skip);
base = (unsigned long)omap_sram_base;
pages = PAGE_ALIGN(omap_sram_size) / PAGE_SIZE;
set_memory_ro(base, pages);
set_memory_x(base, pages);
} }
...@@ -406,8 +406,9 @@ pp1800_pcie: pp1800-pcie { ...@@ -406,8 +406,9 @@ pp1800_pcie: pp1800-pcie {
wlan_pd_n: wlan-pd-n { wlan_pd_n: wlan-pd-n {
compatible = "regulator-fixed"; compatible = "regulator-fixed";
regulator-name = "wlan_pd_n"; regulator-name = "wlan_pd_n";
pinctrl-names = "default";
pinctrl-0 = <&wlan_module_reset_l>;
/* Note the wlan_module_reset_l pinctrl */
enable-active-high; enable-active-high;
gpio = <&gpio1 11 GPIO_ACTIVE_HIGH>; gpio = <&gpio1 11 GPIO_ACTIVE_HIGH>;
...@@ -983,12 +984,6 @@ &pinctrl { ...@@ -983,12 +984,6 @@ &pinctrl {
pinctrl-0 = < pinctrl-0 = <
&ap_pwroff /* AP will auto-assert this when in S3 */ &ap_pwroff /* AP will auto-assert this when in S3 */
&clk_32k /* This pin is always 32k on gru boards */ &clk_32k /* This pin is always 32k on gru boards */
/*
* We want this driven low ASAP; firmware should help us, but
* we can help ourselves too.
*/
&wlan_module_reset_l
>; >;
pcfg_output_low: pcfg-output-low { pcfg_output_low: pcfg-output-low {
...@@ -1168,12 +1163,7 @@ wifi_perst_l: wifi-perst-l { ...@@ -1168,12 +1163,7 @@ wifi_perst_l: wifi-perst-l {
}; };
wlan_module_reset_l: wlan-module-reset-l { wlan_module_reset_l: wlan-module-reset-l {
/* rockchip,pins = <1 11 RK_FUNC_GPIO &pcfg_pull_none>;
* We want this driven low ASAP (As {Soon,Strongly} As
* Possible), to avoid leakage through the powered-down
* WiFi.
*/
rockchip,pins = <1 11 RK_FUNC_GPIO &pcfg_output_low>;
}; };
bt_host_wake_l: bt-host-wake-l { bt_host_wake_l: bt-host-wake-l {
......
...@@ -411,8 +411,8 @@ usbdrd_dwc3_0: dwc3 { ...@@ -411,8 +411,8 @@ usbdrd_dwc3_0: dwc3 {
reg = <0x0 0xfe800000 0x0 0x100000>; reg = <0x0 0xfe800000 0x0 0x100000>;
interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH 0>; interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH 0>;
dr_mode = "otg"; dr_mode = "otg";
phys = <&u2phy0_otg>, <&tcphy0_usb3>; phys = <&u2phy0_otg>;
phy-names = "usb2-phy", "usb3-phy"; phy-names = "usb2-phy";
phy_type = "utmi_wide"; phy_type = "utmi_wide";
snps,dis_enblslpm_quirk; snps,dis_enblslpm_quirk;
snps,dis-u2-freeclk-exists-quirk; snps,dis-u2-freeclk-exists-quirk;
...@@ -444,8 +444,8 @@ usbdrd_dwc3_1: dwc3 { ...@@ -444,8 +444,8 @@ usbdrd_dwc3_1: dwc3 {
reg = <0x0 0xfe900000 0x0 0x100000>; reg = <0x0 0xfe900000 0x0 0x100000>;
interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH 0>; interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH 0>;
dr_mode = "otg"; dr_mode = "otg";
phys = <&u2phy1_otg>, <&tcphy1_usb3>; phys = <&u2phy1_otg>;
phy-names = "usb2-phy", "usb3-phy"; phy-names = "usb2-phy";
phy_type = "utmi_wide"; phy_type = "utmi_wide";
snps,dis_enblslpm_quirk; snps,dis_enblslpm_quirk;
snps,dis-u2-freeclk-exists-quirk; snps,dis-u2-freeclk-exists-quirk;
......
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