In register show function, when snprintf returns a negative value
out of bounds access occurs while copying the data to user.
Add return value check on snprintf before copy_to_user
to fix this.
Change-Id: I96bfa64b1603c966852c1d4d4a12651664f17aed
Signed-off-by: Aditya Bavanari <abavanar@codeaurora.org>
Avoid SSR state, and do only clock-stop-resume to reset master when
switching between 44.1 and 48k to avoid redundant re-enumeration.
Change-Id: Iaa955c4ceb75f30c68106468676ddb2551537de4
Signed-off-by: Ramprasad Katkam <katkam@codeaurora.org>
Sometimes, headset is not detected after pdr during music playback.
This is because enable_irq does not get called as master remains
in suspend state. Decrease auto suspend timer to 1 to fix the issue.
Change-Id: I8cea3e74487977af801dccac7e4f873831c26264
Signed-off-by: Vatsal Bucha <vbucha@codeaurora.org>
Add support to register/deregister for event listener to listen to
headset interrupt events during low power island mode.
Change-Id: I9d05261003ef9e4783e03b3acb529c864c07cbec
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Unlock mutex for soundwire bank switch to process the
interrupt before clock pause and request for clock switch
to switch the soundwire clock source.
Change-Id: Idea4306a0e326864431e7cf956044383bf1790db
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Update pr_err to dev_err to indicate which device has
clock mismatch.
Change-Id: Icf842ed63aa0a01ace0ff461f8c05194a0e25f92
Signed-off-by: Meng Wang <mengw@codeaurora.org>
Soundwire requires lpass core and lpass audio core to be enabled
to receive interrupts and soundwire register read/writes. Change
enables lpass core and lpass audio core in interrrupt service
routine and during register read/writes.
Change-Id: I56da2fc6efe7dfb1a7d59937b123b3972f633448
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Add support to dump soundwire bulk register writes to
analyze port configuration on both soundwire master and
soundwire slave devices.
Change-Id: Ie02b2a0ba40aa5a0b4243022e439e1b545688143
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Existing delay for soundwire to auto suspend is 3 secs. Reduce
the delay to 1 sec to improve the power numbers.
Change-Id: I0c13439567eb73b80897f4cf1bbcfb1eded94a9c
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Before proceeding with handling soundwire pm functions
check return value of vote for LPASS HW core and handle
error scenarios.
Change-Id: I4f48c93919a75ebbb072123a12306137118699d0
Signed-off-by: Karthikeyan Mani <kmani@codeaurora.org>
Resource lock should not be held while doing bank
switch as bank switch requires interrupt handling
which needs access to the resource lock.
Change-Id: Ic17178c7e6f16a7db91da6577ed2ce70c9c9f084
Signed-off-by: Karthikeyan Mani <kmani@codeaurora.org>
skip port disable when master is already down to avoid
queuing commands to master which is already down due to ssr/pdr.
Change-Id: I7fadc479784feb0fd8afa229599eb217bb579ea2
Signed-off-by: Ramprasad Katkam <katkam@codeaurora.org>
Exposure of driver bind/unbind to userspace via sysfs may
lead to unexpected behavior.
Hide bind and unbind by driver attribute.
Change-Id: I20d6ee653bcc16af15d6368664aaf240c6645cd0
Signed-off-by: Xiaojun Sang <xsang@codeaurora.org>
Before proceeding with handling soundwire interrupt check
return value of vote for LPASS HW core and handle
error scenarios.
Change-Id: I0f19a5ddb0af82f33a8d004d008eda9baa40c036
Signed-off-by: Karthikeyan Mani <kmani@codeaurora.org>
Suppress the errors from the soundwire master runtime suspend
and runtime resume, if the soundwire slave devices does not
implement the functionality, that avoids pm runtime calling
the runtime functions.
Change-Id: I513a37f37e349a0c435295056df8625f284e13e6
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
When SSR happens, use dev_up flag in codec
to bail out from clock enablement routine.
During interrupt processing if clock enable fails during
SSR, exit isr routine without disabling clock.
Change-Id: Ie2b56521daa70790d6ef53a06c7becc2ee8010a4
Signed-off-by: Aditya Bavanari <abavanar@codeaurora.org>
Before every slave interrupt handler call, reset slave pending
irq flag, so that if irq is halted it does not retain the old
value.
Change-Id: Ibde5dacf38e78ab19afb6f0e91ffac81f6c22813
Signed-off-by: Ramprasad Katkam <katkam@codeaurora.org>
Voice call over headset does not disconnect on button press
while device is in suspend state. This is because inband interrupt
is not made wakeup capable. Make inband interrupt for swr tx as
wakeup capable. Also add wakeup source for swr device.
Change-Id: I5f2751672675bc8d62c4d2bfbbd651e640723d52
Signed-off-by: Vatsal Bucha <vbucha@codeaurora.org>
For codecs like tavil/tasha where the soundwire register access
is through codec bridge, the soundwire bus latency is absorbed
in slimbus io operations, hence do not require extra delay in
soundwire driver for io operations.
Change-Id: If77aa02f0c3c1755916b7a57776115d12e4f08bd
Signed-off-by: Ramprasad Katkam <katkam@codeaurora.org>
Some of the interrupt status bits of soundwire interrupt registers
are different in different versions of soundwire. Change is to
handle the interrupts based on soundwire version.
Change-Id: Icac65c9986a3d5724da6343b4202931f04f57f25
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
In trinket target, interrupt for wakeup is provided via
chip TLMM. Add required support to handle wakeup
interrupt on SWR data line triggered over this TLMM line.
Change-Id: I7fb6d7009a6271d54d0f11f99930b0d039f57129
Signed-off-by: Laxminath Kasam <lkasam@codeaurora.org>
MBHC operations may take around 200ms to get stopped
during ssr. Match timeout for clock voting to be zero
to allow any pending mbhc operation to exited.
Change-Id: I82162e96595fb337f19192f58f1aa7792e8b0e90
Signed-off-by: Ramprasad Katkam <katkam@codeaurora.org>
Hold system suspend when hardware wakeup interrupt is
received to resume soundwire master.
Change-Id: I99a58aa7d28cfa514d72bacc8c6fc6e95fbe038a
Signed-off-by: Ramprasad Katkam <katkam@codeaurora.org>
Do bank switch to default bank during ssr/pdr as master
is reset to default state. This avoids wrong state of
swr master during pdr.
Change-Id: I86a7bd53d471e9d864d25dcb84ad8fe12151cc0d
Signed-off-by: Ramprasad Katkam <katkam@codeaurora.org>
Do not disable wake irq during registration of
wake up interrupt as it leads to multiple disable
calls of wake irq during boot up and headset detection
fails sometimes.
CRs-Fixed: 2356299
Change-Id: I79aa0ab46d26dc0e352d399e0d4381a11ed936f4
Signed-off-by: Aditya Bavanari <abavanar@codeaurora.org>
If the optional commands/registers in soundwire slave(s) are not
implemented, then soundwire bus will ignore the corresponding
commands and executes the next commands in queue.
Change-Id: I24dd929975218a150717f03f5c17c2be173a5005
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Existing soundwire master controller driver uses static tables
directly for soundwire port configuration. But, this is not
scalable to add support for new targets. So, define platform
specific soundwire master port configuration from machine driver.
Change-Id: I37d499c77914b413e6e16ab2689dbaae8fcd194c
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Different platforms have different configuration for soundwire
ports. Add support to get the port configuration information
from the machine driver.
Change-Id: If2c006c4d4a43e2a8dc67c076f6d1c0f36eae16b
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Store interrupt mask variable in master private data to
indicate the interrupts which are currently enabled. This
is to avoid reading interrupt enable register, which varies
on hardware version, for knowing the interrupt enabled info.
Change-Id: Ic990decd1b1112a1ad2a6af0d9b42269fe4e1b4c
Signed-off-by: Ramprasad Katkam <katkam@codeaurora.org>
Add lock and unlock sleep functions to master to prevent
system suspend during interrupts or slave wakeup
requests.
Change-Id: Icb4ea354ec6e2925f83c2380f30ea8e37aca7449
Signed-off-by: Ramprasad Katkam <katkam@codeaurora.org>
Add support for soundwire device wakeup through bus driver.
These APIs will be used by slave driver through bus driver
to vote and unvote for master wakeup, when it requires
master for register access operations. Master will be
aware of the slave usage with the vote for device wakeup.
Change-Id: I24f0ec0344f05926dc866edb04294cb31348e1ce
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Signed-off-by: Ramprasad Katkam <katkam@codeaurora.org>
Switch audio drivers to SPDX identifier on msm-4.19.
Change-Id: Ic3f0230a516db251b8d81e8a7e73dbc04d66fe1b
Signed-off-by: Meng Wang <mengw@codeaurora.org>