Add support for CPE(Codec Processing Engine) second voice
wakeup session using ECPP(Echo cancellation Ping-Pong) hardware
path. This allows to enable two concurrent CPE sessions, one
on MAD(Mic Always-on Detection) and the other on ECPP.
CRs-fixed: 1022917
Change-Id: I7a14a2d0b5455d427f90e02506b996fc615c848a
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
Signed-off-by: Vidyakumar Athota <vathota@codeaurora.org>
WCD audio codecs contain SPI slave hardware module to provide access
to codec memory and SPI register space. Change adds driver for this
slave hardware. This driver uses regmap for SPI internal register
accesses and plugs in to standard SPI framework as child device to
master controller driver.
CRs-Fixed: 1049012
Change-Id: I0640ac1ed60a2ec3633636760593211ecd2f9c2d
Signed-off-by: Bhalchandra Gajare <gajare@codeaurora.org>
WCD audio codecs have DSP embedded to perform signal processing on
audio data. The codec driver has control over the DSP clock, power etc,
whereas the DSP memory can be accessed through an different bus slave
interface. In such cases, it is required to make sure the hardware
expected sequences are met for the DSP to function properly. The
wcd-dsp manager driver registers as master to component framework
and provides the ability to sequence the operations between the child
drivers. Upon registration of all children, the wcd-dsp manager driver
parses the wcd dsp image, downloads the image and boots up the DSP.
It invokes the component children to perform the tasks in sequence.
CRs-Fixed: 1049012
Change-Id: I059e1b111c607e49a7cc9a7940cf458e701c73d3
Signed-off-by: Bhalchandra Gajare <gajare@codeaurora.org>
wcd_dsp_utils adds utilities that will be used by the
wcd dsp manager driver. Add helper functions to parse
WDSP image and provide list of segments to be loaded
to memory.
CRs-Fixed: 1049012
Change-Id: I2b1464c2a035a039440e6d3e5122ad3f90da4d1e
Signed-off-by: Bhalchandra Gajare <gajare@codeaurora.org>
Currently only read-only registers are marked as volatile. It is
possible that some registers could be read-write and still have
subset of the bits that are updated by the hardware. Add change
to mark such CPE (codec processing engine) register as volatile.
CRs-Fixed: 1049012
Change-Id: I1cedf646d0df1ab5968df4830502649de305c9d1
Signed-off-by: Bhalchandra Gajare <gajare@codeaurora.org>
Inter EE commands and IRQ are not supported currently
and AP does not have access to those.
CRs-Fixed: 1048160
Change-Id: I033044db83e8af6fb0976d711ea12c2f99291f91
Acked-by: Ady Abraham <adya@qti.qualcomm.com>
Signed-off-by: Skylar Chang <chiaweic@codeaurora.org>
This reverts commit <a67208e94d945ad890f8dc4734ec5fdb3219cc03>.
This commit prevented xo shutdown as during suspend exit, WSA sensor for
temperature read triggered a slimbus wakeup. Slimbus suspend mechanism
will expect a qmi message after the system has entered suspend. This
will wake the system from suspend. This happens recursively and
system will never enter suspend.
Revert this commit to avoid this issue, till the slimbus suspend
mechanism is fixed.
Change-Id: I4236f4b6272d0bccaf8a2d6f7d5435caf044bd59
Signed-off-by: Ram Chandrasekar <rkumbako@codeaurora.org>
Current handler acknowledges interrupt in both the irq handler
and the irq thread. This clears interrupts that come between the
irq handler and the irq thread. This patch reorganizes irq
acknowledgment to the irq handler and changes the irq thread to
also check for completed requests by comparing request timestamp
and hardware completion timestamp. Upon error or timeout event,
hardware status is dumped to aid irq related fault isolation.
CRs-Fixed: 1044128
Change-Id: I085c2c2ec55106a8fb196f3ef1cfcb42e2b2507c
Signed-off-by: Alan Kwong <akwong@codeaurora.org>
Add support to read charger and skin temp hot and
too hot temperature threshold values programmed
during initialization.
Change-Id: I46dca1f606b5414bf7a032c18c9684ba2e53cf28
Signed-off-by: Siddartha Mohanadoss <smohanad@codeaurora.org>
Signed-off-by: Nicholas Troast <ntroast@codeaurora.org>
The final temperature values for PMI die temperature and
charger temperature are in units of millidegC. Update
the slope factor value to avoid losing resolution
accuracy while values are reported in units of millidegC.
Change-Id: Iec4aa730fa97133af0c0fb9d47557738ef6f45a0
Signed-off-by: Siddartha Mohanadoss <smohanad@codeaurora.org>
Currently there are no channel specific properties associated
with the RRADC channels. The existing channel nodes specify
a logical channel number that is used by the client when
requesting the RRADC channel read. This can instead be obtained
from the channel list specified within the driver. Therefore
remove the channel nodes.
Change-Id: I4da81a576b88285cedb0a1c7fd49ccd526d25012
Signed-off-by: Siddartha Mohanadoss <smohanad@codeaurora.org>
A check is needed to ensure the LSB and MSB are coherent
when reading the result registers for the RRADC channels.
The driver performs another round of read request and
compares the result registers to ensure the data read
back is coherent.
Since there are no channel specific properties remove
the dependency to add the channel nodes in the device
tree and instead statically register the channels within
the driver.
Update the scaling functions to report in the units
desired for the final scaled value based on the channel.
The resistance channel reports the units for batt_id
in ohms, the voltage channels such as DCIN, USBIN report
the value in units of microvolts, the current channels
in units of microamps and the temperature channels
such as thermistors are reported in units of millidegC.
Change-Id: I56e6bff28be2cc23f00622d5c37e42564c51a72f
Signed-off-by: Siddartha Mohanadoss <smohanad@codeaurora.org>
Change the default IPC logging messages to help log analysis instead of
having to change log mask levels and having to re-run the test cases.
Currently single log is used to gather all the driver messages. Split
these into dedicated tx/rx payload log, client ioctl/power state log and
generic driver state log.
Also only dump 32 bytes of the tx/rx payload.
Change-Id: I8dee2f8aa0a6882ec1c320669f165e7cb94bb5f1
Signed-off-by: Girish Mahadevan <girishm@codeaurora.org>
Don't modify the ref count variable clk count inside the runtime callbacks.
Doing so could result in a case where the driver might end up calling a put
twice on the runtime object. The resulting imbalance will leave the runtime
state for the device in a bad state.
Change-Id: I34989768811b23762c4afe3e33e229ffa3f1db17
Signed-off-by: Girish Mahadevan <girishm@codeaurora.org>
As part of the resource voting, both the resource_vote and unvote
functions call the toggle_wakeup_interrupt() function which toggles the
state of the wakeup irq unconditionally. This can cause issues in adverse
scenarios. Instead split this out into exclusive enable and disable wakeup
interrupt functions to be called during the resource unvote and vote
respectively. Also don't make resource votes in the wakeup isr, the
wakeup isr injects a pre-determined byte into the tty flip buffer and
doesn't access the core or setup any transactions and hence doesn't need
to vote for resources.
The driver has registered for the noirq system suspend/resume callbacks.
When executing these callbacks, don't rely on the runtime framework to
check the device's current runtime state before deciding whether to allow
system suspend or not as the runtime framework is disabled at this point.
Instead rely on the power state that the driver maintains internally.
Change-Id: I0e5d6b8a8a69efc2d9c65dc1edc85f13cbc94fc3
Signed-off-by: Girish Mahadevan <girishm@codeaurora.org>
Modify the sleep set GPIO bias for UART_3. This will help lower leakage
once the usecase for UART_3 has ended.
Change-Id: I50d918197a4cd0b503dff78e7d4ba89518c1d1c2
Signed-off-by: Girish Mahadevan <girishm@codeaurora.org>
Modify the sleep set GPIO bias for I2C_5. This will help lower leakage once
the usecase for I2C_5 has ended.
Change-Id: I41e9012210ce9a5f4fbeb4236365c0fa2db08625
Signed-off-by: Girish Mahadevan <girishm@codeaurora.org>
For USB 2.0 there is a requirement to not to flush the
USB endpoints after the pipes are disconnected. Otherwise
this can result into NOC errors. Make a change to modify the
disconnect sequence as below.
1) USB driver first disable the pipes
2) New API is provided from IPA to disable the endpoint.
3) As part of disable, make sure pipes are empty and reset
the pipes.
4) USB resets its BAM and flushes the ep.
5) USB then disconnects both IPA and USB pipes.
Change-Id: I917f025678e6abb03058d5be4ec42d9e6d76835f
CRs-Fixed: 1038623
Acked-by: Chaitanya Pratapa <cpratapa@qti.qualcomm.com>
Acked-by: Mohammed Javid <mjavid@qti.qualcomm.com>
Signed-off-by: Utkarsh Saxena <usaxena@codeaurora.org>
During IPA driver processing context delete, a delete to
the referenced header is being done. The header deletion
will also commit the changes to H/W which includes the
processing context commit. This resulted into committing
an invalid process context as it is still in the processing
context list, but points to deleted header.
The fix is to not commit the changes when deleting the header
but only when deleting the processing context.
Change-Id: I9d3c5eec717da0b072144a1027e4582e73aaa6d9
CRs-fixed: 1044710
Signed-off-by: Ghanim Fodi <gfodi@codeaurora.org>
The array index value when setting/getting the channels
of proxy is incorrect as the channel count begins from two.
Fix by setting the correct index offset.
Change-Id: I3ab9858daf6dcdbce762946cbdebeb96eaad764a
Signed-off-by: Shiv Maliyappanahalli <smaliyap@codeaurora.org>