From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965329AbcHBMtq (ORCPT ); Tue, 2 Aug 2016 08:49:46 -0400 Received: from mail-pa0-f67.google.com ([209.85.220.67]:35077 "EHLO mail-pa0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S935124AbcHBMph (ORCPT ); Tue, 2 Aug 2016 08:45:37 -0400 From: Chris Zhong To: dianders@chromium.org, tfiga@chromium.org, heiko@sntech.de, yzq@rock-chips.com, groeck@chromium.org, myungjoo.ham@samsung.com, cw00.choi@samsung.com, wulf@rock-chips.com, marcheu@chromium.org Cc: linux-rockchip@lists.infradead.org, Chris Zhong , Guenter Roeck , Kumar Gala , dri-devel@lists.freedesktop.org, Ian Campbell , Rob Herring , David Airlie , Catalin Marinas , Kever Yang , Pawel Moll , Will Deacon , devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Mark Yao , Kishon Vijay Abraham I , Mark Rutland Subject: [v9 PATCH 0/6] Rockchip Type-C and DisplayPort driver Date: Tue, 2 Aug 2016 20:45:07 +0800 Message-Id: <1470141913-1082-1-git-send-email-zyw@rock-chips.com> X-Mailer: git-send-email 2.6.3 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi all This series patch is for rockchip Type-C phy and DisplayPort controller driver. The USB Type-C PHY is designed to support the USB3 and DP applications. The PHY basically has two main components: USB3 and DisplyPort. USB3 operates in SuperSpeed mode and the DP can operate at RBR, HBR and HBR2 data rates. The Type-C cable orientation detection and Power Delivery (PD) is accomplished using a PD PHY or a exernal PD chip. The DP controller is compliant with DisplayPort Specification, Version 1.3, This IP is compatible with the rockchip type-c PHY IP. There is a uCPU in DP controller, it need a firmware to work, please put the firmware file[0] to /lib/firmware/rockchip/dptx.bin. The uCPU in charge of aux communication and link training, the host use mailbox to communicate with the ucpu. The DP contoller has register a notification with extcon API, to get the alt mode from PD, the PD driver need call the devm_extcon_dev_allocate to create a extcon device and use extcon_set_state to notify DP controller. And call extcon_set_cable_property to set orientation. About the DP audio, cdn-dp registered 2 DAIs: 0 is I2S, 1 is SPDIF. We can reference them in simple-card. This series is based on Mark Yao's branch[1] and Chanwoo Choi's extcon-next branch[2]. I test this patches on the rk3399-evb board, with a fusb302 driver, this branch has no rk3399.dtsi, so the patch about dts is not included in this series. >>From V9, the Type-C PHY is split into two PHYs: DP and USB3. The PHY will be init, no matter which PHY be power_on. The DP module will enter A2 mode (standby mode) after phy_init, if DP PHY is powered on, the DP module will enter to A0 mode(running mode). Then if DP PHY is powered off, DP module will back to A2 mode. If everything is un-plugged, phy will be deinit. [0] https://patchwork.kernel.org/patch/9249693/ [1] https://github.com/markyzq/kernel-drm-rockchip/tree/drm-rockchip-next-2016-05-23 [2] https://git.kernel.org/cgit/linux/kernel/git/chanwoo/extcon.git/log/?h=extcon-test - extcon: Add the extcon_type to gather each connector into five category - extcon: Add the support for extcon property according to extcon type - extcon: Add the support for the capability of each property - extcon: Rename the extcon_set/get_state() to maintain the function naming pattern - extcon: Add the synchronization extcon APIs to support the notification - extcon: Add EXTCON_DISP_DP and the property for USB Type-C Changes in v9: - change #phy-cells to 1 - split the Type-C PHY into two PHYs: USB3 and DP - change #phy-cells to 1 - modify the reference phy = <&tcphy0 0>, <&tcphy1 0>; - do not need reset the phy before power_on - add a orientation information for set_capability - retry to read dpcd in 10 seconds Changes in v8: - set the default cable id to EXTCON_USB_HOST - optimization Error log - optimization the err log Changes in v7: - support new API of extcon - support firmware standby when no dptx connection - optimization the calculation of tu size and valid symbol Changes in v6: - add assigned-clocks and assigned-clock-rates - delete the support of PIN_ASSIGN_A/B - set the default mode to MODE_DFP_USB - disable DP PLL at USB3 only mode - add assigned-clocks and assigned-clock-rates - add power-domains - add a port struct - select SND_SOC_HDMI_CODEC - force reset the phy when hpd detected Changes in v5: - support get property from extcon - remove PIN ASSIGN A/B support - alphabetical order - do not use long, use u32 or u64 - return MODE_CLOCK_HIGH when requested > actual - Optimized Coding Style - add a formula to get better tu size and symbol value. - modify according to Sean Paul's comments - fixed the fw_wait always 0 Changes in v4: - add a #phy-cells node - select EXTCON - use phy framework to control the USB3 and DP function - rename PIN_MAP_ to PIN_ASSIGN_ - add a reset node - support 2 phys - use phy framework to control DP phy - support 2 phys Changes in v3: - use compatible: rockchip,rk3399-typec-phy - use dashes instead of underscores. - remove the phy framework(Kishon Vijay Abraham I) - add parentheses around the macro - use a single space between type and name - add spaces after opening and before closing braces. - use u16 for register value - remove type-c phy header file - CodingStyle optimization - use some cable extcon to get type-c port information - add a extcon to notify Display Port - add SoC specific compatible string - remove reg = <1>; - use EXTCON_DISP_DP and EXTCON_DISP_DP_ALT cable to get dp port state. - reset spdif before config it - modify the firmware clk to 100Mhz - retry load firmware if fw file is requested too early Changes in v2: - add some registers description - select RESET_CONTROLLER - alphabetic order - modify some spelling mistakes - make mode cleaner - use bool for enable/disable - check all of the return value - return a better err number - use more readx_poll_timeout() - clk_disable_unprepare(tcphy->clk_ref); - remove unuse functions, rockchip_typec_phy_power_on/off - remove unnecessary typecast from void * - use dts node to distinguish between phys. - Alphabetic order - remove excess error message - use define clk_rate - check all return value - remove dev_set_name(dp->dev, "cdn-dp"); - use schedule_delayed_work - remove never-called functions - remove some unnecessary () Changes in v1: - add extcon node description - move the registers in phy driver - remove the suffix of reset - update the licence note - init core clock to 50MHz - use extcon API - remove unused global - add some comments for magic num - change usleep_range(1000, 2000) tousleep_range(1000, 1050) - remove __func__ from dev_err - return err number when get clk failed - remove ADDR_ADJ define - use devm_clk_get(&pdev->dev, "tcpdcore") - add extcon node description - add #sound-dai-cells description - use extcon API - use hdmi-codec for the DP Asoc - do not initialize the "ret" - printk a err log when drm_of_encoder_active_endpoint_id - modify the dclk pin_pol to a single line Chris Zhong (6): extcon: Add EXTCON_DISP_DP and the property for USB Type-C Documentation: bindings: add dt doc for Rockchip USB Type-C PHY phy: Add USB Type-C PHY driver for rk3399 arm64: dts: rockchip: add Type-C phy for RK3399 Documentation: bindings: add dt documentation for cdn DP controller drm/rockchip: cdn-dp: add cdn DP support for rk3399 .../bindings/display/rockchip/cdn-dp-rockchip.txt | 74 ++ .../devicetree/bindings/phy/phy-rockchip-typec.txt | 87 ++ arch/arm64/boot/dts/rockchip/rk3399.dtsi | 44 + drivers/extcon/extcon.c | 5 + drivers/gpu/drm/rockchip/Kconfig | 10 + drivers/gpu/drm/rockchip/Makefile | 1 + drivers/gpu/drm/rockchip/cdn-dp-core.c | 860 ++++++++++++++++++ drivers/gpu/drm/rockchip/cdn-dp-core.h | 103 +++ drivers/gpu/drm/rockchip/cdn-dp-reg.c | 959 ++++++++++++++++++++ drivers/gpu/drm/rockchip/cdn-dp-reg.h | 482 ++++++++++ drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 13 +- drivers/gpu/drm/rockchip/rockchip_drm_vop.h | 9 + drivers/gpu/drm/rockchip/rockchip_vop_reg.c | 2 + drivers/phy/Kconfig | 9 + drivers/phy/Makefile | 1 + drivers/phy/phy-rockchip-typec.c | 984 +++++++++++++++++++++ include/linux/extcon.h | 8 +- 17 files changed, 3647 insertions(+), 4 deletions(-) create mode 100644 Documentation/devicetree/bindings/display/rockchip/cdn-dp-rockchip.txt create mode 100644 Documentation/devicetree/bindings/phy/phy-rockchip-typec.txt create mode 100644 drivers/gpu/drm/rockchip/cdn-dp-core.c create mode 100644 drivers/gpu/drm/rockchip/cdn-dp-core.h create mode 100644 drivers/gpu/drm/rockchip/cdn-dp-reg.c create mode 100644 drivers/gpu/drm/rockchip/cdn-dp-reg.h create mode 100644 drivers/phy/phy-rockchip-typec.c -- 2.6.3 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Zhong Subject: [v9 PATCH 0/6] Rockchip Type-C and DisplayPort driver Date: Tue, 2 Aug 2016 20:45:07 +0800 Message-ID: <1470141913-1082-1-git-send-email-zyw@rock-chips.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dianders@chromium.org, tfiga@chromium.org, heiko@sntech.de, yzq@rock-chips.com, groeck@chromium.org, myungjoo.ham@samsung.com, cw00.choi@samsung.com, wulf@rock-chips.com, marcheu@chromium.org Cc: Mark Rutland , devicetree@vger.kernel.org, Pawel Moll , Ian Campbell , Catalin Marinas , Will Deacon , Kever Yang , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, Rob Herring , linux-arm-kernel@lists.infradead.org, Kumar Gala , Chris Zhong , Kishon Vijay Abraham I , Guenter Roeck List-Id: devicetree@vger.kernel.org CkhpIGFsbAoKVGhpcyBzZXJpZXMgcGF0Y2ggaXMgZm9yIHJvY2tjaGlwIFR5cGUtQyBwaHkgYW5k IERpc3BsYXlQb3J0IGNvbnRyb2xsZXIKZHJpdmVyLgoKVGhlIFVTQiBUeXBlLUMgUEhZIGlzIGRl c2lnbmVkIHRvIHN1cHBvcnQgdGhlIFVTQjMgYW5kIERQIGFwcGxpY2F0aW9ucy4KVGhlIFBIWSBi YXNpY2FsbHkgaGFzIHR3byBtYWluIGNvbXBvbmVudHM6IFVTQjMgYW5kIERpc3BseVBvcnQuIFVT QjMKb3BlcmF0ZXMgaW4gU3VwZXJTcGVlZCBtb2RlIGFuZCB0aGUgRFAgY2FuIG9wZXJhdGUgYXQg UkJSLCBIQlIgYW5kIEhCUjIKZGF0YSByYXRlcy4gVGhlIFR5cGUtQyBjYWJsZSBvcmllbnRhdGlv biBkZXRlY3Rpb24gYW5kIFBvd2VyIERlbGl2ZXJ5CihQRCkgaXMgYWNjb21wbGlzaGVkIHVzaW5n IGEgUEQgUEhZIG9yIGEgZXhlcm5hbCBQRCBjaGlwLgoKVGhlIERQIGNvbnRyb2xsZXIgaXMgY29t cGxpYW50IHdpdGggRGlzcGxheVBvcnQgU3BlY2lmaWNhdGlvbiwKVmVyc2lvbiAxLjMsIFRoaXMg SVAgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSByb2NrY2hpcCB0eXBlLWMgUEhZIElQLgpUaGVyZSBp cyBhIHVDUFUgaW4gRFAgY29udHJvbGxlciwgaXQgbmVlZCBhIGZpcm13YXJlIHRvIHdvcmssIHBs ZWFzZQpwdXQgdGhlIGZpcm13YXJlIGZpbGVbMF0gdG8gL2xpYi9maXJtd2FyZS9yb2NrY2hpcC9k cHR4LmJpbi4gVGhlIHVDUFUKaW4gY2hhcmdlIG9mIGF1eCBjb21tdW5pY2F0aW9uIGFuZCBsaW5r IHRyYWluaW5nLCB0aGUgaG9zdCB1c2UgbWFpbGJveAp0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSB1 Y3B1LgoKVGhlIERQIGNvbnRvbGxlciBoYXMgcmVnaXN0ZXIgYSBub3RpZmljYXRpb24gd2l0aCBl eHRjb24gQVBJLCB0byBnZXQgdGhlCmFsdCBtb2RlIGZyb20gUEQsIHRoZSBQRCBkcml2ZXIgbmVl ZCBjYWxsIHRoZSBkZXZtX2V4dGNvbl9kZXZfYWxsb2NhdGUKdG8gY3JlYXRlIGEgZXh0Y29uIGRl dmljZSBhbmQgdXNlIGV4dGNvbl9zZXRfc3RhdGUgdG8gbm90aWZ5IERQCmNvbnRyb2xsZXIuIEFu ZCBjYWxsIGV4dGNvbl9zZXRfY2FibGVfcHJvcGVydHkgdG8gc2V0IG9yaWVudGF0aW9uLgoKQWJv dXQgdGhlIERQIGF1ZGlvLCBjZG4tZHAgcmVnaXN0ZXJlZCAyIERBSXM6IDAgaXMgSTJTLCAxIGlz IFNQRElGLgpXZSBjYW4gcmVmZXJlbmNlIHRoZW0gaW4gc2ltcGxlLWNhcmQuCgpUaGlzIHNlcmll cyBpcyBiYXNlZCBvbiBNYXJrIFlhbydzIGJyYW5jaFsxXSBhbmQgQ2hhbndvbyBDaG9pJ3MKZXh0 Y29uLW5leHQgYnJhbmNoWzJdLgoKSSB0ZXN0IHRoaXMgcGF0Y2hlcyBvbiB0aGUgcmszMzk5LWV2 YiBib2FyZCwgd2l0aCBhIGZ1c2IzMDIgZHJpdmVyLAp0aGlzIGJyYW5jaCBoYXMgbm8gcmszMzk5 LmR0c2ksIHNvIHRoZSBwYXRjaCBhYm91dCBkdHMgaXMgbm90IGluY2x1ZGVkCmluIHRoaXMgc2Vy aWVzLgoKRnJvbSBWOSwgdGhlIFR5cGUtQyBQSFkgaXMgc3BsaXQgaW50byB0d28gUEhZczogRFAg YW5kIFVTQjMuIFRoZSBQSFkKd2lsbCBiZSBpbml0LCBubyBtYXR0ZXIgd2hpY2ggUEhZIGJlIHBv d2VyX29uLiBUaGUgRFAgbW9kdWxlIHdpbGwKZW50ZXIgQTIgbW9kZSAoc3RhbmRieSBtb2RlKSBh ZnRlciBwaHlfaW5pdCwgaWYgRFAgUEhZIGlzIHBvd2VyZWQgb24sCnRoZSBEUCBtb2R1bGUgd2ls bCBlbnRlciB0byBBMCBtb2RlKHJ1bm5pbmcgbW9kZSkuIFRoZW4gaWYgRFAgUEhZIGlzCnBvd2Vy ZWQgb2ZmLCBEUCBtb2R1bGUgd2lsbCBiYWNrIHRvIEEyIG1vZGUuIElmIGV2ZXJ5dGhpbmcgaXMK dW4tcGx1Z2dlZCwgcGh5IHdpbGwgYmUgZGVpbml0LgoKWzBdCmh0dHBzOi8vcGF0Y2h3b3JrLmtl cm5lbC5vcmcvcGF0Y2gvOTI0OTY5My8KWzFdCmh0dHBzOi8vZ2l0aHViLmNvbS9tYXJreXpxL2tl cm5lbC1kcm0tcm9ja2NoaXAvdHJlZS9kcm0tcm9ja2NoaXAtbmV4dC0yMDE2LTA1LTIzClsyXQpo dHRwczovL2dpdC5rZXJuZWwub3JnL2NnaXQvbGludXgva2VybmVsL2dpdC9jaGFud29vL2V4dGNv bi5naXQvbG9nLz9oPWV4dGNvbi10ZXN0Ci0gZXh0Y29uOiBBZGQgdGhlIGV4dGNvbl90eXBlIHRv IGdhdGhlciBlYWNoIGNvbm5lY3RvciBpbnRvIGZpdmUgY2F0ZWdvcnkKLSBleHRjb246IEFkZCB0 aGUgc3VwcG9ydCBmb3IgZXh0Y29uIHByb3BlcnR5IGFjY29yZGluZyB0byBleHRjb24gdHlwZQot IGV4dGNvbjogQWRkIHRoZSBzdXBwb3J0IGZvciB0aGUgY2FwYWJpbGl0eSBvZiBlYWNoIHByb3Bl cnR5Ci0gZXh0Y29uOiBSZW5hbWUgdGhlIGV4dGNvbl9zZXQvZ2V0X3N0YXRlKCkgdG8gbWFpbnRh aW4gdGhlIGZ1bmN0aW9uIG5hbWluZwpwYXR0ZXJuCi0gZXh0Y29uOiBBZGQgdGhlIHN5bmNocm9u aXphdGlvbiBleHRjb24gQVBJcyB0byBzdXBwb3J0IHRoZSBub3RpZmljYXRpb24KLSBleHRjb246 IEFkZCBFWFRDT05fRElTUF9EUCBhbmQgdGhlIHByb3BlcnR5IGZvciBVU0IgVHlwZS1DCgoKQ2hh bmdlcyBpbiB2OToKLSBjaGFuZ2UgI3BoeS1jZWxscyB0byAxCi0gc3BsaXQgdGhlIFR5cGUtQyBQ SFkgaW50byB0d28gUEhZczogVVNCMyBhbmQgRFAKLSBjaGFuZ2UgI3BoeS1jZWxscyB0byAxCi0g bW9kaWZ5IHRoZSByZWZlcmVuY2UgcGh5ID0gPCZ0Y3BoeTAgMD4sIDwmdGNwaHkxIDA+OwotIGRv IG5vdCBuZWVkIHJlc2V0IHRoZSBwaHkgYmVmb3JlIHBvd2VyX29uCi0gYWRkIGEgb3JpZW50YXRp b24gaW5mb3JtYXRpb24gZm9yIHNldF9jYXBhYmlsaXR5Ci0gcmV0cnkgdG8gcmVhZCBkcGNkIGlu IDEwIHNlY29uZHMKCkNoYW5nZXMgaW4gdjg6Ci0gc2V0IHRoZSBkZWZhdWx0IGNhYmxlIGlkIHRv IEVYVENPTl9VU0JfSE9TVAotIG9wdGltaXphdGlvbiBFcnJvciBsb2cKLSBvcHRpbWl6YXRpb24g dGhlIGVyciBsb2cKCkNoYW5nZXMgaW4gdjc6Ci0gc3VwcG9ydCBuZXcgQVBJIG9mIGV4dGNvbgot IHN1cHBvcnQgZmlybXdhcmUgc3RhbmRieSB3aGVuIG5vIGRwdHggY29ubmVjdGlvbgotIG9wdGlt aXphdGlvbiB0aGUgY2FsY3VsYXRpb24gb2YgdHUgc2l6ZSBhbmQgdmFsaWQgc3ltYm9sCgpDaGFu Z2VzIGluIHY2OgotIGFkZCBhc3NpZ25lZC1jbG9ja3MgYW5kIGFzc2lnbmVkLWNsb2NrLXJhdGVz Ci0gZGVsZXRlIHRoZSBzdXBwb3J0IG9mIFBJTl9BU1NJR05fQS9CCi0gc2V0IHRoZSBkZWZhdWx0 IG1vZGUgdG8gTU9ERV9ERlBfVVNCCi0gZGlzYWJsZSBEUCBQTEwgYXQgVVNCMyBvbmx5IG1vZGUK LSBhZGQgYXNzaWduZWQtY2xvY2tzIGFuZCBhc3NpZ25lZC1jbG9jay1yYXRlcwotIGFkZCBwb3dl ci1kb21haW5zCi0gYWRkIGEgcG9ydCBzdHJ1Y3QKLSBzZWxlY3QgU05EX1NPQ19IRE1JX0NPREVD Ci0gZm9yY2UgcmVzZXQgdGhlIHBoeSB3aGVuIGhwZCBkZXRlY3RlZAoKQ2hhbmdlcyBpbiB2NToK LSBzdXBwb3J0IGdldCBwcm9wZXJ0eSBmcm9tIGV4dGNvbgotIHJlbW92ZSBQSU4gQVNTSUdOIEEv QiBzdXBwb3J0Ci0gYWxwaGFiZXRpY2FsIG9yZGVyCi0gZG8gbm90IHVzZSBsb25nLCB1c2UgdTMy IG9yIHU2NAotIHJldHVybiBNT0RFX0NMT0NLX0hJR0ggd2hlbiByZXF1ZXN0ZWQgPiBhY3R1YWwK LSBPcHRpbWl6ZWQgQ29kaW5nIFN0eWxlCi0gYWRkIGEgZm9ybXVsYSB0byBnZXQgYmV0dGVyIHR1 IHNpemUgYW5kIHN5bWJvbCB2YWx1ZS4KLSBtb2RpZnkgYWNjb3JkaW5nIHRvIFNlYW4gUGF1bCdz IGNvbW1lbnRzCi0gZml4ZWQgdGhlIGZ3X3dhaXQgYWx3YXlzIDAKCkNoYW5nZXMgaW4gdjQ6Ci0g YWRkIGEgI3BoeS1jZWxscyBub2RlCi0gc2VsZWN0IEVYVENPTgotIHVzZSBwaHkgZnJhbWV3b3Jr IHRvIGNvbnRyb2wgdGhlIFVTQjMgYW5kIERQIGZ1bmN0aW9uCi0gcmVuYW1lIFBJTl9NQVBfIHRv IFBJTl9BU1NJR05fCi0gYWRkIGEgcmVzZXQgbm9kZQotIHN1cHBvcnQgMiBwaHlzCi0gdXNlIHBo eSBmcmFtZXdvcmsgdG8gY29udHJvbCBEUCBwaHkKLSBzdXBwb3J0IDIgcGh5cwoKQ2hhbmdlcyBp biB2MzoKLSB1c2UgY29tcGF0aWJsZTogcm9ja2NoaXAscmszMzk5LXR5cGVjLXBoeQotIHVzZSBk YXNoZXMgaW5zdGVhZCBvZiB1bmRlcnNjb3Jlcy4KLSByZW1vdmUgdGhlIHBoeSBmcmFtZXdvcmso S2lzaG9uIFZpamF5IEFicmFoYW0gSSkKLSBhZGQgcGFyZW50aGVzZXMgYXJvdW5kIHRoZSBtYWNy bwotIHVzZSBhIHNpbmdsZSBzcGFjZSBiZXR3ZWVuIHR5cGUgYW5kIG5hbWUKLSBhZGQgc3BhY2Vz IGFmdGVyIG9wZW5pbmcgYW5kIGJlZm9yZSBjbG9zaW5nIGJyYWNlcy4KLSB1c2UgdTE2IGZvciBy ZWdpc3RlciB2YWx1ZQotIHJlbW92ZSB0eXBlLWMgcGh5IGhlYWRlciBmaWxlCi0gQ29kaW5nU3R5 bGUgb3B0aW1pemF0aW9uCi0gdXNlIHNvbWUgY2FibGUgZXh0Y29uIHRvIGdldCB0eXBlLWMgcG9y dCBpbmZvcm1hdGlvbgotIGFkZCBhIGV4dGNvbiB0byBub3RpZnkgRGlzcGxheSBQb3J0Ci0gYWRk IFNvQyBzcGVjaWZpYyBjb21wYXRpYmxlIHN0cmluZwotIHJlbW92ZSByZWcgPSA8MT47Ci0gdXNl IEVYVENPTl9ESVNQX0RQIGFuZCBFWFRDT05fRElTUF9EUF9BTFQgY2FibGUgdG8gZ2V0IGRwIHBv cnQgc3RhdGUuCi0gcmVzZXQgc3BkaWYgYmVmb3JlIGNvbmZpZyBpdAotIG1vZGlmeSB0aGUgZmly bXdhcmUgY2xrIHRvIDEwME1oegotIHJldHJ5IGxvYWQgZmlybXdhcmUgaWYgZncgZmlsZSBpcyBy ZXF1ZXN0ZWQgdG9vIGVhcmx5CgpDaGFuZ2VzIGluIHYyOgotIGFkZCBzb21lIHJlZ2lzdGVycyBk ZXNjcmlwdGlvbgotIHNlbGVjdCBSRVNFVF9DT05UUk9MTEVSCi0gYWxwaGFiZXRpYyBvcmRlcgot IG1vZGlmeSBzb21lIHNwZWxsaW5nIG1pc3Rha2VzCi0gbWFrZSBtb2RlIGNsZWFuZXIKLSB1c2Ug Ym9vbCBmb3IgZW5hYmxlL2Rpc2FibGUKLSBjaGVjayBhbGwgb2YgdGhlIHJldHVybiB2YWx1ZQot IHJldHVybiBhIGJldHRlciBlcnIgbnVtYmVyCi0gdXNlIG1vcmUgcmVhZHhfcG9sbF90aW1lb3V0 KCkKLSBjbGtfZGlzYWJsZV91bnByZXBhcmUodGNwaHktPmNsa19yZWYpOwotIHJlbW92ZSB1bnVz ZSBmdW5jdGlvbnMsIHJvY2tjaGlwX3R5cGVjX3BoeV9wb3dlcl9vbi9vZmYKLSByZW1vdmUgdW5u ZWNlc3NhcnkgdHlwZWNhc3QgZnJvbSB2b2lkICoKLSB1c2UgZHRzIG5vZGUgdG8gZGlzdGluZ3Vp c2ggYmV0d2VlbiBwaHlzLgotIEFscGhhYmV0aWMgb3JkZXIKLSByZW1vdmUgZXhjZXNzIGVycm9y IG1lc3NhZ2UKLSB1c2UgZGVmaW5lIGNsa19yYXRlCi0gY2hlY2sgYWxsIHJldHVybiB2YWx1ZQot IHJlbW92ZSBkZXZfc2V0X25hbWUoZHAtPmRldiwgImNkbi1kcCIpOwotIHVzZSBzY2hlZHVsZV9k ZWxheWVkX3dvcmsKLSByZW1vdmUgbmV2ZXItY2FsbGVkIGZ1bmN0aW9ucwotIHJlbW92ZSBzb21l IHVubmVjZXNzYXJ5ICgpCgpDaGFuZ2VzIGluIHYxOgotIGFkZCBleHRjb24gbm9kZSBkZXNjcmlw dGlvbgotIG1vdmUgdGhlIHJlZ2lzdGVycyBpbiBwaHkgZHJpdmVyCi0gcmVtb3ZlIHRoZSBzdWZm aXggb2YgcmVzZXQKLSB1cGRhdGUgdGhlIGxpY2VuY2Ugbm90ZQotIGluaXQgY29yZSBjbG9jayB0 byA1ME1IegotIHVzZSBleHRjb24gQVBJCi0gcmVtb3ZlIHVudXNlZCBnbG9iYWwKLSBhZGQgc29t ZSBjb21tZW50cyBmb3IgbWFnaWMgbnVtCi0gY2hhbmdlIHVzbGVlcF9yYW5nZSgxMDAwLCAyMDAw KSB0b3VzbGVlcF9yYW5nZSgxMDAwLCAxMDUwKQotIHJlbW92ZSBfX2Z1bmNfXyBmcm9tIGRldl9l cnIKLSByZXR1cm4gZXJyIG51bWJlciB3aGVuIGdldCBjbGsgZmFpbGVkCi0gcmVtb3ZlIEFERFJf QURKIGRlZmluZQotIHVzZSBkZXZtX2Nsa19nZXQoJnBkZXYtPmRldiwgInRjcGRjb3JlIikKLSBh ZGQgZXh0Y29uIG5vZGUgZGVzY3JpcHRpb24KLSBhZGQgI3NvdW5kLWRhaS1jZWxscyBkZXNjcmlw dGlvbgotIHVzZSBleHRjb24gQVBJCi0gdXNlIGhkbWktY29kZWMgZm9yIHRoZSBEUCBBc29jCi0g ZG8gbm90IGluaXRpYWxpemUgdGhlICJyZXQiCi0gcHJpbnRrIGEgZXJyIGxvZyB3aGVuIGRybV9v Zl9lbmNvZGVyX2FjdGl2ZV9lbmRwb2ludF9pZAotIG1vZGlmeSB0aGUgZGNsayBwaW5fcG9sIHRv IGEgc2luZ2xlIGxpbmUKCkNocmlzIFpob25nICg2KToKICBleHRjb246IEFkZCBFWFRDT05fRElT UF9EUCBhbmQgdGhlIHByb3BlcnR5IGZvciBVU0IgVHlwZS1DCiAgRG9jdW1lbnRhdGlvbjogYmlu ZGluZ3M6IGFkZCBkdCBkb2MgZm9yIFJvY2tjaGlwIFVTQiBUeXBlLUMgUEhZCiAgcGh5OiBBZGQg VVNCIFR5cGUtQyBQSFkgZHJpdmVyIGZvciByazMzOTkKICBhcm02NDogZHRzOiByb2NrY2hpcDog YWRkIFR5cGUtQyBwaHkgZm9yIFJLMzM5OQogIERvY3VtZW50YXRpb246IGJpbmRpbmdzOiBhZGQg ZHQgZG9jdW1lbnRhdGlvbiBmb3IgY2RuIERQIGNvbnRyb2xsZXIKICBkcm0vcm9ja2NoaXA6IGNk bi1kcDogYWRkIGNkbiBEUCBzdXBwb3J0IGZvciByazMzOTkKCiAuLi4vYmluZGluZ3MvZGlzcGxh eS9yb2NrY2hpcC9jZG4tZHAtcm9ja2NoaXAudHh0ICB8ICA3NCArKwogLi4uL2RldmljZXRyZWUv YmluZGluZ3MvcGh5L3BoeS1yb2NrY2hpcC10eXBlYy50eHQgfCAgODcgKysKIGFyY2gvYXJtNjQv Ym9vdC9kdHMvcm9ja2NoaXAvcmszMzk5LmR0c2kgICAgICAgICAgIHwgIDQ0ICsKIGRyaXZlcnMv ZXh0Y29uL2V4dGNvbi5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA1ICsKIGRyaXZl cnMvZ3B1L2RybS9yb2NrY2hpcC9LY29uZmlnICAgICAgICAgICAgICAgICAgIHwgIDEwICsKIGRy aXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9NYWtlZmlsZSAgICAgICAgICAgICAgICAgIHwgICAxICsK IGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9jZG4tZHAtY29yZS5jICAgICAgICAgICAgIHwgODYw ICsrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL2Nkbi1kcC1jb3Jl LmggICAgICAgICAgICAgfCAxMDMgKysrCiBkcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvY2RuLWRw LXJlZy5jICAgICAgICAgICAgICB8IDk1OSArKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9n cHUvZHJtL3JvY2tjaGlwL2Nkbi1kcC1yZWcuaCAgICAgICAgICAgICAgfCA0ODIgKysrKysrKysr KwogZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV92b3AuYyAgICAgICAgfCAg MTMgKy0KIGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fdm9wLmggICAgICAg IHwgICA5ICsKIGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF92b3BfcmVnLmMgICAg ICAgIHwgICAyICsKIGRyaXZlcnMvcGh5L0tjb25maWcgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICA5ICsKIGRyaXZlcnMvcGh5L01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMvcGh5L3BoeS1yb2NrY2hpcC10eXBlYy5jICAgICAg ICAgICAgICAgICAgIHwgOTg0ICsrKysrKysrKysrKysrKysrKysrKwogaW5jbHVkZS9saW51eC9l eHRjb24uaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDggKy0KIDE3IGZpbGVzIGNo YW5nZWQsIDM2NDcgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEw MDY0NCBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9yb2NrY2hpcC9j ZG4tZHAtcm9ja2NoaXAudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9kZXZp Y2V0cmVlL2JpbmRpbmdzL3BoeS9waHktcm9ja2NoaXAtdHlwZWMudHh0CiBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL2Nkbi1kcC1jb3JlLmMKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvY2RuLWRwLWNvcmUuaAogY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9jZG4tZHAtcmVnLmMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvY2RuLWRwLXJlZy5oCiBjcmVhdGUg bW9kZSAxMDA2NDQgZHJpdmVycy9waHkvcGh5LXJvY2tjaGlwLXR5cGVjLmMKCi0tIAoyLjYuMwoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVs IG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 From: zyw@rock-chips.com (Chris Zhong) Date: Tue, 2 Aug 2016 20:45:07 +0800 Subject: [v9 PATCH 0/6] Rockchip Type-C and DisplayPort driver Message-ID: <1470141913-1082-1-git-send-email-zyw@rock-chips.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Hi all This series patch is for rockchip Type-C phy and DisplayPort controller driver. The USB Type-C PHY is designed to support the USB3 and DP applications. The PHY basically has two main components: USB3 and DisplyPort. USB3 operates in SuperSpeed mode and the DP can operate at RBR, HBR and HBR2 data rates. The Type-C cable orientation detection and Power Delivery (PD) is accomplished using a PD PHY or a exernal PD chip. The DP controller is compliant with DisplayPort Specification, Version 1.3, This IP is compatible with the rockchip type-c PHY IP. There is a uCPU in DP controller, it need a firmware to work, please put the firmware file[0] to /lib/firmware/rockchip/dptx.bin. The uCPU in charge of aux communication and link training, the host use mailbox to communicate with the ucpu. The DP contoller has register a notification with extcon API, to get the alt mode from PD, the PD driver need call the devm_extcon_dev_allocate to create a extcon device and use extcon_set_state to notify DP controller. And call extcon_set_cable_property to set orientation. About the DP audio, cdn-dp registered 2 DAIs: 0 is I2S, 1 is SPDIF. We can reference them in simple-card. This series is based on Mark Yao's branch[1] and Chanwoo Choi's extcon-next branch[2]. I test this patches on the rk3399-evb board, with a fusb302 driver, this branch has no rk3399.dtsi, so the patch about dts is not included in this series. >>From V9, the Type-C PHY is split into two PHYs: DP and USB3. The PHY will be init, no matter which PHY be power_on. The DP module will enter A2 mode (standby mode) after phy_init, if DP PHY is powered on, the DP module will enter to A0 mode(running mode). Then if DP PHY is powered off, DP module will back to A2 mode. If everything is un-plugged, phy will be deinit. [0] https://patchwork.kernel.org/patch/9249693/ [1] https://github.com/markyzq/kernel-drm-rockchip/tree/drm-rockchip-next-2016-05-23 [2] https://git.kernel.org/cgit/linux/kernel/git/chanwoo/extcon.git/log/?h=extcon-test - extcon: Add the extcon_type to gather each connector into five category - extcon: Add the support for extcon property according to extcon type - extcon: Add the support for the capability of each property - extcon: Rename the extcon_set/get_state() to maintain the function naming pattern - extcon: Add the synchronization extcon APIs to support the notification - extcon: Add EXTCON_DISP_DP and the property for USB Type-C Changes in v9: - change #phy-cells to 1 - split the Type-C PHY into two PHYs: USB3 and DP - change #phy-cells to 1 - modify the reference phy = <&tcphy0 0>, <&tcphy1 0>; - do not need reset the phy before power_on - add a orientation information for set_capability - retry to read dpcd in 10 seconds Changes in v8: - set the default cable id to EXTCON_USB_HOST - optimization Error log - optimization the err log Changes in v7: - support new API of extcon - support firmware standby when no dptx connection - optimization the calculation of tu size and valid symbol Changes in v6: - add assigned-clocks and assigned-clock-rates - delete the support of PIN_ASSIGN_A/B - set the default mode to MODE_DFP_USB - disable DP PLL at USB3 only mode - add assigned-clocks and assigned-clock-rates - add power-domains - add a port struct - select SND_SOC_HDMI_CODEC - force reset the phy when hpd detected Changes in v5: - support get property from extcon - remove PIN ASSIGN A/B support - alphabetical order - do not use long, use u32 or u64 - return MODE_CLOCK_HIGH when requested > actual - Optimized Coding Style - add a formula to get better tu size and symbol value. - modify according to Sean Paul's comments - fixed the fw_wait always 0 Changes in v4: - add a #phy-cells node - select EXTCON - use phy framework to control the USB3 and DP function - rename PIN_MAP_ to PIN_ASSIGN_ - add a reset node - support 2 phys - use phy framework to control DP phy - support 2 phys Changes in v3: - use compatible: rockchip,rk3399-typec-phy - use dashes instead of underscores. - remove the phy framework(Kishon Vijay Abraham I) - add parentheses around the macro - use a single space between type and name - add spaces after opening and before closing braces. - use u16 for register value - remove type-c phy header file - CodingStyle optimization - use some cable extcon to get type-c port information - add a extcon to notify Display Port - add SoC specific compatible string - remove reg = <1>; - use EXTCON_DISP_DP and EXTCON_DISP_DP_ALT cable to get dp port state. - reset spdif before config it - modify the firmware clk to 100Mhz - retry load firmware if fw file is requested too early Changes in v2: - add some registers description - select RESET_CONTROLLER - alphabetic order - modify some spelling mistakes - make mode cleaner - use bool for enable/disable - check all of the return value - return a better err number - use more readx_poll_timeout() - clk_disable_unprepare(tcphy->clk_ref); - remove unuse functions, rockchip_typec_phy_power_on/off - remove unnecessary typecast from void * - use dts node to distinguish between phys. - Alphabetic order - remove excess error message - use define clk_rate - check all return value - remove dev_set_name(dp->dev, "cdn-dp"); - use schedule_delayed_work - remove never-called functions - remove some unnecessary () Changes in v1: - add extcon node description - move the registers in phy driver - remove the suffix of reset - update the licence note - init core clock to 50MHz - use extcon API - remove unused global - add some comments for magic num - change usleep_range(1000, 2000) tousleep_range(1000, 1050) - remove __func__ from dev_err - return err number when get clk failed - remove ADDR_ADJ define - use devm_clk_get(&pdev->dev, "tcpdcore") - add extcon node description - add #sound-dai-cells description - use extcon API - use hdmi-codec for the DP Asoc - do not initialize the "ret" - printk a err log when drm_of_encoder_active_endpoint_id - modify the dclk pin_pol to a single line Chris Zhong (6): extcon: Add EXTCON_DISP_DP and the property for USB Type-C Documentation: bindings: add dt doc for Rockchip USB Type-C PHY phy: Add USB Type-C PHY driver for rk3399 arm64: dts: rockchip: add Type-C phy for RK3399 Documentation: bindings: add dt documentation for cdn DP controller drm/rockchip: cdn-dp: add cdn DP support for rk3399 .../bindings/display/rockchip/cdn-dp-rockchip.txt | 74 ++ .../devicetree/bindings/phy/phy-rockchip-typec.txt | 87 ++ arch/arm64/boot/dts/rockchip/rk3399.dtsi | 44 + drivers/extcon/extcon.c | 5 + drivers/gpu/drm/rockchip/Kconfig | 10 + drivers/gpu/drm/rockchip/Makefile | 1 + drivers/gpu/drm/rockchip/cdn-dp-core.c | 860 ++++++++++++++++++ drivers/gpu/drm/rockchip/cdn-dp-core.h | 103 +++ drivers/gpu/drm/rockchip/cdn-dp-reg.c | 959 ++++++++++++++++++++ drivers/gpu/drm/rockchip/cdn-dp-reg.h | 482 ++++++++++ drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 13 +- drivers/gpu/drm/rockchip/rockchip_drm_vop.h | 9 + drivers/gpu/drm/rockchip/rockchip_vop_reg.c | 2 + drivers/phy/Kconfig | 9 + drivers/phy/Makefile | 1 + drivers/phy/phy-rockchip-typec.c | 984 +++++++++++++++++++++ include/linux/extcon.h | 8 +- 17 files changed, 3647 insertions(+), 4 deletions(-) create mode 100644 Documentation/devicetree/bindings/display/rockchip/cdn-dp-rockchip.txt create mode 100644 Documentation/devicetree/bindings/phy/phy-rockchip-typec.txt create mode 100644 drivers/gpu/drm/rockchip/cdn-dp-core.c create mode 100644 drivers/gpu/drm/rockchip/cdn-dp-core.h create mode 100644 drivers/gpu/drm/rockchip/cdn-dp-reg.c create mode 100644 drivers/gpu/drm/rockchip/cdn-dp-reg.h create mode 100644 drivers/phy/phy-rockchip-typec.c -- 2.6.3