Commit 2a3e487a authored by Arnd Bergmann's avatar Arnd Bergmann
Browse files

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

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

Fixes for omaps for v5.11-rc cycle

The recent changes to switch SoCs to boot with ti-sysc interconnect
target module driver and genpd caused few regressions:

- The omap_prm reset driver needs to clear any reset bits deasserted by
  the bootloader or kexec boot for the three reset bit cases. Otherwise
  we can have an oops with accelerators starting to boot with potentially
  unconfigured MMU for example

- Custom kernel configs are not automatically selecting simple-pm-bus
  driver that we now need to probe interconnects so we need to select it
  always

- We are not passing legacy platform data in auxdata with simple-pm-bus
  like we do for simple-bus. We need to pass auxdata to simple-pm-bus so
  it can pass it to of_platform_populate()

Then recent RCU changes started causing splats for cpuidle44xx that now
need RCU_NONIDLE added to the calls in several places

And then we have few device specific fixes:

- We need to remove legacy spi-cs-hig for gta04 display to work, and
  set the gpio to active low

- Omap1 specific ohci-omap needs to call gpio_free()

- Droid4 needs to use padconf interrupt for the slider as the edge
  gpio interrupts may be lost for deeper idle states

* tag 'omap-for-v5.11/fixes-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap:
  ARM: dts: omap4-droid4: Fix lost keypad slide interrupts for droid4
  drivers: bus: simple-pm-bus: Fix compatibility with simple-bus for auxdata
  ARM: OMAP2+: Fix booting for am335x after moving to simple-pm-bus
  ARM: OMAP2+: Fix suspcious RCU usage splats for omap_enter_idle_coupled
  ARM: dts; gta04: SPI panel chip select is active low
  soc: ti: omap-prm: Fix boot time errors for rst_map_012 bits 0 and 1
  ARM: OMAP1: OSK: fix ohci-omap breakage
  DTS: ARM: gta04: remove legacy spi-cs-high to make display work again

Link: https://lore.kernel.org/r/pull-1611818709-243493@atomide.com


Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
parents 08215386 177d8f1f
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -114,7 +114,7 @@
		gpio-sck = <&gpio1 12 GPIO_ACTIVE_HIGH>;
		gpio-miso = <&gpio1 18 GPIO_ACTIVE_HIGH>;
		gpio-mosi = <&gpio1 20 GPIO_ACTIVE_HIGH>;
		cs-gpios = <&gpio1 19 GPIO_ACTIVE_HIGH>;
		cs-gpios = <&gpio1 19 GPIO_ACTIVE_LOW>;
		num-chipselects = <1>;

		/* lcd panel */
@@ -124,7 +124,6 @@
			spi-max-frequency = <100000>;
			spi-cpol;
			spi-cpha;
			spi-cs-high;

			backlight= <&backlight>;
			label = "lcd";
+5 −0
Original line number Diff line number Diff line
@@ -16,8 +16,13 @@
			debounce-interval = <10>;
		};

		/*
		 * We use pad 0x4a100116 abe_dmic_din3.gpio_122 as the irq instead
		 * of the gpio interrupt to avoid lost events in deeper idle states.
		*/
		slider {
			label = "Keypad Slide";
			interrupts-extended = <&omap4_pmx_core 0xd6>;
			gpios = <&gpio4 26 GPIO_ACTIVE_HIGH>; /* gpio122 */
			linux,input-type = <EV_SW>;
			linux,code = <SW_KEYPAD_SLIDE>;
+2 −0
Original line number Diff line number Diff line
@@ -203,6 +203,8 @@ static int osk_tps_setup(struct i2c_client *client, void *context)
	 */
	gpio_request(OSK_TPS_GPIO_USB_PWR_EN, "n_vbus_en");
	gpio_direction_output(OSK_TPS_GPIO_USB_PWR_EN, 1);
	/* Free the GPIO again as the driver will request it */
	gpio_free(OSK_TPS_GPIO_USB_PWR_EN);

	/* Set GPIO 2 high so LED D3 is off by default */
	tps65010_set_gpio_out_value(GPIO2, HIGH);
+14 −14
Original line number Diff line number Diff line
@@ -17,11 +17,10 @@ config ARCH_OMAP3
	bool "TI OMAP3"
	depends on ARCH_MULTI_V7
	select ARCH_OMAP2PLUS
	select ARM_CPU_SUSPEND if PM
	select ARM_CPU_SUSPEND
	select OMAP_HWMOD
	select OMAP_INTERCONNECT
	select PM_OPP if PM
	select PM if CPU_IDLE
	select PM_OPP
	select SOC_HAS_OMAP2_SDRC
	select ARM_ERRATA_430973

@@ -30,7 +29,7 @@ config ARCH_OMAP4
	depends on ARCH_MULTI_V7
	select ARCH_OMAP2PLUS
	select ARCH_NEEDS_CPU_IDLE_COUPLED if SMP
	select ARM_CPU_SUSPEND if PM
	select ARM_CPU_SUSPEND
	select ARM_ERRATA_720789
	select ARM_GIC
	select HAVE_ARM_SCU if SMP
@@ -40,7 +39,7 @@ config ARCH_OMAP4
	select OMAP_INTERCONNECT_BARRIER
	select PL310_ERRATA_588369 if CACHE_L2X0
	select PL310_ERRATA_727915 if CACHE_L2X0
	select PM_OPP if PM
	select PM_OPP
	select PM if CPU_IDLE
	select ARM_ERRATA_754322
	select ARM_ERRATA_775420
@@ -50,7 +49,7 @@ config SOC_OMAP5
	bool "TI OMAP5"
	depends on ARCH_MULTI_V7
	select ARCH_OMAP2PLUS
	select ARM_CPU_SUSPEND if PM
	select ARM_CPU_SUSPEND
	select ARM_GIC
	select HAVE_ARM_SCU if SMP
	select HAVE_ARM_ARCH_TIMER
@@ -58,14 +57,14 @@ config SOC_OMAP5
	select OMAP_HWMOD
	select OMAP_INTERCONNECT
	select OMAP_INTERCONNECT_BARRIER
	select PM_OPP if PM
	select PM_OPP
	select ZONE_DMA if ARM_LPAE

config SOC_AM33XX
	bool "TI AM33XX"
	depends on ARCH_MULTI_V7
	select ARCH_OMAP2PLUS
	select ARM_CPU_SUSPEND if PM
	select ARM_CPU_SUSPEND

config SOC_AM43XX
	bool "TI AM43x"
@@ -79,13 +78,13 @@ config SOC_AM43XX
	select ARM_ERRATA_754322
	select ARM_ERRATA_775420
	select OMAP_INTERCONNECT
	select ARM_CPU_SUSPEND if PM
	select ARM_CPU_SUSPEND

config SOC_DRA7XX
	bool "TI DRA7XX"
	depends on ARCH_MULTI_V7
	select ARCH_OMAP2PLUS
	select ARM_CPU_SUSPEND if PM
	select ARM_CPU_SUSPEND
	select ARM_GIC
	select HAVE_ARM_SCU if SMP
	select HAVE_ARM_ARCH_TIMER
@@ -94,7 +93,7 @@ config SOC_DRA7XX
	select OMAP_HWMOD
	select OMAP_INTERCONNECT
	select OMAP_INTERCONNECT_BARRIER
	select PM_OPP if PM
	select PM_OPP
	select ZONE_DMA if ARM_LPAE
	select PINCTRL_TI_IODELAY if OF && PINCTRL

@@ -112,9 +111,11 @@ config ARCH_OMAP2PLUS
	select OMAP_DM_TIMER
	select OMAP_GPMC
	select PINCTRL
	select PM_GENERIC_DOMAINS if PM
	select PM_GENERIC_DOMAINS_OF if PM
	select PM
	select PM_GENERIC_DOMAINS
	select PM_GENERIC_DOMAINS_OF
	select RESET_CONTROLLER
	select SIMPLE_PM_BUS
	select SOC_BUS
	select TI_SYSC
	select OMAP_IRQCHIP
@@ -140,7 +141,6 @@ config ARCH_OMAP2PLUS_TYPICAL
	select I2C_OMAP
	select MENELAUS if ARCH_OMAP2
	select NEON if CPU_V7
	select PM
	select REGULATOR
	select REGULATOR_FIXED_VOLTAGE
	select TWL4030_CORE if ARCH_OMAP3 || ARCH_OMAP4
+8 −8
Original line number Diff line number Diff line
@@ -151,10 +151,10 @@ static int omap_enter_idle_coupled(struct cpuidle_device *dev,
				 (cx->mpu_logic_state == PWRDM_POWER_OFF);

	/* Enter broadcast mode for periodic timers */
	tick_broadcast_enable();
	RCU_NONIDLE(tick_broadcast_enable());

	/* Enter broadcast mode for one-shot timers */
	tick_broadcast_enter();
	RCU_NONIDLE(tick_broadcast_enter());

	/*
	 * Call idle CPU PM enter notifier chain so that
@@ -166,7 +166,7 @@ static int omap_enter_idle_coupled(struct cpuidle_device *dev,

	if (dev->cpu == 0) {
		pwrdm_set_logic_retst(mpu_pd, cx->mpu_logic_state);
		omap_set_pwrdm_state(mpu_pd, cx->mpu_state);
		RCU_NONIDLE(omap_set_pwrdm_state(mpu_pd, cx->mpu_state));

		/*
		 * Call idle CPU cluster PM enter notifier chain
@@ -178,7 +178,7 @@ static int omap_enter_idle_coupled(struct cpuidle_device *dev,
				index = 0;
				cx = state_ptr + index;
				pwrdm_set_logic_retst(mpu_pd, cx->mpu_logic_state);
				omap_set_pwrdm_state(mpu_pd, cx->mpu_state);
				RCU_NONIDLE(omap_set_pwrdm_state(mpu_pd, cx->mpu_state));
				mpuss_can_lose_context = 0;
			}
		}
@@ -194,9 +194,9 @@ static int omap_enter_idle_coupled(struct cpuidle_device *dev,
		    mpuss_can_lose_context)
			gic_dist_disable();

		clkdm_deny_idle(cpu_clkdm[1]);
		omap_set_pwrdm_state(cpu_pd[1], PWRDM_POWER_ON);
		clkdm_allow_idle(cpu_clkdm[1]);
		RCU_NONIDLE(clkdm_deny_idle(cpu_clkdm[1]));
		RCU_NONIDLE(omap_set_pwrdm_state(cpu_pd[1], PWRDM_POWER_ON));
		RCU_NONIDLE(clkdm_allow_idle(cpu_clkdm[1]));

		if (IS_PM44XX_ERRATUM(PM_OMAP4_ROM_SMP_BOOT_ERRATUM_GICD) &&
		    mpuss_can_lose_context) {
@@ -222,7 +222,7 @@ static int omap_enter_idle_coupled(struct cpuidle_device *dev,
	cpu_pm_exit();

cpu_pm_out:
	tick_broadcast_exit();
	RCU_NONIDLE(tick_broadcast_exit());

fail:
	cpuidle_coupled_parallel_barrier(dev, &abort_barrier);
Loading