There is a mismatch in the interface num being passed for
enabling/disabling the CWB_OVERFLOW IRQ during concurrent
writeback(CWB). Fix it to use the same intf_num for both
cases.
Change-Id: Ic4b7599ac7a06583d745630ee10d3c77d40ac526
Signed-off-by: Veera Sundaram Sankaran <veeras@codeaurora.org>
HW recommendation is to set the TX_TRIM_3 value to 0x2 for
a steeper slope. This improves eye diagram testing result.
This register is secure access so write to the SEC_ACCESS
prior to setting this.
Change-Id: I80b0a02feb0e4d1fb382407087fa30f390641ccb
Signed-off-by: Jack Pham <jackp@codeaurora.org>
Decrease the wait time from 5ms to 2ms when preparing a VDM
response to ensure that it gets sent out timely within
tSenderResponse (15ms). To avoid possible collision with an
incoming packet, check that there has not been any queued Rx
message just prior to sending a VDM. Also check the result of the
transmit and simply try again later if -EBUSY is returned.
While at it, fix a couple other miscellaneous timing issues.
Setting PD_ACTIVE=1 has considerable delay due to the charger's
voting mechanism, so move setting it to after starting the
SenderResponse timer when sending the Source Capabilities, and
similarly after sending a Request as a sink, in order to make
sure response timing is met. For source hard reset, increase the
tSrcRecover delay slightly from the spec minimum to account for
additional VBUS rise/fall delays before sending PS_RDY. Finally,
add a delay for VCONN_SWAP before sending PS_RDY for similar reason.
Change-Id: I5760fadb66cad6faf02e95a1e1bb975289ef8e9f
Signed-off-by: Jack Pham <jackp@codeaurora.org>
To avoid missing an incoming packet that was quickly sent while
still processing the previous packet, clear the acknowledge bit
as soon as the message is consumed from the Rx FIFO. This gives
the hardware a chance to send a GoodCRC without causing the
sender to retry.
Change-Id: I8a9ef42685576ab68aa65efab1bebc40d801990d
Signed-off-by: Jack Pham <jackp@codeaurora.org>
If an unexpected or delayed Type-C mode change notification
arrives from the charger driver, it could falsely kick the
state machine and could cause it to prematurely hard reset
since it preempted an expected message. This is particularly
true for the PR Swap operation in which the timing of PS_RDY
and resulting power negotiation is disrupted by the CC change
notification which is catching up. The previous way of handling
this by using the pd->in_pr_swap flag to mask the typec_mode
changes is quite fragile due to the uncertainty of when said
flag should be cleared.
Hence, demote the use of the in_pr_swap flag for only ignoring
the expected disconnect the happens in between the role change.
Then, for typec_mode changes, determine if current_pr is changed
or not to decide whether to kick the state machine. Finally,
since disconnect now is signaled by pd->current_pr==PR_NONE,
we'll need to keep track of whether VBUS had been enabled with
a separate flag rather than relying on pd->current_pr==PR_SRC.
Change-Id: I66be40091b75726d25c7be4478f1248a6af9ca3c
Signed-off-by: Jack Pham <jackp@codeaurora.org>
Make sure to reset both Tx and Rx msgid counters when the
protocol layer needs to be reset. This occurs after hard/soft
reset as well as when starting up a new sink or source session.
Put this in a common function pd_reset_protocol().
Change-Id: I643a60a28e6498ca16b6f46293b8aa05eff40266
Signed-off-by: Jack Pham <jackp@codeaurora.org>
The current hard reset handling (most recently fixed with
commit 172cec3a2c ("usb: pd: Improve sink hard reset handling"))
is based on a maximum timeout for the longest possible (according
to spec) duration that VBUS may turn off and back on again, just
under 2s, before re-starting the sink and waiting for capabilities
again. However, this method is prone to timing errors, particularly
tTypeCSinkWaitCap, which should be based on when VBUS turns on.
Fix this by making use of the VBUS presence notification from the
charger (PROP_PRESENT). Keep track of this in the psy_changed()
callback and use the falling notification to determine when to
transition out of PE_SNK_TRANSITION_TO_DEFAULT into PE_SNK_STARTUP.
Bring back PE_SNK_DISCOVERY which is now used as a waiting state
until the VBUS rising notification comes and transition to
PE_SNK_WAIT_FOR_CAPABILITIES. And move setting of PROP_VOLTAGE_MAX
to PE_SNK_STARTUP after VBUS has turned off to avoid tripping
the charger's overvoltage detection.
Also since aforementioned commit, the CC HW is now able to handle
VBUS going away and not treating it as a false disconnect, so we
can remove the workaround as a disconnect can now be treated as
a disconnect.
Change-Id: I885f3f4c219e102758fd09c8aae9257d093ebb72
Signed-off-by: Jack Pham <jackp@codeaurora.org>
A conditional branch is skipped due to incorrect string comparison.
It is fixed by using "strcmp" to perform string comparison.
CRs-fixed: 1085889
Change-Id: I12be44ac272fc5079230feb6ae24c68ccde99cf2
Signed-off-by: Xiaoyu Ye <benyxy@codeaurora.org>
Signed-off-by: Bhalchandra Gajare <gajare@codeaurora.org>
MDSS3.x rotator supports downscaling and output compression together.
Add capability to show usermode driver to allow best bandwidth saving
for such usecase. Also rename wb_count to queue_count to reflect the
exact meaning of the HW capability.
CRs-Fixed: 1093816
Change-Id: I38cad55e06ef6496747ba03bfcfaf4328a347c8f
Signed-off-by: Benjamin Chan <bkchan@codeaurora.org>
There is a double fetch problem in audit_log_single_execve_arg()
where we first check the execve(2) argumnets for any "bad" characters
which would require hex encoding and then re-fetch the arguments for
logging in the audit record[1]. Of course this leaves a window of
opportunity for an unsavory application to munge with the data.
This patch reworks things by only fetching the argument data once[2]
into a buffer where it is scanned and logged into the audit
records(s). In addition to fixing the double fetch, this patch
improves on the original code in a few other ways: better handling
of large arguments which require encoding, stricter record length
checking, and some performance improvements (completely unverified,
but we got rid of some strlen() calls, that's got to be a good
thing).
As part of the development of this patch, I've also created a basic
regression test for the audit-testsuite, the test can be tracked on
GitHub at the following link:
* https://github.com/linux-audit/audit-testsuite/issues/25
[1] If you pay careful attention, there is actually a triple fetch
problem due to a strnlen_user() call at the top of the function.
[2] This is a tiny white lie, we do make a call to strnlen_user()
prior to fetching the argument data. I don't like it, but due to the
way the audit record is structured we really have no choice unless we
copy the entire argument at once (which would require a rather
wasteful allocation). The good news is that with this patch the
kernel no longer relies on this strnlen_user() value for anything
beyond recording it in the log, we also update it with a trustworthy
value whenever possible.
Reported-by: Pengfei Wang <wpengfeinudt@gmail.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Paul Moore <paul@paul-moore.com>
Change-Id: Ie9848961d236739df5014474f2c2a781af9fb811
Git-repo: http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git
Git-commit: 43761473c254b45883a64441dd0bc85a42f3645c
Signed-off-by: Dennis Cagle <d-cagle@codeaurora.org>
Export an instance of the dual_role_usb class using the
provided helpers. This is an alternate set of sysfs nodes
that the Android framework uses to allow for user
interactive control of role switching.
Writing to the various properties achieves the following:
- mode: toggles between UFP/Sink and DFP/Source via soft
disconnect/reconnect without invoking PD.
- power_role: toggles between Source and Sink modes via
the PR_Swap operation
- data_role: toggles between UFP (device) and DFP (host) via
the DR_Swap operation
Android currently expects a single instance named "otg_default".
Change-Id: I7060b6f379bc8bed24b59d9df4ca2fb331437363
Signed-off-by: Jack Pham <jackp@codeaurora.org>
This reverts commit 33ee9fb701 ("scsi: ufs: disable ah8 during
suspend and enable it on resume"). There is a race condition
between disabling AH8 and HW initiated AH8 enter/exit causing
DME errors on next command transfer. Revert this change until
the issue is fixed.
Change-Id: Iece1266b345a09cae3f8de6b4780340515c19c4a
Signed-off-by: Venkat Gopalakrishnan <venkatg@codeaurora.org>
Add thermal properties to enable kernel thermal monitoring and
mitigations like hotplug, thermal reset, vdd restriction, etc.
for msmfalcon. Add mitigation profiles for each physical CPU which
has information like sensor to monitor and various mitigation types
to enable for msmfalcon.
Change-Id: I36ca125143cf9929fb0bd781990bdd8ab1dbeebf
Signed-off-by: Manaf Meethalavalappu Pallikunhi <manafm@codeaurora.org>
Add thermal sensor related information, which provides information
such as alias, type and scaling factor to Kernel Thermal Monitor(KTM).
The KTM exposes these sensor information via sysfs to thermal-engine.
Change-Id: Ie564c181db61f6229479a49917cdb9e6c1887fc5
Signed-off-by: Manaf Meethalavalappu Pallikunhi <manafm@codeaurora.org>
Add checks of the user input count to avoid possible heap overflow
Signed-off-by: Min Chong <mchong@google.com>
Bug: 30937462
Git-repo: https://android.googlesource.com/kernel/msm.git
Git-commit: a6accafb252a76256f11c83e28c556c8ca4b8e1f
Change-Id: I6fc8323cbcf395a2c24e49e65cc7012709d031a2
Signed-off-by: Dennis Cagle <d-cagle@codeaurora.org>
Before sending the RPM clock rate request, rate should
be in KHz so fixing the same by converting the rate
to KHz and also fix some clock ids.
Change-Id: I3fb59f96b419bdb91f9a04cc47ab1c23d15dc74b
Signed-off-by: Amit Nischal <anischal@codeaurora.org>
Fix uninitialized references in gladiator_erp_v2, reported
by static analysis tool. While at it, log all error registers
for Gladiator error.
Change-Id: If2b81e8b8fd446a07bc92ff23f74cdaa9ed11ff5
Signed-off-by: Neeraj Upadhyay <neeraju@codeaurora.org>
Mdlog structure member - hdlc timer is being accessed after
mdlog session is terminated.
This patch prevents the access to freed variable
by providing session_lock protection.
Change-Id: I1701e57fb4bbb751b76a4f24dc936ac22524e26c
Signed-off-by: Manoj Prabhu B <bmanoj@codeaurora.org>
In debug message, payload could be NULL and cause panic. Remove
payload from debug message.
Add null check for payload to avoid panic.
CRs-Fixed: 1087543
Change-Id: I3e2fffdddfb7822a4eb3e142738363f1e80522d8
Signed-off-by: Meng Wang <mwang@codeaurora.org>
This reverts commit 691ddba4ee ("msm: kgsl: Enable limits
management on A540v2"). The GPU does not hit the voltage
limits at 670mhz so there isn't any need to enable
limit management.
CRs-Fixed: 1056661
Change-Id: If225dc4ec2c2e3eb8996f49f4fdf6acd31a50680
Signed-off-by: Oleg Perelet <operelet@codeaurora.org>
Update the code name from msmcobalt to msm8998. As a result, update
the filename containing "cobalt" and files content containing "cobalt".
CRs-Fixed: 1070840
Change-Id: I2c7b95e3e2a2fec7730724da9eeb86a39a77faf1
Signed-off-by: Runmin Wang <runminw@codeaurora.org>
Signed-off-by: Kyle Yan <kyan@codeaurora.org>
Signed-off-by: Jeevan Shriram <jshriram@codeaurora.org>
In case of an error when configuring a pipe during kickoff,
driver unstages from HW the pipe that had the error, so it
makes sure this dirty pipe is not used by HW.
This is a problem if the pipe is configured in multi-rect
mode and we only fail one of the two multi-rect pipes since
in this case HW is expecting both multi-rect pipes that
represent the two HW rectangles and we are only configuring
one due the error that happened.
Fix this problem by making sure that if the configuration of
one multi-rect fail, we unstage both multi-rect pipes.
Change-Id: I09fbda8eb92c81acf24d0ff07ca9c040141680e1
Signed-off-by: Ingrid Gallardo <ingridg@codeaurora.org>
Instead of releasing the buffers in buffer requirements call,
release them in buf_cleanup callback which exactly intended
for this purpose.
CRs-Fixed: 1092644
Change-Id: Ieb6462ee6a3e4f29d8e620cce92eb5f05d347c29
Signed-off-by: Praneeth Paladugu <ppaladug@codeaurora.org>
Validate the power setting size before copying.
If userspace sends a value which is greater than
MAX_POWER_CONFIG, then the driver accesses unintended memory.
This change will fix the issue.
CRs-Fixed: 1093232
Signed-off-by: Rajesh Bondugula <rajeshb@codeaurora.org>
Change-Id: Ia49963248a94765baa19695294b197ea6f3bb8e2
Add boundary check for cci master in i2c_read.
This value is passed from userpsace. If user sends an
invalid number for master there is a possibility of
accessing unintended buffer.
This change addresses the issue.
Crs-Fixed: 1086764
Signed-off-by: Rajesh Bondugula <rajeshb@codeaurora.org>
Change-Id: Ice3bde902aea96382ceb4dfddfd28a5ea89c183d
Validate eeprom_name string length before copying into
the userspace buffer.
If more data than required is copied, userspace has the access to
some of kernel data which is not intended.
This change will fix the issue.
CRs-Fixed: 1090007
Signed-off-by: Rajesh Bondugula <rajeshb@codeaurora.org>
Change-Id: Id40a287e0b1a93cc15d9b02c757fe9f347e285f2
Falcon uses IPA HW to shunt data between
different components like apps, modem and usb.
Add a support to enable IPA node for falcon.
Change-Id: If2b37804d82160d7965ea1d0f6eb69f96b3514f4
Acked-by: Mohammed Javid <mjavid@qti.qualcomm.com>
Signed-off-by: Utkarsh Saxena <usaxena@codeaurora.org>
There is a requirement, for diag command handler, that needs
the separator between image variant and image OEM to be shown
as part of OEM value in sysfs. So change the relevant offset
and size to include this information in image oem sysfs
attribute.
CRs-Fixed: 1086976
Change-Id: Iae12fa648df17dddd48f3a71e94d06c2c3b03277
Signed-off-by: Imran Khan <kimran@codeaurora.org>
Correct description for ARCH_MSMFALCON and ARCH_MSMTRITON,
to match the guidelines.
Change-Id: I2e657f3237c7ed38111b7bc6bddbf07ef4420924
Signed-off-by: Neeraj Upadhyay <neeraju@codeaurora.org>
If a legacy Type-A to Type-C cable is attached to the phone, but the
Type-A end is left disconnected, then the VBUS capacitor will be charged
when DRP toggles to DFP mode. Since VBUS is charged it will prevent the
device from staying in power off state when shutdown.
Fix this by forcing UFP mode before shutdown so the VBUS capacitor will be
discharged, and therefore it will not trigger PON to restart the device.
Change-Id: I53f89cf6b7c11f32c5e8e5a51a5986fa31424b92
Signed-off-by: Nicholas Troast <ntroast@codeaurora.org>
Currently, smb2 charger uses VBT_LT_CHG_RECHARGE_THRESH signal
from FG to enable auto recharge by default. Add support to
configure smb2 charger to use SOC_LT_CHG_RECHARGE_THRESH signal
from FG if needed.
This will enable charging to resume again when battery SOC drops
below the automatic recharge SOC threshold (configured in FG)
while charger is inserted and SOC goes down after the charge
termination had happened.
Change-Id: Ic68cd12cc861d04e107b70e2b96200483f13da26
Signed-off-by: Subbaraman Narayanamurthy <subbaram@codeaurora.org>
Add name and device addr in queue headers so that it
would be useful in debugging.
CRs-Fixed: 1086193
Change-Id: Ie9dab1526f8e0f4b66918c0eda792ebf83d6a0b9
Signed-off-by: Praneeth Paladugu <ppaladug@codeaurora.org>
Check if compat config is defined before converting
user pointer to compat pointer.
CRs-Fixed: 1091999
Change-Id: Ia8495790b031ae69dd8d9f36cdd2408de9aed29b
Signed-off-by: Gautham Mayyuri <gmayyuri@codeaurora.org>
Reading TYPE_C_STATUS_5_REG overwrites what was read from
TYPE_C_STATUS_4_REG therefore, the incorrect register is masked when
determining whether a vbus-error had occurred.
Re-arrange the USB Type-C changed handler so that function calls which
could fail are called first and store the status separately.
Change-Id: I302e06498b2696d6af06c0360c12f82711b0911d
Signed-off-by: Nicholas Troast <ntroast@codeaurora.org>
Currently when OC is detected on VCONN the hardware will disable OTG and
exit Attached.SRC state and go back to DRP toggling. If the OC persists
then the hardware will enter an infinite cycle of trying to enable OTG.
Fix this by changing the behavior such that the hardware remains in
Attached.SRC state when OC is detected on VCONN. In this case VBUS will
remain on and the OTG device may continue to work in a limited capacity
without VCONN.
Change-Id: If371ec24040ea6d45d64dec6fa32b7f9f2276dfa
Signed-off-by: Nicholas Troast <ntroast@codeaurora.org>
enable_irq() called before processing responses in work handler
which would lead to miss interrupt from video hardware sometimes.
An interrupt from video h/w will queue the work to work handler
but if work is already running the new work is not posted.
work handler has two parts, one, read all the messages from video h/w,
two, process the messages. queue work while processing messages
will miss reading the new messages from video h/w because
the queue work (as a result of interrupt from video h/w) will not
actually queue the work as work handler already running. Fix the
issue by enabling irq after processing all the responses to
makesure interrupt coming from video h/w after work handler
completed processing the messages.
CRs-Fixed: 1086284
Change-Id: Id158e5c6d89fc8b761d8cfe92afbf3592877c556
Signed-off-by: Karthikeyan Periasamy <kperiasa@codeaurora.org>
For jdi panel, mode switch commands take time to be sent
to the panel. This results in fifo overflow errors
when there is no sufficient time to send the commands
to the panel to do the switch. Fix this problem by
sending commands in HS mode.
Change-Id: I02adc707524d4858f92e5979acca137e4864a2f8
Signed-off-by: Ingrid Gallardo <ingridg@codeaurora.org>
Some panels need to send the dcs commands for mode
switch in HS mode instead the default LP mode due time
constraints. Add entries so the panels can be configured
to HS mode if required for the mode switch.
Change-Id: Ie41ad1965384b131db343c54f888ade82fc45e31
Signed-off-by: Ingrid Gallardo <ingridg@codeaurora.org>
RF clock 2 is not required on msmfalcon, so remove the clock instance and
add rf clk1 support instead.
Change-Id: I13258295e9ae9c8607586ed5686e97276823d08c
Signed-off-by: Taniya Das <tdas@codeaurora.org>
Modify the clock_gfx dummy clock to use the real clock controller for all
gpu clock controller clients.
Change-Id: If3c707877f2a0da04065b57a1c2fd44d256a5303
Signed-off-by: Taniya Das <tdas@codeaurora.org>