Commit 19c1eb36 authored by Arnd Bergmann's avatar Arnd Bergmann

Merge tag 'omap-for-v5.14/fixes-rc5-signed' of...

Merge tag 'omap-for-v5.14/fixes-rc5-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into arm/fixes

Fixes for omaps for v5.14-rc series

Some fixes for regressions and boot issues for various devices:

- Fix gpt12 system timer regression on earlier beagleboard revisions

- Fix potential NULL pointer access for omap_hwmod_get_pwrdm()

- Disable RNG on secure am335x variants as it's not accessible

- Fix flakey DCDC2 voltage causing hangs on am43x-epos-evm by reducing
  i2c0 bus speed for tps65218

- Fix typo for am437x-l4 can@0 node

- Fix omap5 regression caused by vdds_1v8_main fixed-regulator

* tag 'omap-for-v5.14/fixes-rc5-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap:
  omap5-board-common: remove not physically existing vdds_1v8_main fixed-regulator
  ARM: dts: am437x-l4: fix typo in can@0 node
  ARM: dts: am43x-epos-evm: Reduce i2c0 bus speed for tps65218
  bus: ti-sysc: AM3: RNG is GP only
  ARM: omap2+: hwmod: fix potential NULL pointer access
  bus: ti-sysc: Fix gpt12 system timer issue with reserved status

Link: https://lore.kernel.org/r/pull-1627995895-406133@atomide.comSigned-off-by: default avatarArnd Bergmann <arnd@arndb.de>
parents a8eee863 353b7a55
...@@ -1595,7 +1595,7 @@ dcan1: can@0 { ...@@ -1595,7 +1595,7 @@ dcan1: can@0 {
compatible = "ti,am4372-d_can", "ti,am3352-d_can"; compatible = "ti,am4372-d_can", "ti,am3352-d_can";
reg = <0x0 0x2000>; reg = <0x0 0x2000>;
clocks = <&dcan1_fck>; clocks = <&dcan1_fck>;
clock-name = "fck"; clock-names = "fck";
syscon-raminit = <&scm_conf 0x644 1>; syscon-raminit = <&scm_conf 0x644 1>;
interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
status = "disabled"; status = "disabled";
......
...@@ -582,7 +582,7 @@ &i2c0 { ...@@ -582,7 +582,7 @@ &i2c0 {
status = "okay"; status = "okay";
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&i2c0_pins>; pinctrl-0 = <&i2c0_pins>;
clock-frequency = <400000>; clock-frequency = <100000>;
tps65218: tps65218@24 { tps65218: tps65218@24 {
reg = <0x24>; reg = <0x24>;
......
...@@ -30,14 +30,6 @@ vsys_cobra: fixedregulator-vsys_cobra { ...@@ -30,14 +30,6 @@ vsys_cobra: fixedregulator-vsys_cobra {
regulator-max-microvolt = <5000000>; regulator-max-microvolt = <5000000>;
}; };
vdds_1v8_main: fixedregulator-vdds_1v8_main {
compatible = "regulator-fixed";
regulator-name = "vdds_1v8_main";
vin-supply = <&smps7_reg>;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
};
vmmcsd_fixed: fixedregulator-mmcsd { vmmcsd_fixed: fixedregulator-mmcsd {
compatible = "regulator-fixed"; compatible = "regulator-fixed";
regulator-name = "vmmcsd_fixed"; regulator-name = "vmmcsd_fixed";
...@@ -487,6 +479,7 @@ smps6_reg: smps6 { ...@@ -487,6 +479,7 @@ smps6_reg: smps6 {
regulator-boot-on; regulator-boot-on;
}; };
vdds_1v8_main:
smps7_reg: smps7 { smps7_reg: smps7 {
/* VDDS_1v8_OMAP over VDDS_1v8_MAIN */ /* VDDS_1v8_OMAP over VDDS_1v8_MAIN */
regulator-name = "smps7"; regulator-name = "smps7";
......
...@@ -3776,6 +3776,7 @@ struct powerdomain *omap_hwmod_get_pwrdm(struct omap_hwmod *oh) ...@@ -3776,6 +3776,7 @@ struct powerdomain *omap_hwmod_get_pwrdm(struct omap_hwmod *oh)
struct omap_hwmod_ocp_if *oi; struct omap_hwmod_ocp_if *oi;
struct clockdomain *clkdm; struct clockdomain *clkdm;
struct clk_hw_omap *clk; struct clk_hw_omap *clk;
struct clk_hw *hw;
if (!oh) if (!oh)
return NULL; return NULL;
...@@ -3792,7 +3793,14 @@ struct powerdomain *omap_hwmod_get_pwrdm(struct omap_hwmod *oh) ...@@ -3792,7 +3793,14 @@ struct powerdomain *omap_hwmod_get_pwrdm(struct omap_hwmod *oh)
c = oi->_clk; c = oi->_clk;
} }
clk = to_clk_hw_omap(__clk_get_hw(c)); hw = __clk_get_hw(c);
if (!hw)
return NULL;
clk = to_clk_hw_omap(hw);
if (!clk)
return NULL;
clkdm = clk->clkdm; clkdm = clk->clkdm;
if (!clkdm) if (!clkdm)
return NULL; return NULL;
......
...@@ -100,6 +100,7 @@ static const char * const clock_names[SYSC_MAX_CLOCKS] = { ...@@ -100,6 +100,7 @@ static const char * const clock_names[SYSC_MAX_CLOCKS] = {
* @cookie: data used by legacy platform callbacks * @cookie: data used by legacy platform callbacks
* @name: name if available * @name: name if available
* @revision: interconnect target module revision * @revision: interconnect target module revision
* @reserved: target module is reserved and already in use
* @enabled: sysc runtime enabled status * @enabled: sysc runtime enabled status
* @needs_resume: runtime resume needed on resume from suspend * @needs_resume: runtime resume needed on resume from suspend
* @child_needs_resume: runtime resume needed for child on resume from suspend * @child_needs_resume: runtime resume needed for child on resume from suspend
...@@ -130,6 +131,7 @@ struct sysc { ...@@ -130,6 +131,7 @@ struct sysc {
struct ti_sysc_cookie cookie; struct ti_sysc_cookie cookie;
const char *name; const char *name;
u32 revision; u32 revision;
unsigned int reserved:1;
unsigned int enabled:1; unsigned int enabled:1;
unsigned int needs_resume:1; unsigned int needs_resume:1;
unsigned int child_needs_resume:1; unsigned int child_needs_resume:1;
...@@ -2951,6 +2953,8 @@ static int sysc_init_soc(struct sysc *ddata) ...@@ -2951,6 +2953,8 @@ static int sysc_init_soc(struct sysc *ddata)
case SOC_3430 ... SOC_3630: case SOC_3430 ... SOC_3630:
sysc_add_disabled(0x48304000); /* timer12 */ sysc_add_disabled(0x48304000); /* timer12 */
break; break;
case SOC_AM3:
sysc_add_disabled(0x48310000); /* rng */
default: default:
break; break;
} }
...@@ -3093,8 +3097,8 @@ static int sysc_probe(struct platform_device *pdev) ...@@ -3093,8 +3097,8 @@ static int sysc_probe(struct platform_device *pdev)
return error; return error;
error = sysc_check_active_timer(ddata); error = sysc_check_active_timer(ddata);
if (error) if (error == -EBUSY)
return error; ddata->reserved = true;
error = sysc_get_clocks(ddata); error = sysc_get_clocks(ddata);
if (error) if (error)
...@@ -3130,11 +3134,15 @@ static int sysc_probe(struct platform_device *pdev) ...@@ -3130,11 +3134,15 @@ static int sysc_probe(struct platform_device *pdev)
sysc_show_registers(ddata); sysc_show_registers(ddata);
ddata->dev->type = &sysc_device_type; ddata->dev->type = &sysc_device_type;
error = of_platform_populate(ddata->dev->of_node, sysc_match_table,
if (!ddata->reserved) {
error = of_platform_populate(ddata->dev->of_node,
sysc_match_table,
pdata ? pdata->auxdata : NULL, pdata ? pdata->auxdata : NULL,
ddata->dev); ddata->dev);
if (error) if (error)
goto err; goto err;
}
INIT_DELAYED_WORK(&ddata->idle_work, ti_sysc_idle); INIT_DELAYED_WORK(&ddata->idle_work, ti_sysc_idle);
......
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