Commit ea200dec 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:
 "I didn't get a batch in this weekend, so here's what we queued up last
  week and today.

   - A couple of defconfigs add back debugfs -- it used to be implicitly
     enabled through CONFIG_TRACING, but 0e4a459f ("tracing:
     Remove unnecessary DEBUG_FS dependency") removed that.

   - The rest are mostly minor fixlets of the usual kind; some DT
     tweaks, a headerfile refactor that needs a build fix now, etc"

* tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (30 commits)
  ARM: bcm: Add missing sentinel to bcm2711_compat[]
  ARM: shmobile: defconfig: Restore debugfs support
  bus: ti-sysc: Fix missing reset delay handling
  ARM: imx: Fix boot crash if ocotp is not found
  ARM: imx_v6_v7_defconfig: Explicitly restore CONFIG_DEBUG_FS
  ARM: dts: imx6ul-evk: Fix peripheral regulator
  arm64: dts: ls1028a: fix reboot node
  ARM: mmp: include the correct cputype.h
  ARM: dts: am437x-gp/epos-evm: fix panel compatible
  arm64: dts: ls1028a: fix typo in TMU calibration data
  ARM: imx: Correct ocotp id for serial number support of i.MX6ULL/ULZ SoCs
  ARM: dts: bcm283x: Fix critical trip point
  ARM: omap2plus_defconfig: Add back DEBUG_FS
  ARM: omap2plus_defconfig: enable NET_SWITCHDEV
  ARM: dts: am335x-sancloud-bbe: fix phy mode
  bus: ti-sysc: Fix missing force mstandby quirk handling
  reset: Do not register resource data for missing resets
  reset: Fix {of,devm}_reset_control_array_get kerneldoc return types
  reset: brcmstb: Remove resource checks
  dt-bindings: reset: Fix brcmstb-reset example
  ...
parents 6afa8731 e3992af1
...@@ -152,6 +152,7 @@ Linus Lüssing <linus.luessing@c0d3.blue> <linus.luessing@web.de> ...@@ -152,6 +152,7 @@ Linus Lüssing <linus.luessing@c0d3.blue> <linus.luessing@web.de>
Linus Lüssing <linus.luessing@c0d3.blue> <linus.luessing@ascom.ch> Linus Lüssing <linus.luessing@c0d3.blue> <linus.luessing@ascom.ch>
Li Yang <leoyang.li@nxp.com> <leo@zh-kernel.org> Li Yang <leoyang.li@nxp.com> <leo@zh-kernel.org>
Li Yang <leoyang.li@nxp.com> <leoli@freescale.com> Li Yang <leoyang.li@nxp.com> <leoli@freescale.com>
Lukasz Luba <lukasz.luba@arm.com> <l.luba@partner.samsung.com>
Maciej W. Rozycki <macro@mips.com> <macro@imgtec.com> Maciej W. Rozycki <macro@mips.com> <macro@imgtec.com>
Marc Zyngier <maz@kernel.org> <marc.zyngier@arm.com> Marc Zyngier <maz@kernel.org> <marc.zyngier@arm.com>
Marcin Nowakowski <marcin.nowakowski@mips.com> <marcin.nowakowski@imgtec.com> Marcin Nowakowski <marcin.nowakowski@mips.com> <marcin.nowakowski@imgtec.com>
......
...@@ -22,6 +22,6 @@ Example: ...@@ -22,6 +22,6 @@ Example:
}; };
&ethernet_switch { &ethernet_switch {
resets = <&reset>; resets = <&reset 26>;
reset-names = "switch"; reset-names = "switch";
}; };
...@@ -2272,6 +2272,7 @@ F: drivers/*/*s3c64xx* ...@@ -2272,6 +2272,7 @@ F: drivers/*/*s3c64xx*
F: drivers/*/*s5pv210* F: drivers/*/*s5pv210*
F: drivers/memory/samsung/ F: drivers/memory/samsung/
F: drivers/soc/samsung/ F: drivers/soc/samsung/
F: drivers/tty/serial/samsung*
F: include/linux/soc/samsung/ F: include/linux/soc/samsung/
F: Documentation/arm/samsung/ F: Documentation/arm/samsung/
F: Documentation/devicetree/bindings/arm/samsung/ F: Documentation/devicetree/bindings/arm/samsung/
...@@ -5000,7 +5001,7 @@ F: include/linux/dma-mapping.h ...@@ -5000,7 +5001,7 @@ F: include/linux/dma-mapping.h
F: include/linux/dma-noncoherent.h F: include/linux/dma-noncoherent.h
DMC FREQUENCY DRIVER FOR SAMSUNG EXYNOS5422 DMC FREQUENCY DRIVER FOR SAMSUNG EXYNOS5422
M: Lukasz Luba <l.luba@partner.samsung.com> M: Lukasz Luba <lukasz.luba@arm.com>
L: linux-pm@vger.kernel.org L: linux-pm@vger.kernel.org
L: linux-samsung-soc@vger.kernel.org L: linux-samsung-soc@vger.kernel.org
S: Maintained S: Maintained
......
...@@ -108,7 +108,7 @@ ethphy0: ethernet-phy@0 { ...@@ -108,7 +108,7 @@ ethphy0: ethernet-phy@0 {
&cpsw_emac0 { &cpsw_emac0 {
phy-handle = <&ethphy0>; phy-handle = <&ethphy0>;
phy-mode = "rgmii-txid"; phy-mode = "rgmii-id";
}; };
&i2c0 { &i2c0 {
......
...@@ -86,7 +86,7 @@ &gpio4 3 GPIO_ACTIVE_HIGH /* Bank4, pin3 */ ...@@ -86,7 +86,7 @@ &gpio4 3 GPIO_ACTIVE_HIGH /* Bank4, pin3 */
}; };
lcd0: display { lcd0: display {
compatible = "osddisplays,osd057T0559-34ts", "panel-dpi"; compatible = "osddisplays,osd070t1718-19ts", "panel-dpi";
label = "lcd"; label = "lcd";
backlight = <&lcd_bl>; backlight = <&lcd_bl>;
......
...@@ -42,7 +42,7 @@ vbat: fixedregulator0 { ...@@ -42,7 +42,7 @@ vbat: fixedregulator0 {
}; };
lcd0: display { lcd0: display {
compatible = "osddisplays,osd057T0559-34ts", "panel-dpi"; compatible = "osddisplays,osd070t1718-19ts", "panel-dpi";
label = "lcd"; label = "lcd";
backlight = <&lcd_bl>; backlight = <&lcd_bl>;
......
...@@ -174,8 +174,8 @@ gpio_crmu: gpio@3024800 { ...@@ -174,8 +174,8 @@ gpio_crmu: gpio@3024800 {
mdio: mdio@18002000 { mdio: mdio@18002000 {
compatible = "brcm,iproc-mdio"; compatible = "brcm,iproc-mdio";
reg = <0x18002000 0x8>; reg = <0x18002000 0x8>;
#size-cells = <1>; #size-cells = <0>;
#address-cells = <0>; #address-cells = <1>;
status = "disabled"; status = "disabled";
gphy0: ethernet-phy@0 { gphy0: ethernet-phy@0 {
......
...@@ -43,7 +43,7 @@ soc { ...@@ -43,7 +43,7 @@ soc {
<0x7c000000 0x0 0xfc000000 0x02000000>, <0x7c000000 0x0 0xfc000000 0x02000000>,
<0x40000000 0x0 0xff800000 0x00800000>; <0x40000000 0x0 0xff800000 0x00800000>;
/* Emulate a contiguous 30-bit address range for DMA */ /* Emulate a contiguous 30-bit address range for DMA */
dma-ranges = <0xc0000000 0x0 0x00000000 0x3c000000>; dma-ranges = <0xc0000000 0x0 0x00000000 0x40000000>;
/* /*
* This node is the provider for the enable-method for * This node is the provider for the enable-method for
......
...@@ -37,7 +37,7 @@ cpu_thermal: cpu-thermal { ...@@ -37,7 +37,7 @@ cpu_thermal: cpu-thermal {
trips { trips {
cpu-crit { cpu-crit {
temperature = <80000>; temperature = <90000>;
hysteresis = <0>; hysteresis = <0>;
type = "critical"; type = "critical";
}; };
......
...@@ -353,8 +353,8 @@ gmac3: ethernet@27000 { ...@@ -353,8 +353,8 @@ gmac3: ethernet@27000 {
mdio: mdio@18003000 { mdio: mdio@18003000 {
compatible = "brcm,iproc-mdio"; compatible = "brcm,iproc-mdio";
reg = <0x18003000 0x8>; reg = <0x18003000 0x8>;
#size-cells = <1>; #size-cells = <0>;
#address-cells = <0>; #address-cells = <1>;
}; };
mdio-bus-mux@18003000 { mdio-bus-mux@18003000 {
......
...@@ -265,11 +265,6 @@ ldortc1_reg: LDORTC1 { ...@@ -265,11 +265,6 @@ ldortc1_reg: LDORTC1 {
regulator-name = "LDORTC1"; regulator-name = "LDORTC1";
regulator-boot-on; regulator-boot-on;
}; };
ldortc2_reg: LDORTC2 {
regulator-name = "LDORTC2";
regulator-boot-on;
};
}; };
}; };
}; };
......
...@@ -30,14 +30,26 @@ reg_sd1_vmmc: regulator-sd1-vmmc { ...@@ -30,14 +30,26 @@ reg_sd1_vmmc: regulator-sd1-vmmc {
enable-active-high; enable-active-high;
}; };
reg_sensors: regulator-sensors { reg_peri_3v3: regulator-peri-3v3 {
compatible = "regulator-fixed"; compatible = "regulator-fixed";
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&pinctrl_sensors_reg>; pinctrl-0 = <&pinctrl_peri_3v3>;
regulator-name = "sensors-supply"; regulator-name = "VPERI_3V3";
regulator-min-microvolt = <3300000>; regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>; regulator-max-microvolt = <3300000>;
gpio = <&gpio5 2 GPIO_ACTIVE_LOW>; gpio = <&gpio5 2 GPIO_ACTIVE_LOW>;
/*
* If you want to want to make this dynamic please
* check schematics and test all affected peripherals:
*
* - sensors
* - ethernet phy
* - can
* - bluetooth
* - wm8960 audio codec
* - ov5640 camera
*/
regulator-always-on;
}; };
reg_can_3v3: regulator-can-3v3 { reg_can_3v3: regulator-can-3v3 {
...@@ -140,6 +152,7 @@ &fec1 { ...@@ -140,6 +152,7 @@ &fec1 {
pinctrl-0 = <&pinctrl_enet1>; pinctrl-0 = <&pinctrl_enet1>;
phy-mode = "rmii"; phy-mode = "rmii";
phy-handle = <&ethphy0>; phy-handle = <&ethphy0>;
phy-supply = <&reg_peri_3v3>;
status = "okay"; status = "okay";
}; };
...@@ -148,6 +161,7 @@ &fec2 { ...@@ -148,6 +161,7 @@ &fec2 {
pinctrl-0 = <&pinctrl_enet2>; pinctrl-0 = <&pinctrl_enet2>;
phy-mode = "rmii"; phy-mode = "rmii";
phy-handle = <&ethphy1>; phy-handle = <&ethphy1>;
phy-supply = <&reg_peri_3v3>;
status = "okay"; status = "okay";
mdio { mdio {
...@@ -193,8 +207,8 @@ &i2c1 { ...@@ -193,8 +207,8 @@ &i2c1 {
magnetometer@e { magnetometer@e {
compatible = "fsl,mag3110"; compatible = "fsl,mag3110";
reg = <0x0e>; reg = <0x0e>;
vdd-supply = <&reg_sensors>; vdd-supply = <&reg_peri_3v3>;
vddio-supply = <&reg_sensors>; vddio-supply = <&reg_peri_3v3>;
}; };
}; };
...@@ -227,7 +241,7 @@ &qspi { ...@@ -227,7 +241,7 @@ &qspi {
flash0: n25q256a@0 { flash0: n25q256a@0 {
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
compatible = "micron,n25q256a"; compatible = "micron,n25q256a", "jedec,spi-nor";
spi-max-frequency = <29000000>; spi-max-frequency = <29000000>;
spi-rx-bus-width = <4>; spi-rx-bus-width = <4>;
spi-tx-bus-width = <4>; spi-tx-bus-width = <4>;
...@@ -462,7 +476,7 @@ MX6UL_PAD_SNVS_TAMPER4__GPIO5_IO04 0x17059 ...@@ -462,7 +476,7 @@ MX6UL_PAD_SNVS_TAMPER4__GPIO5_IO04 0x17059
>; >;
}; };
pinctrl_sensors_reg: sensorsreggrp { pinctrl_peri_3v3: peri3v3grp {
fsl,pins = < fsl,pins = <
MX6UL_PAD_SNVS_TAMPER2__GPIO5_IO02 0x1b0b0 MX6UL_PAD_SNVS_TAMPER2__GPIO5_IO02 0x1b0b0
>; >;
......
...@@ -350,6 +350,7 @@ CONFIG_PRINTK_TIME=y ...@@ -350,6 +350,7 @@ CONFIG_PRINTK_TIME=y
CONFIG_DYNAMIC_DEBUG=y CONFIG_DYNAMIC_DEBUG=y
CONFIG_DEBUG_INFO=y CONFIG_DEBUG_INFO=y
CONFIG_MAGIC_SYSRQ=y CONFIG_MAGIC_SYSRQ=y
CONFIG_DEBUG_FS=y
CONFIG_DEBUG_KERNEL=y CONFIG_DEBUG_KERNEL=y
CONFIG_SOFTLOCKUP_DETECTOR=y CONFIG_SOFTLOCKUP_DETECTOR=y
# CONFIG_DETECT_HUNG_TASK is not set # CONFIG_DETECT_HUNG_TASK is not set
......
...@@ -462,6 +462,7 @@ CONFIG_FONT_8x8=y ...@@ -462,6 +462,7 @@ CONFIG_FONT_8x8=y
CONFIG_FONT_8x16=y CONFIG_FONT_8x16=y
CONFIG_PRINTK_TIME=y CONFIG_PRINTK_TIME=y
CONFIG_MAGIC_SYSRQ=y CONFIG_MAGIC_SYSRQ=y
CONFIG_DEBUG_FS=y
# CONFIG_SCHED_DEBUG is not set # CONFIG_SCHED_DEBUG is not set
CONFIG_PROVE_LOCKING=y CONFIG_PROVE_LOCKING=y
# CONFIG_DEBUG_BUGVERBOSE is not set # CONFIG_DEBUG_BUGVERBOSE is not set
......
...@@ -92,6 +92,7 @@ CONFIG_IP_PNP_BOOTP=y ...@@ -92,6 +92,7 @@ CONFIG_IP_PNP_BOOTP=y
CONFIG_IP_PNP_RARP=y CONFIG_IP_PNP_RARP=y
CONFIG_NETFILTER=y CONFIG_NETFILTER=y
CONFIG_PHONET=m CONFIG_PHONET=m
CONFIG_NET_SWITCHDEV=y
CONFIG_CAN=m CONFIG_CAN=m
CONFIG_CAN_C_CAN=m CONFIG_CAN_C_CAN=m
CONFIG_CAN_C_CAN_PLATFORM=m CONFIG_CAN_C_CAN_PLATFORM=m
...@@ -181,6 +182,7 @@ CONFIG_SMSC911X=y ...@@ -181,6 +182,7 @@ CONFIG_SMSC911X=y
# CONFIG_NET_VENDOR_STMICRO is not set # CONFIG_NET_VENDOR_STMICRO is not set
CONFIG_TI_DAVINCI_EMAC=y CONFIG_TI_DAVINCI_EMAC=y
CONFIG_TI_CPSW=y CONFIG_TI_CPSW=y
CONFIG_TI_CPSW_SWITCHDEV=y
CONFIG_TI_CPTS=y CONFIG_TI_CPTS=y
# CONFIG_NET_VENDOR_VIA is not set # CONFIG_NET_VENDOR_VIA is not set
# CONFIG_NET_VENDOR_WIZNET is not set # CONFIG_NET_VENDOR_WIZNET is not set
...@@ -554,6 +556,6 @@ CONFIG_DEBUG_INFO=y ...@@ -554,6 +556,6 @@ CONFIG_DEBUG_INFO=y
CONFIG_DEBUG_INFO_SPLIT=y CONFIG_DEBUG_INFO_SPLIT=y
CONFIG_DEBUG_INFO_DWARF4=y CONFIG_DEBUG_INFO_DWARF4=y
CONFIG_MAGIC_SYSRQ=y CONFIG_MAGIC_SYSRQ=y
CONFIG_DEBUG_FS=y
CONFIG_SCHEDSTATS=y CONFIG_SCHEDSTATS=y
# CONFIG_DEBUG_BUGVERBOSE is not set # CONFIG_DEBUG_BUGVERBOSE is not set
CONFIG_TI_CPSW_SWITCHDEV=y
...@@ -212,4 +212,5 @@ CONFIG_DMA_CMA=y ...@@ -212,4 +212,5 @@ CONFIG_DMA_CMA=y
CONFIG_CMA_SIZE_MBYTES=64 CONFIG_CMA_SIZE_MBYTES=64
CONFIG_PRINTK_TIME=y CONFIG_PRINTK_TIME=y
# CONFIG_ENABLE_MUST_CHECK is not set # CONFIG_ENABLE_MUST_CHECK is not set
CONFIG_DEBUG_FS=y
CONFIG_DEBUG_KERNEL=y CONFIG_DEBUG_KERNEL=y
...@@ -13,6 +13,7 @@ static const char * const bcm2711_compat[] = { ...@@ -13,6 +13,7 @@ static const char * const bcm2711_compat[] = {
#ifdef CONFIG_ARCH_MULTI_V7 #ifdef CONFIG_ARCH_MULTI_V7
"brcm,bcm2711", "brcm,bcm2711",
#endif #endif
NULL
}; };
DT_MACHINE_START(BCM2711, "BCM2711") DT_MACHINE_START(BCM2711, "BCM2711")
......
...@@ -84,7 +84,7 @@ struct device * __init imx_soc_device_init(void) ...@@ -84,7 +84,7 @@ struct device * __init imx_soc_device_init(void)
const char *ocotp_compat = NULL; const char *ocotp_compat = NULL;
struct soc_device *soc_dev; struct soc_device *soc_dev;
struct device_node *root; struct device_node *root;
struct regmap *ocotp; struct regmap *ocotp = NULL;
const char *soc_id; const char *soc_id;
u64 soc_uid = 0; u64 soc_uid = 0;
u32 val; u32 val;
...@@ -148,11 +148,11 @@ struct device * __init imx_soc_device_init(void) ...@@ -148,11 +148,11 @@ struct device * __init imx_soc_device_init(void)
soc_id = "i.MX6UL"; soc_id = "i.MX6UL";
break; break;
case MXC_CPU_IMX6ULL: case MXC_CPU_IMX6ULL:
ocotp_compat = "fsl,imx6ul-ocotp"; ocotp_compat = "fsl,imx6ull-ocotp";
soc_id = "i.MX6ULL"; soc_id = "i.MX6ULL";
break; break;
case MXC_CPU_IMX6ULZ: case MXC_CPU_IMX6ULZ:
ocotp_compat = "fsl,imx6ul-ocotp"; ocotp_compat = "fsl,imx6ull-ocotp";
soc_id = "i.MX6ULZ"; soc_id = "i.MX6ULZ";
break; break;
case MXC_CPU_IMX6SLL: case MXC_CPU_IMX6SLL:
...@@ -175,7 +175,9 @@ struct device * __init imx_soc_device_init(void) ...@@ -175,7 +175,9 @@ struct device * __init imx_soc_device_init(void)
ocotp = syscon_regmap_lookup_by_compatible(ocotp_compat); ocotp = syscon_regmap_lookup_by_compatible(ocotp_compat);
if (IS_ERR(ocotp)) if (IS_ERR(ocotp))
pr_err("%s: failed to find %s regmap!\n", __func__, ocotp_compat); pr_err("%s: failed to find %s regmap!\n", __func__, ocotp_compat);
}
if (!IS_ERR_OR_NULL(ocotp)) {
regmap_read(ocotp, OCOTP_UID_H, &val); regmap_read(ocotp, OCOTP_UID_H, &val);
soc_uid = val; soc_uid = val;
regmap_read(ocotp, OCOTP_UID_L, &val); regmap_read(ocotp, OCOTP_UID_L, &val);
......
...@@ -17,9 +17,9 @@ extern void pxa168_clear_keypad_wakeup(void); ...@@ -17,9 +17,9 @@ extern void pxa168_clear_keypad_wakeup(void);
#include <linux/platform_data/keypad-pxa27x.h> #include <linux/platform_data/keypad-pxa27x.h>
#include <linux/pxa168_eth.h> #include <linux/pxa168_eth.h>
#include <linux/platform_data/mv_usb.h> #include <linux/platform_data/mv_usb.h>
#include <linux/soc/mmp/cputype.h>
#include "devices.h" #include "devices.h"
#include "cputype.h"
extern struct pxa_device_desc pxa168_device_uart1; extern struct pxa_device_desc pxa168_device_uart1;
extern struct pxa_device_desc pxa168_device_uart2; extern struct pxa_device_desc pxa168_device_uart2;
......
...@@ -551,8 +551,9 @@ static struct clk *ve_spc_clk_register(struct device *cpu_dev) ...@@ -551,8 +551,9 @@ static struct clk *ve_spc_clk_register(struct device *cpu_dev)
static int __init ve_spc_clk_init(void) static int __init ve_spc_clk_init(void)
{ {
int cpu; int cpu, cluster;
struct clk *clk; struct clk *clk;
bool init_opp_table[MAX_CLUSTERS] = { false };
if (!info) if (!info)
return 0; /* Continue only if SPC is initialised */ return 0; /* Continue only if SPC is initialised */
...@@ -578,8 +579,17 @@ static int __init ve_spc_clk_init(void) ...@@ -578,8 +579,17 @@ static int __init ve_spc_clk_init(void)
continue; continue;
} }
cluster = topology_physical_package_id(cpu_dev->id);
if (init_opp_table[cluster])
continue;
if (ve_init_opp_table(cpu_dev)) if (ve_init_opp_table(cpu_dev))
pr_warn("failed to initialise cpu%d opp table\n", cpu); pr_warn("failed to initialise cpu%d opp table\n", cpu);
else if (dev_pm_opp_set_sharing_cpus(cpu_dev,
topology_core_cpumask(cpu_dev->id)))
pr_warn("failed to mark OPPs shared for cpu%d\n", cpu);
else
init_opp_table[cluster] = true;
} }
platform_device_register_simple("vexpress-spc-cpufreq", -1, NULL, 0); platform_device_register_simple("vexpress-spc-cpufreq", -1, NULL, 0);
......
...@@ -88,7 +88,7 @@ dpclk: clock-controller@f1f0000 { ...@@ -88,7 +88,7 @@ dpclk: clock-controller@f1f0000 {
reboot { reboot {
compatible ="syscon-reboot"; compatible ="syscon-reboot";
regmap = <&dcfg>; regmap = <&rst>;
offset = <0xb0>; offset = <0xb0>;
mask = <0x02>; mask = <0x02>;
}; };
...@@ -178,6 +178,12 @@ dcfg: syscon@1e00000 { ...@@ -178,6 +178,12 @@ dcfg: syscon@1e00000 {
big-endian; big-endian;
}; };
rst: syscon@1e60000 {
compatible = "syscon";
reg = <0x0 0x1e60000 0x0 0x10000>;
little-endian;
};
scfg: syscon@1fc0000 { scfg: syscon@1fc0000 {
compatible = "fsl,ls1028a-scfg", "syscon"; compatible = "fsl,ls1028a-scfg", "syscon";
reg = <0x0 0x1fc0000 0x0 0x10000>; reg = <0x0 0x1fc0000 0x0 0x10000>;
...@@ -584,7 +590,7 @@ tmu: tmu@1f80000 { ...@@ -584,7 +590,7 @@ tmu: tmu@1f80000 {
0x00010004 0x0000003d 0x00010004 0x0000003d
0x00010005 0x00000045 0x00010005 0x00000045
0x00010006 0x0000004d 0x00010006 0x0000004d
0x00010007 0x00000045 0x00010007 0x00000055
0x00010008 0x0000005e 0x00010008 0x0000005e
0x00010009 0x00000066 0x00010009 0x00000066
0x0001000a 0x0000006e 0x0001000a 0x0000006e
......
...@@ -981,7 +981,8 @@ static int sysc_disable_module(struct device *dev) ...@@ -981,7 +981,8 @@ static int sysc_disable_module(struct device *dev)
return ret; return ret;
} }
if (ddata->cfg.quirks & SYSC_QUIRK_SWSUP_MSTANDBY) if (ddata->cfg.quirks & (SYSC_QUIRK_SWSUP_MSTANDBY) ||
ddata->cfg.quirks & (SYSC_QUIRK_FORCE_MSTANDBY))
best_mode = SYSC_IDLE_FORCE; best_mode = SYSC_IDLE_FORCE;
reg &= ~(SYSC_IDLE_MASK << regbits->midle_shift); reg &= ~(SYSC_IDLE_MASK << regbits->midle_shift);
...@@ -1583,6 +1584,10 @@ static int sysc_reset(struct sysc *ddata) ...@@ -1583,6 +1584,10 @@ static int sysc_reset(struct sysc *ddata)
sysc_val |= sysc_mask; sysc_val |= sysc_mask;
sysc_write(ddata, sysc_offset, sysc_val); sysc_write(ddata, sysc_offset, sysc_val);
if (ddata->cfg.srst_udelay)
usleep_range(ddata->cfg.srst_udelay,
ddata->cfg.srst_udelay * 2);
if (ddata->clk_enable_quirk) if (ddata->clk_enable_quirk)
ddata->clk_enable_quirk(ddata); ddata->clk_enable_quirk(ddata);
......
...@@ -434,7 +434,7 @@ static int ve_spc_cpufreq_init(struct cpufreq_policy *policy) ...@@ -434,7 +434,7 @@ static int ve_spc_cpufreq_init(struct cpufreq_policy *policy)
if (cur_cluster < MAX_CLUSTERS) { if (cur_cluster < MAX_CLUSTERS) {
int cpu; int cpu;
cpumask_copy(policy->cpus, topology_core_cpumask(policy->cpu)); dev_pm_opp_get_sharing_cpus(cpu_dev, policy->cpus);
for_each_cpu(cpu, policy->cpus) for_each_cpu(cpu, policy->cpus)
per_cpu(physical_cluster, cpu) = cur_cluster; per_cpu(physical_cluster, cpu) = cur_cluster;
......
...@@ -787,7 +787,7 @@ struct reset_control *__devm_reset_control_get(struct device *dev, ...@@ -787,7 +787,7 @@ struct reset_control *__devm_reset_control_get(struct device *dev,
return ERR_PTR(-ENOMEM); return ERR_PTR(-ENOMEM);
rstc = __reset_control_get(dev, id, index, shared, optional, acquired); rstc = __reset_control_get(dev, id, index, shared, optional, acquired);
if (!IS_ERR(rstc)) { if (!IS_ERR_OR_NULL(rstc)) {
*ptr = rstc; *ptr = rstc;
devres_add(dev, ptr); devres_add(dev, ptr);
} else { } else {
...@@ -861,8 +861,7 @@ static int of_reset_control_get_count(struct device_node *node) ...@@ -861,8 +861,7 @@ static int of_reset_control_get_count(struct device_node *node)
* @acquired: only one reset control may be acquired for a given controller * @acquired: only one reset control may be acquired for a given controller
* and ID * and ID
* *
* Returns pointer to allocated reset_control_array on success or * Returns pointer to allocated reset_control on success or error on failure
* error on failure
*/ */
struct reset_control * struct reset_control *
of_reset_control_array_get(struct device_node *np, bool shared, bool optional, of_reset_control_array_get(struct device_node *np, bool shared, bool optional,
...@@ -915,8 +914,7 @@ EXPORT_SYMBOL_GPL(of_reset_control_array_get); ...@@ -915,8 +914,7 @@ EXPORT_SYMBOL_GPL(of_reset_control_array_get);
* that just have to be asserted or deasserted, without any * that just have to be asserted or deasserted, without any
* requirements on the order. * requirements on the order.
* *
* Returns pointer to allocated reset_control_array on success or * Returns pointer to allocated reset_control on success or error on failure
* error on failure
*/ */
struct reset_control * struct reset_control *
devm_reset_control_array_get(struct device *dev, bool shared, bool optional) devm_reset_control_array_get(struct device *dev, bool shared, bool optional)
...@@ -930,7 +928,7 @@ devm_reset_control_array_get(struct device *dev, bool shared, bool optional) ...@@ -930,7 +928,7 @@ devm_reset_control_array_get(struct device *dev, bool shared, bool optional)
return ERR_PTR(-ENOMEM); return ERR_PTR(-ENOMEM);
rstc = of_reset_control_array_get(dev->of_node, shared, optional, true); rstc = of_reset_control_array_get(dev->of_node, shared, optional, true);
if (IS_ERR(rstc)) { if (IS_ERR_OR_NULL(rstc)) {
devres_free(devres); devres_free(devres);
return rstc; return rstc;
} }
......
...@@ -91,12 +91,6 @@ static int brcmstb_reset_probe(struct platform_device *pdev) ...@@ -91,12 +91,6 @@ static int brcmstb_reset_probe(struct platform_device *pdev)
return -ENOMEM; return -ENOMEM;
res = platform_get_resource(pdev, IORESOURCE_MEM, 0); res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (!IS_ALIGNED(res->start, SW_INIT_BANK_SIZE) ||
!IS_ALIGNED(resource_size(res), SW_INIT_BANK_SIZE)) {
dev_err(kdev, "incorrect register range\n");
return -EINVAL;
}
priv->base = devm_ioremap_resource(kdev, res); priv->base = devm_ioremap_resource(kdev, res);
if (IS_ERR(priv->base)) if (IS_ERR(priv->base))
return PTR_ERR(priv->base); return PTR_ERR(priv->base);
......
...@@ -49,6 +49,7 @@ struct sysc_regbits { ...@@ -49,6 +49,7 @@ struct sysc_regbits {
s8 emufree_shift; s8 emufree_shift;
}; };
#define SYSC_QUIRK_FORCE_MSTANDBY BIT(20)
#define SYSC_MODULE_QUIRK_AESS BIT(19) #define SYSC_MODULE_QUIRK_AESS BIT(19)
#define SYSC_MODULE_QUIRK_SGX BIT(18) #define SYSC_MODULE_QUIRK_SGX BIT(18)
#define SYSC_MODULE_QUIRK_HDQ1W BIT(17) #define SYSC_MODULE_QUIRK_HDQ1W BIT(17)
......
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