<feed xmlns='http://www.w3.org/2005/Atom'>
<title>BMC/Intel-BMC/linux.git/drivers/bus/ti-sysc.c, branch dev-5.7</title>
<subtitle>Intel OpenBMC Linux kernel source tree (mirror)</subtitle>
<id>https://git.radix-linux.su/BMC/Intel-BMC/linux.git/atom?h=dev-5.7</id>
<link rel='self' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/atom?h=dev-5.7'/>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/'/>
<updated>2020-07-22T07:34:07+00:00</updated>
<entry>
<title>bus: ti-sysc: Do not disable on suspend for no-idle</title>
<updated>2020-07-22T07:34:07+00:00</updated>
<author>
<name>Tony Lindgren</name>
<email>tony@atomide.com</email>
</author>
<published>2020-07-02T20:57:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=20dac5a3eb4befab22cf3f4cf5f6d3fefe2de8ab'/>
<id>urn:sha1:20dac5a3eb4befab22cf3f4cf5f6d3fefe2de8ab</id>
<content type='text'>
[ Upstream commit a55de412228cc5a2b4bf8d2a09849898102633e2 ]

If we have "ti,no-idle" specified for a module we must not disable
the the module on suspend to keep things backwards compatible.

Fixes: 386cb76681ca ("bus: ti-sysc: Handle missed no-idle property in addition to no-idle-on-init")
Reported-by: Grygorii Strashko &lt;grygorii.strashko@ti.com&gt;
Signed-off-by: Tony Lindgren &lt;tony@atomide.com&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
</entry>
<entry>
<title>bus: ti-sysc: Fix sleeping function called from invalid context for RTC quirk</title>
<updated>2020-07-22T07:34:07+00:00</updated>
<author>
<name>Tony Lindgren</name>
<email>tony@atomide.com</email>
</author>
<published>2020-07-02T17:41:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=884462339af75cb596001fe93172abcd3e502bcb'/>
<id>urn:sha1:884462339af75cb596001fe93172abcd3e502bcb</id>
<content type='text'>
[ Upstream commit afe6f1eeb08f85e57f0a02b71efb5a0839606aac ]

With CONFIG_DEBUG_ATOMIC_SLEEP enabled we can see the following with RTC probe:

BUG: sleeping function called from invalid context at drivers/bus/ti-sysc.c:1736
...
(sysc_quirk_rtc) from [&lt;c060d01c&gt;] (sysc_write_sysconfig+0x1c/0x60)
(sysc_write_sysconfig) from [&lt;c060d9f4&gt;] (sysc_enable_module+0x11c/0x274)
(sysc_enable_module) from [&lt;c060f37c&gt;] (sysc_probe+0xe9c/0x1380)
(sysc_probe) from [&lt;c06e9384&gt;] (platform_drv_probe+0x48/0x98)

Fixes: e8639e1c986a ("bus: ti-sysc: Handle module unlock quirk needed for some RTC")
Signed-off-by: Tony Lindgren &lt;tony@atomide.com&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
</entry>
<entry>
<title>bus: ti-sysc: Fix wakeirq sleeping function called from invalid context</title>
<updated>2020-07-22T07:34:07+00:00</updated>
<author>
<name>Tony Lindgren</name>
<email>tony@atomide.com</email>
</author>
<published>2020-07-02T17:44:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=826dc08af3f16d0aba7d3308d3fe933d0cc5700e'/>
<id>urn:sha1:826dc08af3f16d0aba7d3308d3fe933d0cc5700e</id>
<content type='text'>
[ Upstream commit 9f9113925018d500a95df539014d9ff11ac2c02d ]

With CONFIG_DEBUG_ATOMIC_SLEEP enabled we can see the following with
wakeirqs and serial console idled:

BUG: sleeping function called from invalid context at drivers/bus/ti-sysc.c:242
...
(sysc_wait_softreset) from [&lt;c0606894&gt;] (sysc_enable_module+0x48/0x274)
(sysc_enable_module) from [&lt;c0606c5c&gt;] (sysc_runtime_resume+0x19c/0x1d8)
(sysc_runtime_resume) from [&lt;c0606cf0&gt;] (sysc_child_runtime_resume+0x58/0x84)
(sysc_child_runtime_resume) from [&lt;c06eb7bc&gt;] (__rpm_callback+0x30/0x12c)
(__rpm_callback) from [&lt;c06eb8d8&gt;] (rpm_callback+0x20/0x80)
(rpm_callback) from [&lt;c06eb434&gt;] (rpm_resume+0x638/0x7fc)
(rpm_resume) from [&lt;c06eb658&gt;] (__pm_runtime_resume+0x60/0x9c)
(__pm_runtime_resume) from [&lt;c06edc08&gt;] (handle_threaded_wake_irq+0x24/0x60)
(handle_threaded_wake_irq) from [&lt;c01befec&gt;] (irq_thread_fn+0x1c/0x78)
(irq_thread_fn) from [&lt;c01bf30c&gt;] (irq_thread+0x140/0x26c)

We have __pm_runtime_resume() call the sysc_runtime_resume() with spinlock
held and interrupts disabled.

Fixes: d46f9fbec719 ("bus: ti-sysc: Use optional clocks on for enable and wait for softreset bit")
Signed-off-by: Tony Lindgren &lt;tony@atomide.com&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
</entry>
<entry>
<title>bus: ti-sysc: Fix uninitialized framedonetv_irq</title>
<updated>2020-06-30T19:35:59+00:00</updated>
<author>
<name>Tony Lindgren</name>
<email>tony@atomide.com</email>
</author>
<published>2020-05-31T19:37:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=d3c6de1e8b4b3949eef4b1cc0a2d8535b17fde67'/>
<id>urn:sha1:d3c6de1e8b4b3949eef4b1cc0a2d8535b17fde67</id>
<content type='text'>
[ Upstream commit 085bc0e576a4bf53b67a917c54908f299a2fb949 ]

We are currently only setting the framedonetv_irq disabled for the SoCs
that don't have it. But we are never setting it enabled for the SoCs that
have it. Let's initialized it to true by default.

Fixes: 7324a7a0d5e2 ("bus: ti-sysc: Implement display subsystem reset quirk")
Cc: Laurent Pinchart &lt;laurent.pinchart@ideasonboard.com&gt;
Cc: Tomi Valkeinen &lt;tomi.valkeinen@ti.com&gt;
Signed-off-by: Tony Lindgren &lt;tony@atomide.com&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
</entry>
<entry>
<title>bus: ti-sysc: Ignore clockactivity unless specified as a quirk</title>
<updated>2020-06-30T19:35:59+00:00</updated>
<author>
<name>Tony Lindgren</name>
<email>tony@atomide.com</email>
</author>
<published>2020-05-31T19:37:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=ef2ab15e04a97347047d357a5a143c5561954a7c'/>
<id>urn:sha1:ef2ab15e04a97347047d357a5a143c5561954a7c</id>
<content type='text'>
[ Upstream commit 08b91dd6e547467fad61a7c201ff71080d7ad65a ]

We must ignore the clockactivity bit for most modules and not set it
unless specified for the module with SYSC_QUIRK_USE_CLOCKACT. Otherwise
the interface clock can be automatically gated constantly causing
unexpected performance issues.

Fixes: ae9ae12e9daa ("bus: ti-sysc: Handle clockactivity for enable and disable")
Cc: Laurent Pinchart &lt;laurent.pinchart@ideasonboard.com&gt;
Cc: Tomi Valkeinen &lt;tomi.valkeinen@ti.com&gt;
Signed-off-by: Tony Lindgren &lt;tony@atomide.com&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
</entry>
<entry>
<title>bus: ti-sysc: Use optional clocks on for enable and wait for softreset bit</title>
<updated>2020-06-30T19:35:59+00:00</updated>
<author>
<name>Tony Lindgren</name>
<email>tony@atomide.com</email>
</author>
<published>2020-05-31T19:37:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=e8799d2456d5ca8be9dcece627cbbd1bcd34e4ff'/>
<id>urn:sha1:e8799d2456d5ca8be9dcece627cbbd1bcd34e4ff</id>
<content type='text'>
[ Upstream commit d46f9fbec71997420e4fb83c04d9affdf423f879 ]

Some modules reset automatically when idled, and when re-enabled, we must
wait for the automatic OCP softreset to complete. And if optional clocks
are configured, we need to keep the clocks on while waiting for the reset
to complete.

Let's fix the issue by moving the OCP softreset code to a separate
function sysc_wait_softreset(), and call it also from sysc_enable_module()
with the optional clocks enabled.

This is based on what we're already doing for legacy platform data booting
in _enable_sysc().

Fixes: 7324a7a0d5e2 ("bus: ti-sysc: Implement display subsystem reset quirk")
Reported-by: Faiz Abbas &lt;faiz_abbas@ti.com&gt;
Cc: Laurent Pinchart &lt;laurent.pinchart@ideasonboard.com&gt;
Cc: Tomi Valkeinen &lt;tomi.valkeinen@ti.com&gt;
Signed-off-by: Tony Lindgren &lt;tony@atomide.com&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
</entry>
<entry>
<title>bus: ti-sysc: Flush posted write on enable and disable</title>
<updated>2020-06-30T19:35:59+00:00</updated>
<author>
<name>Tony Lindgren</name>
<email>tony@atomide.com</email>
</author>
<published>2020-05-27T13:49:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=2f3cfd0aab94a67b9a0655d49bca5fda642340c2'/>
<id>urn:sha1:2f3cfd0aab94a67b9a0655d49bca5fda642340c2</id>
<content type='text'>
[ Upstream commit 5ce8aee81be6c8bc19051d7c7b0d3cbb7ac5fc3f ]

Looks like we're missing flush of posted write after module enable and
disable. I've seen occasional errors accessing various modules, and it
is suspected that the lack of posted writes can also cause random reboots.

The errors we can see are similar to the one below from spi for example:

44000000.ocp:L3 Custom Error: MASTER MPU TARGET L4CFG (Read): Data Access
in User mode during Functional access
...
mcspi_wait_for_reg_bit
omap2_mcspi_transfer_one
spi_transfer_one_message
...

We also want to also flush posted write for disable. The clkctrl clock
disable happens after module disable, and we don't want to have the
module potentially stay active while we're trying to disable the clock.

Fixes: d59b60564cbf ("bus: ti-sysc: Add generic enable/disable functions")
Signed-off-by: Tony Lindgren &lt;tony@atomide.com&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
</entry>
<entry>
<title>Merge branch 'fix-lcdc-quirk' into omap-for-v5.7/ti-sysc</title>
<updated>2020-03-10T16:06:02+00:00</updated>
<author>
<name>Tony Lindgren</name>
<email>tony@atomide.com</email>
</author>
<published>2020-03-10T16:06:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=aef067e8e95d856bc09557a91e740b2d6a81a6ae'/>
<id>urn:sha1:aef067e8e95d856bc09557a91e740b2d6a81a6ae</id>
<content type='text'>
</content>
</entry>
<entry>
<title>bus: ti-sysc: Fix quirk flags for lcdc on am335x</title>
<updated>2020-03-09T16:41:14+00:00</updated>
<author>
<name>Tony Lindgren</name>
<email>tony@atomide.com</email>
</author>
<published>2020-03-09T16:41:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=cfaf6051eccc7b8b2354f68c5125d2497b046052'/>
<id>urn:sha1:cfaf6051eccc7b8b2354f68c5125d2497b046052</id>
<content type='text'>
Commit adb72394e2ab ("ARM: OMAP2+: Drop legacy platform data for am3
lcdc") dropped legacy platform data but we never added the quirks for
SWSUP_SIDLE and SWSUP_MSTANDBY for lcdc for ti-sysc driver.

This breaks suspend/resume. Let's fix the issue by enabling the same
quirks for ti-sysc driver as we had earlier with platform data.

Fixes: adb72394e2ab ("ARM: OMAP2+: Drop legacy platform data for am3 lcdc")
Fixes: 23731eac9848 ("bus: ti-sysc: Detect devices on am335x when DEBUG is enabled")
Reported-by: Keerthy &lt;j-keerthy@ti.com&gt;
Cc: Jyri Sarha &lt;jsarha@ti.com&gt;
Cc: Keerthy &lt;j-keerthy@ti.com&gt;
Cc: Dave Gerlach &lt;d-gerlach@ti.com&gt;
Cc: Tero Kristo &lt;t-kristo@ti.com&gt;
Tested-by: Dave Gerlach &lt;d-gerlach@ti.com&gt;
Signed-off-by: Tony Lindgren &lt;tony@atomide.com&gt;
</content>
</entry>
<entry>
<title>bus: ti-sysc: Add support for PRUSS SYSC type</title>
<updated>2020-03-04T15:54:57+00:00</updated>
<author>
<name>Suman Anna</name>
<email>s-anna@ti.com</email>
</author>
<published>2020-02-27T22:28:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=b2745d92bb015cc4454d4195c4ce6e2852db397e'/>
<id>urn:sha1:b2745d92bb015cc4454d4195c4ce6e2852db397e</id>
<content type='text'>
The PRU-ICSS present on AM33xx/AM43xx/AM57xx has a very unique
SYSCFG register. The register follows the OMAP4-style SYSC_TYPE3
for Master Standby and Slave Idle, but also has two additional
unique fields - STANDBY_INIT and SUB_MWAIT. The STANDBY_INIT is
a control bit that is used to initiate a Standby sequence (when
set) and trigger a MStandby request to the SoC's PRCM module. This
same bit is also used to enable the OCP master ports (when cleared)
to allow the PRU cores to access any peripherals or memory beyond
the PRU subsystem. The SUB_MWAIT is a ready status field for the
external access.

Add support for this SYSC type. The STANDBY_INIT has to be set
during suspend, without which it results in a hang in the resume
sequence on AM33xx/AM43xx boards and requires a board reset to
come out of the hang. Any PRU applications requiring external
access are supposed to clear the STANDBY_INIT bit. Note that
the PRUSS context is lost during a suspend sequence because the
PRUSS module is reset and/or disabled.

Signed-off-by: Suman Anna &lt;s-anna@ti.com&gt;
Signed-off-by: Roger Quadros &lt;rogerq@ti.com&gt;
[tony@atomide.com: updated quirk define number and to use -ENODEV]
Signed-off-by: Tony Lindgren &lt;tony@atomide.com&gt;
</content>
</entry>
</feed>
