mirror of
https://github.com/archr-linux/Arch-R.git
synced 2026-03-31 14:41:55 -07:00
2743 lines
79 KiB
Diff
2743 lines
79 KiB
Diff
From 759c992d38d1a02560687247dec7ac05f4e8b3ce Mon Sep 17 00:00:00 2001
|
|
From: Jonas Karlman <jonas@kwiboo.se>
|
|
Date: Sun, 8 Dec 2019 13:13:46 +0000
|
|
Subject: [PATCH] drm: dw-hdmi: rename last_connector_result
|
|
|
|
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
|
---
|
|
drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 20 ++++++++++----------
|
|
1 file changed, 10 insertions(+), 10 deletions(-)
|
|
|
|
diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
|
index 0e716c40c42c..2dad989e7b4f 100644
|
|
--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
|
+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
|
@@ -197,7 +197,7 @@ struct dw_hdmi {
|
|
|
|
hdmi_codec_plugged_cb plugged_cb;
|
|
struct device *codec_dev;
|
|
- enum drm_connector_status last_connector_result;
|
|
+ enum drm_connector_status last_connector_status;
|
|
};
|
|
|
|
#define HDMI_IH_PHY_STAT0_RX_SENSE \
|
|
@@ -236,7 +236,7 @@ int dw_hdmi_set_plugged_cb(struct dw_hdmi *hdmi, hdmi_codec_plugged_cb fn,
|
|
mutex_lock(&hdmi->mutex);
|
|
hdmi->plugged_cb = fn;
|
|
hdmi->codec_dev = codec_dev;
|
|
- plugged = hdmi->last_connector_result == connector_status_connected;
|
|
+ plugged = hdmi->last_connector_status == connector_status_connected;
|
|
handle_plugged_change(hdmi, plugged);
|
|
mutex_unlock(&hdmi->mutex);
|
|
|
|
@@ -2271,7 +2271,7 @@ dw_hdmi_connector_detect(struct drm_connector *connector, bool force)
|
|
{
|
|
struct dw_hdmi *hdmi = container_of(connector, struct dw_hdmi,
|
|
connector);
|
|
- enum drm_connector_status result;
|
|
+ enum drm_connector_status status;
|
|
|
|
mutex_lock(&hdmi->mutex);
|
|
hdmi->force = DRM_FORCE_UNSPECIFIED;
|
|
@@ -2279,18 +2279,18 @@ dw_hdmi_connector_detect(struct drm_connector *connector, bool force)
|
|
dw_hdmi_update_phy_mask(hdmi);
|
|
mutex_unlock(&hdmi->mutex);
|
|
|
|
- result = hdmi->phy.ops->read_hpd(hdmi, hdmi->phy.data);
|
|
+ status = hdmi->phy.ops->read_hpd(hdmi, hdmi->phy.data);
|
|
|
|
mutex_lock(&hdmi->mutex);
|
|
- if (result != hdmi->last_connector_result) {
|
|
- dev_dbg(hdmi->dev, "read_hpd result: %d", result);
|
|
+ if (status != hdmi->last_connector_status) {
|
|
+ dev_dbg(hdmi->dev, "connector status: %d", status);
|
|
handle_plugged_change(hdmi,
|
|
- result == connector_status_connected);
|
|
- hdmi->last_connector_result = result;
|
|
+ status == connector_status_connected);
|
|
+ hdmi->last_connector_status = status;
|
|
}
|
|
mutex_unlock(&hdmi->mutex);
|
|
|
|
- return result;
|
|
+ return status;
|
|
}
|
|
|
|
static int dw_hdmi_connector_get_modes(struct drm_connector *connector)
|
|
@@ -3053,7 +3053,7 @@ __dw_hdmi_probe(struct platform_device *pdev,
|
|
hdmi->rxsense = true;
|
|
hdmi->phy_mask = (u8)~(HDMI_PHY_HPD | HDMI_PHY_RX_SENSE);
|
|
hdmi->mc_clkdis = 0x7f;
|
|
- hdmi->last_connector_result = connector_status_disconnected;
|
|
+ hdmi->last_connector_status = connector_status_disconnected;
|
|
|
|
mutex_init(&hdmi->mutex);
|
|
mutex_init(&hdmi->audio_mutex);
|
|
|
|
From 753bd0f066fd26f253f45ca652bb8a532c6dad90 Mon Sep 17 00:00:00 2001
|
|
From: Jonas Karlman <jonas@kwiboo.se>
|
|
Date: Sun, 1 Dec 2019 20:51:22 +0000
|
|
Subject: [PATCH] drm: dw-hdmi: extract handle_plugged_change call
|
|
|
|
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
|
---
|
|
drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 22 ++++++++++++++--------
|
|
1 file changed, 14 insertions(+), 8 deletions(-)
|
|
|
|
diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
|
index 2dad989e7b4f..ac198fcaba8b 100644
|
|
--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
|
+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
|
@@ -228,6 +228,19 @@ static void handle_plugged_change(struct dw_hdmi *hdmi, bool plugged)
|
|
hdmi->plugged_cb(hdmi->codec_dev, plugged);
|
|
}
|
|
|
|
+static void dw_hdmi_update_connector_status(struct dw_hdmi *hdmi,
|
|
+ enum drm_connector_status status)
|
|
+{
|
|
+ mutex_lock(&hdmi->mutex);
|
|
+ if (status != hdmi->last_connector_status) {
|
|
+ dev_dbg(hdmi->dev, "connector status: %d", status);
|
|
+ handle_plugged_change(hdmi,
|
|
+ status == connector_status_connected);
|
|
+ hdmi->last_connector_status = status;
|
|
+ }
|
|
+ mutex_unlock(&hdmi->mutex);
|
|
+}
|
|
+
|
|
int dw_hdmi_set_plugged_cb(struct dw_hdmi *hdmi, hdmi_codec_plugged_cb fn,
|
|
struct device *codec_dev)
|
|
{
|
|
@@ -2281,14 +2294,7 @@ dw_hdmi_connector_detect(struct drm_connector *connector, bool force)
|
|
|
|
status = hdmi->phy.ops->read_hpd(hdmi, hdmi->phy.data);
|
|
|
|
- mutex_lock(&hdmi->mutex);
|
|
- if (status != hdmi->last_connector_status) {
|
|
- dev_dbg(hdmi->dev, "connector status: %d", status);
|
|
- handle_plugged_change(hdmi,
|
|
- status == connector_status_connected);
|
|
- hdmi->last_connector_status = status;
|
|
- }
|
|
- mutex_unlock(&hdmi->mutex);
|
|
+ dw_hdmi_update_connector_status(hdmi, status);
|
|
|
|
return status;
|
|
}
|
|
|
|
From fdd68a4db03fba2017a4aa65830adf3b8d5a585c Mon Sep 17 00:00:00 2001
|
|
From: Jonas Karlman <jonas@kwiboo.se>
|
|
Date: Sat, 28 Sep 2019 13:34:46 +0000
|
|
Subject: [PATCH] drm: dw-hdmi: remove unused struct member
|
|
|
|
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
|
---
|
|
drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 4 ----
|
|
1 file changed, 4 deletions(-)
|
|
|
|
diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
|
index ac198fcaba8b..7a0eb443cec6 100644
|
|
--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
|
+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
|
@@ -41,8 +41,6 @@
|
|
#define DDC_CI_ADDR 0x37
|
|
#define DDC_SEGMENT_ADDR 0x30
|
|
|
|
-#define HDMI_EDID_LEN 512
|
|
-
|
|
/* DW-HDMI Controller >= 0x200a are at least compliant with SCDC version 1 */
|
|
#define SCDC_MIN_SOURCE_VERSION 0x1
|
|
|
|
@@ -152,8 +150,6 @@ struct dw_hdmi {
|
|
|
|
int vic;
|
|
|
|
- u8 edid[HDMI_EDID_LEN];
|
|
-
|
|
struct {
|
|
const struct dw_hdmi_phy_ops *ops;
|
|
const char *name;
|
|
|
|
From 1b52bf5366035687e7e028f1320c9e2d37dd01a3 Mon Sep 17 00:00:00 2001
|
|
From: Jonas Karlman <jonas@kwiboo.se>
|
|
Date: Sat, 28 Sep 2019 13:34:46 +0000
|
|
Subject: [PATCH] drm: dw-hdmi: read edid in detect callback
|
|
|
|
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
|
---
|
|
drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 79 +++++++++++++++++++++++--------
|
|
1 file changed, 58 insertions(+), 21 deletions(-)
|
|
|
|
diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
|
index 7a0eb443cec6..363f7c5a8016 100644
|
|
--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
|
+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
|
@@ -150,6 +150,8 @@ struct dw_hdmi {
|
|
|
|
int vic;
|
|
|
|
+ struct edid *cached_edid;
|
|
+
|
|
struct {
|
|
const struct dw_hdmi_phy_ops *ops;
|
|
const char *name;
|
|
@@ -2217,9 +2219,55 @@ static void initialize_hdmi_ih_mutes(struct dw_hdmi *hdmi)
|
|
hdmi_writeb(hdmi, ih_mute, HDMI_IH_MUTE);
|
|
}
|
|
|
|
+static void dw_hdmi_clear_edid(struct drm_connector *connector)
|
|
+{
|
|
+ struct dw_hdmi *hdmi = container_of(connector, struct dw_hdmi,
|
|
+ connector);
|
|
+
|
|
+ if (!hdmi->cached_edid)
|
|
+ return;
|
|
+
|
|
+ hdmi->sink_is_hdmi = false;
|
|
+ hdmi->sink_has_audio = false;
|
|
+
|
|
+ kfree(hdmi->cached_edid);
|
|
+ hdmi->cached_edid = NULL;
|
|
+}
|
|
+
|
|
+static void dw_hdmi_get_edid(struct drm_connector *connector)
|
|
+{
|
|
+ struct dw_hdmi *hdmi = container_of(connector, struct dw_hdmi,
|
|
+ connector);
|
|
+ struct edid *edid;
|
|
+
|
|
+ if (!hdmi->ddc || hdmi->cached_edid)
|
|
+ return;
|
|
+
|
|
+ edid = drm_get_edid(connector, hdmi->ddc);
|
|
+
|
|
+ if (edid && edid->input & DRM_EDID_INPUT_DIGITAL) {
|
|
+ dev_dbg(hdmi->dev, "got edid: width[%d] x height[%d]\n",
|
|
+ edid->width_cm, edid->height_cm);
|
|
+
|
|
+ hdmi->sink_is_hdmi = drm_detect_hdmi_monitor(edid);
|
|
+ hdmi->sink_has_audio = drm_detect_monitor_audio(edid);
|
|
+
|
|
+ hdmi->cached_edid = edid;
|
|
+ } else {
|
|
+ dev_dbg(hdmi->dev, "failed to get edid\n");
|
|
+
|
|
+ kfree(edid);
|
|
+ edid = NULL;
|
|
+ }
|
|
+
|
|
+ drm_connector_update_edid_property(connector, edid);
|
|
+ cec_notifier_set_phys_addr_from_edid(hdmi->cec_notifier, edid);
|
|
+}
|
|
+
|
|
static void dw_hdmi_poweron(struct dw_hdmi *hdmi)
|
|
{
|
|
hdmi->bridge_is_on = true;
|
|
+ dw_hdmi_get_edid(&hdmi->connector);
|
|
dw_hdmi_setup(hdmi, &hdmi->previous_mode);
|
|
}
|
|
|
|
@@ -2290,6 +2338,11 @@ dw_hdmi_connector_detect(struct drm_connector *connector, bool force)
|
|
|
|
status = hdmi->phy.ops->read_hpd(hdmi, hdmi->phy.data);
|
|
|
|
+ if (status == connector_status_disconnected)
|
|
+ dw_hdmi_clear_edid(connector);
|
|
+ else
|
|
+ dw_hdmi_get_edid(connector);
|
|
+
|
|
dw_hdmi_update_connector_status(hdmi, status);
|
|
|
|
return status;
|
|
@@ -2299,28 +2352,8 @@ static int dw_hdmi_connector_get_modes(struct drm_connector *connector)
|
|
{
|
|
struct dw_hdmi *hdmi = container_of(connector, struct dw_hdmi,
|
|
connector);
|
|
- struct edid *edid;
|
|
- int ret = 0;
|
|
-
|
|
- if (!hdmi->ddc)
|
|
- return 0;
|
|
|
|
- edid = drm_get_edid(connector, hdmi->ddc);
|
|
- if (edid) {
|
|
- dev_dbg(hdmi->dev, "got edid: width[%d] x height[%d]\n",
|
|
- edid->width_cm, edid->height_cm);
|
|
-
|
|
- hdmi->sink_is_hdmi = drm_detect_hdmi_monitor(edid);
|
|
- hdmi->sink_has_audio = drm_detect_monitor_audio(edid);
|
|
- drm_connector_update_edid_property(connector, edid);
|
|
- cec_notifier_set_phys_addr_from_edid(hdmi->cec_notifier, edid);
|
|
- ret = drm_add_edid_modes(connector, edid);
|
|
- kfree(edid);
|
|
- } else {
|
|
- dev_dbg(hdmi->dev, "failed to get edid\n");
|
|
- }
|
|
-
|
|
- return ret;
|
|
+ return drm_add_edid_modes(connector, hdmi->cached_edid);
|
|
}
|
|
|
|
static bool hdr_metadata_equal(const struct drm_connector_state *old_state,
|
|
@@ -2699,6 +2732,9 @@ static void dw_hdmi_bridge_detach(struct drm_bridge *bridge)
|
|
cec_notifier_conn_unregister(hdmi->cec_notifier);
|
|
hdmi->cec_notifier = NULL;
|
|
mutex_unlock(&hdmi->cec_notifier_mutex);
|
|
+
|
|
+ kfree(hdmi->cached_edid);
|
|
+ hdmi->cached_edid = NULL;
|
|
}
|
|
|
|
static enum drm_mode_status
|
|
@@ -3388,6 +3424,7 @@ EXPORT_SYMBOL_GPL(dw_hdmi_unbind);
|
|
|
|
void dw_hdmi_resume(struct dw_hdmi *hdmi)
|
|
{
|
|
+ dw_hdmi_clear_edid(&hdmi->connector);
|
|
dw_hdmi_init_hw(hdmi);
|
|
}
|
|
EXPORT_SYMBOL_GPL(dw_hdmi_resume);
|
|
|
|
From 94b8204bf9165575ee51d9e18c4a2df16e2199ed Mon Sep 17 00:00:00 2001
|
|
From: Jonas Karlman <jonas@kwiboo.se>
|
|
Date: Sat, 28 Sep 2019 13:34:47 +0000
|
|
Subject: [PATCH] drm: dw-hdmi: read edid in force callback
|
|
|
|
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
|
---
|
|
drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 7 +++++++
|
|
1 file changed, 7 insertions(+)
|
|
|
|
diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
|
index 363f7c5a8016..dff27934287c 100644
|
|
--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
|
+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
|
@@ -2405,6 +2405,13 @@ static void dw_hdmi_connector_force(struct drm_connector *connector)
|
|
dw_hdmi_update_power(hdmi);
|
|
dw_hdmi_update_phy_mask(hdmi);
|
|
mutex_unlock(&hdmi->mutex);
|
|
+
|
|
+ dw_hdmi_clear_edid(connector);
|
|
+
|
|
+ if (connector->status != connector_status_connected)
|
|
+ return;
|
|
+
|
|
+ dw_hdmi_get_edid(connector);
|
|
}
|
|
|
|
static const struct drm_connector_funcs dw_hdmi_connector_funcs = {
|
|
|
|
From d2ba7dbdb7d87a1240aac2652bddb49ce147b790 Mon Sep 17 00:00:00 2001
|
|
From: Jonas Karlman <jonas@kwiboo.se>
|
|
Date: Sat, 28 Sep 2019 13:34:47 +0000
|
|
Subject: [PATCH] drm: dw-hdmi: invalidate cec phys addr in detect callback
|
|
|
|
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
|
---
|
|
drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 17 +++--------------
|
|
1 file changed, 3 insertions(+), 14 deletions(-)
|
|
|
|
diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
|
index dff27934287c..c922639e25eb 100644
|
|
--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
|
+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
|
@@ -190,7 +190,6 @@ struct dw_hdmi {
|
|
void (*enable_audio)(struct dw_hdmi *hdmi);
|
|
void (*disable_audio)(struct dw_hdmi *hdmi);
|
|
|
|
- struct mutex cec_notifier_mutex;
|
|
struct cec_notifier *cec_notifier;
|
|
|
|
hdmi_codec_plugged_cb plugged_cb;
|
|
@@ -2232,6 +2231,8 @@ static void dw_hdmi_clear_edid(struct drm_connector *connector)
|
|
|
|
kfree(hdmi->cached_edid);
|
|
hdmi->cached_edid = NULL;
|
|
+
|
|
+ cec_notifier_phys_addr_invalidate(hdmi->cec_notifier);
|
|
}
|
|
|
|
static void dw_hdmi_get_edid(struct drm_connector *connector)
|
|
@@ -2724,9 +2725,7 @@ static int dw_hdmi_bridge_attach(struct drm_bridge *bridge)
|
|
if (!notifier)
|
|
return -ENOMEM;
|
|
|
|
- mutex_lock(&hdmi->cec_notifier_mutex);
|
|
hdmi->cec_notifier = notifier;
|
|
- mutex_unlock(&hdmi->cec_notifier_mutex);
|
|
|
|
return 0;
|
|
}
|
|
@@ -2735,10 +2734,8 @@ static void dw_hdmi_bridge_detach(struct drm_bridge *bridge)
|
|
{
|
|
struct dw_hdmi *hdmi = bridge->driver_private;
|
|
|
|
- mutex_lock(&hdmi->cec_notifier_mutex);
|
|
cec_notifier_conn_unregister(hdmi->cec_notifier);
|
|
hdmi->cec_notifier = NULL;
|
|
- mutex_unlock(&hdmi->cec_notifier_mutex);
|
|
|
|
kfree(hdmi->cached_edid);
|
|
hdmi->cached_edid = NULL;
|
|
@@ -2906,18 +2903,11 @@ static irqreturn_t dw_hdmi_irq(int irq, void *dev_id)
|
|
* ask the source to re-read the EDID.
|
|
*/
|
|
if (intr_stat &
|
|
- (HDMI_IH_PHY_STAT0_RX_SENSE | HDMI_IH_PHY_STAT0_HPD)) {
|
|
+ (HDMI_IH_PHY_STAT0_RX_SENSE | HDMI_IH_PHY_STAT0_HPD))
|
|
dw_hdmi_setup_rx_sense(hdmi,
|
|
phy_stat & HDMI_PHY_HPD,
|
|
phy_stat & HDMI_PHY_RX_SENSE);
|
|
|
|
- if ((phy_stat & (HDMI_PHY_RX_SENSE | HDMI_PHY_HPD)) == 0) {
|
|
- mutex_lock(&hdmi->cec_notifier_mutex);
|
|
- cec_notifier_phys_addr_invalidate(hdmi->cec_notifier);
|
|
- mutex_unlock(&hdmi->cec_notifier_mutex);
|
|
- }
|
|
- }
|
|
-
|
|
if (intr_stat & HDMI_IH_PHY_STAT0_HPD) {
|
|
dev_dbg(hdmi->dev, "EVENT=%s\n",
|
|
phy_int_pol & HDMI_PHY_HPD ? "plugin" : "plugout");
|
|
@@ -3102,7 +3092,6 @@ __dw_hdmi_probe(struct platform_device *pdev,
|
|
|
|
mutex_init(&hdmi->mutex);
|
|
mutex_init(&hdmi->audio_mutex);
|
|
- mutex_init(&hdmi->cec_notifier_mutex);
|
|
spin_lock_init(&hdmi->audio_lock);
|
|
|
|
ddc_node = of_parse_phandle(np, "ddc-i2c-bus", 0);
|
|
|
|
From 59c0e09a4133d36772397e59224fd32f1410cc26 Mon Sep 17 00:00:00 2001
|
|
From: Jonas Karlman <jonas@kwiboo.se>
|
|
Date: Sun, 8 Dec 2019 23:41:44 +0000
|
|
Subject: [PATCH] WIP: drm: dw-hdmi: do not force none scan mode
|
|
|
|
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
|
---
|
|
drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 2 --
|
|
1 file changed, 2 deletions(-)
|
|
|
|
diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
|
index c922639e25eb..ea4f940406fc 100644
|
|
--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
|
+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
|
@@ -1658,8 +1658,6 @@ static void hdmi_config_AVI(struct dw_hdmi *hdmi, struct drm_display_mode *mode)
|
|
break;
|
|
}
|
|
|
|
- frame.scan_mode = HDMI_SCAN_MODE_NONE;
|
|
-
|
|
/*
|
|
* The Designware IP uses a different byte format from standard
|
|
* AVI info frames, though generally the bits are in the correct
|
|
|
|
From 8f8861f22fa055bf46de6bd7fa249900be4f27b9 Mon Sep 17 00:00:00 2001
|
|
From: Jonas Karlman <jonas@kwiboo.se>
|
|
Date: Sun, 8 Dec 2019 23:42:44 +0000
|
|
Subject: [PATCH] WIP: drm: dw-hdmi: add content type connector property
|
|
|
|
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
|
---
|
|
drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 8 +++++++-
|
|
1 file changed, 7 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
|
index ea4f940406fc..1d043d67f043 100644
|
|
--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
|
+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
|
@@ -1617,6 +1617,7 @@ static void hdmi_tx_hdcp_config(struct dw_hdmi *hdmi)
|
|
|
|
static void hdmi_config_AVI(struct dw_hdmi *hdmi, struct drm_display_mode *mode)
|
|
{
|
|
+ const struct drm_connector_state *conn_state = hdmi->connector.state;
|
|
struct hdmi_avi_infoframe frame;
|
|
u8 val;
|
|
|
|
@@ -1658,6 +1659,8 @@ static void hdmi_config_AVI(struct dw_hdmi *hdmi, struct drm_display_mode *mode)
|
|
break;
|
|
}
|
|
|
|
+ drm_hdmi_avi_infoframe_content_type(&frame, conn_state);
|
|
+
|
|
/*
|
|
* The Designware IP uses a different byte format from standard
|
|
* AVI info frames, though generally the bits are in the correct
|
|
@@ -2383,7 +2386,8 @@ static int dw_hdmi_connector_atomic_check(struct drm_connector *connector,
|
|
if (!crtc)
|
|
return 0;
|
|
|
|
- if (!hdr_metadata_equal(old_state, new_state)) {
|
|
+ if (!hdr_metadata_equal(old_state, new_state) ||
|
|
+ old_state->content_type != new_state->content_type) {
|
|
crtc_state = drm_atomic_get_crtc_state(state, crtc);
|
|
if (IS_ERR(crtc_state))
|
|
return PTR_ERR(crtc_state);
|
|
@@ -2711,6 +2715,8 @@ static int dw_hdmi_bridge_attach(struct drm_bridge *bridge)
|
|
|
|
drm_connector_attach_max_bpc_property(connector, 8, 16);
|
|
|
|
+ drm_connector_attach_content_type_property(connector);
|
|
+
|
|
if (hdmi->version >= 0x200a && hdmi->plat_data->use_drm_infoframe)
|
|
drm_object_attach_property(&connector->base,
|
|
connector->dev->mode_config.hdr_output_metadata_property, 0);
|
|
|
|
From 8e0885d4c820ae61cf25e86e7ba03aad864992bd Mon Sep 17 00:00:00 2001
|
|
From: Jonas Karlman <jonas@kwiboo.se>
|
|
Date: Sun, 8 Dec 2019 23:43:55 +0000
|
|
Subject: [PATCH] WIP: drm: dw-hdmi: add SPD infoframe
|
|
|
|
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
|
---
|
|
drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 42 ++++++++++++++++++++++++++-----
|
|
drivers/gpu/drm/bridge/synopsys/dw-hdmi.h | 32 ++++++++++++-----------
|
|
2 files changed, 53 insertions(+), 21 deletions(-)
|
|
|
|
diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
|
index 1d043d67f043..33124881fe96 100644
|
|
--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
|
+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
|
@@ -1727,6 +1727,35 @@ static void hdmi_config_AVI(struct dw_hdmi *hdmi, struct drm_display_mode *mode)
|
|
hdmi_writeb(hdmi, (frame.right_bar >> 8) & 0xff, HDMI_FC_AVISRB1);
|
|
}
|
|
|
|
+static void hdmi_config_spd_infoframe(struct dw_hdmi *hdmi)
|
|
+{
|
|
+ struct hdmi_spd_infoframe frame;
|
|
+ u8 buffer[29];
|
|
+ ssize_t err;
|
|
+ int i;
|
|
+
|
|
+ hdmi_mask_writeb(hdmi, 0, HDMI_FC_DATAUTO0, HDMI_FC_DATAUTO0_SPD_OFFSET,
|
|
+ HDMI_FC_DATAUTO0_SPD_MASK);
|
|
+
|
|
+ err = hdmi_spd_infoframe_init(&frame, "DW", "HDMI");
|
|
+ if (err < 0)
|
|
+ return;
|
|
+
|
|
+ frame.sdi = HDMI_SPD_SDI_PC;
|
|
+
|
|
+ err = hdmi_spd_infoframe_pack(&frame, buffer, sizeof(buffer));
|
|
+ if (err < 0) {
|
|
+ dev_err(hdmi->dev, "Failed to pack spd infoframe: %zd\n", err);
|
|
+ return;
|
|
+ }
|
|
+
|
|
+ for (i = 0; i < frame.length; i++)
|
|
+ hdmi_writeb(hdmi, buffer[4 + i], HDMI_FC_SPDVENDORNAME0 + i);
|
|
+
|
|
+ hdmi_mask_writeb(hdmi, 1, HDMI_FC_DATAUTO0, HDMI_FC_DATAUTO0_SPD_OFFSET,
|
|
+ HDMI_FC_DATAUTO0_SPD_MASK);
|
|
+}
|
|
+
|
|
static void hdmi_config_vendor_specific_infoframe(struct dw_hdmi *hdmi,
|
|
struct drm_display_mode *mode)
|
|
{
|
|
@@ -1770,12 +1799,6 @@ static void hdmi_config_vendor_specific_infoframe(struct dw_hdmi *hdmi,
|
|
if (frame.s3d_struct >= HDMI_3D_STRUCTURE_SIDE_BY_SIDE_HALF)
|
|
hdmi_writeb(hdmi, buffer[9], HDMI_FC_VSDPAYLOAD2);
|
|
|
|
- /* Packet frame interpolation */
|
|
- hdmi_writeb(hdmi, 1, HDMI_FC_DATAUTO1);
|
|
-
|
|
- /* Auto packets per frame and line spacing */
|
|
- hdmi_writeb(hdmi, 0x11, HDMI_FC_DATAUTO2);
|
|
-
|
|
/* Configures the Frame Composer On RDRB mode */
|
|
hdmi_mask_writeb(hdmi, 1, HDMI_FC_DATAUTO0, HDMI_FC_DATAUTO0_VSD_OFFSET,
|
|
HDMI_FC_DATAUTO0_VSD_MASK);
|
|
@@ -2152,8 +2175,15 @@ static int dw_hdmi_setup(struct dw_hdmi *hdmi, struct drm_display_mode *mode)
|
|
|
|
/* HDMI Initialization Step F - Configure AVI InfoFrame */
|
|
hdmi_config_AVI(hdmi, mode);
|
|
+ hdmi_config_spd_infoframe(hdmi);
|
|
hdmi_config_vendor_specific_infoframe(hdmi, mode);
|
|
hdmi_config_drm_infoframe(hdmi);
|
|
+
|
|
+ /* Packet frame interpolation */
|
|
+ hdmi_writeb(hdmi, 1, HDMI_FC_DATAUTO1);
|
|
+
|
|
+ /* Auto packets per frame and line spacing */
|
|
+ hdmi_writeb(hdmi, 0x11, HDMI_FC_DATAUTO2);
|
|
} else {
|
|
dev_dbg(hdmi->dev, "%s DVI mode\n", __func__);
|
|
}
|
|
diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.h b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.h
|
|
index 1999db05bc3b..27a91128d0cc 100644
|
|
--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.h
|
|
+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.h
|
|
@@ -139,21 +139,21 @@
|
|
#define HDMI_FC_SPDVENDORNAME5 0x104F
|
|
#define HDMI_FC_SPDVENDORNAME6 0x1050
|
|
#define HDMI_FC_SPDVENDORNAME7 0x1051
|
|
-#define HDMI_FC_SDPPRODUCTNAME0 0x1052
|
|
-#define HDMI_FC_SDPPRODUCTNAME1 0x1053
|
|
-#define HDMI_FC_SDPPRODUCTNAME2 0x1054
|
|
-#define HDMI_FC_SDPPRODUCTNAME3 0x1055
|
|
-#define HDMI_FC_SDPPRODUCTNAME4 0x1056
|
|
-#define HDMI_FC_SDPPRODUCTNAME5 0x1057
|
|
-#define HDMI_FC_SDPPRODUCTNAME6 0x1058
|
|
-#define HDMI_FC_SDPPRODUCTNAME7 0x1059
|
|
-#define HDMI_FC_SDPPRODUCTNAME8 0x105A
|
|
-#define HDMI_FC_SDPPRODUCTNAME9 0x105B
|
|
-#define HDMI_FC_SDPPRODUCTNAME10 0x105C
|
|
-#define HDMI_FC_SDPPRODUCTNAME11 0x105D
|
|
-#define HDMI_FC_SDPPRODUCTNAME12 0x105E
|
|
-#define HDMI_FC_SDPPRODUCTNAME13 0x105F
|
|
-#define HDMI_FC_SDPPRODUCTNAME14 0x1060
|
|
+#define HDMI_FC_SPDPRODUCTNAME0 0x1052
|
|
+#define HDMI_FC_SPDPRODUCTNAME1 0x1053
|
|
+#define HDMI_FC_SPDPRODUCTNAME2 0x1054
|
|
+#define HDMI_FC_SPDPRODUCTNAME3 0x1055
|
|
+#define HDMI_FC_SPDPRODUCTNAME4 0x1056
|
|
+#define HDMI_FC_SPDPRODUCTNAME5 0x1057
|
|
+#define HDMI_FC_SPDPRODUCTNAME6 0x1058
|
|
+#define HDMI_FC_SPDPRODUCTNAME7 0x1059
|
|
+#define HDMI_FC_SPDPRODUCTNAME8 0x105A
|
|
+#define HDMI_FC_SPDPRODUCTNAME9 0x105B
|
|
+#define HDMI_FC_SPDPRODUCTNAME10 0x105C
|
|
+#define HDMI_FC_SPDPRODUCTNAME11 0x105D
|
|
+#define HDMI_FC_SPDPRODUCTNAME12 0x105E
|
|
+#define HDMI_FC_SPDPRODUCTNAME13 0x105F
|
|
+#define HDMI_FC_SPDPRODUCTNAME14 0x1060
|
|
#define HDMI_FC_SPDPRODUCTNAME15 0x1061
|
|
#define HDMI_FC_SPDDEVICEINF 0x1062
|
|
#define HDMI_FC_AUDSCONF 0x1063
|
|
@@ -849,6 +849,8 @@ enum {
|
|
/* FC_DATAUTO0 field values */
|
|
HDMI_FC_DATAUTO0_VSD_MASK = 0x08,
|
|
HDMI_FC_DATAUTO0_VSD_OFFSET = 3,
|
|
+ HDMI_FC_DATAUTO0_SPD_MASK = 0x10,
|
|
+ HDMI_FC_DATAUTO0_SPD_OFFSET = 4,
|
|
|
|
/* PHY_CONF0 field values */
|
|
HDMI_PHY_CONF0_PDZ_MASK = 0x80,
|
|
|
|
From 7b7867b0c2c5263f40522c21efb120a19e1b0c3f Mon Sep 17 00:00:00 2001
|
|
From: Jonas Karlman <jonas@kwiboo.se>
|
|
Date: Sun, 29 Sep 2019 13:47:38 +0000
|
|
Subject: [PATCH] WIP: drm: dw-hdmi: debugging logging
|
|
|
|
---
|
|
drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 28 ++++++++++++++++++--
|
|
drivers/video/hdmi.c | 44 +++++++++++++++++++++++--------
|
|
2 files changed, 59 insertions(+), 13 deletions(-)
|
|
|
|
diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
|
index 33124881fe96..acc8f33c7020 100644
|
|
--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
|
+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
|
@@ -1661,6 +1661,8 @@ static void hdmi_config_AVI(struct dw_hdmi *hdmi, struct drm_display_mode *mode)
|
|
|
|
drm_hdmi_avi_infoframe_content_type(&frame, conn_state);
|
|
|
|
+ hdmi_infoframe_log(KERN_INFO, hdmi->dev, (union hdmi_infoframe *)&frame);
|
|
+
|
|
/*
|
|
* The Designware IP uses a different byte format from standard
|
|
* AVI info frames, though generally the bits are in the correct
|
|
@@ -1749,6 +1751,8 @@ static void hdmi_config_spd_infoframe(struct dw_hdmi *hdmi)
|
|
return;
|
|
}
|
|
|
|
+ hdmi_infoframe_log(KERN_INFO, hdmi->dev, (union hdmi_infoframe *)&frame);
|
|
+
|
|
for (i = 0; i < frame.length; i++)
|
|
hdmi_writeb(hdmi, buffer[4 + i], HDMI_FC_SPDVENDORNAME0 + i);
|
|
|
|
@@ -1763,6 +1767,9 @@ static void hdmi_config_vendor_specific_infoframe(struct dw_hdmi *hdmi,
|
|
u8 buffer[10];
|
|
ssize_t err;
|
|
|
|
+ hdmi_mask_writeb(hdmi, 0, HDMI_FC_DATAUTO0, HDMI_FC_DATAUTO0_VSD_OFFSET,
|
|
+ HDMI_FC_DATAUTO0_VSD_MASK);
|
|
+
|
|
err = drm_hdmi_vendor_infoframe_from_display_mode(&frame,
|
|
&hdmi->connector,
|
|
mode);
|
|
@@ -1781,8 +1788,8 @@ static void hdmi_config_vendor_specific_infoframe(struct dw_hdmi *hdmi,
|
|
err);
|
|
return;
|
|
}
|
|
- hdmi_mask_writeb(hdmi, 0, HDMI_FC_DATAUTO0, HDMI_FC_DATAUTO0_VSD_OFFSET,
|
|
- HDMI_FC_DATAUTO0_VSD_MASK);
|
|
+
|
|
+ hdmi_infoframe_log(KERN_INFO, hdmi->dev, (union hdmi_infoframe *)&frame);
|
|
|
|
/* Set the length of HDMI vendor specific InfoFrame payload */
|
|
hdmi_writeb(hdmi, buffer[2], HDMI_FC_VSDSIZE);
|
|
@@ -1828,6 +1835,8 @@ static void hdmi_config_drm_infoframe(struct dw_hdmi *hdmi)
|
|
return;
|
|
}
|
|
|
|
+ hdmi_infoframe_log(KERN_INFO, hdmi->dev, (union hdmi_infoframe *)&frame);
|
|
+
|
|
hdmi_writeb(hdmi, frame.version, HDMI_FC_DRM_HB0);
|
|
hdmi_writeb(hdmi, frame.length, HDMI_FC_DRM_HB1);
|
|
|
|
@@ -2362,6 +2371,9 @@ dw_hdmi_connector_detect(struct drm_connector *connector, bool force)
|
|
connector);
|
|
enum drm_connector_status status;
|
|
|
|
+ DRM_DEBUG_KMS("[CONNECTOR:%d:%s] force=%d\n",
|
|
+ connector->base.id, connector->name, force);
|
|
+
|
|
mutex_lock(&hdmi->mutex);
|
|
hdmi->force = DRM_FORCE_UNSPECIFIED;
|
|
dw_hdmi_update_power(hdmi);
|
|
@@ -2385,6 +2397,9 @@ static int dw_hdmi_connector_get_modes(struct drm_connector *connector)
|
|
struct dw_hdmi *hdmi = container_of(connector, struct dw_hdmi,
|
|
connector);
|
|
|
|
+ DRM_DEBUG_KMS("[CONNECTOR:%d:%s]\n",
|
|
+ connector->base.id, connector->name);
|
|
+
|
|
return drm_add_edid_modes(connector, hdmi->cached_edid);
|
|
}
|
|
|
|
@@ -2423,6 +2438,12 @@ static int dw_hdmi_connector_atomic_check(struct drm_connector *connector,
|
|
return PTR_ERR(crtc_state);
|
|
|
|
crtc_state->mode_changed = true;
|
|
+
|
|
+ DRM_DEBUG_KMS("[CONNECTOR:%d:%s] hdr_metadata_equal=false\n",
|
|
+ connector->base.id, connector->name);
|
|
+ } else {
|
|
+ DRM_DEBUG_KMS("[CONNECTOR:%d:%s] hdr_metadata_equal=true\n",
|
|
+ connector->base.id, connector->name);
|
|
}
|
|
|
|
return 0;
|
|
@@ -2433,6 +2454,9 @@ static void dw_hdmi_connector_force(struct drm_connector *connector)
|
|
struct dw_hdmi *hdmi = container_of(connector, struct dw_hdmi,
|
|
connector);
|
|
|
|
+ DRM_DEBUG_KMS("[CONNECTOR:%d:%s]\n",
|
|
+ connector->base.id, connector->name);
|
|
+
|
|
mutex_lock(&hdmi->mutex);
|
|
hdmi->force = connector->force;
|
|
dw_hdmi_update_power(hdmi);
|
|
diff --git a/drivers/video/hdmi.c b/drivers/video/hdmi.c
|
|
index b939bc28d886..b7800984b6e6 100644
|
|
--- a/drivers/video/hdmi.c
|
|
+++ b/drivers/video/hdmi.c
|
|
@@ -1419,6 +1419,27 @@ static void hdmi_audio_infoframe_log(const char *level,
|
|
frame->downmix_inhibit ? "Yes" : "No");
|
|
}
|
|
|
|
+static const char *
|
|
+hdmi_eotf_get_name(enum hdmi_eotf eotf)
|
|
+{
|
|
+ if (eotf < 0 || eotf > 7)
|
|
+ return "Invalid";
|
|
+
|
|
+ switch (eotf) {
|
|
+ case HDMI_EOTF_TRADITIONAL_GAMMA_SDR:
|
|
+ return "Traditional Gamma - SDR";
|
|
+ case HDMI_EOTF_TRADITIONAL_GAMMA_HDR:
|
|
+ return "Traditional Gamma - HDR";
|
|
+ case HDMI_EOTF_SMPTE_ST2084:
|
|
+ return "SMPTE ST 2084";
|
|
+ case HDMI_EOTF_BT_2100_HLG:
|
|
+ return "Hybrid Log-Gamma (HLG)";
|
|
+ default:
|
|
+ break;
|
|
+ }
|
|
+ return "Reserved";
|
|
+}
|
|
+
|
|
static void hdmi_drm_infoframe_log(const char *level,
|
|
struct device *dev,
|
|
const struct hdmi_drm_infoframe *frame)
|
|
@@ -1427,24 +1448,25 @@ static void hdmi_drm_infoframe_log(const char *level,
|
|
|
|
hdmi_infoframe_log_header(level, dev,
|
|
(struct hdmi_any_infoframe *)frame);
|
|
- hdmi_log("length: %d\n", frame->length);
|
|
- hdmi_log("metadata type: %d\n", frame->metadata_type);
|
|
- hdmi_log("eotf: %d\n", frame->eotf);
|
|
+ hdmi_log(" metadata type: %d\n", frame->metadata_type);
|
|
+ hdmi_log(" eotf: %s\n", hdmi_eotf_get_name(frame->eotf));
|
|
+
|
|
+ hdmi_log(" display primaries:\n");
|
|
for (i = 0; i < 3; i++) {
|
|
- hdmi_log("x[%d]: %d\n", i, frame->display_primaries[i].x);
|
|
- hdmi_log("y[%d]: %d\n", i, frame->display_primaries[i].y);
|
|
+ hdmi_log(" x[%d]: %d\n", i, frame->display_primaries[i].x);
|
|
+ hdmi_log(" y[%d]: %d\n", i, frame->display_primaries[i].y);
|
|
}
|
|
|
|
- hdmi_log("white point x: %d\n", frame->white_point.x);
|
|
- hdmi_log("white point y: %d\n", frame->white_point.y);
|
|
+ hdmi_log(" white point x: %d\n", frame->white_point.x);
|
|
+ hdmi_log(" white point y: %d\n", frame->white_point.y);
|
|
|
|
- hdmi_log("max_display_mastering_luminance: %d\n",
|
|
+ hdmi_log(" max display mastering luminance: %d\n",
|
|
frame->max_display_mastering_luminance);
|
|
- hdmi_log("min_display_mastering_luminance: %d\n",
|
|
+ hdmi_log(" min display mastering luminance: %d\n",
|
|
frame->min_display_mastering_luminance);
|
|
|
|
- hdmi_log("max_cll: %d\n", frame->max_cll);
|
|
- hdmi_log("max_fall: %d\n", frame->max_fall);
|
|
+ hdmi_log(" max cll: %d\n", frame->max_cll);
|
|
+ hdmi_log(" max fall: %d\n", frame->max_fall);
|
|
}
|
|
|
|
static const char *
|
|
|
|
From b7600b1f821f4f110b2068841df5229b7eca340c Mon Sep 17 00:00:00 2001
|
|
From: Jonas Karlman <jonas@kwiboo.se>
|
|
Date: Tue, 26 Feb 2019 20:45:14 +0000
|
|
Subject: [PATCH] WIP: dw-hdmi-cec: sleep 100ms on error
|
|
|
|
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
|
---
|
|
drivers/gpu/drm/bridge/synopsys/dw-hdmi-cec.c | 19 +++++++++++++++++--
|
|
1 file changed, 17 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-cec.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-cec.c
|
|
index 70ab4fbdc23e..f6a85f73b90d 100644
|
|
--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-cec.c
|
|
+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-cec.c
|
|
@@ -4,6 +4,7 @@
|
|
*
|
|
* Copyright (C) 2015-2017 Russell King.
|
|
*/
|
|
+#include <linux/delay.h>
|
|
#include <linux/interrupt.h>
|
|
#include <linux/io.h>
|
|
#include <linux/module.h>
|
|
@@ -129,8 +130,16 @@ static irqreturn_t dw_hdmi_cec_hardirq(int irq, void *data)
|
|
|
|
dw_hdmi_write(cec, stat, HDMI_IH_CEC_STAT0);
|
|
|
|
- if (stat & CEC_STAT_ERROR_INIT) {
|
|
- cec->tx_status = CEC_TX_STATUS_ERROR;
|
|
+ /*
|
|
+ * Status with both done and error_initiator bits have been seen
|
|
+ * on Rockchip RK3328 devices, transmit attempt seems to have failed
|
|
+ * when this happens, report as low drive and block cec-framework
|
|
+ * 100ms before core retransmits the failed message, this seems to
|
|
+ * mitigate the issue with failed transmit attempts.
|
|
+ */
|
|
+ if ((stat & (CEC_STAT_DONE|CEC_STAT_ERROR_INIT)) == (CEC_STAT_DONE|CEC_STAT_ERROR_INIT)) {
|
|
+ pr_info("dw_hdmi_cec_hardirq: stat=%02x LOW_DRIVE\n", stat);
|
|
+ cec->tx_status = CEC_TX_STATUS_LOW_DRIVE;
|
|
cec->tx_done = true;
|
|
ret = IRQ_WAKE_THREAD;
|
|
} else if (stat & CEC_STAT_DONE) {
|
|
@@ -141,6 +150,10 @@ static irqreturn_t dw_hdmi_cec_hardirq(int irq, void *data)
|
|
cec->tx_status = CEC_TX_STATUS_NACK;
|
|
cec->tx_done = true;
|
|
ret = IRQ_WAKE_THREAD;
|
|
+ } else if (stat & CEC_STAT_ERROR_INIT) {
|
|
+ cec->tx_status = CEC_TX_STATUS_ERROR;
|
|
+ cec->tx_done = true;
|
|
+ ret = IRQ_WAKE_THREAD;
|
|
}
|
|
|
|
if (stat & CEC_STAT_EOM) {
|
|
@@ -173,6 +186,8 @@ static irqreturn_t dw_hdmi_cec_thread(int irq, void *data)
|
|
|
|
if (cec->tx_done) {
|
|
cec->tx_done = false;
|
|
+ if (cec->tx_status == CEC_TX_STATUS_LOW_DRIVE)
|
|
+ msleep(100);
|
|
cec_transmit_attempt_done(adap, cec->tx_status);
|
|
}
|
|
if (cec->rx_done) {
|
|
|
|
From 1049f9202ff060e16121c74fb712daea48979e42 Mon Sep 17 00:00:00 2001
|
|
From: Jonas Karlman <jonas@kwiboo.se>
|
|
Date: Fri, 11 Oct 2019 08:01:37 +0000
|
|
Subject: [PATCH] mmc: dw_mmc: add power_off callback
|
|
|
|
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
|
---
|
|
drivers/mmc/host/dw_mmc.c | 3 +++
|
|
drivers/mmc/host/dw_mmc.h | 1 +
|
|
2 files changed, 4 insertions(+)
|
|
|
|
diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
|
|
index 79c55c7b4afd..84557cdecf2a 100644
|
|
--- a/drivers/mmc/host/dw_mmc.c
|
|
+++ b/drivers/mmc/host/dw_mmc.c
|
|
@@ -1493,6 +1493,9 @@ static void dw_mci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
|
|
regulator_disable(mmc->supply.vqmmc);
|
|
slot->host->vqmmc_enabled = false;
|
|
|
|
+ if (drv_data && drv_data->power_off)
|
|
+ drv_data->power_off(slot->host);
|
|
+
|
|
regs = mci_readl(slot->host, PWREN);
|
|
regs &= ~(1 << slot->id);
|
|
mci_writel(slot->host, PWREN, regs);
|
|
diff --git a/drivers/mmc/host/dw_mmc.h b/drivers/mmc/host/dw_mmc.h
|
|
index da5923a92e60..0b5c880364c5 100644
|
|
--- a/drivers/mmc/host/dw_mmc.h
|
|
+++ b/drivers/mmc/host/dw_mmc.h
|
|
@@ -563,5 +563,6 @@ struct dw_mci_drv_data {
|
|
struct mmc_ios *ios);
|
|
int (*switch_voltage)(struct mmc_host *mmc,
|
|
struct mmc_ios *ios);
|
|
+ void (*power_off)(struct dw_mci *host);
|
|
};
|
|
#endif /* _DW_MMC_H_ */
|
|
|
|
From 7f34988c4b1477568018aefdab4554f722985c29 Mon Sep 17 00:00:00 2001
|
|
From: Jonas Karlman <jonas@kwiboo.se>
|
|
Date: Fri, 11 Oct 2019 08:01:37 +0000
|
|
Subject: [PATCH] mmc: dw_mmc-rockchip: try set vqmmc regulator to 3.3V on
|
|
power_off
|
|
|
|
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
|
---
|
|
drivers/mmc/host/dw_mmc-rockchip.c | 27 +++++++++++++++++++++++++++
|
|
1 file changed, 27 insertions(+)
|
|
|
|
diff --git a/drivers/mmc/host/dw_mmc-rockchip.c b/drivers/mmc/host/dw_mmc-rockchip.c
|
|
index d4d02134848c..05410f90ddd3 100644
|
|
--- a/drivers/mmc/host/dw_mmc-rockchip.c
|
|
+++ b/drivers/mmc/host/dw_mmc-rockchip.c
|
|
@@ -24,6 +24,32 @@ struct dw_mci_rockchip_priv_data {
|
|
int num_phases;
|
|
};
|
|
|
|
+static void dw_mci_rk3288_power_off(struct dw_mci *host)
|
|
+{
|
|
+ struct mmc_host *mmc = host->slot->mmc;
|
|
+ struct mmc_ios *ios = &mmc->ios;
|
|
+ int old_signal_voltage;
|
|
+
|
|
+ if (IS_ERR(mmc->supply.vqmmc))
|
|
+ return;
|
|
+
|
|
+ if (mmc_host_is_spi(mmc))
|
|
+ return;
|
|
+
|
|
+ if (ios->vdd != 0 || ios->signal_voltage == MMC_SIGNAL_VOLTAGE_330)
|
|
+ return;
|
|
+
|
|
+ old_signal_voltage = ios->signal_voltage;
|
|
+
|
|
+ ios->signal_voltage = MMC_SIGNAL_VOLTAGE_330;
|
|
+ ios->vdd = fls(mmc->ocr_avail) - 1;
|
|
+
|
|
+ if (mmc_regulator_set_vqmmc(mmc, ios))
|
|
+ ios->signal_voltage = old_signal_voltage;
|
|
+
|
|
+ ios->vdd = 0;
|
|
+}
|
|
+
|
|
static void dw_mci_rk3288_set_ios(struct dw_mci *host, struct mmc_ios *ios)
|
|
{
|
|
struct dw_mci_rockchip_priv_data *priv = host->priv;
|
|
@@ -319,6 +345,7 @@ static const struct dw_mci_drv_data rk3288_drv_data = {
|
|
.execute_tuning = dw_mci_rk3288_execute_tuning,
|
|
.parse_dt = dw_mci_rk3288_parse_dt,
|
|
.init = dw_mci_rockchip_init,
|
|
+ .power_off = dw_mci_rk3288_power_off,
|
|
};
|
|
|
|
static const struct of_device_id dw_mci_rockchip_match[] = {
|
|
|
|
From 3c8a68bc5e967fc4dda3521d2b4da1bf8faa3433 Mon Sep 17 00:00:00 2001
|
|
From: Jonas Karlman <jonas@kwiboo.se>
|
|
Date: Fri, 11 Oct 2019 08:01:37 +0000
|
|
Subject: [PATCH] ARM: dts: rockchip: enable sd ultra-high speeds on
|
|
rk3288-tinker
|
|
|
|
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
|
---
|
|
arch/arm/boot/dts/rk3288-tinker.dtsi | 1 +
|
|
1 file changed, 1 insertion(+)
|
|
|
|
diff --git a/arch/arm/boot/dts/rk3288-tinker.dtsi b/arch/arm/boot/dts/rk3288-tinker.dtsi
|
|
index 312582c1bd37..67b32dc42220 100644
|
|
--- a/arch/arm/boot/dts/rk3288-tinker.dtsi
|
|
+++ b/arch/arm/boot/dts/rk3288-tinker.dtsi
|
|
@@ -461,6 +461,7 @@
|
|
disable-wp; /* wp not hooked up */
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd &sdmmc_bus4>;
|
|
+ sd-uhs-sdr104;
|
|
status = "okay";
|
|
vmmc-supply = <&vcc33_sd>;
|
|
vqmmc-supply = <&vccio_sd>;
|
|
|
|
From 5367c782727540abe1bcc683b6636e149a6d42bb Mon Sep 17 00:00:00 2001
|
|
From: Jonas Karlman <jonas@kwiboo.se>
|
|
Date: Sun, 8 Dec 2019 13:49:45 +0000
|
|
Subject: [PATCH] ARM: dts: rockchip: enable sd ultra-high speeds on
|
|
rk3288-miqi
|
|
|
|
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
|
---
|
|
arch/arm/boot/dts/rk3288-miqi.dts | 5 +++--
|
|
1 file changed, 3 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/arch/arm/boot/dts/rk3288-miqi.dts b/arch/arm/boot/dts/rk3288-miqi.dts
|
|
index c41d012c8850..820926e2feb1 100644
|
|
--- a/arch/arm/boot/dts/rk3288-miqi.dts
|
|
+++ b/arch/arm/boot/dts/rk3288-miqi.dts
|
|
@@ -60,7 +60,7 @@
|
|
|
|
vcc_sd: sdmmc-regulator {
|
|
compatible = "regulator-fixed";
|
|
- gpio = <&gpio7 RK_PB3 GPIO_ACTIVE_LOW>;
|
|
+ gpio = <&gpio7 RK_PB3 GPIO_ACTIVE_HIGH>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&sdmmc_pwr>;
|
|
regulator-name = "vcc_sd";
|
|
@@ -197,7 +197,7 @@
|
|
|
|
vccio_sd: REG5 {
|
|
regulator-name = "vccio_sd";
|
|
- regulator-min-microvolt = <3300000>;
|
|
+ regulator-min-microvolt = <1800000>;
|
|
regulator-max-microvolt = <3300000>;
|
|
regulator-always-on;
|
|
};
|
|
@@ -367,6 +367,7 @@
|
|
disable-wp;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&sdmmc_clk>, <&sdmmc_cmd>, <&sdmmc_cd>, <&sdmmc_bus4>;
|
|
+ sd-uhs-sdr104;
|
|
vmmc-supply = <&vcc_sd>;
|
|
vqmmc-supply = <&vccio_sd>;
|
|
status = "okay";
|
|
|
|
From 9ead96ca14f87ada8d9efcf11d2cd5446ab9f19f Mon Sep 17 00:00:00 2001
|
|
From: Jonas Karlman <jonas@kwiboo.se>
|
|
Date: Fri, 11 Oct 2019 08:01:37 +0000
|
|
Subject: [PATCH] arm64: dts: rockchip: enable sd ultra-high speeds on
|
|
rk3399-sapphire
|
|
|
|
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
|
---
|
|
arch/arm64/boot/dts/rockchip/rk3399-sapphire.dtsi | 3 ++-
|
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-sapphire.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-sapphire.dtsi
|
|
index 1bc1579674e5..0885d48011ab 100644
|
|
--- a/arch/arm64/boot/dts/rockchip/rk3399-sapphire.dtsi
|
|
+++ b/arch/arm64/boot/dts/rockchip/rk3399-sapphire.dtsi
|
|
@@ -77,7 +77,7 @@
|
|
gpio = <&gpio0 RK_PA1 GPIO_ACTIVE_HIGH>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&sdmmc0_pwr_h>;
|
|
- regulator-always-on;
|
|
+ regulator-boot-on;
|
|
regulator-max-microvolt = <3000000>;
|
|
regulator-min-microvolt = <3000000>;
|
|
regulator-name = "vcc3v0_sd";
|
|
@@ -540,6 +540,7 @@
|
|
max-frequency = <150000000>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd &sdmmc_bus4>;
|
|
+ sd-uhs-sdr104;
|
|
vmmc-supply = <&vcc3v0_sd>;
|
|
vqmmc-supply = <&vcc_sdio>;
|
|
status = "okay";
|
|
|
|
From 11c99ae278006552b2cb13306923d23a621b2d7c Mon Sep 17 00:00:00 2001
|
|
From: Jonas Karlman <jonas@kwiboo.se>
|
|
Date: Fri, 11 Oct 2019 08:01:37 +0000
|
|
Subject: [PATCH] arm64: dts: rockchip: enable sd ultra-high speeds on
|
|
rk3399-rock-pi-4
|
|
|
|
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
|
---
|
|
arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dts | 5 ++++-
|
|
1 file changed, 4 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dts b/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dts
|
|
index 45b6c0eeb5cd..a1c7bd7923c1 100644
|
|
--- a/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dts
|
|
+++ b/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dts
|
|
@@ -297,7 +297,7 @@
|
|
regulator-name = "vcc_sdio";
|
|
regulator-always-on;
|
|
regulator-boot-on;
|
|
- regulator-min-microvolt = <3000000>;
|
|
+ regulator-min-microvolt = <1800000>;
|
|
regulator-max-microvolt = <3000000>;
|
|
regulator-state-mem {
|
|
regulator-on-in-suspend;
|
|
@@ -597,6 +597,9 @@
|
|
max-frequency = <150000000>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&sdmmc_clk &sdmmc_cd &sdmmc_cmd &sdmmc_bus4>;
|
|
+ sd-uhs-sdr104;
|
|
+ vmmc-supply = <&vcc3v3_sys>;
|
|
+ vqmmc-supply = <&vcc_sdio>;
|
|
status = "okay";
|
|
};
|
|
|
|
|
|
From 78015f794ecb978667c7fff0de21202577a3138d Mon Sep 17 00:00:00 2001
|
|
From: Jonas Karlman <jonas@kwiboo.se>
|
|
Date: Fri, 11 Oct 2019 08:01:38 +0000
|
|
Subject: [PATCH] arm64: dts: rockchip: enable sd ultra-high speeds on
|
|
rk3399-rockpro64
|
|
|
|
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
|
---
|
|
arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dts | 22 ++++++++++++++++++++++
|
|
1 file changed, 22 insertions(+)
|
|
|
|
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dts b/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dts
|
|
index 94cc462e234d..cb5dfdf01c8b 100644
|
|
--- a/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dts
|
|
+++ b/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dts
|
|
@@ -112,6 +112,19 @@
|
|
vin-supply = <&vcc12v_dcin>;
|
|
};
|
|
|
|
+ vcc3v0_sd: vcc3v0-sd {
|
|
+ compatible = "regulator-fixed";
|
|
+ enable-active-high;
|
|
+ gpio = <&gpio0 RK_PA1 GPIO_ACTIVE_HIGH>;
|
|
+ pinctrl-names = "default";
|
|
+ pinctrl-0 = <&sdmmc0_pwr_h>;
|
|
+ regulator-boot-on;
|
|
+ regulator-max-microvolt = <3000000>;
|
|
+ regulator-min-microvolt = <3000000>;
|
|
+ regulator-name = "vcc3v0_sd";
|
|
+ vin-supply = <&vcc3v3_sys>;
|
|
+ };
|
|
+
|
|
vcc3v3_sys: vcc3v3-sys {
|
|
compatible = "regulator-fixed";
|
|
regulator-name = "vcc3v3_sys";
|
|
@@ -621,6 +634,12 @@
|
|
};
|
|
};
|
|
|
|
+ sd {
|
|
+ sdmmc0_pwr_h: sdmmc0-pwr-h {
|
|
+ rockchip,pins = <0 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none>;
|
|
+ };
|
|
+ };
|
|
+
|
|
sdio-pwrseq {
|
|
wifi_enable_h: wifi-enable-h {
|
|
rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
|
|
@@ -679,6 +698,9 @@
|
|
max-frequency = <150000000>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_bus4>;
|
|
+ sd-uhs-sdr104;
|
|
+ vmmc-supply = <&vcc3v0_sd>;
|
|
+ vqmmc-supply = <&vcc_sdio>;
|
|
status = "okay";
|
|
};
|
|
|
|
|
|
From eb402d16fa7afab11f7f0e1b50a1d33b33ee3b04 Mon Sep 17 00:00:00 2001
|
|
From: Jonas Karlman <jonas@kwiboo.se>
|
|
Date: Sun, 8 Dec 2019 13:27:12 +0000
|
|
Subject: [PATCH] ARM: dts: rockchip: fix sdmmc-regulator gpio warning on
|
|
rk3288-tinker
|
|
|
|
Fixes sdmmc-regulator GPIO handle specifies active low - ignored
|
|
|
|
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
|
---
|
|
arch/arm/boot/dts/rk3288-tinker.dtsi | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/arch/arm/boot/dts/rk3288-tinker.dtsi b/arch/arm/boot/dts/rk3288-tinker.dtsi
|
|
index 67b32dc42220..dc5b4d81a46c 100644
|
|
--- a/arch/arm/boot/dts/rk3288-tinker.dtsi
|
|
+++ b/arch/arm/boot/dts/rk3288-tinker.dtsi
|
|
@@ -98,7 +98,7 @@
|
|
|
|
vcc_sd: sdmmc-regulator {
|
|
compatible = "regulator-fixed";
|
|
- gpio = <&gpio7 11 GPIO_ACTIVE_LOW>;
|
|
+ gpio = <&gpio7 RK_PB3 GPIO_ACTIVE_HIGH>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&sdmmc_pwr>;
|
|
regulator-name = "vcc_sd";
|
|
|
|
From 5223d9a4ac373387728afd6ce726256dc112b1aa Mon Sep 17 00:00:00 2001
|
|
From: Jonas Karlman <jonas@kwiboo.se>
|
|
Date: Thu, 7 Feb 2019 22:03:38 +0000
|
|
Subject: [PATCH] ARM: dts: rockchip: rename hdmi sound card on rk3288-tinker
|
|
|
|
---
|
|
arch/arm/boot/dts/rk3288-tinker.dtsi | 3 +--
|
|
1 file changed, 1 insertion(+), 2 deletions(-)
|
|
|
|
diff --git a/arch/arm/boot/dts/rk3288-tinker.dtsi b/arch/arm/boot/dts/rk3288-tinker.dtsi
|
|
index dc5b4d81a46c..49b64f4908cd 100644
|
|
--- a/arch/arm/boot/dts/rk3288-tinker.dtsi
|
|
+++ b/arch/arm/boot/dts/rk3288-tinker.dtsi
|
|
@@ -75,7 +75,7 @@
|
|
sound {
|
|
compatible = "simple-audio-card";
|
|
simple-audio-card,format = "i2s";
|
|
- simple-audio-card,name = "rockchip,tinker-codec";
|
|
+ simple-audio-card,name = "HDMI";
|
|
simple-audio-card,mclk-fs = <512>;
|
|
|
|
simple-audio-card,codec {
|
|
@@ -352,7 +352,6 @@
|
|
};
|
|
|
|
&i2s {
|
|
- #sound-dai-cells = <0>;
|
|
status = "okay";
|
|
};
|
|
|
|
|
|
From 8b24454a201fa30041256e5be6e91751088321d2 Mon Sep 17 00:00:00 2001
|
|
From: Jonas Karlman <jonas@kwiboo.se>
|
|
Date: Sun, 8 Dec 2019 13:49:19 +0000
|
|
Subject: [PATCH] ARM: dts: rockchip: add hdmi sound node on rk3288-miqi
|
|
|
|
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
|
---
|
|
arch/arm/boot/dts/rk3288-miqi.dts | 19 +++++++++++++++++++
|
|
1 file changed, 19 insertions(+)
|
|
|
|
diff --git a/arch/arm/boot/dts/rk3288-miqi.dts b/arch/arm/boot/dts/rk3288-miqi.dts
|
|
index 820926e2feb1..0e17f66f142f 100644
|
|
--- a/arch/arm/boot/dts/rk3288-miqi.dts
|
|
+++ b/arch/arm/boot/dts/rk3288-miqi.dts
|
|
@@ -37,6 +37,21 @@
|
|
};
|
|
};
|
|
|
|
+ sound {
|
|
+ compatible = "simple-audio-card";
|
|
+ simple-audio-card,format = "i2s";
|
|
+ simple-audio-card,name = "HDMI";
|
|
+ simple-audio-card,mclk-fs = <512>;
|
|
+
|
|
+ simple-audio-card,codec {
|
|
+ sound-dai = <&hdmi>;
|
|
+ };
|
|
+
|
|
+ simple-audio-card,cpu {
|
|
+ sound-dai = <&i2s>;
|
|
+ };
|
|
+ };
|
|
+
|
|
vcc_flash: flash-regulator {
|
|
compatible = "regulator-fixed";
|
|
regulator-name = "vcc_flash";
|
|
@@ -267,6 +282,10 @@
|
|
status = "okay";
|
|
};
|
|
|
|
+&i2s {
|
|
+ status = "okay";
|
|
+};
|
|
+
|
|
&io_domains {
|
|
status = "okay";
|
|
|
|
|
|
From c3e9e866d19834f9537104d88d41add6d4636fbd Mon Sep 17 00:00:00 2001
|
|
From: Jonas Karlman <jonas@kwiboo.se>
|
|
Date: Mon, 2 Dec 2019 22:35:51 +0000
|
|
Subject: [PATCH] ARM: dts: rockchip: enable ARM Mali GPU on rk3288-miqi
|
|
|
|
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
|
---
|
|
arch/arm/boot/dts/rk3288-miqi.dts | 5 +++++
|
|
1 file changed, 5 insertions(+)
|
|
|
|
diff --git a/arch/arm/boot/dts/rk3288-miqi.dts b/arch/arm/boot/dts/rk3288-miqi.dts
|
|
index 0e17f66f142f..2bee891466f5 100644
|
|
--- a/arch/arm/boot/dts/rk3288-miqi.dts
|
|
+++ b/arch/arm/boot/dts/rk3288-miqi.dts
|
|
@@ -126,6 +126,11 @@
|
|
status = "ok";
|
|
};
|
|
|
|
+&gpu {
|
|
+ mali-supply = <&vdd_gpu>;
|
|
+ status = "okay";
|
|
+};
|
|
+
|
|
&hdmi {
|
|
ddc-i2c-bus = <&i2c5>;
|
|
status = "okay";
|
|
|
|
From f739f3c0c7d161d8e5871b7a1a88c24a82aa4b88 Mon Sep 17 00:00:00 2001
|
|
From: Jonas Karlman <jonas@kwiboo.se>
|
|
Date: Sat, 14 Dec 2019 01:43:17 +0000
|
|
Subject: [PATCH] ARM: dts: rockchip: enable cec on rk3288-miqi
|
|
|
|
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
|
---
|
|
arch/arm/boot/dts/rk3288-miqi.dts | 2 ++
|
|
1 file changed, 2 insertions(+)
|
|
|
|
diff --git a/arch/arm/boot/dts/rk3288-miqi.dts b/arch/arm/boot/dts/rk3288-miqi.dts
|
|
index 2bee891466f5..8428095934f5 100644
|
|
--- a/arch/arm/boot/dts/rk3288-miqi.dts
|
|
+++ b/arch/arm/boot/dts/rk3288-miqi.dts
|
|
@@ -133,6 +133,8 @@
|
|
|
|
&hdmi {
|
|
ddc-i2c-bus = <&i2c5>;
|
|
+ pinctrl-names = "default";
|
|
+ pinctrl-0 = <&hdmi_cec_c0>;
|
|
status = "okay";
|
|
};
|
|
|
|
|
|
From dce595c5d710722ab0822babc34a7391a212b892 Mon Sep 17 00:00:00 2001
|
|
From: Jonas Karlman <jonas@kwiboo.se>
|
|
Date: Sun, 10 Mar 2019 19:18:36 +0000
|
|
Subject: [PATCH] arm64: dts: rockchip: remove dc_12v regulator on
|
|
rk3328-roc-cc
|
|
|
|
Remove unnecessary dc_12v regulator node on ROC-RK3328-CC,
|
|
the device uses 5v micro-usb as power input.
|
|
|
|
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
|
---
|
|
arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts | 10 ----------
|
|
1 file changed, 10 deletions(-)
|
|
|
|
diff --git a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
|
index 8d553c92182a..c4d908bcc82c 100644
|
|
--- a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
|
+++ b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
|
@@ -21,15 +21,6 @@
|
|
#clock-cells = <0>;
|
|
};
|
|
|
|
- dc_12v: dc-12v {
|
|
- compatible = "regulator-fixed";
|
|
- regulator-name = "dc_12v";
|
|
- regulator-always-on;
|
|
- regulator-boot-on;
|
|
- regulator-min-microvolt = <12000000>;
|
|
- regulator-max-microvolt = <12000000>;
|
|
- };
|
|
-
|
|
vcc_sd: sdmmc-regulator {
|
|
compatible = "regulator-fixed";
|
|
gpio = <&gpio0 RK_PD6 GPIO_ACTIVE_LOW>;
|
|
@@ -73,7 +64,6 @@
|
|
regulator-boot-on;
|
|
regulator-min-microvolt = <5000000>;
|
|
regulator-max-microvolt = <5000000>;
|
|
- vin-supply = <&dc_12v>;
|
|
};
|
|
|
|
vcc_phy: vcc-phy-regulator {
|
|
|
|
From f59828517488e7138ea0eca41bafa6fc53f688d3 Mon Sep 17 00:00:00 2001
|
|
From: Jonas Karlman <jonas@kwiboo.se>
|
|
Date: Sun, 10 Mar 2019 19:23:58 +0000
|
|
Subject: [PATCH] arm64: dts: rockchip: add ir-receiver node on rk3328-roc-cc
|
|
|
|
Add ir-receiver node to enable on-board IR on ROC-RK3328-CC.
|
|
|
|
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
|
---
|
|
arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts | 13 +++++++++++++
|
|
1 file changed, 13 insertions(+)
|
|
|
|
diff --git a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
|
index c4d908bcc82c..5a4aadffe9de 100644
|
|
--- a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
|
+++ b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
|
@@ -73,6 +73,13 @@
|
|
regulator-boot-on;
|
|
};
|
|
|
|
+ ir-receiver {
|
|
+ compatible = "gpio-ir-receiver";
|
|
+ gpios = <&gpio2 RK_PA2 GPIO_ACTIVE_LOW>;
|
|
+ pinctrl-0 = <&ir_int>;
|
|
+ pinctrl-names = "default";
|
|
+ };
|
|
+
|
|
leds {
|
|
compatible = "gpio-leds";
|
|
|
|
@@ -273,6 +280,12 @@
|
|
};
|
|
|
|
&pinctrl {
|
|
+ ir {
|
|
+ ir_int: ir-int {
|
|
+ rockchip,pins = <2 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>;
|
|
+ };
|
|
+ };
|
|
+
|
|
pmic {
|
|
pmic_int_l: pmic-int-l {
|
|
rockchip,pins = <1 RK_PD0 RK_FUNC_GPIO &pcfg_pull_up>;
|
|
|
|
From 5ab890de1f359005a444e5c943c167ebeea7036d Mon Sep 17 00:00:00 2001
|
|
From: Jonas Karlman <jonas@kwiboo.se>
|
|
Date: Sun, 24 Mar 2019 11:20:51 +0000
|
|
Subject: [PATCH] arm64: dts: rockchip: set tshut mode and priority on
|
|
rk3328-roc-cc
|
|
|
|
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
|
---
|
|
arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts | 2 ++
|
|
1 file changed, 2 insertions(+)
|
|
|
|
diff --git a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
|
index 5a4aadffe9de..71f3cd206e13 100644
|
|
--- a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
|
+++ b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
|
@@ -317,6 +317,8 @@
|
|
};
|
|
|
|
&tsadc {
|
|
+ rockchip,hw-tshut-mode = <0>;
|
|
+ rockchip,hw-tshut-polarity = <0>;
|
|
status = "okay";
|
|
};
|
|
|
|
|
|
From 55b198e3fbb9504c82b9078b4a0f46d971b3fc30 Mon Sep 17 00:00:00 2001
|
|
From: Jonas Karlman <jonas@kwiboo.se>
|
|
Date: Sun, 24 Mar 2019 11:22:06 +0000
|
|
Subject: [PATCH] arm64: dts: rockchip: rename vcc_sdio regulator on
|
|
rk3328-roc-cc
|
|
|
|
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
|
---
|
|
arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts | 8 ++++----
|
|
1 file changed, 4 insertions(+), 4 deletions(-)
|
|
|
|
diff --git a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
|
index 71f3cd206e13..95ff8f60e21f 100644
|
|
--- a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
|
+++ b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
|
@@ -33,12 +33,12 @@
|
|
vin-supply = <&vcc_io>;
|
|
};
|
|
|
|
- vcc_sdio: sdmmcio-regulator {
|
|
+ vccio_sd: sdmmcio-regulator {
|
|
compatible = "regulator-gpio";
|
|
gpios = <&grf_gpio 0 GPIO_ACTIVE_HIGH>;
|
|
states = <1800000 0x1
|
|
3300000 0x0>;
|
|
- regulator-name = "vcc_sdio";
|
|
+ regulator-name = "vccio_sd";
|
|
regulator-type = "voltage";
|
|
regulator-min-microvolt = <1800000>;
|
|
regulator-max-microvolt = <3300000>;
|
|
@@ -272,7 +272,7 @@
|
|
|
|
vccio1-supply = <&vcc_io>;
|
|
vccio2-supply = <&vcc18_emmc>;
|
|
- vccio3-supply = <&vcc_sdio>;
|
|
+ vccio3-supply = <&vccio_sd>;
|
|
vccio4-supply = <&vcc_18>;
|
|
vccio5-supply = <&vcc_io>;
|
|
vccio6-supply = <&vcc_io>;
|
|
@@ -312,7 +312,7 @@
|
|
sd-uhs-sdr50;
|
|
sd-uhs-sdr104;
|
|
vmmc-supply = <&vcc_sd>;
|
|
- vqmmc-supply = <&vcc_sdio>;
|
|
+ vqmmc-supply = <&vccio_sd>;
|
|
status = "okay";
|
|
};
|
|
|
|
|
|
From b68df691924fc0ed7edd6cefd4067836e5a1641d Mon Sep 17 00:00:00 2001
|
|
From: Jonas Karlman <jonas@kwiboo.se>
|
|
Date: Sun, 24 Mar 2019 17:18:39 +0000
|
|
Subject: [PATCH] arm64: dts: rockchip: use recommended regulator limits on
|
|
rk3328-roc-cc
|
|
|
|
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
|
---
|
|
arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts | 10 ++++++----
|
|
1 file changed, 6 insertions(+), 4 deletions(-)
|
|
|
|
diff --git a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
|
index 95ff8f60e21f..35d1f89f844c 100644
|
|
--- a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
|
+++ b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
|
@@ -185,8 +185,9 @@
|
|
regulators {
|
|
vdd_logic: DCDC_REG1 {
|
|
regulator-name = "vdd_logic";
|
|
- regulator-min-microvolt = <712500>;
|
|
- regulator-max-microvolt = <1450000>;
|
|
+ regulator-min-microvolt = <900000>;
|
|
+ regulator-max-microvolt = <1150000>;
|
|
+ regulator-ramp-delay = <12500>;
|
|
regulator-always-on;
|
|
regulator-boot-on;
|
|
regulator-state-mem {
|
|
@@ -197,8 +198,9 @@
|
|
|
|
vdd_arm: DCDC_REG2 {
|
|
regulator-name = "vdd_arm";
|
|
- regulator-min-microvolt = <712500>;
|
|
- regulator-max-microvolt = <1450000>;
|
|
+ regulator-min-microvolt = <950000>;
|
|
+ regulator-max-microvolt = <1350000>;
|
|
+ regulator-ramp-delay = <12500>;
|
|
regulator-always-on;
|
|
regulator-boot-on;
|
|
regulator-state-mem {
|
|
|
|
From 9fc354e0dab08c429a22caa6fd988cbb985264a7 Mon Sep 17 00:00:00 2001
|
|
From: Jonas Karlman <jonas@kwiboo.se>
|
|
Date: Sun, 21 Apr 2019 10:28:27 +0000
|
|
Subject: [PATCH] arm64: dts: rockchip: use recommended regulator limits on
|
|
rk3328-rock64
|
|
|
|
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
|
---
|
|
arch/arm64/boot/dts/rockchip/rk3328-rock64.dts | 8 ++++----
|
|
1 file changed, 4 insertions(+), 4 deletions(-)
|
|
|
|
diff --git a/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts b/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts
|
|
index 62936b432f9a..3725fcc7bb38 100644
|
|
--- a/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts
|
|
+++ b/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts
|
|
@@ -193,8 +193,8 @@
|
|
regulators {
|
|
vdd_logic: DCDC_REG1 {
|
|
regulator-name = "vdd_logic";
|
|
- regulator-min-microvolt = <712500>;
|
|
- regulator-max-microvolt = <1450000>;
|
|
+ regulator-min-microvolt = <900000>;
|
|
+ regulator-max-microvolt = <1150000>;
|
|
regulator-ramp-delay = <12500>;
|
|
regulator-always-on;
|
|
regulator-boot-on;
|
|
@@ -206,8 +206,8 @@
|
|
|
|
vdd_arm: DCDC_REG2 {
|
|
regulator-name = "vdd_arm";
|
|
- regulator-min-microvolt = <712500>;
|
|
- regulator-max-microvolt = <1450000>;
|
|
+ regulator-min-microvolt = <950000>;
|
|
+ regulator-max-microvolt = <1350000>;
|
|
regulator-ramp-delay = <12500>;
|
|
regulator-always-on;
|
|
regulator-boot-on;
|
|
|
|
From ac5895218077c56eb1eb3ca7d32429bd5f48250d Mon Sep 17 00:00:00 2001
|
|
From: Jonas Karlman <jonas@kwiboo.se>
|
|
Date: Sun, 24 Mar 2019 11:23:55 +0000
|
|
Subject: [PATCH] arm64: dts: rockchip: fix vccio4-supply on rk3328-roc-cc
|
|
|
|
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
|
---
|
|
arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
|
index 35d1f89f844c..dd18510fa473 100644
|
|
--- a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
|
+++ b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
|
@@ -275,7 +275,7 @@
|
|
vccio1-supply = <&vcc_io>;
|
|
vccio2-supply = <&vcc18_emmc>;
|
|
vccio3-supply = <&vccio_sd>;
|
|
- vccio4-supply = <&vcc_18>;
|
|
+ vccio4-supply = <&vcc_io>;
|
|
vccio5-supply = <&vcc_io>;
|
|
vccio6-supply = <&vcc_io>;
|
|
pmuio-supply = <&vcc_io>;
|
|
|
|
From ccd937acdd96bcae396d0e5b1167f79d3a6a118b Mon Sep 17 00:00:00 2001
|
|
From: Jonas Karlman <jonas@kwiboo.se>
|
|
Date: Sun, 21 Apr 2019 18:13:30 +0000
|
|
Subject: [PATCH] arm64: dts: rockchip: fix vccio4-supply on rk3328-rock64
|
|
|
|
---
|
|
arch/arm64/boot/dts/rockchip/rk3328-rock64.dts | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts b/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts
|
|
index 3725fcc7bb38..1af6c56a4451 100644
|
|
--- a/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts
|
|
+++ b/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts
|
|
@@ -295,7 +295,7 @@
|
|
vccio1-supply = <&vcc_io>;
|
|
vccio2-supply = <&vcc18_emmc>;
|
|
vccio3-supply = <&vcc_io>;
|
|
- vccio4-supply = <&vcc_18>;
|
|
+ vccio4-supply = <&vcc_io>;
|
|
vccio5-supply = <&vcc_io>;
|
|
vccio6-supply = <&vcc_io>;
|
|
pmuio-supply = <&vcc_io>;
|
|
|
|
From 2bc8ee6ca6ba413a4952c2d54c479a0ddd83ba99 Mon Sep 17 00:00:00 2001
|
|
From: Jonas Karlman <jonas@kwiboo.se>
|
|
Date: Sun, 21 Apr 2019 18:07:33 +0000
|
|
Subject: [PATCH] arm64: dts: rockchip: fix fixed-regulator gpio warning on
|
|
rk3328
|
|
|
|
---
|
|
arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts | 2 +-
|
|
arch/arm64/boot/dts/rockchip/rk3328-rock64.dts | 6 +++---
|
|
2 files changed, 4 insertions(+), 4 deletions(-)
|
|
|
|
diff --git a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
|
index dd18510fa473..48695a2dce7d 100644
|
|
--- a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
|
+++ b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
|
@@ -23,7 +23,7 @@
|
|
|
|
vcc_sd: sdmmc-regulator {
|
|
compatible = "regulator-fixed";
|
|
- gpio = <&gpio0 RK_PD6 GPIO_ACTIVE_LOW>;
|
|
+ gpio = <&gpio0 RK_PD6 GPIO_ACTIVE_HIGH>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&sdmmc0m1_gpio>;
|
|
regulator-boot-on;
|
|
diff --git a/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts b/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts
|
|
index 1af6c56a4451..7cca8808257e 100644
|
|
--- a/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts
|
|
+++ b/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts
|
|
@@ -23,7 +23,7 @@
|
|
|
|
vcc_sd: sdmmc-regulator {
|
|
compatible = "regulator-fixed";
|
|
- gpio = <&gpio0 RK_PD6 GPIO_ACTIVE_LOW>;
|
|
+ gpio = <&gpio0 RK_PD6 GPIO_ACTIVE_HIGH>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&sdmmc0m1_gpio>;
|
|
regulator-name = "vcc_sd";
|
|
@@ -34,7 +34,7 @@
|
|
|
|
vcc_host_5v: vcc-host-5v-regulator {
|
|
compatible = "regulator-fixed";
|
|
- gpio = <&gpio0 RK_PA2 GPIO_ACTIVE_LOW>;
|
|
+ gpio = <&gpio0 RK_PA2 GPIO_ACTIVE_HIGH>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&usb20_host_drv>;
|
|
regulator-name = "vcc_host_5v";
|
|
@@ -45,7 +45,7 @@
|
|
|
|
vcc_host1_5v: vcc_otg_5v: vcc-host1-5v-regulator {
|
|
compatible = "regulator-fixed";
|
|
- gpio = <&gpio0 RK_PA2 GPIO_ACTIVE_LOW>;
|
|
+ gpio = <&gpio0 RK_PA2 GPIO_ACTIVE_HIGH>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&usb20_host_drv>;
|
|
regulator-name = "vcc_host1_5v";
|
|
|
|
From 6e5c4c41e6ee9586086eec859a3f9ee60d92af74 Mon Sep 17 00:00:00 2001
|
|
From: Jonas Karlman <jonas@kwiboo.se>
|
|
Date: Sun, 17 Mar 2019 22:38:09 +0000
|
|
Subject: [PATCH] arm64: dts: rockchip: update gpu node on rk3328
|
|
|
|
---
|
|
arch/arm64/boot/dts/rockchip/rk3328.dtsi | 7 +++++++
|
|
1 file changed, 7 insertions(+)
|
|
|
|
diff --git a/arch/arm64/boot/dts/rockchip/rk3328.dtsi b/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
|
index 91306ebed4da..f657cf2d5e25 100644
|
|
--- a/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
|
+++ b/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
|
@@ -302,6 +302,10 @@
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
+ pd_gpu@RK3328_PD_GPU {
|
|
+ reg = <RK3328_PD_GPU>;
|
|
+ clocks = <&cru ACLK_GPU>;
|
|
+ };
|
|
pd_hevc@RK3328_PD_HEVC {
|
|
reg = <RK3328_PD_HEVC>;
|
|
};
|
|
@@ -604,6 +608,7 @@
|
|
"ppmmu1";
|
|
clocks = <&cru ACLK_GPU>, <&cru ACLK_GPU>;
|
|
clock-names = "bus", "core";
|
|
+ power-domains = <&power RK3328_PD_GPU>;
|
|
resets = <&cru SRST_GPU_A>;
|
|
};
|
|
|
|
@@ -776,6 +781,7 @@
|
|
<&cru ACLK_BUS_PRE>, <&cru HCLK_BUS_PRE>,
|
|
<&cru PCLK_BUS_PRE>, <&cru ACLK_PERI_PRE>,
|
|
<&cru HCLK_PERI>, <&cru PCLK_PERI>,
|
|
+ <&cru ACLK_GPU>,
|
|
<&cru SCLK_RTC32K>;
|
|
assigned-clock-parents =
|
|
<&cru HDMIPHY>, <&cru PLL_APLL>,
|
|
@@ -797,6 +803,7 @@
|
|
<150000000>, <75000000>,
|
|
<75000000>, <150000000>,
|
|
<75000000>, <75000000>,
|
|
+ <500000000>,
|
|
<32768>;
|
|
};
|
|
|
|
|
|
From 93803f46bd9c73fdc0d7743a87d08dfc04ba77d8 Mon Sep 17 00:00:00 2001
|
|
From: Jonas Karlman <jonas@kwiboo.se>
|
|
Date: Sun, 8 Dec 2019 23:12:19 +0000
|
|
Subject: [PATCH] arm64: dts: rockchip: add spdif audio pipeline on rk3328
|
|
|
|
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
|
---
|
|
arch/arm64/boot/dts/rockchip/rk3328.dtsi | 20 ++++++++++++++++++++
|
|
1 file changed, 20 insertions(+)
|
|
|
|
diff --git a/arch/arm64/boot/dts/rockchip/rk3328.dtsi b/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
|
index f657cf2d5e25..635f68fdc85c 100644
|
|
--- a/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
|
+++ b/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
|
@@ -193,6 +193,26 @@
|
|
method = "smc";
|
|
};
|
|
|
|
+ spdif_out: spdif-out {
|
|
+ compatible = "linux,spdif-dit";
|
|
+ #sound-dai-cells = <0>;
|
|
+ status = "disabled";
|
|
+ };
|
|
+
|
|
+ spdif_sound: spdif-sound {
|
|
+ compatible = "simple-audio-card";
|
|
+ simple-audio-card,name = "SPDIF";
|
|
+ status = "disabled";
|
|
+
|
|
+ simple-audio-card,cpu {
|
|
+ sound-dai = <&spdif>;
|
|
+ };
|
|
+
|
|
+ simple-audio-card,codec {
|
|
+ sound-dai = <&spdif_out>;
|
|
+ };
|
|
+ };
|
|
+
|
|
timer {
|
|
compatible = "arm,armv8-timer";
|
|
interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
|
|
|
|
From e995edc74331d837d807bbfc67e2023456a43be9 Mon Sep 17 00:00:00 2001
|
|
From: Jonas Karlman <jonas@kwiboo.se>
|
|
Date: Tue, 19 Mar 2019 22:18:47 +0000
|
|
Subject: [PATCH] arm64: dts: rockchip: enable sound nodes on rk3328-roc-cc
|
|
|
|
---
|
|
arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts | 33 ++++++++++++++++++++++++++
|
|
1 file changed, 33 insertions(+)
|
|
|
|
diff --git a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
|
index 48695a2dce7d..a340a23cf073 100644
|
|
--- a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
|
+++ b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
|
@@ -101,6 +101,14 @@
|
|
};
|
|
};
|
|
|
|
+&analog_sound {
|
|
+ status = "okay";
|
|
+};
|
|
+
|
|
+&codec {
|
|
+ status = "okay";
|
|
+};
|
|
+
|
|
&cpu0 {
|
|
cpu-supply = <&vdd_arm>;
|
|
};
|
|
@@ -158,6 +166,10 @@
|
|
status = "okay";
|
|
};
|
|
|
|
+&hdmi_sound {
|
|
+ status = "okay";
|
|
+};
|
|
+
|
|
&i2c1 {
|
|
status = "okay";
|
|
|
|
@@ -269,6 +281,14 @@
|
|
};
|
|
};
|
|
|
|
+&i2s0 {
|
|
+ status = "okay";
|
|
+};
|
|
+
|
|
+&i2s1 {
|
|
+ status = "okay";
|
|
+};
|
|
+
|
|
&io_domains {
|
|
status = "okay";
|
|
|
|
@@ -318,6 +338,19 @@
|
|
status = "okay";
|
|
};
|
|
|
|
+&spdif {
|
|
+ pinctrl-0 = <&spdifm0_tx>;
|
|
+ status = "okay";
|
|
+};
|
|
+
|
|
+&spdif_out {
|
|
+ status = "okay";
|
|
+};
|
|
+
|
|
+&spdif_sound {
|
|
+ status = "okay";
|
|
+};
|
|
+
|
|
&tsadc {
|
|
rockchip,hw-tshut-mode = <0>;
|
|
rockchip,hw-tshut-polarity = <0>;
|
|
|
|
From 764e6cf1c0ffcfdbac7a259bc3ce4a7c4f221f75 Mon Sep 17 00:00:00 2001
|
|
From: Jonas Karlman <jonas@kwiboo.se>
|
|
Date: Sun, 29 Dec 2019 22:13:22 +0000
|
|
Subject: [PATCH] arm64: dts: rockchip: add mmc reset on rk3328
|
|
|
|
---
|
|
arch/arm64/boot/dts/rockchip/rk3328.dtsi | 6 ++++++
|
|
1 file changed, 6 insertions(+)
|
|
|
|
diff --git a/arch/arm64/boot/dts/rockchip/rk3328.dtsi b/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
|
index 635f68fdc85c..3c50c11c2e5b 100644
|
|
--- a/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
|
+++ b/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
|
@@ -873,6 +873,8 @@
|
|
clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
|
|
fifo-depth = <0x100>;
|
|
max-frequency = <150000000>;
|
|
+ resets = <&cru SRST_MMC0>;
|
|
+ reset-names = "reset";
|
|
status = "disabled";
|
|
};
|
|
|
|
@@ -885,6 +887,8 @@
|
|
clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
|
|
fifo-depth = <0x100>;
|
|
max-frequency = <150000000>;
|
|
+ resets = <&cru SRST_SDIO>;
|
|
+ reset-names = "reset";
|
|
status = "disabled";
|
|
};
|
|
|
|
@@ -897,6 +901,8 @@
|
|
clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
|
|
fifo-depth = <0x100>;
|
|
max-frequency = <150000000>;
|
|
+ resets = <&cru SRST_EMMC>;
|
|
+ reset-names = "reset";
|
|
status = "disabled";
|
|
};
|
|
|
|
|
|
From 480b56effc7d96a1f87ee50e055ba2936fdad1f8 Mon Sep 17 00:00:00 2001
|
|
From: Jonas Karlman <jonas@kwiboo.se>
|
|
Date: Sun, 29 Dec 2019 22:14:02 +0000
|
|
Subject: [PATCH] arm64: dts: rockchip: add sdmmc_ext node on rk3328
|
|
|
|
---
|
|
arch/arm64/boot/dts/rockchip/rk3328.dtsi | 14 ++++++++++++++
|
|
1 file changed, 14 insertions(+)
|
|
|
|
diff --git a/arch/arm64/boot/dts/rockchip/rk3328.dtsi b/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
|
index 3c50c11c2e5b..1c8057c7bcd3 100644
|
|
--- a/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
|
+++ b/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
|
@@ -1001,6 +1001,20 @@
|
|
status = "disabled";
|
|
};
|
|
|
|
+ sdmmc_ext: dwmmc@ff5f0000 {
|
|
+ compatible = "rockchip,rk3328-dw-mshc", "rockchip,rk3288-dw-mshc";
|
|
+ reg = <0x0 0xff5f0000 0x0 0x4000>;
|
|
+ interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
|
|
+ clocks = <&cru HCLK_SDMMC_EXT>, <&cru SCLK_SDMMC_EXT>,
|
|
+ <&cru SCLK_SDMMC_EXT_DRV>, <&cru SCLK_SDMMC_EXT_SAMPLE>;
|
|
+ clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
|
|
+ fifo-depth = <0x100>;
|
|
+ max-frequency = <150000000>;
|
|
+ resets = <&cru SRST_SDMMCEXT>;
|
|
+ reset-names = "reset";
|
|
+ status = "disabled";
|
|
+ };
|
|
+
|
|
gic: interrupt-controller@ff811000 {
|
|
compatible = "arm,gic-400";
|
|
#interrupt-cells = <3>;
|
|
|
|
From a0799da14605e46f6231713438bb7f7c85c2380a Mon Sep 17 00:00:00 2001
|
|
From: Jonas Karlman <jonas@kwiboo.se>
|
|
Date: Sun, 29 Dec 2019 22:14:36 +0000
|
|
Subject: [PATCH] WIP: arm64: dts: rockchip: add rkvdec power domain on rk3328
|
|
|
|
---
|
|
arch/arm64/boot/dts/rockchip/rk3328.dtsi | 5 +++++
|
|
1 file changed, 5 insertions(+)
|
|
|
|
diff --git a/arch/arm64/boot/dts/rockchip/rk3328.dtsi b/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
|
index 1c8057c7bcd3..8c9b7c3fcee4 100644
|
|
--- a/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
|
+++ b/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
|
@@ -331,6 +331,10 @@
|
|
};
|
|
pd_video@RK3328_PD_VIDEO {
|
|
reg = <RK3328_PD_VIDEO>;
|
|
+ clocks = <&cru ACLK_RKVDEC>,
|
|
+ <&cru HCLK_RKVDEC>,
|
|
+ <&cru SCLK_VDEC_CABAC>,
|
|
+ <&cru SCLK_VDEC_CORE>;
|
|
};
|
|
pd_vpu@RK3328_PD_VPU {
|
|
reg = <RK3328_PD_VPU>;
|
|
@@ -684,6 +688,7 @@
|
|
clocks = <&cru ACLK_RKVDEC>, <&cru HCLK_RKVDEC>;
|
|
clock-names = "aclk", "iface";
|
|
#iommu-cells = <0>;
|
|
+ power-domains = <&power RK3328_PD_VIDEO>;
|
|
status = "disabled";
|
|
};
|
|
|
|
|
|
From fcf70287f2f099becba6d8374ad2d027bea0137d Mon Sep 17 00:00:00 2001
|
|
From: Jonas Karlman <jonas@kwiboo.se>
|
|
Date: Sun, 8 Dec 2019 23:23:41 +0000
|
|
Subject: [PATCH] WIP: arm64: dts: rockchip: split sound cards on rk3328-rock64
|
|
|
|
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
|
---
|
|
arch/arm64/boot/dts/rockchip/rk3328-rock64.dts | 54 +++++++++-----------------
|
|
1 file changed, 18 insertions(+), 36 deletions(-)
|
|
|
|
diff --git a/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts b/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts
|
|
index 7cca8808257e..e926616b4a0c 100644
|
|
--- a/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts
|
|
+++ b/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts
|
|
@@ -83,34 +83,14 @@
|
|
linux,default-trigger = "heartbeat";
|
|
};
|
|
};
|
|
+};
|
|
|
|
- sound {
|
|
- compatible = "audio-graph-card";
|
|
- label = "rockchip,rk3328";
|
|
- dais = <&i2s1_p0
|
|
- &spdif_p0>;
|
|
- };
|
|
-
|
|
- spdif-dit {
|
|
- compatible = "linux,spdif-dit";
|
|
- #sound-dai-cells = <0>;
|
|
-
|
|
- port {
|
|
- dit_p0_0: endpoint {
|
|
- remote-endpoint = <&spdif_p0_0>;
|
|
- };
|
|
- };
|
|
- };
|
|
+&analog_sound {
|
|
+ status = "okay";
|
|
};
|
|
|
|
&codec {
|
|
status = "okay";
|
|
-
|
|
- port@0 {
|
|
- codec_p0_0: endpoint {
|
|
- remote-endpoint = <&i2s1_p0_0>;
|
|
- };
|
|
- };
|
|
};
|
|
|
|
&cpu0 {
|
|
@@ -166,6 +146,10 @@
|
|
status = "okay";
|
|
};
|
|
|
|
+&hdmi_sound {
|
|
+ status = "okay";
|
|
+};
|
|
+
|
|
&i2c1 {
|
|
status = "okay";
|
|
|
|
@@ -277,16 +261,12 @@
|
|
};
|
|
};
|
|
|
|
-&i2s1 {
|
|
+&i2s0 {
|
|
status = "okay";
|
|
+};
|
|
|
|
- i2s1_p0: port {
|
|
- i2s1_p0_0: endpoint {
|
|
- dai-format = "i2s";
|
|
- mclk-fs = <256>;
|
|
- remote-endpoint = <&codec_p0_0>;
|
|
- };
|
|
- };
|
|
+&i2s1 {
|
|
+ status = "okay";
|
|
};
|
|
|
|
&io_domains {
|
|
@@ -336,12 +316,14 @@
|
|
&spdif {
|
|
pinctrl-0 = <&spdifm0_tx>;
|
|
status = "okay";
|
|
+};
|
|
|
|
- spdif_p0: port {
|
|
- spdif_p0_0: endpoint {
|
|
- remote-endpoint = <&dit_p0_0>;
|
|
- };
|
|
- };
|
|
+&spdif_out {
|
|
+ status = "okay";
|
|
+};
|
|
+
|
|
+&spdif_sound {
|
|
+ status = "okay";
|
|
};
|
|
|
|
&spi0 {
|
|
|
|
From d27f74c86a2d224e47e2af26c2aadeda229e240d Mon Sep 17 00:00:00 2001
|
|
From: Jonas Karlman <jonas@kwiboo.se>
|
|
Date: Sun, 8 Dec 2019 23:26:37 +0000
|
|
Subject: [PATCH] WIP: arm64: dts: rockchip: add mali-supply on rk3328-rock64
|
|
and rk3328-roc-cc
|
|
|
|
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
|
---
|
|
arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts | 4 ++++
|
|
arch/arm64/boot/dts/rockchip/rk3328-rock64.dts | 4 ++++
|
|
2 files changed, 8 insertions(+)
|
|
|
|
diff --git a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
|
index a340a23cf073..3e564ba682b6 100644
|
|
--- a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
|
+++ b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
|
@@ -158,6 +158,10 @@
|
|
status = "okay";
|
|
};
|
|
|
|
+&gpu {
|
|
+ mali-supply = <&vdd_logic>;
|
|
+};
|
|
+
|
|
&hdmi {
|
|
status = "okay";
|
|
};
|
|
diff --git a/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts b/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts
|
|
index e926616b4a0c..9023f311f89b 100644
|
|
--- a/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts
|
|
+++ b/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts
|
|
@@ -138,6 +138,10 @@
|
|
status = "okay";
|
|
};
|
|
|
|
+&gpu {
|
|
+ mali-supply = <&vdd_logic>;
|
|
+};
|
|
+
|
|
&hdmi {
|
|
status = "okay";
|
|
};
|
|
|
|
From ba4a2cef89e4c5144eea865f4f869346b5904b4c Mon Sep 17 00:00:00 2001
|
|
From: Jonas Karlman <jonas@kwiboo.se>
|
|
Date: Mon, 30 Dec 2019 00:30:38 +0000
|
|
Subject: [PATCH] WIP: arm64: dts: rockchip: misc updates on rk3328-rock64 and
|
|
rk3328-roc-cc
|
|
|
|
---
|
|
arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts | 34 ++++++----------------
|
|
arch/arm64/boot/dts/rockchip/rk3328-rock64.dts | 39 +++++++++-----------------
|
|
2 files changed, 22 insertions(+), 51 deletions(-)
|
|
|
|
diff --git a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
|
index 3e564ba682b6..b58948f478a1 100644
|
|
--- a/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
|
+++ b/arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts
|
|
@@ -26,7 +26,6 @@
|
|
gpio = <&gpio0 RK_PD6 GPIO_ACTIVE_HIGH>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&sdmmc0m1_gpio>;
|
|
- regulator-boot-on;
|
|
regulator-name = "vcc_sd";
|
|
regulator-min-microvolt = <3300000>;
|
|
regulator-max-microvolt = <3300000>;
|
|
@@ -54,25 +53,17 @@
|
|
pinctrl-0 = <&usb20_host_drv>;
|
|
regulator-name = "vcc_host1_5v";
|
|
regulator-always-on;
|
|
+ regulator-boot-on;
|
|
vin-supply = <&vcc_sys>;
|
|
};
|
|
|
|
vcc_sys: vcc-sys {
|
|
compatible = "regulator-fixed";
|
|
regulator-name = "vcc_sys";
|
|
- regulator-always-on;
|
|
- regulator-boot-on;
|
|
regulator-min-microvolt = <5000000>;
|
|
regulator-max-microvolt = <5000000>;
|
|
};
|
|
|
|
- vcc_phy: vcc-phy-regulator {
|
|
- compatible = "regulator-fixed";
|
|
- regulator-name = "vcc_phy";
|
|
- regulator-always-on;
|
|
- regulator-boot-on;
|
|
- };
|
|
-
|
|
ir-receiver {
|
|
compatible = "gpio-ir-receiver";
|
|
gpios = <&gpio2 RK_PA2 GPIO_ACTIVE_LOW>;
|
|
@@ -128,7 +119,6 @@
|
|
&emmc {
|
|
bus-width = <8>;
|
|
cap-mmc-highspeed;
|
|
- max-frequency = <150000000>;
|
|
mmc-ddr-1_8v;
|
|
mmc-hs200-1_8v;
|
|
non-removable;
|
|
@@ -143,16 +133,15 @@
|
|
assigned-clocks = <&cru SCLK_MAC2IO>, <&cru SCLK_MAC2IO_EXT>;
|
|
assigned-clock-parents = <&gmac_clkin>, <&gmac_clkin>;
|
|
clock_in_out = "input";
|
|
- phy-supply = <&vcc_phy>;
|
|
phy-mode = "rgmii";
|
|
+ phy-supply = <&vcc_io>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&rgmiim1_pins>;
|
|
snps,aal;
|
|
+ snps,pbl = <0x4>;
|
|
snps,reset-gpio = <&gpio1 RK_PC2 GPIO_ACTIVE_LOW>;
|
|
snps,reset-active-low;
|
|
snps,reset-delays-us = <0 10000 50000>;
|
|
- snps,rxpbl = <0x4>;
|
|
- snps,txpbl = <0x4>;
|
|
tx_delay = <0x24>;
|
|
rx_delay = <0x18>;
|
|
status = "okay";
|
|
@@ -294,8 +283,6 @@
|
|
};
|
|
|
|
&io_domains {
|
|
- status = "okay";
|
|
-
|
|
vccio1-supply = <&vcc_io>;
|
|
vccio2-supply = <&vcc18_emmc>;
|
|
vccio3-supply = <&vccio_sd>;
|
|
@@ -303,6 +290,7 @@
|
|
vccio5-supply = <&vcc_io>;
|
|
vccio6-supply = <&vcc_io>;
|
|
pmuio-supply = <&vcc_io>;
|
|
+ status = "okay";
|
|
};
|
|
|
|
&pinctrl {
|
|
@@ -330,13 +318,8 @@
|
|
cap-mmc-highspeed;
|
|
cap-sd-highspeed;
|
|
disable-wp;
|
|
- max-frequency = <150000000>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&sdmmc0_clk &sdmmc0_cmd &sdmmc0_dectn &sdmmc0_bus4>;
|
|
- sd-uhs-sdr12;
|
|
- sd-uhs-sdr25;
|
|
- sd-uhs-sdr50;
|
|
- sd-uhs-sdr104;
|
|
vmmc-supply = <&vcc_sd>;
|
|
vqmmc-supply = <&vccio_sd>;
|
|
status = "okay";
|
|
@@ -361,23 +344,24 @@
|
|
status = "okay";
|
|
};
|
|
|
|
-&u2phy {
|
|
+&uart2 {
|
|
status = "okay";
|
|
};
|
|
|
|
-&u2phy_host {
|
|
+&u2phy {
|
|
status = "okay";
|
|
};
|
|
|
|
-&u2phy_otg {
|
|
+&u2phy_host {
|
|
status = "okay";
|
|
};
|
|
|
|
-&uart2 {
|
|
+&u2phy_otg {
|
|
status = "okay";
|
|
};
|
|
|
|
&usb20_otg {
|
|
+ dr_mode = "host";
|
|
status = "okay";
|
|
};
|
|
|
|
diff --git a/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts b/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts
|
|
index 9023f311f89b..345c045c58e6 100644
|
|
--- a/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts
|
|
+++ b/arch/arm64/boot/dts/rockchip/rk3328-rock64.dts
|
|
@@ -32,7 +32,7 @@
|
|
vin-supply = <&vcc_io>;
|
|
};
|
|
|
|
- vcc_host_5v: vcc-host-5v-regulator {
|
|
+ vcc_host_5v: vcc_host1_5v: vcc_otg_5v: vcc-host-5v-regulator {
|
|
compatible = "regulator-fixed";
|
|
gpio = <&gpio0 RK_PA2 GPIO_ACTIVE_HIGH>;
|
|
pinctrl-names = "default";
|
|
@@ -43,22 +43,9 @@
|
|
vin-supply = <&vcc_sys>;
|
|
};
|
|
|
|
- vcc_host1_5v: vcc_otg_5v: vcc-host1-5v-regulator {
|
|
- compatible = "regulator-fixed";
|
|
- gpio = <&gpio0 RK_PA2 GPIO_ACTIVE_HIGH>;
|
|
- pinctrl-names = "default";
|
|
- pinctrl-0 = <&usb20_host_drv>;
|
|
- regulator-name = "vcc_host1_5v";
|
|
- regulator-always-on;
|
|
- regulator-boot-on;
|
|
- vin-supply = <&vcc_sys>;
|
|
- };
|
|
-
|
|
vcc_sys: vcc-sys {
|
|
compatible = "regulator-fixed";
|
|
regulator-name = "vcc_sys";
|
|
- regulator-always-on;
|
|
- regulator-boot-on;
|
|
regulator-min-microvolt = <5000000>;
|
|
regulator-max-microvolt = <5000000>;
|
|
};
|
|
@@ -112,6 +99,7 @@
|
|
&emmc {
|
|
bus-width = <8>;
|
|
cap-mmc-highspeed;
|
|
+ mmc-ddr-1_8v;
|
|
mmc-hs200-1_8v;
|
|
non-removable;
|
|
pinctrl-names = "default";
|
|
@@ -125,11 +113,12 @@
|
|
assigned-clocks = <&cru SCLK_MAC2IO>, <&cru SCLK_MAC2IO_EXT>;
|
|
assigned-clock-parents = <&gmac_clkin>, <&gmac_clkin>;
|
|
clock_in_out = "input";
|
|
- phy-supply = <&vcc_io>;
|
|
phy-mode = "rgmii";
|
|
+ phy-supply = <&vcc_io>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&rgmiim1_pins>;
|
|
- snps,force_thresh_dma_mode;
|
|
+ snps,aal;
|
|
+ snps,pbl = <0x4>;
|
|
snps,reset-gpio = <&gpio1 RK_PC2 GPIO_ACTIVE_LOW>;
|
|
snps,reset-active-low;
|
|
snps,reset-delays-us = <0 10000 50000>;
|
|
@@ -176,7 +165,7 @@
|
|
vcc3-supply = <&vcc_sys>;
|
|
vcc4-supply = <&vcc_sys>;
|
|
vcc5-supply = <&vcc_io>;
|
|
- vcc6-supply = <&vcc_sys>;
|
|
+ vcc6-supply = <&vcc_io>;
|
|
|
|
regulators {
|
|
vdd_logic: DCDC_REG1 {
|
|
@@ -274,8 +263,6 @@
|
|
};
|
|
|
|
&io_domains {
|
|
- status = "okay";
|
|
-
|
|
vccio1-supply = <&vcc_io>;
|
|
vccio2-supply = <&vcc18_emmc>;
|
|
vccio3-supply = <&vcc_io>;
|
|
@@ -283,6 +270,7 @@
|
|
vccio5-supply = <&vcc_io>;
|
|
vccio6-supply = <&vcc_io>;
|
|
pmuio-supply = <&vcc_io>;
|
|
+ status = "okay";
|
|
};
|
|
|
|
&pinctrl {
|
|
@@ -310,7 +298,6 @@
|
|
cap-mmc-highspeed;
|
|
cap-sd-highspeed;
|
|
disable-wp;
|
|
- max-frequency = <150000000>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&sdmmc0_clk &sdmmc0_cmd &sdmmc0_dectn &sdmmc0_bus4>;
|
|
vmmc-supply = <&vcc_sd>;
|
|
@@ -354,14 +341,14 @@
|
|
|
|
&u2phy {
|
|
status = "okay";
|
|
+};
|
|
|
|
- u2phy_host: host-port {
|
|
- status = "okay";
|
|
- };
|
|
+&u2phy_host {
|
|
+ status = "okay";
|
|
+};
|
|
|
|
- u2phy_otg: otg-port {
|
|
- status = "okay";
|
|
- };
|
|
+&u2phy_otg {
|
|
+ status = "okay";
|
|
};
|
|
|
|
&usb20_otg {
|
|
|
|
From 4283d72e026397da254daf5994335081869f5bef Mon Sep 17 00:00:00 2001
|
|
From: Jonas Karlman <jonas@kwiboo.se>
|
|
Date: Sun, 12 May 2019 12:40:00 +0000
|
|
Subject: [PATCH] arm64: dts: rockchip: add rk3328-rockbox
|
|
|
|
---
|
|
arch/arm64/boot/dts/rockchip/Makefile | 1 +
|
|
arch/arm64/boot/dts/rockchip/rk3328-rockbox.dts | 349 ++++++++++++++++++++++++
|
|
2 files changed, 350 insertions(+)
|
|
create mode 100644 arch/arm64/boot/dts/rockchip/rk3328-rockbox.dts
|
|
|
|
diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile
|
|
index 48fb631d5451..5a15e93a8b68 100644
|
|
--- a/arch/arm64/boot/dts/rockchip/Makefile
|
|
+++ b/arch/arm64/boot/dts/rockchip/Makefile
|
|
@@ -5,6 +5,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308-roc-cc.dtb
|
|
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-a1.dtb
|
|
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-evb.dtb
|
|
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-rock64.dtb
|
|
+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-rockbox.dtb
|
|
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3328-roc-cc.dtb
|
|
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3368-evb-act8846.dtb
|
|
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3368-geekbox.dtb
|
|
diff --git a/arch/arm64/boot/dts/rockchip/rk3328-rockbox.dts b/arch/arm64/boot/dts/rockchip/rk3328-rockbox.dts
|
|
new file mode 100644
|
|
index 000000000000..b82708cfe742
|
|
--- /dev/null
|
|
+++ b/arch/arm64/boot/dts/rockchip/rk3328-rockbox.dts
|
|
@@ -0,0 +1,349 @@
|
|
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
|
+/*
|
|
+ * Copyright (c) 2017 PINE64
|
|
+ */
|
|
+
|
|
+/dts-v1/;
|
|
+#include "rk3328.dtsi"
|
|
+
|
|
+/ {
|
|
+ model = "Popcorn Hour RockBox Basic";
|
|
+ compatible = "popcornhour,rockbox", "rockchip,rk3328";
|
|
+
|
|
+ chosen {
|
|
+ stdout-path = "serial2:1500000n8";
|
|
+ };
|
|
+
|
|
+ vcc_sd: sdmmc-regulator {
|
|
+ compatible = "regulator-fixed";
|
|
+ gpio = <&gpio0 RK_PD6 GPIO_ACTIVE_HIGH>;
|
|
+ pinctrl-names = "default";
|
|
+ pinctrl-0 = <&sdmmc0m1_gpio>;
|
|
+ regulator-name = "vcc_sd";
|
|
+ regulator-min-microvolt = <3300000>;
|
|
+ regulator-max-microvolt = <3300000>;
|
|
+ vin-supply = <&vcc_io>;
|
|
+ };
|
|
+
|
|
+ vcc_host_5v: vcc_host1_5v: vcc_otg_5v: vcc-host-5v-regulator {
|
|
+ compatible = "regulator-fixed";
|
|
+ regulator-name = "vcc_host_5v";
|
|
+ regulator-always-on;
|
|
+ regulator-boot-on;
|
|
+ vin-supply = <&vcc_sys>;
|
|
+ };
|
|
+
|
|
+ vcc_sys: vcc-sys {
|
|
+ compatible = "regulator-fixed";
|
|
+ regulator-name = "vcc_sys";
|
|
+ regulator-min-microvolt = <5000000>;
|
|
+ regulator-max-microvolt = <5000000>;
|
|
+ };
|
|
+
|
|
+ ir-receiver {
|
|
+ compatible = "gpio-ir-receiver";
|
|
+ gpios = <&gpio2 RK_PA2 GPIO_ACTIVE_LOW>;
|
|
+ linux,rc-map-name = "rc-pine64";
|
|
+ pinctrl-0 = <&ir_int>;
|
|
+ pinctrl-names = "default";
|
|
+ };
|
|
+
|
|
+ leds {
|
|
+ compatible = "gpio-leds";
|
|
+
|
|
+ power {
|
|
+ gpios = <&rk805 0 GPIO_ACTIVE_HIGH>;
|
|
+ linux,default-trigger = "default-on";
|
|
+ default-state = "on";
|
|
+ };
|
|
+ };
|
|
+
|
|
+ sdio_pwrseq: sdio-pwrseq {
|
|
+ compatible = "mmc-pwrseq-simple";
|
|
+ pinctrl-names = "default";
|
|
+ pinctrl-0 = <&wifi_enable_h>;
|
|
+ reset-gpios = <&gpio1 RK_PC2 GPIO_ACTIVE_LOW>;
|
|
+ };
|
|
+};
|
|
+
|
|
+&cpu0 {
|
|
+ cpu-supply = <&vdd_arm>;
|
|
+};
|
|
+
|
|
+&cpu1 {
|
|
+ cpu-supply = <&vdd_arm>;
|
|
+};
|
|
+
|
|
+&cpu2 {
|
|
+ cpu-supply = <&vdd_arm>;
|
|
+};
|
|
+
|
|
+&cpu3 {
|
|
+ cpu-supply = <&vdd_arm>;
|
|
+};
|
|
+
|
|
+&emmc {
|
|
+ bus-width = <8>;
|
|
+ cap-mmc-highspeed;
|
|
+ mmc-ddr-1_8v;
|
|
+ mmc-hs200-1_8v;
|
|
+ non-removable;
|
|
+ pinctrl-names = "default";
|
|
+ pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_bus8>;
|
|
+ vmmc-supply = <&vcc_io>;
|
|
+ vqmmc-supply = <&vcc18_emmc>;
|
|
+ status = "okay";
|
|
+};
|
|
+
|
|
+&gmac2phy {
|
|
+ assigned-clocks = <&cru SCLK_MAC2PHY_SRC>;
|
|
+ assigned-clock-rate = <50000000>;
|
|
+ assigned-clocks = <&cru SCLK_MAC2PHY>;
|
|
+ assigned-clock-parents = <&cru SCLK_MAC2PHY_SRC>;
|
|
+ clock_in_out = "output";
|
|
+ phy-supply = <&vcc_io>;
|
|
+ status = "okay";
|
|
+};
|
|
+
|
|
+&gpu {
|
|
+ mali-supply = <&vdd_logic>;
|
|
+};
|
|
+
|
|
+&hdmi {
|
|
+ status = "okay";
|
|
+};
|
|
+
|
|
+&hdmiphy {
|
|
+ status = "okay";
|
|
+};
|
|
+
|
|
+&hdmi_sound {
|
|
+ status = "okay";
|
|
+};
|
|
+
|
|
+&i2c1 {
|
|
+ status = "okay";
|
|
+
|
|
+ rk805: rk805@18 {
|
|
+ compatible = "rockchip,rk805";
|
|
+ reg = <0x18>;
|
|
+ interrupt-parent = <&gpio2>;
|
|
+ interrupts = <6 IRQ_TYPE_LEVEL_LOW>;
|
|
+ #clock-cells = <1>;
|
|
+ clock-output-names = "xin32k", "rk805-clkout2";
|
|
+ gpio-controller;
|
|
+ #gpio-cells = <2>;
|
|
+ pinctrl-names = "default";
|
|
+ pinctrl-0 = <&pmic_int_l>;
|
|
+ rockchip,system-power-controller;
|
|
+ wakeup-source;
|
|
+
|
|
+ vcc1-supply = <&vcc_sys>;
|
|
+ vcc2-supply = <&vcc_sys>;
|
|
+ vcc3-supply = <&vcc_sys>;
|
|
+ vcc4-supply = <&vcc_sys>;
|
|
+ vcc5-supply = <&vcc_io>;
|
|
+ vcc6-supply = <&vcc_io>;
|
|
+
|
|
+ regulators {
|
|
+ vdd_logic: DCDC_REG1 {
|
|
+ regulator-name = "vdd_logic";
|
|
+ regulator-min-microvolt = <900000>;
|
|
+ regulator-max-microvolt = <1150000>;
|
|
+ regulator-ramp-delay = <12500>;
|
|
+ regulator-always-on;
|
|
+ regulator-boot-on;
|
|
+ regulator-state-mem {
|
|
+ regulator-on-in-suspend;
|
|
+ regulator-suspend-microvolt = <1000000>;
|
|
+ };
|
|
+ };
|
|
+
|
|
+ vdd_arm: DCDC_REG2 {
|
|
+ regulator-name = "vdd_arm";
|
|
+ regulator-min-microvolt = <950000>;
|
|
+ regulator-max-microvolt = <1350000>;
|
|
+ regulator-ramp-delay = <12500>;
|
|
+ regulator-always-on;
|
|
+ regulator-boot-on;
|
|
+ regulator-state-mem {
|
|
+ regulator-on-in-suspend;
|
|
+ regulator-suspend-microvolt = <950000>;
|
|
+ };
|
|
+ };
|
|
+
|
|
+ vcc_ddr: DCDC_REG3 {
|
|
+ regulator-name = "vcc_ddr";
|
|
+ regulator-always-on;
|
|
+ regulator-boot-on;
|
|
+ regulator-state-mem {
|
|
+ regulator-on-in-suspend;
|
|
+ };
|
|
+ };
|
|
+
|
|
+ vcc_io: DCDC_REG4 {
|
|
+ regulator-name = "vcc_io";
|
|
+ regulator-min-microvolt = <3300000>;
|
|
+ regulator-max-microvolt = <3300000>;
|
|
+ regulator-always-on;
|
|
+ regulator-boot-on;
|
|
+ regulator-state-mem {
|
|
+ regulator-on-in-suspend;
|
|
+ regulator-suspend-microvolt = <3300000>;
|
|
+ };
|
|
+ };
|
|
+
|
|
+ vcc_18: LDO_REG1 {
|
|
+ regulator-name = "vcc_18";
|
|
+ regulator-min-microvolt = <1800000>;
|
|
+ regulator-max-microvolt = <1800000>;
|
|
+ regulator-always-on;
|
|
+ regulator-boot-on;
|
|
+ regulator-state-mem {
|
|
+ regulator-on-in-suspend;
|
|
+ regulator-suspend-microvolt = <1800000>;
|
|
+ };
|
|
+ };
|
|
+
|
|
+ vcc18_emmc: LDO_REG2 {
|
|
+ regulator-name = "vcc18_emmc";
|
|
+ regulator-min-microvolt = <1800000>;
|
|
+ regulator-max-microvolt = <1800000>;
|
|
+ regulator-always-on;
|
|
+ regulator-boot-on;
|
|
+ regulator-state-mem {
|
|
+ regulator-on-in-suspend;
|
|
+ regulator-suspend-microvolt = <1800000>;
|
|
+ };
|
|
+ };
|
|
+
|
|
+ vdd_10: LDO_REG3 {
|
|
+ regulator-name = "vdd_10";
|
|
+ regulator-min-microvolt = <1000000>;
|
|
+ regulator-max-microvolt = <1000000>;
|
|
+ regulator-always-on;
|
|
+ regulator-boot-on;
|
|
+ regulator-state-mem {
|
|
+ regulator-on-in-suspend;
|
|
+ regulator-suspend-microvolt = <1000000>;
|
|
+ };
|
|
+ };
|
|
+ };
|
|
+ };
|
|
+};
|
|
+
|
|
+&i2s0 {
|
|
+ status = "okay";
|
|
+};
|
|
+
|
|
+&io_domains {
|
|
+ vccio1-supply = <&vcc_io>;
|
|
+ vccio2-supply = <&vcc18_emmc>;
|
|
+ vccio3-supply = <&vcc_io>;
|
|
+ vccio4-supply = <&vcc_io>;
|
|
+ vccio5-supply = <&vcc_io>;
|
|
+ vccio6-supply = <&vcc_io>;
|
|
+ pmuio-supply = <&vcc_io>;
|
|
+ status = "okay";
|
|
+};
|
|
+
|
|
+&pinctrl {
|
|
+ ir {
|
|
+ ir_int: ir-int {
|
|
+ rockchip,pins = <2 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>;
|
|
+ };
|
|
+ };
|
|
+
|
|
+ pmic {
|
|
+ pmic_int_l: pmic-int-l {
|
|
+ rockchip,pins = <2 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up>;
|
|
+ };
|
|
+ };
|
|
+
|
|
+ sdio-pwrseq {
|
|
+ wifi_enable_h: wifi-enable-h {
|
|
+ rockchip,pins = <1 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none_4ma>,
|
|
+ <1 RK_PC3 RK_FUNC_GPIO &pcfg_pull_none_4ma>;
|
|
+ };
|
|
+ };
|
|
+};
|
|
+
|
|
+&sdio {
|
|
+ bus-width = <4>;
|
|
+ cap-sd-highspeed;
|
|
+ cap-sdio-irq;
|
|
+ keep-power-in-suspend;
|
|
+ mmc-pwrseq = <&sdio_pwrseq>;
|
|
+ non-removable;
|
|
+ num-slots = <1>;
|
|
+ pinctrl-names = "default";
|
|
+ pinctrl-0 = <&sdmmc1_bus4 &sdmmc1_cmd &sdmmc1_clk>;
|
|
+ status = "disabled";
|
|
+};
|
|
+
|
|
+&sdmmc {
|
|
+ bus-width = <4>;
|
|
+ cap-mmc-highspeed;
|
|
+ cap-sd-highspeed;
|
|
+ disable-wp;
|
|
+ pinctrl-names = "default";
|
|
+ pinctrl-0 = <&sdmmc0_clk &sdmmc0_cmd &sdmmc0_dectn &sdmmc0_bus4>;
|
|
+ vmmc-supply = <&vcc_sd>;
|
|
+ status = "okay";
|
|
+};
|
|
+
|
|
+&spdif {
|
|
+ pinctrl-0 = <&spdifm0_tx>;
|
|
+ status = "okay";
|
|
+};
|
|
+
|
|
+&spdif_out {
|
|
+ status = "okay";
|
|
+};
|
|
+
|
|
+&spdif_sound {
|
|
+ status = "okay";
|
|
+};
|
|
+
|
|
+&tsadc {
|
|
+ rockchip,hw-tshut-mode = <0>;
|
|
+ rockchip,hw-tshut-polarity = <0>;
|
|
+ status = "okay";
|
|
+};
|
|
+
|
|
+&uart2 {
|
|
+ status = "okay";
|
|
+};
|
|
+
|
|
+&u2phy {
|
|
+ status = "okay";
|
|
+};
|
|
+
|
|
+&u2phy_host {
|
|
+ status = "okay";
|
|
+};
|
|
+
|
|
+&u2phy_otg {
|
|
+ status = "okay";
|
|
+};
|
|
+
|
|
+&usb20_otg {
|
|
+ dr_mode = "host";
|
|
+ status = "okay";
|
|
+};
|
|
+
|
|
+&usb_host0_ehci {
|
|
+ status = "okay";
|
|
+};
|
|
+
|
|
+&usb_host0_ohci {
|
|
+ status = "okay";
|
|
+};
|
|
+
|
|
+&vop {
|
|
+ status = "okay";
|
|
+};
|
|
+
|
|
+&vop_mmu {
|
|
+ status = "okay";
|
|
+};
|
|
|
|
From 478feffc1243a2c2a1a03584e395193591d50a7f Mon Sep 17 00:00:00 2001
|
|
From: Jonas Karlman <jonas@kwiboo.se>
|
|
Date: Sun, 8 Dec 2019 21:29:55 +0000
|
|
Subject: [PATCH] arm64: dts: rockchip: enable hdmi sound on rk3399-firefly
|
|
|
|
---
|
|
arch/arm64/boot/dts/rockchip/rk3399-firefly.dts | 4 ++++
|
|
1 file changed, 4 insertions(+)
|
|
|
|
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-firefly.dts b/arch/arm64/boot/dts/rockchip/rk3399-firefly.dts
|
|
index 92de83dd4dbc..e94e71cc0ec7 100644
|
|
--- a/arch/arm64/boot/dts/rockchip/rk3399-firefly.dts
|
|
+++ b/arch/arm64/boot/dts/rockchip/rk3399-firefly.dts
|
|
@@ -263,6 +263,10 @@
|
|
status = "okay";
|
|
};
|
|
|
|
+&hdmi_sound {
|
|
+ status = "okay";
|
|
+};
|
|
+
|
|
&i2c0 {
|
|
clock-frequency = <400000>;
|
|
i2c-scl-rising-time-ns = <168>;
|
|
|
|
From e07b33e31ad72fc2a1089bc477805bb7e7501c41 Mon Sep 17 00:00:00 2001
|
|
From: Jonas Karlman <jonas@kwiboo.se>
|
|
Date: Sun, 14 Apr 2019 21:25:34 +0000
|
|
Subject: [PATCH] arm64: dts: rockchip: enable hdmi sound on rk3399-orangepi
|
|
|
|
---
|
|
arch/arm64/boot/dts/rockchip/rk3399-orangepi.dts | 4 ++++
|
|
1 file changed, 4 insertions(+)
|
|
|
|
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-orangepi.dts b/arch/arm64/boot/dts/rockchip/rk3399-orangepi.dts
|
|
index 0541dfce924d..6b0034b72300 100644
|
|
--- a/arch/arm64/boot/dts/rockchip/rk3399-orangepi.dts
|
|
+++ b/arch/arm64/boot/dts/rockchip/rk3399-orangepi.dts
|
|
@@ -517,6 +517,10 @@
|
|
};
|
|
};
|
|
|
|
+&i2s2 {
|
|
+ status = "okay";
|
|
+};
|
|
+
|
|
&io_domains {
|
|
status = "okay";
|
|
bt656-supply = <&vcc_3v0>;
|