Commit 44866956 authored by Linus Torvalds's avatar Linus Torvalds

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

Pull ARM SoC fixes from Olof Johansson:
 "A set of fixes that have trickled in over the last couple of weeks:

   - MAINTAINER update for Cavium/Marvell ThunderX2

   - stm32 tweaks to pinmux for Joystick/Camera, and RAM allocation for
     CAN interfaces

   - i.MX fixes for voltage regulator GPIO mappings, fixes voltage
     scaling issues

   - More i.MX fixes for various issues on i.MX eval boards: interrupt
     storm due to u-boot leaving pins in new states, fixing power button
     config, a couple of compatible-string corrections.

   - Powerdown and Suspend/Resume fixes for Allwinner A83-based tablets

   - A few documentation tweaks and a fix of a memory leak in the reset
     subsystem"

* tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc:
  MAINTAINERS: update Cavium ThunderX2 maintainers
  ARM: dts: stm32: change joystick pinctrl definition on stm32mp157c-ev1
  ARM: dts: stm32: remove OV5640 pinctrl definition on stm32mp157c-ev1
  ARM: dts: stm32: Fix CAN RAM mapping on stm32mp157c
  ARM: dts: stm32: relax qspi pins slew-rate for stm32mp157
  arm64: dts: zii-ultra: fix ARM regulator GPIO handle
  ARM: sunxi: Fix CPU powerdown on A83T
  ARM: dts: sun8i-a83t-tbs-a711: Fix WiFi resume from suspend
  arm64: dts: imx8mn: fix compatible string for sdma
  arm64: dts: imx8mm: fix compatible string for sdma
  reset: fix reset_control_ops kerneldoc comment
  ARM: dts: imx6-logicpd: Re-enable SNVS power key
  soc: imx: gpc: fix initialiser format
  ARM: dts: imx6qdl-sabreauto: Fix storm of accelerometer interrupts
  arm64: dts: ls1028a: fix a compatible issue
  reset: fix reset_control_get_exclusive kerneldoc comment
  reset: fix reset_control_lookup kerneldoc comment
  reset: fix of_reset_control_get_count kerneldoc comment
  reset: fix of_reset_simple_xlate kerneldoc comment
  reset: Fix memory leak in reset_control_array_put()
parents dd892625 002d3c65
...@@ -108,6 +108,10 @@ Jason Gunthorpe <jgg@ziepe.ca> <jgg@mellanox.com> ...@@ -108,6 +108,10 @@ Jason Gunthorpe <jgg@ziepe.ca> <jgg@mellanox.com>
Jason Gunthorpe <jgg@ziepe.ca> <jgunthorpe@obsidianresearch.com> Jason Gunthorpe <jgg@ziepe.ca> <jgunthorpe@obsidianresearch.com>
Javi Merino <javi.merino@kernel.org> <javi.merino@arm.com> Javi Merino <javi.merino@kernel.org> <javi.merino@arm.com>
<javier@osg.samsung.com> <javier.martinez@collabora.co.uk> <javier@osg.samsung.com> <javier.martinez@collabora.co.uk>
Jayachandran C <c.jayachandran@gmail.com> <jayachandranc@netlogicmicro.com>
Jayachandran C <c.jayachandran@gmail.com> <jchandra@broadcom.com>
Jayachandran C <c.jayachandran@gmail.com> <jchandra@digeo.com>
Jayachandran C <c.jayachandran@gmail.com> <jnair@caviumnetworks.com>
Jean Tourrilhes <jt@hpl.hp.com> Jean Tourrilhes <jt@hpl.hp.com>
<jean-philippe@linaro.org> <jean-philippe.brucker@arm.com> <jean-philippe@linaro.org> <jean-philippe.brucker@arm.com>
Jeff Garzik <jgarzik@pretzel.yyz.us> Jeff Garzik <jgarzik@pretzel.yyz.us>
......
...@@ -3738,7 +3738,6 @@ F: drivers/crypto/cavium/cpt/ ...@@ -3738,7 +3738,6 @@ F: drivers/crypto/cavium/cpt/
CAVIUM THUNDERX2 ARM64 SOC CAVIUM THUNDERX2 ARM64 SOC
M: Robert Richter <rrichter@cavium.com> M: Robert Richter <rrichter@cavium.com>
M: Jayachandran C <jnair@caviumnetworks.com>
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
F: arch/arm64/boot/dts/cavium/thunder2-99xx* F: arch/arm64/boot/dts/cavium/thunder2-99xx*
......
...@@ -328,6 +328,10 @@ &pwm3 { ...@@ -328,6 +328,10 @@ &pwm3 {
pinctrl-0 = <&pinctrl_pwm3>; pinctrl-0 = <&pinctrl_pwm3>;
}; };
&snvs_pwrkey {
status = "okay";
};
&ssi2 { &ssi2 {
status = "okay"; status = "okay";
}; };
......
...@@ -230,6 +230,8 @@ magnetometer@e { ...@@ -230,6 +230,8 @@ magnetometer@e {
accelerometer@1c { accelerometer@1c {
compatible = "fsl,mma8451"; compatible = "fsl,mma8451";
reg = <0x1c>; reg = <0x1c>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_mma8451_int>;
interrupt-parent = <&gpio6>; interrupt-parent = <&gpio6>;
interrupts = <31 IRQ_TYPE_LEVEL_LOW>; interrupts = <31 IRQ_TYPE_LEVEL_LOW>;
}; };
...@@ -628,6 +630,12 @@ MX6QDL_PAD_SD2_DAT0__GPIO1_IO15 0x1b0b0 ...@@ -628,6 +630,12 @@ MX6QDL_PAD_SD2_DAT0__GPIO1_IO15 0x1b0b0
>; >;
}; };
pinctrl_mma8451_int: mma8451intgrp {
fsl,pins = <
MX6QDL_PAD_EIM_BCLK__GPIO6_IO31 0xb0b1
>;
};
pinctrl_pwm3: pwm1grp { pinctrl_pwm3: pwm1grp {
fsl,pins = < fsl,pins = <
MX6QDL_PAD_SD4_DAT1__PWM3_OUT 0x1b0b1 MX6QDL_PAD_SD4_DAT1__PWM3_OUT 0x1b0b1
......
...@@ -183,14 +183,12 @@ &i2c2 { ...@@ -183,14 +183,12 @@ &i2c2 {
ov5640: camera@3c { ov5640: camera@3c {
compatible = "ovti,ov5640"; compatible = "ovti,ov5640";
pinctrl-names = "default";
pinctrl-0 = <&ov5640_pins>;
reg = <0x3c>; reg = <0x3c>;
clocks = <&clk_ext_camera>; clocks = <&clk_ext_camera>;
clock-names = "xclk"; clock-names = "xclk";
DOVDD-supply = <&v2v8>; DOVDD-supply = <&v2v8>;
powerdown-gpios = <&stmfx_pinctrl 18 GPIO_ACTIVE_HIGH>; powerdown-gpios = <&stmfx_pinctrl 18 (GPIO_ACTIVE_HIGH | GPIO_PUSH_PULL)>;
reset-gpios = <&stmfx_pinctrl 19 GPIO_ACTIVE_LOW>; reset-gpios = <&stmfx_pinctrl 19 (GPIO_ACTIVE_LOW | GPIO_PUSH_PULL)>;
rotation = <180>; rotation = <180>;
status = "okay"; status = "okay";
...@@ -223,15 +221,8 @@ stmfx_pinctrl: stmfx-pin-controller { ...@@ -223,15 +221,8 @@ stmfx_pinctrl: stmfx-pin-controller {
joystick_pins: joystick { joystick_pins: joystick {
pins = "gpio0", "gpio1", "gpio2", "gpio3", "gpio4"; pins = "gpio0", "gpio1", "gpio2", "gpio3", "gpio4";
drive-push-pull;
bias-pull-down; bias-pull-down;
}; };
ov5640_pins: camera {
pins = "agpio2", "agpio3"; /* stmfx pins 18 & 19 */
drive-push-pull;
output-low;
};
}; };
}; };
}; };
......
...@@ -932,7 +932,7 @@ m_can1: can@4400e000 { ...@@ -932,7 +932,7 @@ m_can1: can@4400e000 {
interrupt-names = "int0", "int1"; interrupt-names = "int0", "int1";
clocks = <&rcc CK_HSE>, <&rcc FDCAN_K>; clocks = <&rcc CK_HSE>, <&rcc FDCAN_K>;
clock-names = "hclk", "cclk"; clock-names = "hclk", "cclk";
bosch,mram-cfg = <0x1400 0 0 32 0 0 2 2>; bosch,mram-cfg = <0x0 0 0 32 0 0 2 2>;
status = "disabled"; status = "disabled";
}; };
...@@ -945,7 +945,7 @@ m_can2: can@4400f000 { ...@@ -945,7 +945,7 @@ m_can2: can@4400f000 {
interrupt-names = "int0", "int1"; interrupt-names = "int0", "int1";
clocks = <&rcc CK_HSE>, <&rcc FDCAN_K>; clocks = <&rcc CK_HSE>, <&rcc FDCAN_K>;
clock-names = "hclk", "cclk"; clock-names = "hclk", "cclk";
bosch,mram-cfg = <0x0 0 0 32 0 0 2 2>; bosch,mram-cfg = <0x1400 0 0 32 0 0 2 2>;
status = "disabled"; status = "disabled";
}; };
......
...@@ -192,6 +192,7 @@ &mmc1 { ...@@ -192,6 +192,7 @@ &mmc1 {
vqmmc-supply = <&reg_dldo1>; vqmmc-supply = <&reg_dldo1>;
non-removable; non-removable;
wakeup-source; wakeup-source;
keep-power-in-suspend;
status = "okay"; status = "okay";
brcmf: wifi@1 { brcmf: wifi@1 {
......
...@@ -481,14 +481,18 @@ static void sunxi_mc_smp_cpu_die(unsigned int l_cpu) ...@@ -481,14 +481,18 @@ static void sunxi_mc_smp_cpu_die(unsigned int l_cpu)
static int sunxi_cpu_powerdown(unsigned int cpu, unsigned int cluster) static int sunxi_cpu_powerdown(unsigned int cpu, unsigned int cluster)
{ {
u32 reg; u32 reg;
int gating_bit = cpu;
pr_debug("%s: cluster %u cpu %u\n", __func__, cluster, cpu); pr_debug("%s: cluster %u cpu %u\n", __func__, cluster, cpu);
if (cpu >= SUNXI_CPUS_PER_CLUSTER || cluster >= SUNXI_NR_CLUSTERS) if (cpu >= SUNXI_CPUS_PER_CLUSTER || cluster >= SUNXI_NR_CLUSTERS)
return -EINVAL; return -EINVAL;
if (is_a83t && cpu == 0)
gating_bit = 4;
/* gate processor power */ /* gate processor power */
reg = readl(prcm_base + PRCM_PWROFF_GATING_REG(cluster)); reg = readl(prcm_base + PRCM_PWROFF_GATING_REG(cluster));
reg |= PRCM_PWROFF_GATING_REG_CORE(cpu); reg |= PRCM_PWROFF_GATING_REG_CORE(gating_bit);
writel(reg, prcm_base + PRCM_PWROFF_GATING_REG(cluster)); writel(reg, prcm_base + PRCM_PWROFF_GATING_REG(cluster));
udelay(20); udelay(20);
......
...@@ -127,7 +127,7 @@ &i2c0 { ...@@ -127,7 +127,7 @@ &i2c0 {
status = "okay"; status = "okay";
i2c-mux@77 { i2c-mux@77 {
compatible = "nxp,pca9847"; compatible = "nxp,pca9547";
reg = <0x77>; reg = <0x77>;
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
......
...@@ -394,7 +394,7 @@ wdog3: watchdog@302a0000 { ...@@ -394,7 +394,7 @@ wdog3: watchdog@302a0000 {
}; };
sdma2: dma-controller@302c0000 { sdma2: dma-controller@302c0000 {
compatible = "fsl,imx8mm-sdma", "fsl,imx7d-sdma"; compatible = "fsl,imx8mm-sdma", "fsl,imx8mq-sdma";
reg = <0x302c0000 0x10000>; reg = <0x302c0000 0x10000>;
interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk IMX8MM_CLK_SDMA2_ROOT>, clocks = <&clk IMX8MM_CLK_SDMA2_ROOT>,
...@@ -405,7 +405,7 @@ sdma2: dma-controller@302c0000 { ...@@ -405,7 +405,7 @@ sdma2: dma-controller@302c0000 {
}; };
sdma3: dma-controller@302b0000 { sdma3: dma-controller@302b0000 {
compatible = "fsl,imx8mm-sdma", "fsl,imx7d-sdma"; compatible = "fsl,imx8mm-sdma", "fsl,imx8mq-sdma";
reg = <0x302b0000 0x10000>; reg = <0x302b0000 0x10000>;
interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk IMX8MM_CLK_SDMA3_ROOT>, clocks = <&clk IMX8MM_CLK_SDMA3_ROOT>,
...@@ -737,7 +737,7 @@ usdhc3: mmc@30b60000 { ...@@ -737,7 +737,7 @@ usdhc3: mmc@30b60000 {
}; };
sdma1: dma-controller@30bd0000 { sdma1: dma-controller@30bd0000 {
compatible = "fsl,imx8mm-sdma", "fsl,imx7d-sdma"; compatible = "fsl,imx8mm-sdma", "fsl,imx8mq-sdma";
reg = <0x30bd0000 0x10000>; reg = <0x30bd0000 0x10000>;
interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk IMX8MM_CLK_SDMA1_ROOT>, clocks = <&clk IMX8MM_CLK_SDMA1_ROOT>,
......
...@@ -288,7 +288,7 @@ wdog3: watchdog@302a0000 { ...@@ -288,7 +288,7 @@ wdog3: watchdog@302a0000 {
}; };
sdma3: dma-controller@302b0000 { sdma3: dma-controller@302b0000 {
compatible = "fsl,imx8mn-sdma", "fsl,imx7d-sdma"; compatible = "fsl,imx8mn-sdma", "fsl,imx8mq-sdma";
reg = <0x302b0000 0x10000>; reg = <0x302b0000 0x10000>;
interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk IMX8MN_CLK_SDMA3_ROOT>, clocks = <&clk IMX8MN_CLK_SDMA3_ROOT>,
...@@ -299,7 +299,7 @@ sdma3: dma-controller@302b0000 { ...@@ -299,7 +299,7 @@ sdma3: dma-controller@302b0000 {
}; };
sdma2: dma-controller@302c0000 { sdma2: dma-controller@302c0000 {
compatible = "fsl,imx8mn-sdma", "fsl,imx7d-sdma"; compatible = "fsl,imx8mn-sdma", "fsl,imx8mq-sdma";
reg = <0x302c0000 0x10000>; reg = <0x302c0000 0x10000>;
interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk IMX8MN_CLK_SDMA2_ROOT>, clocks = <&clk IMX8MN_CLK_SDMA2_ROOT>,
...@@ -612,7 +612,7 @@ usdhc3: mmc@30b60000 { ...@@ -612,7 +612,7 @@ usdhc3: mmc@30b60000 {
}; };
sdma1: dma-controller@30bd0000 { sdma1: dma-controller@30bd0000 {
compatible = "fsl,imx8mn-sdma", "fsl,imx7d-sdma"; compatible = "fsl,imx8mn-sdma", "fsl,imx8mq-sdma";
reg = <0x30bd0000 0x10000>; reg = <0x30bd0000 0x10000>;
interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk IMX8MN_CLK_SDMA1_ROOT>, clocks = <&clk IMX8MN_CLK_SDMA1_ROOT>,
......
...@@ -88,7 +88,7 @@ reg_arm: regulator-arm { ...@@ -88,7 +88,7 @@ reg_arm: regulator-arm {
regulator-name = "0V9_ARM"; regulator-name = "0V9_ARM";
regulator-min-microvolt = <900000>; regulator-min-microvolt = <900000>;
regulator-max-microvolt = <1000000>; regulator-max-microvolt = <1000000>;
gpios = <&gpio3 19 GPIO_ACTIVE_HIGH>; gpios = <&gpio3 16 GPIO_ACTIVE_HIGH>;
states = <1000000 0x1 states = <1000000 0x1
900000 0x0>; 900000 0x0>;
regulator-always-on; regulator-always-on;
......
...@@ -76,7 +76,6 @@ static const char *rcdev_name(struct reset_controller_dev *rcdev) ...@@ -76,7 +76,6 @@ static const char *rcdev_name(struct reset_controller_dev *rcdev)
* of_reset_simple_xlate - translate reset_spec to the reset line number * of_reset_simple_xlate - translate reset_spec to the reset line number
* @rcdev: a pointer to the reset controller device * @rcdev: a pointer to the reset controller device
* @reset_spec: reset line specifier as found in the device tree * @reset_spec: reset line specifier as found in the device tree
* @flags: a flags pointer to fill in (optional)
* *
* This simple translation function should be used for reset controllers * This simple translation function should be used for reset controllers
* with 1:1 mapping, where reset lines can be indexed by number without gaps. * with 1:1 mapping, where reset lines can be indexed by number without gaps.
...@@ -748,6 +747,7 @@ static void reset_control_array_put(struct reset_control_array *resets) ...@@ -748,6 +747,7 @@ static void reset_control_array_put(struct reset_control_array *resets)
for (i = 0; i < resets->num_rstcs; i++) for (i = 0; i < resets->num_rstcs; i++)
__reset_control_put_internal(resets->rstc[i]); __reset_control_put_internal(resets->rstc[i]);
mutex_unlock(&reset_list_mutex); mutex_unlock(&reset_list_mutex);
kfree(resets);
} }
/** /**
...@@ -825,9 +825,10 @@ int __device_reset(struct device *dev, bool optional) ...@@ -825,9 +825,10 @@ int __device_reset(struct device *dev, bool optional)
} }
EXPORT_SYMBOL_GPL(__device_reset); EXPORT_SYMBOL_GPL(__device_reset);
/** /*
* APIs to manage an array of reset controls. * APIs to manage an array of reset controls.
*/ */
/** /**
* of_reset_control_get_count - Count number of resets available with a device * of_reset_control_get_count - Count number of resets available with a device
* *
......
...@@ -249,13 +249,13 @@ static struct genpd_power_state imx6_pm_domain_pu_state = { ...@@ -249,13 +249,13 @@ static struct genpd_power_state imx6_pm_domain_pu_state = {
}; };
static struct imx_pm_domain imx_gpc_domains[] = { static struct imx_pm_domain imx_gpc_domains[] = {
[GPC_PGC_DOMAIN_ARM] { [GPC_PGC_DOMAIN_ARM] = {
.base = { .base = {
.name = "ARM", .name = "ARM",
.flags = GENPD_FLAG_ALWAYS_ON, .flags = GENPD_FLAG_ALWAYS_ON,
}, },
}, },
[GPC_PGC_DOMAIN_PU] { [GPC_PGC_DOMAIN_PU] = {
.base = { .base = {
.name = "PU", .name = "PU",
.power_off = imx6_pm_domain_power_off, .power_off = imx6_pm_domain_power_off,
...@@ -266,7 +266,7 @@ static struct imx_pm_domain imx_gpc_domains[] = { ...@@ -266,7 +266,7 @@ static struct imx_pm_domain imx_gpc_domains[] = {
.reg_offs = 0x260, .reg_offs = 0x260,
.cntr_pdn_bit = 0, .cntr_pdn_bit = 0,
}, },
[GPC_PGC_DOMAIN_DISPLAY] { [GPC_PGC_DOMAIN_DISPLAY] = {
.base = { .base = {
.name = "DISPLAY", .name = "DISPLAY",
.power_off = imx6_pm_domain_power_off, .power_off = imx6_pm_domain_power_off,
...@@ -275,7 +275,7 @@ static struct imx_pm_domain imx_gpc_domains[] = { ...@@ -275,7 +275,7 @@ static struct imx_pm_domain imx_gpc_domains[] = {
.reg_offs = 0x240, .reg_offs = 0x240,
.cntr_pdn_bit = 4, .cntr_pdn_bit = 4,
}, },
[GPC_PGC_DOMAIN_PCI] { [GPC_PGC_DOMAIN_PCI] = {
.base = { .base = {
.name = "PCI", .name = "PCI",
.power_off = imx6_pm_domain_power_off, .power_off = imx6_pm_domain_power_off,
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
struct reset_controller_dev; struct reset_controller_dev;
/** /**
* struct reset_control_ops * struct reset_control_ops - reset controller driver callbacks
* *
* @reset: for self-deasserting resets, does all necessary * @reset: for self-deasserting resets, does all necessary
* things to reset the device * things to reset the device
...@@ -33,7 +33,7 @@ struct of_phandle_args; ...@@ -33,7 +33,7 @@ struct of_phandle_args;
* @provider: name of the reset controller device controlling this reset line * @provider: name of the reset controller device controlling this reset line
* @index: ID of the reset controller in the reset controller device * @index: ID of the reset controller in the reset controller device
* @dev_id: name of the device associated with this reset line * @dev_id: name of the device associated with this reset line
* @con_id name of the reset line (can be NULL) * @con_id: name of the reset line (can be NULL)
*/ */
struct reset_control_lookup { struct reset_control_lookup {
struct list_head list; struct list_head list;
......
...@@ -143,7 +143,7 @@ static inline int device_reset_optional(struct device *dev) ...@@ -143,7 +143,7 @@ static inline int device_reset_optional(struct device *dev)
* If this function is called more than once for the same reset_control it will * If this function is called more than once for the same reset_control it will
* return -EBUSY. * return -EBUSY.
* *
* See reset_control_get_shared for details on shared references to * See reset_control_get_shared() for details on shared references to
* reset-controls. * reset-controls.
* *
* Use of id names is optional. * Use of id names is optional.
......
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