Commit Graph

611034 Commits

Author SHA1 Message Date
Eddie Cai
29242abe21 arm64: dts: rockchip: add rock960 board support
rock960 board is the first rockchip SoC based 96board, so we should
support this board in our SDK. grab this dts from below url.

the initial author is Jack Ma <jack@vamrs.com>
https://raw.githubusercontent.com/96rocks/kernel/rock960-4.4-dev/
arch/arm64/boot/dts/rockchip/rock960-model-ab-linux.dts

Change-Id: I823d7a4b129716c1df4d0a6795118abfaf7120f0
Signed-offf-by: Jack Ma <jack@vamrs.com>
Signed-off-by: Eddie Cai <eddie.cai.linux@gmail.com>
2018-08-15 17:31:13 +08:00
Wyon Bi
5b4205b1cb mfd: fusb302: fix pin assignment selection algorithm
This algorithm defaults to choosing higher pin config over
lower ones in order to prefer multi-function if desired.

NAME | SIGNALING | OUTPUT TYPE | MULTI-FUNCTION | PIN CONFIG
-------------------------------------------------------------
A    |  USB G2   |  ?          | no             | 00_0001
B    |  USB G2   |  ?          | yes            | 00_0010
C    |  DP       |  CONVERTED  | no             | 00_0100
D    |  PD       |  CONVERTED  | yes            | 00_1000
E    |  DP       |  DP         | no             | 01_0000
F    |  PD       |  DP         | yes            | 10_0000

if UFP has NOT asserted multi-function preferred code masks away
B/D/F leaving only A/C/E. For single-output dongles that should
leave only one possible pin config depending on whether its a
converter DP->(VGA|HDMI) or DP output. If UFP is a USB-C receptacle
it may assert C/D/E/F. The DFP USB-C receptacle must always choose
C/D in those cases.

Change-Id: I5594d39a302f27e2d72259f6a18308488d4fa47c
Signed-off-by: Wyon Bi <bivvy.bi@rock-chips.com>
2018-08-15 17:28:40 +08:00
huang lin
da29ad0019 BACKPORT: FROMLIST: drm/rockchip: support dp training outside dp firmware
DP firmware uses fixed phy config values to do training, but some
boards need to adjust these values to fit for their unique hardware
design. So get phy config values from dts and use software link training
instead of relying on firmware, if software training fail, keep firmware
training as a fallback if sw training fails.

Signed-off-by: Chris Zhong <zyw@rock-chips.com>
Signed-off-by: Lin Huang <hl@rock-chips.com>
(am from https://patchwork.kernel.org/patch/10420469/)

Conflicts:
   drivers/gpu/drm/rockchip/cdn-dp-reg.h
[Context - non-upstream HDCP stuff]

BUG=b:72006974
TEST=DP can display on Dru

Signed-off-by: Brian Norris <briannorris@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/985573
Tested-by: Lin Huang <hl@rock-chips.com>
Reviewed-by: Sean Paul <seanpaul@google.com>

Change-Id: I402c5fd2c83979cee67856e66311d2b1b9c6f774
Signed-off-by: Wyon Bi <bivvy.bi@rock-chips.com>
2018-08-15 17:28:40 +08:00
huang lin
eedd1893c9 BACKPORT: FROMLIST: phy: rockchip-typec: support variable phy config value
the phy config values used to fix in dp firmware, but some boards
need change these values to do training and get the better eye diagram
result. So support that in phy driver.

Signed-off-by: Chris Zhong <zyw@rock-chips.com>
Signed-off-by: Lin Huang <hl@rock-chips.com>
(am from https://patchwork.kernel.org/patch/10420473/)

Conflicts:
	drivers/phy/phy-rockchip-typec.c
[phy-rockchip-typec.c is different path in upstream code]

BUG=b:72006974
TEST=DP can display on Dru

Signed-off-by: Brian Norris <briannorris@chromium.org>
Signed-off-by: Lin Huang <hl@rock-chips.com>
Signed-off-by: Brian Norris <briannorris@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/1032713

Change-Id: I8a63307ad5cb690d819779662d70ae1c232842a5
Signed-off-by: Wyon Bi <bivvy.bi@rock-chips.com>
2018-08-15 17:28:40 +08:00
Lin Huang
707ec089ca BACKPORT: FROMLIST: soc: rockchip: split rockchip_typec_phy struct to separate header
we may use rockchip_phy_typec struct in other driver, so split
it to separate header.

Signed-off-by: Lin Huang <hl@rock-chips.com>
(am from https://patchwork.kernel.org/patch/10420467/)

Conflicts:
	drivers/phy/phy-rockchip-typec.c
[phy-rockchip-typec.c is different path in upstream code]

BUG=b:72006974
TEST=DP display on Dru

Signed-off-by: Lin Huang <hl@rock-chips.com>
Signed-off-by: Brian Norris <briannorris@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/1069958

Change-Id: I709331d1577923be662660eb606f92b743903ba7
Signed-off-by: Wyon Bi <bivvy.bi@rock-chips.com>
2018-08-15 17:28:40 +08:00
Lin Huang
b50719b859 FROMLIST: Documentation: dt-bindings: phy: add phy_config for Rockchip USB Type-C PHY
If want to do training outside DP Firmware, need phy voltage swing
and pre_emphasis value.

Signed-off-by: Lin Huang <hl@rock-chips.com>
Reviewed-by: Rob Herring <robh@kernel.org>
(am from https://patchwork.kernel.org/patch/10420463/)

BUG=b:72006974
TEST=DP display on Dru

Signed-off-by: Lin Huang <hl@rock-chips.com>
Reviewed-on: https://chromium-review.googlesource.com/1069957
Commit-Ready: Brian Norris <briannorris@chromium.org>
Reviewed-by: Sean Paul <seanpaul@google.com>

Change-Id: Ib6fd1622c18e8f3371c2e859f448591f3ada7c6a
Signed-off-by: Wyon Bi <bivvy.bi@rock-chips.com>
2018-08-15 17:28:40 +08:00
Chris Zhong
afdd986c45 BACKPORT: FROMLIST: drm/rockchip: add transfer function for cdn-dp
We may support training outside firmware, so we need support
dpcd read/write to get the message or do some setting with
display.

Signed-off-by: Chris Zhong <zyw@rock-chips.com>
Signed-off-by: Lin Huang <hl@rock-chips.com>
Reviewed-by: Sean Paul <seanpaul@chromium.org>
Reviewed-by: Enric Balletbo <enric.balletbo@collabora.com>
(am from https://patchwork.kernel.org/patch/10420461/)

Conflicts:
   drivers/gpu/drm/rockchip/cdn-dp-core.c
   drivers/gpu/drm/rockchip/cdn-dp-reg.h
[context - HDCP stuff that's not upstream]

BUG=b:72006974
TEST=DP on Dru

Signed-off-by: Brian Norris <briannorris@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/985572
Tested-by: Lin Huang <hl@rock-chips.com>
Reviewed-by: Sean Paul <seanpaul@google.com>

Change-Id: If89911e6205546df1a5ae8997ea214d5d2a60af6
Signed-off-by: Wyon Bi <bivvy.bi@rock-chips.com>
2018-08-15 17:28:40 +08:00
Sean Paul
a2e187394d BACKPORT: drm: Add some HDCP related #defines
In preparation for implementing HDCP in i915, add some HDCP related
register offsets and defines. The dpcd register offsets will go in
drm_dp_helper.h whereas the ddc offsets along with generic HDCP stuff
will get stuffed in drm_hdcp.h, which is new.

Changes in v2:
- drm_hdcp.h gets MIT license (Daniel)
Changes in v3:
- None
Changes in v4:
- None
Changes in v5:
- None
Changes in v6:
- SPDX license

Cc: Daniel Vetter <daniel.vetter@intel.com>
Reviewed-by: Ramalingam C <ramalingm.c@intel.com>
Signed-off-by: Sean Paul <seanpaul@chromium.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20180108195545.218615-5-seanpaul@chromium.org

(cherry picked from commit 495eb7f877)
Signed-off-by: Sean Paul <seanpaul@chromium.org>
[downstream changes]
- Resolved some CEC define conflicts in dp_helper.h

Reviewed-on: https://chromium-review.googlesource.com/849080
Commit-Ready: Sean Paul <seanpaul@google.com>
Tested-by: Sean Paul <seanpaul@google.com>
Reviewed-by: Kristian H. Kristensen <hoegsberg@chromium.org>

Change-Id: I7e9dfb6f2c20c15bdc5f6ee6c89fdaf0a85ed1ea
Signed-off-by: Wyon Bi <bivvy.bi@rock-chips.com>
2018-08-15 17:28:40 +08:00
Sean Paul
e4c2c77a28 CHROMIUM: drm/rockchip: Refactor cdn-dp hdcp code
This patch transitions our rockchip driver to using the upstream
content_protection_property (located in drm_connector) as opposed to the
downstream version that's in mode_config.

In addition to the new location of the property, this patch also makes
HDCP enablement work via atomic commits in addition to the legacy
setproperty ioctl.

The trickiest part of making this work is ensuring we keep the
connector->state->content_protection value in sync with what the
hardware is doing. We're only allowed to change this value in
atomic_check (which we do for certain transitions), however we have to
be careful when updating it outside of atomic_check, this requires
locks. In order to update the property without races, we need a new property
worker whose job is to acquire the connection and dp locks and update the state.
It's not possible to do this without the dedicated worker since the hdcp event
worker doesn't hold the connection mutex, and can't acquire it since we
synchronously cancel it while holding the connection mutex elsewhere. Sigh.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/864343
Commit-Ready: Sean Paul <seanpaul@google.com>
Tested-by: Sean Paul <seanpaul@google.com>
Reviewed-by: Sean Paul <seanpaul@google.com>

Change-Id: I22d2592096866d2346bc9b48f48e66e845a173f8
Signed-off-by: Wyon Bi <bivvy.bi@rock-chips.com>
2018-08-15 17:28:40 +08:00
Sean Paul
29eec2954c BACKPORT: drm: Add Content Protection property
This patch adds a new optional connector property to allow userspace to enable
protection over the content it is displaying. This will typically be implemented
by the driver using HDCP.

The property is a tri-state with the following values:
- OFF: Self explanatory, no content protection
- DESIRED: Userspace requests that the driver enable protection
- ENABLED: Once the driver has authenticated the link, it sets this value

The driver is responsible for downgrading ENABLED to DESIRED if the link becomes
unprotected. The driver should also maintain the desiredness of protection
across hotplug/dpms/suspend.

If this looks familiar, I posted [1] this 3 years ago. We have been using this
in ChromeOS across exynos, mediatek, and rockchip over that time.

Changes in v2:
 - Pimp kerneldoc for content_protection_property (Daniel)
 - Drop sysfs attribute
Changes in v3:
 - None
Changes in v4:
- Changed kerneldoc to recommend userspace polling (Daniel)
- Changed kerneldoc to briefly describe how to attach the property (Daniel)
Changes in v5:
- checkpatch whitespace noise
- Change DRM_MODE_CONTENT_PROTECTION_OFF to DRM_MODE_CONTENT_PROTECTION_UNDESIRED
Changes in v6:
- None

Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Sean Paul <seanpaul@chromium.org>

[1] https://lists.freedesktop.org/archives/dri-devel/2014-December/073336.html
Link: https://patchwork.freedesktop.org/patch/msgid/20180108195545.218615-4-seanpaul@chromium.org

(cherry picked from commit 24557865c8)
Signed-off-by: Sean Paul <seanpaul@chromium.org>

[downstream changes]
 - Fixed some conflicts in comments
- Remove duplicate definition for drm_get_content_protection_name

Change-Id: I825b4863bea715434cb8f76f99fdf6e3fca74a60
Reviewed-on: https://chromium-review.googlesource.com/849079
Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com>
Tested-by: Sean Paul <seanpaul@google.com>
Reviewed-by: Sean Paul <seanpaul@google.com>
Signed-off-by: Wyon Bi <bivvy.bi@rock-chips.com>
2018-08-15 17:28:40 +08:00
Sean Paul
c1b002bdf2 CHROMIUM: drm/rockchip: Disable HDCP before enabling it
Enabling HDCP on plug/re-plug when already desired was flakey. However,
toggling the property always worked when already plugged in. It seems
like the hardware wants to be explicitly disabled before being enabled.
This patch adds the disable with a short wait before kicking off HDCP.

BUG=b:63816472
TEST=Two cases:
	1)
		- Boot device with dongle unplugged
		- Mark HDCP as desired
		- Plug HDMI + dongle
		- Ensure HDCP is enabled
	2)
		- Plug HDMI + dongle
		- Mark HDCP as desired, wait for it to enable
		- Unplug HDMI from dongle
		- Replug HDMI to dongle
		- Ensure HDCP is enabled

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/687802
Commit-Ready: Sean Paul <seanpaul@google.com>
Tested-by: Sean Paul <seanpaul@google.com>
Reviewed-by: Kristian H. Kristensen <hoegsberg@chromium.org>

Change-Id: I7c1dfd93bad60483d04525b79c6f75b728096ed4
Signed-off-by: Wyon Bi <bivvy.bi@rock-chips.com>
2018-08-15 17:28:40 +08:00
Sean Paul
13a2ddb4ba CHROMIUM: drm/rockchip: Move HDCP_TX_CONFIGURATION bits to #defines
Instead of using an enum to define the values of the HDCP_TX_CONFIGURATION
register, use #defines with descriptive names and explicit values.

BUG=None
TEST=Compiles

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/687801
Commit-Ready: Sean Paul <seanpaul@google.com>
Tested-by: Sean Paul <seanpaul@google.com>
Reviewed-by: Kristian H. Kristensen <hoegsberg@chromium.org>

Change-Id: Id78cb0b1655fb8c1629f5e1c2ef2cc075475bff8
Signed-off-by: Wyon Bi <bivvy.bi@rock-chips.com>
2018-08-15 17:28:40 +08:00
Sean Paul
42398fc353 CHROMIUM: drm/rockchip: Enable/disable HDCP at the correct times
This patch adds new calls for HDCP disable/enable such that HDCP is
properly disabled/restored across hotplugs (both dongle and cable) and
power on/off.

BUG=b:63816472
TEST=Use hdcp test script below:
	attr=/sys/class/drm/card1-DP-1/content_protection
	printf "Testing HDCP...\n"
	while [ 1 ]; do
            printf "\rSetting state to desired...  "
            echo "Desired" > $attr
            sleep $(perl -e 'printf("%.1f\n", rand() * 3)')
            printf "\rSetting state to undesired..."
            echo "Undesired" > $attr
            sleep $(perl -e 'printf("%.1f\n", rand() * 3)')
	done

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/657941
Commit-Ready: Sean Paul <seanpaul@google.com>
Tested-by: Sean Paul <seanpaul@google.com>
Reviewed-by: Kristian H. Kristensen <hoegsberg@chromium.org>

Change-Id: I4bcc7decc43f7b648054d841efbade7315e785fe
Signed-off-by: Wyon Bi <bivvy.bi@rock-chips.com>
2018-08-15 17:28:40 +08:00
Sean Paul
4ab44aa4a1 CHROMIUM: drm/rockchip: Fix hdcp logging to use DRM_DEV_*
The rest of the driver uses DRM_DEV_*, so too should the hdcp functions.
This patch also prints error messages when enable/disable fails, as well
as info messages when hdcp is successfully enabled/disabled.

BUG=b:63816472
TEST=Enable hdcp, log messages are prefixed with drm goo

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/657940
Commit-Ready: Sean Paul <seanpaul@google.com>
Tested-by: Sean Paul <seanpaul@google.com>
Reviewed-by: Kristian H. Kristensen <hoegsberg@chromium.org>

Change-Id: I2503ba4ce6839bb8d9db77ae88446da4888732d5
Signed-off-by: Wyon Bi <bivvy.bi@rock-chips.com>
2018-08-15 17:28:40 +08:00
Sean Paul
f97906f20b FROMLIST: drm/rockchip: Add forward declarations to cdn_dp_device and audio_info
Add forward declarations in cdn-dp-reg.h to cdn_dp_device and audio_info

BUG=None
TEST=None

Signed-off-by: Sean Paul <seanpaul@chromium.org>
(from https://lists.freedesktop.org/archives/dri-devel/2017-September/152108.html)
Reviewed-on: https://chromium-review.googlesource.com/657939
Commit-Ready: Sean Paul <seanpaul@google.com>
Tested-by: Sean Paul <seanpaul@google.com>
Reviewed-by: Douglas Anderson <dianders@chromium.org>
Reviewed-by: Kristian H. Kristensen <hoegsberg@chromium.org>

Change-Id: I8b12f76a5fb441ad5353259b4c74d161b1d4693e
Signed-off-by: Wyon Bi <bivvy.bi@rock-chips.com>
2018-08-15 17:28:40 +08:00
Sean Paul
6c07a5023c CHROMIUM: drm/rockchip: Make hdcp enable/disable less racy
A couple of things to reduce the races during hdcp enable/disable:
- Cancel any active workers currently transition
- Hold lock while disabling hdcp

BUG=b:64438996
TEST=Run the following script, ensure sequencing is correct:

attr=/sys/class/drm/card1-DP-1/content_protection
printf "Testing HDCP...\n"
while [ 1 ]; do
	printf "\rSetting state to desired...  "
	echo "Desired" > $attr
	sleep $(perl -e 'printf("%.1f\n", rand() * 3)')
	printf "\rSetting state to undesired..."
	echo "Undesired" > $attr
	sleep $(perl -e 'printf("%.1f\n", rand() * 3)')
done

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/657938
Commit-Ready: Sean Paul <seanpaul@google.com>
Tested-by: Sean Paul <seanpaul@google.com>
Reviewed-by: Kristian H. Kristensen <hoegsberg@chromium.org>

Change-Id: I535b23ffb22eba251a595dcdc4c204de80765414
Signed-off-by: Wyon Bi <bivvy.bi@rock-chips.com>
2018-08-15 17:28:40 +08:00
Sean Paul
b26e4d8db2 CHROMIUM: drm/rockchip: Improve cdn hdcp error messages
Add a message for start hdcp transfer failure (instead of using the same
one below the loop), and print the errors in hex as opposed to decimal.

BUG=b:63816472
TEST=Try enabling HDCP on kevin with busted firmware, get the correct msg

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/657937
Commit-Ready: Sean Paul <seanpaul@google.com>
Tested-by: Sean Paul <seanpaul@google.com>
Reviewed-by: Douglas Anderson <dianders@chromium.org>
Reviewed-by: Kristian H. Kristensen <hoegsberg@chromium.org>

Change-Id: I746574e26b200d746a7a228c868dd22e1b82cae8
Signed-off-by: Wyon Bi <bivvy.bi@rock-chips.com>
2018-08-15 17:28:40 +08:00
Sean Paul
effb787b85 CHROMIUM: drm/rockchip: Enforce cdn_dp_hdcp_key_1x size assumption
struct cdn_dp_hdcp_key_1x is assumed to be evenly divisible by 6, given
its usage and reserved member. Unfortunately, this is neither
documented, nor enforced anywhere. This patch fixes that.

BUG=b:63816472
TEST=Builds

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/657576
Commit-Ready: Sean Paul <seanpaul@google.com>
Tested-by: Sean Paul <seanpaul@google.com>
Reviewed-by: Douglas Anderson <dianders@chromium.org>
Reviewed-by: Kristian H. Kristensen <hoegsberg@chromium.org>

Change-Id: I3f683cb9dd48d6e6d104d2e9a1a94c03e34d25dd
Signed-off-by: Wyon Bi <bivvy.bi@rock-chips.com>
2018-08-15 17:28:40 +08:00
Sean Paul
5d712529cc CHROMIUM: drm/rockchip: Bump HDCP authorization timeout to 3s
500ms is insufficient for my test monitor, bump it up to 3s.

BUG=b:64437717
TEST=HDCP works on ASUS VE258Q

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/657575
Commit-Ready: Sean Paul <seanpaul@google.com>
Tested-by: Sean Paul <seanpaul@google.com>
Reviewed-by: Douglas Anderson <dianders@chromium.org>
Reviewed-by: Kristian H. Kristensen <hoegsberg@chromium.org>

Change-Id: Ia2d30046532fb80d224b5dc07494b3c69b7ffe5f
Signed-off-by: Wyon Bi <bivvy.bi@rock-chips.com>
2018-08-15 17:28:40 +08:00
Sean Paul
54237fefb1 CHROMIUM: drm/sysfs: Make content_protection R/W
This makes debugging and stress testing much easier.

BUG=b:63816472
TEST=echo "{Un|D}esired" > /sys/class/drm/card1-DP-1/content_protection

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/657574
Commit-Ready: Sean Paul <seanpaul@google.com>
Tested-by: Sean Paul <seanpaul@google.com>
Reviewed-by: Kristian H. Kristensen <hoegsberg@chromium.org>

Change-Id: I5dc2d836ded2c7f95f9ee4c16d9ac7242707e9f2
Signed-off-by: Wyon Bi <bivvy.bi@rock-chips.com>
2018-08-15 17:28:40 +08:00
Wyon Bi
1719a7cd5f drm/crtc: Export drm_mode_connector_set_obj_prop
Change-Id: Ie09b8798d7d2951c5e794c7054e85a5c40bc85d7
Signed-off-by: Wyon Bi <bivvy.bi@rock-chips.com>
2018-08-15 17:28:40 +08:00
Sean Paul
2339295063 CHROMIUM: drm/sysfs: Properly acquire modeset lock when showing content_protection
The modeset locks were not acquired, resulting in a kernel WARNING when
the attribute's show hook was called.

BUG=b:63816472
TEST=`cat /sys/class/drm/card1-DP-1/content_protection` and check logs

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/657573
Commit-Ready: Sean Paul <seanpaul@google.com>
Tested-by: Sean Paul <seanpaul@google.com>
Reviewed-by: Douglas Anderson <dianders@chromium.org>
Reviewed-by: Kristian H. Kristensen <hoegsberg@chromium.org>

Change-Id: Ie401acf9f2780e01fd5735da8c922e4bd473eb6f
Signed-off-by: Wyon Bi <bivvy.bi@rock-chips.com>
2018-08-15 17:28:40 +08:00
Sean Paul
e00541fcb2 CHROMIUM: drm: Update Content Protection ABI
The Content Protection properties in 4.4 used v2 of the upstream
patches, but chrome (and upstream) prefer v1. This patch removes the ksv
property and reinstates the ENABLED enum value to the content protection
property.

BUG=b:63816472
TEST=Watch protected content on external display, ensure CP is
	enabled/disabled properly by chrome

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/687800
Commit-Ready: Sean Paul <seanpaul@google.com>
Tested-by: Sean Paul <seanpaul@google.com>
Reviewed-by: Kristian H. Kristensen <hoegsberg@chromium.org>

Change-Id: I38cecce2d15b4d4b1ce95ef0e572a08f1bc97131
Signed-off-by: Wyon Bi <bivvy.bi@rock-chips.com>
2018-08-15 17:28:40 +08:00
Brian Norris
f65bdbbfcc CHROMIUM: drm/rockchip: cdn-dp: resolve sysfs warning
I've seen this:

  sysfs: cannot create duplicate filename '/devices/platform/fec00000.dp/hdcp_key'

Presumably because component_add() can -EPROBE_DEFER.

At any rate, we shouldn't leave the sysfs file hanging around. Clean it
up on probe failure, and on removal.

BUG=b:36566733
TEST=boot

Signed-off-by: Brian Norris <briannorris@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/458836
Reviewed-by: Guenter Roeck <groeck@chromium.org>

Change-Id: Ic10f45c0d67cfcc41ab89af108a78f641f424872
Signed-off-by: Wyon Bi <bivvy.bi@rock-chips.com>
2018-08-15 17:28:40 +08:00
Ziyuan Xu
6f4dea14e1 CHROMIUM: drm/rockchip: cdn-dp: add HDCP 1.4 support
Implement HDCP 1.4 authentication function for DP driver.

First, userspace write HDCP cipher to driver via "hdcp_key" sysfs node,
it contains ksv and device private key. DP connector object has a
"Content Proection" property which it's 'Undesired' default. Userspace
set it to 'Desired' as a HDCP authentication request, and it will be set
to 'Enabled' once HDCP authenticated.

BUG=chrome-os-partner:56883
TEST=WITH HDCP KEY SITUATION:
	1.flash encrypt key to vpd area, and reboot chromebook.
	$ vpd -O; vpd -s hdcp_key_v1_4=something...;dump_vpd_log
	--force;
	2.write key to DP driver.
	$ grep hdcp_key /var/cache/vpd/full-v2.txt | cut -s -d \" -f 4 |
	tr -d "\n" > /sys/devices/platform/fec00000.dp/hdcp_key
	3.set "Content Protection" property to 'Desired'
	$ proptest 36 connector 23 1
	4.if the HDCP 1.4 authenticated, the 'Content Proection' will be
	changed to 'Enabled'

Signed-off-by: Ziyuan Xu <xzy.xu@rock-chips.com>
Reviewed-on: https://chromium-review.googlesource.com/403975
Reviewed-by: Sean Paul <seanpaul@chromium.org>

Change-Id: I58f11535dd68d9517a3c7b0b9a61ed9fa6d9a1c0
Signed-off-by: Wyon Bi <bivvy.bi@rock-chips.com>
2018-08-15 17:28:40 +08:00
Yakir Yang
f302e1e4fd CHROMIUM: drm: Add "Enabled" value back to "Content Protection" property
Although this property value have been deleted from the latest
FROMLIST version (CL:266854), but the chromeos would want driver
to report the property to "Enabled" when hardware HDCP have been
enabled successfully, so let's add this back.

BUG=chrome-os-partner:56883
TEST=None

Signed-off-by: Yakir Yang <ykk@rock-chips.com>
Signed-off-by: Ziyuan Xu <xzy.xu@rock-chips.com>
Reviewed-on: https://chromium-review.googlesource.com/403974
Reviewed-by: Sean Paul <seanpaul@google.com>

Change-Id: Icc52d4a83ac434e898be1190cf934ed8333e78bf
Signed-off-by: Wyon Bi <bivvy.bi@rock-chips.com>
2018-08-15 17:28:40 +08:00
Sean Paul
244b82e20e FROMLIST: drm: Add Content Protection properties to drm
Add new standard connector properties to track whether content protection
(ex: hdcp) is desired by userspace. There are two properties involved,
"Content Protection" and "Content Protection KSV".

The "Content Protection" property allows userspace to request protection
on a connector. Set "Desired" to enable, "Undesired" to disable.

The "Content Protection KSV" property reflects the current state of
protection. If the KSV is 0, the connection is not protected. Once the
driver has enabled protection, it will update the the value with the KSV
(or similarly unique identifier, if not using HDCP) of the first-hop
device (sink or repeater).

(am from https://patchwork.kernel.org/patch/5439871/)

BUG=chrome-os-partner:56883
TEST=Tested on kevin, ensured the sysfs file showed up, and
     reflected the correct

Signed-off-by: Sean Paul <seanpaul@chromium.org>
Signed-off-by: Yakir Yang <ykk@rock-chips.com>
Signed-off-by: Ziyuan Xu <xzy.xu@rock-chips.com>
Reviewed-on: https://chromium-review.googlesource.com/403973
Reviewed-by: Sean Paul <seanpaul@google.com>

Change-Id: I6bef13729f77de6e37d2da5e12fc69f810a2e286
Signed-off-by: Wyon Bi <bivvy.bi@rock-chips.com>
2018-08-15 17:28:40 +08:00
Ziyuan Xu
6b1bb8ae1e CHROMIUM: drm/rockchip: cdn-dp: add hdcp_key node
Provide the "hdcp_key" debug node in sysfs, so that userspace can pass
the legitimate HDCP key to driver.

For ATF security, we should transmit HDCP key data via smc argument one
by one.

Moreover, driver request one page SRAM space as share memory for HDCP
key transmission.

BUG=chrome-os-partner:56883
TEST=WITH HDCP KEY SITUATION:
	1.flash encrypt key to vpd area, and reboot chromebook.
	$ vpd -O; vpd -s hdcp_key_v1_4=something...; dump_vpd_log
	--force
	2.write key to DP driver.
	$ grep hdcp_key /var/cache/vpd/full-v2.txt | cut -s -d \" -f 4 |
	tr -d "\n" > /sys/devices/platform/fec00000.dp/hdcp_key

Signed-off-by: Ziyuan Xu <xzy.xu@rock-chips.com>
Reviewed-on: https://chromium-review.googlesource.com/403972
Reviewed-by: Julius Werner <jwerner@chromium.org>
Reviewed-by: Sean Paul <seanpaul@google.com>

Change-Id: I0b97dcf938623685b6938d8a40285fac3b1d5045
Signed-off-by: Wyon Bi <bivvy.bi@rock-chips.com>
2018-08-15 17:28:40 +08:00
Xiaotan Luo
3518fdd3aa arm64: dts: rk3308-evb-v11: add tas5731 sound
Change-Id: Iaae192f89119875885e2bf649365ad8bac0972e8
Signed-off-by: Xiaotan Luo <lxt@rock-chips.com>
2018-08-15 16:57:20 +08:00
Xiaotan Luo
398d1956b7 arm64: rk3308_linux_defconfig: add tas5731
Change-Id: I260673444024ad3d7f250bcb4be0e88106594ba5
Signed-off-by: Xiaotan Luo <lxt@rock-chips.com>
2018-08-15 16:57:20 +08:00
Xiaotan Luo
7cceef1e95 dt-bindings: add for tas5731 amplifiers
Change-Id: I777d3fd99602f4733d343b1b8a582dc44c5eaf77
Signed-off-by: Xiaotan Luo <lxt@rock-chips.com>
2018-08-15 16:57:20 +08:00
Xiaotan Luo
f41a7c121d ASoC: codecs: add tas5731 amplifiers
Change-Id: I3afb278de50bd3087ef230bb72f5ed46bdfd0ec4
Signed-off-by: Xiaotan Luo <lxt@rock-chips.com>
2018-08-15 16:57:20 +08:00
Finley Xiao
f9bb1e6408 video: rockchip: vpu: Implement get_dev_status()
This patch fixes NULL pointer when show load.

Fixes: 5bc582df48 ("video: rockchip: vpu: Add devfreq feature")
Change-Id: Ib0471cc3cd3b402c4207245c7b01283740bb2392
Signed-off-by: Finley Xiao <finley.xiao@rock-chips.com>
2018-08-15 14:16:46 +08:00
Daniel Vetter
c35d130d6c UPSTREAM: drm/sysfs: Nuke TV/DVI property files
This goes all the way back to the original KMS commit aeons ago

commit f453ba0460
Author: Dave Airlie <airlied@redhat.com>
Date:   Fri Nov 7 14:05:41 2008 -0800

    DRM: add mode setting support

But it seems to be completely unused. Only i915 and nouveau even
register these properties, and the corresponding DDX don't even look
at them. Also the sysfs files are read-only, so not useful to
configure anything.

I suspect that this was added with the goal to have read-only access
to all properties in sysfs, but we never followed through on that.
Also, that should be done in a more generic fashion.

Since it would be real work to fix up the locking (with atomic we're
now chasing pointers when reading properties) and it seems unused lets
just nuke this all. It's easier. Of course we'll keep the properties
themselves, those are still exposed through the KMS ioctls.

Change-Id: I35a54c6850127287de0c3f82cafb084900d76b97
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1459331120-27864-5-git-send-email-daniel.vetter@ffwll.ch
Signed-off-by: Wyon Bi <bivvy.bi@rock-chips.com>
(cherry picked from commit aa2e2996b1)
2018-08-15 12:04:00 +08:00
Gustavo A. R. Silva
564447706c UPSTREAM: drm/rockchip: fix NULL check on devm_kzalloc() return value
The right variable to check here is port, not dp.

This issue was detected using Coccinelle and the following semantic patch:

@@
expression x;
identifier fld;
@@

* x = devm_kzalloc(...);
  ... when != x == NULL
  x->fld

Change-Id: Iba535170f6ba6e8b6e3f53e898a79957e753229c
Signed-off-by: Gustavo A. R. Silva <garsilva@embeddedor.com>
Acked-by: Mark Yao <mark.yao@rock-chips.com>
Signed-off-by: Sean Paul <seanpaul@chromium.org>
Link: http://patchwork.freedesktop.org/patch/msgid/20170706215833.GA25411@embeddedgus
Signed-off-by: Wyon Bi <bivvy.bi@rock-chips.com>
(cherry picked from commit 6f6e0b217a)
2018-08-15 11:57:56 +08:00
Jeffy Chen
93efecf2b6 UPSTREAM: drm/rockchip: cdn-dp: Don't try to release firmware when not loaded
Change-Id: I4b4c857f31c7dfa5e1c2ba5c9d4d345bb3e6331c
Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
Signed-off-by: Sean Paul <seanpaul@chromium.org>
Link: http://patchwork.freedesktop.org/patch/msgid/1491481885-13775-6-git-send-email-jeffy.chen@rock-chips.com
(cherry picked from commit 54bd16780e)
2018-08-15 11:54:16 +08:00
Chris Zhong
cdf4ce932e BACKPORT: drm/rockchip: cdn-dp: don't configure hardware in mode_set
With atomic modesetting the hardware will be powered off when the
mode_set function is called.  We should configure the hardware in the
enable function.

backport: merge output_mode change from Mark yao efd11cc8fa
("drm/rockchip: Correct vop out_mode configure")

Change-Id: Ic68911e7faa24b2e482448346585e3f7c19da1a6
Signed-off-by: Chris Zhong <zyw@rock-chips.com>
Signed-off-by: Wyon Bi <bivvy.bi@rock-chips.com>
(cherry picked from commit ef1844b7ed)
2018-08-15 11:52:52 +08:00
Dingqiang Lin
b20b2fd589 drivers: rkflash: support setting sfc clk by dts
1.Max sfc sclk frequency 150MHz, io clk 75MHz;
2,Set sclk depends on dts setting.

Change-Id: I52ac3bd1359cef2198806f88887fc8eb0a383eba
Signed-off-by: Dingqiang Lin <jon.lin@rock-chips.com>
2018-08-15 11:42:22 +08:00
Dingqiang Lin
6853e9bdab arm64: dts: rockchip: rk3308: set sfc clock frequency by assigned-clocks
Change-Id: I2165b06002ca837db19ccb60b5b9d704c6f1f996
Signed-off-by: Dingqiang Lin <jon.lin@rock-chips.com>
2018-08-15 11:41:16 +08:00
Dingqiang Lin
66d47a0f4a dt-bindings: rkflash: add assigned-clock-frequency property for sfc
Change-Id: I5a9f1e0c850b57459b8f3c03668fb97f1ed8a18f
Signed-off-by: Dingqiang Lin <jon.lin@rock-chips.com>
2018-08-15 11:39:47 +08:00
Chris Zhong
f6fd6ad123 UPSTREAM: drm/rockchip: cdn-dp: add more log for video config
In order to analyze some video config failed, add some useful
printouts.

Change-Id: Icd16bb1d065b33163b6f0ce0d99c2a63d77cc915
Signed-off-by: Chris Zhong <zyw@rock-chips.com>
Signed-off-by: Sean Paul <seanpaul@chromium.org>
Link: http://patchwork.freedesktop.org/patch/msgid/1488940077-22297-4-git-send-email-zyw@rock-chips.com
(cherry picked from commit 9346ab7d72)
2018-08-15 11:02:31 +08:00
Chris Zhong
e65e389ee1 UPSTREAM: drm/rockchip: cdn-dp: Correct PHY register address
Correct some DP register address for PHY Configuration according to
latest datasheet.

Change-Id: If0f0014930d70a1badadea732148effb5145fbdb
Signed-off-by: Chris Zhong <zyw@rock-chips.com>
Signed-off-by: Sean Paul <seanpaul@chromium.org>
Link: http://patchwork.freedesktop.org/patch/msgid/1488940077-22297-3-git-send-email-zyw@rock-chips.com
(cherry picked from commit 05c00c2f19)
2018-08-15 10:59:06 +08:00
Chris Zhong
8fbf4b8eba UPSTREAM: drm/rockchip: cdn-dp: return error code when clk_get_rate failed
The clk_get_rate return 0 if something goes wrong, so it can never be
less then zero, the ret should be set a error code, otherwise the
cdn_dp_clk_enable will return 0 when it failed at clk_get_rate.
In addition, clk_get_rate() returns an "unsigned long", so use
"unsigned long" instead of "u32" is better.

Change-Id: I0da9a07b5b9fda5f1586e8179013739d47d7ea35
Signed-off-by: Chris Zhong <zyw@rock-chips.com>
Signed-off-by: Sean Paul <seanpaul@chromium.org>
Link: http://patchwork.freedesktop.org/patch/msgid/1488940077-22297-2-git-send-email-zyw@rock-chips.com
(cherry picked from commit a68b5bb670)
2018-08-15 10:50:43 +08:00
Christophe JAILLET
36381d5c7b UPSTREAM: drm/rockchip: cdn-dp: Fix error handling
It is likely that both 'clk_disable_unprepare()' should be called if
'pm_runtime_get_sync()' fails.

Add a new label for that, because 'err_set_rate' is not meaningful in this
case.

Add a missing call to 'pm_runtime_put()'.

Fixes: 1a0f7ed3ab ("drm/rockchip: cdn-dp: add cdn DP support for rk3399")

Change-Id: I30bae900a98fe7159728043aa9321d7d5f9573ec
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Acked-by: Mark Yao <mark.yao@rock-chips.com>
Signed-off-by: Sean Paul <seanpaul@chromium.org>
Link: http://patchwork.freedesktop.org/patch/msgid/20170220070815.23096-1-christophe.jaillet@wanadoo.fr
Signed-off-by: Tao Huang <huangtao@rock-chips.com>
(cherry picked from commit efe0220fc2)
2018-08-15 10:45:13 +08:00
Chris Zhong
f695580c2d UPSTREAM: drm/rockchip: cdn-dp: retry to check sink count
Sometimes the Dock is disconnected, but cdn_dp_encoder_disable is not
triggered by DRM. For example, unplug the Dock in console mode, and
re-plug it again, the cdn_dp_event_work will try to get the sink count
of Dock, since the DP is still active. But the Dock has been powered
down, it need re-power on, and wait for a while until it is ready to
DPCD communication.

Change-Id: I59c17a7ce41d5697b33195894eaf4bb49ac85171
Signed-off-by: Chris Zhong <zyw@rock-chips.com>
(cherry picked from commit 13e0e20694)
2018-08-15 10:28:28 +08:00
Jeffy Chen
cec98b9b4a UPSTREAM: drm/rockchip: cdn-dp: Move mutex_init to probe
We're trying to lock mutex when cdn-dp shutdown, so we need to make
sure the mutex is inited in cdn-dp's probe.

Change-Id: Id414cb9441dbaa245ef9899c7972b080fba44d6b
Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
Reviewed-by: Guenter Roeck <groeck@chromium.org>
Reviewed-by: Chris Zhong <zyw@rock-chips.com>
Signed-off-by: Chris Zhong <zyw@rock-chips.com>
(cherry picked from commit be0270e4d1)
2018-08-15 10:23:44 +08:00
Shixiang Zheng
5e10055ea4 video/rockchip: rga2: Increase timeouts number and add error interrupt soft reset
Change-Id: I6436e73901a1b5d885be3d55ef51461564f94f29
Signed-off-by: Shixiang Zheng <shixiang.zheng@rock-chips.com>
2018-08-15 09:57:32 +08:00
Dingqiang Lin
a5cf9c0db5 drivers: rkflash: support kernel IDBlock update
1.Write IDBlock to corresponding PBA
2.Update gc and sys code

Change-Id: I486325ab430df1135d6449d654a8143d5ef9788e
Signed-off-by: Dingqiang Lin <jon.lin@rock-chips.com>
2018-08-14 14:38:42 +08:00
Zhangbin Tong
6bced2db6d ARM: dts: add new dts file for rk3128h box avb
Change-Id: If2cb3260823b67398451fd1221f165262d104187
Signed-off-by: Zhangbin Tong <zebulun.tong@rock-chips.com>
2018-08-14 14:20:29 +08:00
Zhangbin Tong
bcecf8ede3 arm: dts: rk3128h-box: separate android fireware
Split DT source files to separate out android fireware specific DT
bindings.

Change-Id: I106afeff0485fa8346986693fb227e2c6e4913c2
Signed-off-by: Zhangbin Tong <zebulun.tong@rock-chips.com>
2018-08-14 14:20:19 +08:00