Extend the HDMI debugfs interface to show the EDID modes
and also the extracted information from various data
blocks of the EDID.
Change-Id: I7cb7dbea290ec822e994c79430c6c2dbb39abc33
Signed-off-by: Abhinav Kumar <abhinavk@codeaurora.org>
To support 4k@60fps resolution through HDMI, enable
scrambler feature from HDMI controller and communicate
it with sink device through DDC.
Change-Id: I17750db358df58499303ef9d735bf3301b02a7c1
Signed-off-by: Abhinav Kumar <abhinavk@codeaurora.org>
Currently the DRM upstream EDID parser doesn't have support to
parse all EDID blocks such as extension tag blocks.
Add support for parsing these blocks and extract necessary info.
Change-Id: Iae92de79960f6f0e73a8e2ff7944c1bf101d90a6
Signed-off-by: Abhinav Kumar <abhinavk@codeaurora.org>
Currently the edid_cea modes defined here is only for
VICs 1-64.
Add missing VICs from 65-107 including 4K modes.
Change-Id: I05bcef9514d38ce009ef0bdd996d0dd6b32fdf5a
Signed-off-by: Abhinav Kumar <abhinavk@codeaurora.org>
HDMI 2.0/CEA-861-F introduces two new aspect ratios:
- 64:27
- 256:135
This patch adds enumeration for the new aspect ratios
in the existing aspect ratio list.
V2: rebase
V3: rebase
V4: Added r-b from Jose, Ack by Tomi
Change-Id: Ie90d43e4088a7c19274fe2aa25aa40d38683f584
Signed-off-by: Shashank Sharma <shashank.sharma@intel.com>
Reviewed-by: Sean Paul <seanpaul@chromium.org>
Reviewed-by: Jose Abreu <Jose.Abreu@synopsys.com>
Acked-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Emil Velikov <emil.l.velikov@gmail.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Git-commit: a6e78b3e1406575323b30b65890ee3c29930fb27
Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
Signed-off-by: Abhinav Kumar <abhinavk@codeaurora.org>
Adds parsing for HDMI 2.0 'HDMI Forum Vendor
Specific Data Block'. This block is present in
some HDMI 2.0 EDID's and gives information about
scrambling support, SCDC, 3D Views, and others.
Parsed parameters are stored in drm_connector
structure.
Change-Id: I018cfefea2fd3827d5f83c8e5717ebd95e497519
Signed-off-by: Jose Abreu <joabreu@synopsys.com>
Cc: Carlos Palminha <palminha@synopsys.com>
Cc: David Airlie <airlied@linux.ie>
Cc: Daniel Vetter <daniel.vetter@intel.com>
Cc: dri-devel@lists.freedesktop.org
Cc: linux-kernel@vger.kernel.org
Patch-mainline: dri-devel @ 10 Aug 2016 16:29
Signed-off-by: Jin Li <jinl@codeaurora.org>
Signed-off-by: Abhinav Kumar <abhinavk@codeaurora.org>
The tiled 5K Dell monitor appears to be hiding it's tiled mode
inside the displayid timings block, this patch parses this
block and adds the modes to the modelist.
v1.1: add missing __packed.
Change-Id: Ief7b88bc18b6a7514a8575412937b74c38f971e4
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=95207
Signed-off-by: Dave Airlie <airlied@redhat.com>
Git-commit: a39ed680bddb1ead592e22ed812c7e47286bfc03
Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
Signed-off-by: Abhinav Kumar <abhinavk@codeaurora.org>
This will iterate over all DisplayID blocks found in the buffer.
Previously only the first block was parsed.
https://bugs.freedesktop.org/show_bug.cgi?id=95207
Change-Id: Ida0480aa1652d3725a02950df83c3602fce8bb6e
Signed-off-by: Tomas Bzatek <tomas@bzatek.net>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Git-commit: 3a4a2ea39f86c581054794c0a727597745f1084b
Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
Signed-off-by: Abhinav Kumar <abhinavk@codeaurora.org>
We need to use this for validating modeline additions.
Change-Id: I55fe5a92c614cf949de906bea9a7c84d64450bb2
Signed-off-by: Dave Airlie <airlied@redhat.com>
Git-commit: c97291774c1b867b56c3d439ddaec9a965cf559e
Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
Signed-off-by: Abhinav Kumar <abhinavk@codeaurora.org>
This just makes the code easier to follow.
Change-Id: I96b57a9d895fadc9e351ad56824e6c477496a918
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Git-commit: 5e546cd5b3bc76824069ffa98c52a5f48cf91aba
Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
Signed-off-by: Abhinav Kumar <abhinavk@codeaurora.org>
Check for legacy PM4 commands instead of adreno version to calculate
ringbuffer space for PM4 commands that write to memory.
Change-Id: I5d1d4cfbc70bc73ddee9ee752de24aae154a04dc
Signed-off-by: Lynus Vaz <lvaz@codeaurora.org>
During recovery, there are cases where in WLAN driver running on
APPS can access WLAN copy engine register causing exceptions
because of WLAN hardware in reset state.
Add voltage regulator and clk in icnss device node to vote for WLAN
hardware resources by the icnss platform driver during WLAN recovery.
CRs-Fixed: 2029173
Change-Id: I00bbad40ee152c8dac187ff1f541e34b254589cb
Signed-off-by: Sarada Prasanna Garnayak <sgarna@codeaurora.org>
During recovery, there are cases where in WLAN driver running on
APPS can access WLAN copy engine register causing exceptions
because of WLAN hardware in reset state.
Add voltage regulator and clk in icnss device node to vote for WLAN
hardware resources by the icnss platform driver during WLAN recovery.
CRs-Fixed: 2029102
Change-Id: Iba785acc391fb56ea068199598ddc14d20bb3481
Signed-off-by: Sarada Prasanna Garnayak <sgarna@codeaurora.org>
In case of parallel charging mode "parallel_charger_suspended"
variable tracks the charging enable state, update CHARGING_ENABLE
reporting to use the same.
CRs-Fixed: 2014572
Change-Id: Ib7246f407ad103343b7587b9de3ac938fb63767d
Signed-off-by: Ashay Jaiswal <ashayj@codeaurora.org>
Add voting to disable parallel charger in case of restricted
charging and when system temperature level changes from normal.
Parallel charger gets re-enabled once thermal condition/FCC
restrictions are removed.
CRs-Fixed: 2014572
Change-Id: Ic26b3d93f2f3d582a2eb3c7b9ea0d27bbad24a50
Signed-off-by: Ashay Jaiswal <ashayj@codeaurora.org>
Update the parallel algorithm for ICL change request.
Following steps are performed for every ICL change:
- disable parallel charger using ICL_CHANGE_VOTER
- update the new ICL and re-run AICL.
- re-enable parallel charger by removing vote of
ICL_CHANGE_VOTER.
While at it, update the 'smblib_get_prop_usb_online'
function to use voter library's locked API to get
the usb_icl_vote, this fixes the lockup that happens
when charging is enabled/disabled from usb_icl_votable's
callback function.
CRs-Fixed: 2014572
Change-Id: I7deb6a50d67471ab1aa5e1db6fff880574b4bafb
Signed-off-by: Ashay Jaiswal <ashayj@codeaurora.org>
Signed-off-by: Abhijeet Dharmapurikar <adharmap@codeaurora.org>
Make battery library to directly update the split current
of the main charger via power_supply framework's set_property
API using CURRENT_MAX property. ICL_REDUCTION property
is no longer required.
Note that we are not doing initial ICL vote for USBIN USBIN,
instead when time comes to split aicl, we will read the input
current limit and if nothing is set, check what the hw determined
as the max limit and use that.
For a PD charger case where the apsd result will be unknown,
the current limit is expected to be set by the time aicl settled is
called. The 30 second delaying of parallel enabling, should give
PD engine ample time to set the current limits.
While at it clean up the way settled current change is tracked. Create
a variable that specifically indicates the total settled current seen
last time settled current was adjusted. This makes compare to an updated
settled current value easy.
CRs-Fixed: 2014572
Change-Id: I040b65e6380f2c12350ea44bf32e6981ff126f18
Signed-off-by: Ashay Jaiswal <ashayj@codeaurora.org>
Signed-off-by: Abhijeet Dharmapurikar <adharmap@codeaurora.org>
Add support for HW_CURRENT_MAX property which returns maximum
input current that can be set for an adapter. This property will
be specifically used by parallel charger to cast an initial ICL
vote.
CRs-Fixed: 2014572
Change-Id: I49e80e6b25f40791d9035bc1567fdf881914b1e8
Signed-off-by: Ashay Jaiswal <ashayj@codeaurora.org>
Signed-off-by: Abhijeet Dharmapurikar <adharmap@codeaurora.org>
Move usb_icl_votable creation and it's callback in the
battery.c file, in preparation for an upcoming change where
usb_icl_votable callback will be able to
disable parallel charger when a low input current
request is set.
The new callback uses CURRENT_MAX property to be set on main
psy to set the ICL limit of primary charger.
The limit setting code in main charger path where the votable
call resides currently relies a lot on client being present or not.
Since the votable is being moved away, it won't have information
about the client. So use the current parameter of INT_MAX to
indicate no clients present.
Also it could be that main psy is not instantiated by the time first
icl vote comes in. Ensure that we rerun_election on usb_icl_votable
the instant main psy is seen.
CRs-Fixed: 2014572
Change-Id: Ie449af086ed9218b40ea83158b69e8f8e73edda3
Signed-off-by: Ashay Jaiswal <ashayj@codeaurora.org>
Signed-off-by: Abhijeet Dharmapurikar <adharmap@codeaurora.org>
The charger driver ensures that parallel charging remains
disabled as long as AICL is below threshole (1400mA) using
it's software voting mechanism(USBIN_I_VOTER), thus disable
hardware's autonomous control of input current based parallel
charging.
CRs-Fixed: 2014572
Change-Id: Ie991e0c1d16d63b6def6fb3379019114d20d60f7
Signed-off-by: Ashay Jaiswal <ashayj@codeaurora.org>
Signed-off-by: Abhijeet Dharmapurikar <adharmap@codeaurora.org>
Currently, the driver enables parallel charger as soon
as a favorable charger is seen. This causes many, unnecessary
splits of AICL results as AICL runs for the first time. Besides
the detection logic could further update charger type and rerun
AICL.
Its best to simply delay enabling parallel charger for 30 seconds.
This ensures that type detection and its AICL run to completion and
parallel charging starts with a stable AICL result.
To realize this
- implement a workqueue which will be scheduled/cancelled 30 seconds
later when vbus plugin interrupt happens.
- The workqueue signifies that 30 seconds have elapsed and parallel
charging should be enabled by PL_DELAY_VOTER.
- remove PL_DELAY_HDVP_VOTER since PL_DELAY_VOTER will
ensure parallel gets enabled after 30 seconds of insertion.
- unvote from PL_DELAY_VOTER only when the typeC removal event happens.
A PR_SWAP during a sink session will keep the PL_DELAY_VOTER's vote
enabled, we expect CHG_STATE_VOTER to disable parallel since device will
be supplying VBUS and not charging the battery. This also means that
when another PR_SWAP happens and the device starts operating in sink mode
again, PL_DELAY_VOTER's vote will remain enabled and parallel charging
would begin when other conditions become favorable. IOW PL_DELAY_VOTER
tracks 30 second after physical insertion and remains unaffected by
PR_SWAPs.
CRs-Fixed: 2014572
Change-Id: Ibe10768e61c6d2661bc8946f7f6b9be06f0c28e6
Signed-off-by: Ashay Jaiswal <ashayj@codeaurora.org>
Signed-off-by: Abhijeet Dharmapurikar <adharmap@codeaurora.org>
The current code enables parallel charging if a high voltage
charger is seen (QC or PD) or a high current charger is seen.
This means that parallel charger could remain enabled when PD
transitions its voltage even though it has reduced the current
to 500mA. It is desirable to disable parallel charging during
such voltage transition.
So prepare for this change by first ensuring that only a QC
charger votes for USBIN_V_VOTER. The PD charger, even while
operating at higher voltages will need to depend on USBIN_I_VOTER,
just like a simple DCP charger, to enable parallel charger.
CRs-Fixed: 2014572
Change-Id: I03dfcff44b30b06918ebf176043873fb141f485f
Signed-off-by: Ashay Jaiswal <ashayj@codeaurora.org>