mirror of
https://github.com/Fishwaldo/build.git
synced 2025-07-12 07:58:47 +00:00
Adapted rk322x-dev to kernel 5.8.y Added ssv6x5x driver to legacy kernel, rk322x-config now allows the user to select which driver load at boot Added esp8089 kernel module, device tree overlay and detection in rk322x-config script Fixed some indentation Added reset button binding Added sdcard debounce Fixes indentation, added device tree overlay for high-leakage cpus Added support for bluetooth device tree overlay and realtek systemd service for rk322x targets
2864 lines
79 KiB
Text
2864 lines
79 KiB
Text
diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
|
index 5749bdaba95b..3b383f73fcb0 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);
|
|
|
|
@@ -2277,7 +2277,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;
|
|
@@ -2285,18 +2285,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)
|
|
@@ -3059,7 +3059,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);
|
|
--
|
|
2.17.1
|
|
|
|
|
|
From 2cdd6cd8eae12254226b6f3e30c5bcc52ac93ca7 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 3b383f73fcb0..bb430c48488f 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)
|
|
{
|
|
@@ -2287,14 +2300,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;
|
|
}
|
|
--
|
|
2.17.1
|
|
|
|
|
|
From 979981e11fa3ba5e94d25d22f7d0cdc55e8f9348 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 bb430c48488f..06620adfed95 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;
|
|
--
|
|
2.17.1
|
|
|
|
|
|
From 74adf054fd1d83d31f03085ec4574318cb135c95 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 06620adfed95..a304dff5f1be 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;
|
|
@@ -2223,9 +2225,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);
|
|
}
|
|
|
|
@@ -2296,6 +2344,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;
|
|
@@ -2305,28 +2358,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,
|
|
@@ -2705,6 +2738,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
|
|
@@ -3394,6 +3430,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);
|
|
--
|
|
2.17.1
|
|
|
|
|
|
From f44056d77b1e928d0eec26eef9d35ce3c7b04d30 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 a304dff5f1be..49a9611249d2 100644
|
|
--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
|
+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
|
@@ -2411,6 +2411,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 = {
|
|
--
|
|
2.17.1
|
|
|
|
|
|
From 27119e85c5368957ac0182418a26d473dd94ab49 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 49a9611249d2..b9fa6c3b07c0 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;
|
|
@@ -2238,6 +2237,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)
|
|
@@ -2730,9 +2731,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;
|
|
}
|
|
@@ -2741,10 +2740,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;
|
|
@@ -2912,18 +2909,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");
|
|
@@ -3108,7 +3098,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);
|
|
--
|
|
2.17.1
|
|
|
|
|
|
From d6fca8d650a43ed3ef7d8efb3b51b2e7c3a0a8ba 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 b9fa6c3b07c0..4d253e5a1c79 100644
|
|
--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
|
+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
|
@@ -1664,8 +1664,6 @@ static void hdmi_config_AVI(struct dw_hdmi *hdmi, struct drm_display_mode *mode)
|
|
HDMI_EXTENDED_COLORIMETRY_XV_YCC_601;
|
|
}
|
|
|
|
- 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
|
|
--
|
|
2.17.1
|
|
|
|
|
|
From b16f499ce83d7b9084073e813943ae98d4f5c716 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 4d253e5a1c79..cd10554cde76 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;
|
|
|
|
@@ -1664,6 +1665,8 @@ static void hdmi_config_AVI(struct dw_hdmi *hdmi, struct drm_display_mode *mode)
|
|
HDMI_EXTENDED_COLORIMETRY_XV_YCC_601;
|
|
}
|
|
|
|
+ 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
|
|
@@ -2389,7 +2392,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);
|
|
@@ -2717,6 +2721,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);
|
|
--
|
|
2.17.1
|
|
|
|
|
|
From 2203d10f59f25af58fe1f5aaaceb3980ccea2f39 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 cd10554cde76..5377c55e9927 100644
|
|
--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
|
+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
|
@@ -1733,6 +1733,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)
|
|
{
|
|
@@ -1776,12 +1805,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);
|
|
@@ -2158,8 +2181,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,
|
|
--
|
|
2.17.1
|
|
|
|
|
|
From 02f9cee9acb20262ed704ac658c1f61fbcbb8294 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 5377c55e9927..cc39b544ae6e 100644
|
|
--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
|
+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
|
|
@@ -1667,6 +1667,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
|
|
@@ -1755,6 +1757,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);
|
|
|
|
@@ -1769,6 +1773,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);
|
|
@@ -1787,8 +1794,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);
|
|
@@ -1834,6 +1841,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);
|
|
|
|
@@ -2368,6 +2377,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);
|
|
@@ -2391,6 +2403,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);
|
|
}
|
|
|
|
@@ -2429,6 +2444,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;
|
|
@@ -2439,6 +2460,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 9c82e2a0a411..c3b96d3c59e1 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 *
|
|
--
|
|
2.17.1
|
|
|
|
|
|
From 3c3374a1fbf631037b9fa87a6ddbfdc921cdf16c 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) {
|
|
--
|
|
2.17.1
|
|
|
|
|
|
From 8a6b932299c4cf68942cbe1809c4f6a846ef54a1 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 bc5278ab5707..f192963c2c68 100644
|
|
--- a/drivers/mmc/host/dw_mmc.c
|
|
+++ b/drivers/mmc/host/dw_mmc.c
|
|
@@ -1495,6 +1495,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_ */
|
|
--
|
|
2.17.1
|
|
|
|
|
|
From bcde49e61ee5dc752e4af4b0195a1c91c550e299 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[] = {
|
|
--
|
|
2.17.1
|
|
|
|
|
|
From 0cf5aae67b723a0e2e0d1d7041214920b5bf1e59 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>;
|
|
--
|
|
2.17.1
|
|
|
|
|
|
From f74e8d61abd366cee71da7779109e5589b4c6c6e 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";
|
|
--
|
|
2.17.1
|
|
|
|
|
|
From f9ec6529193530bff8905ca5ffe36b884c93b12b 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";
|
|
--
|
|
2.17.1
|
|
|
|
|
|
From c73762d9ab7c852d7dc691b4d83a42b32ad09771 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 3923ec01ef66..e4c71c77c3ef 100644
|
|
--- a/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dts
|
|
+++ b/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dts
|
|
@@ -307,7 +307,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;
|
|
@@ -609,6 +609,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";
|
|
};
|
|
|
|
--
|
|
2.17.1
|
|
|
|
|
|
From c52ee775bd43bcecb26f464c28cdc9eb5bcc08b2 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>
|
|
---
|
|
.../boot/dts/rockchip/rk3399-rockpro64.dtsi | 22 +++++++++++++++++++
|
|
1 file changed, 22 insertions(+)
|
|
|
|
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dtsi
|
|
index 9bca25801260..72c9bb2cfceb 100644
|
|
--- a/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dtsi
|
|
+++ b/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dtsi
|
|
@@ -108,6 +108,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";
|
|
@@ -603,6 +616,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>;
|
|
@@ -661,6 +680,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";
|
|
};
|
|
|
|
--
|
|
2.17.1
|
|
|
|
|
|
From 5d729739be59fe9a3435f80f6b13945b0a50e3a1 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";
|
|
--
|
|
2.17.1
|
|
|
|
|
|
From 896ce763b751403f9dcae8732335d53e5a6dcce9 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";
|
|
};
|
|
|
|
--
|
|
2.17.1
|
|
|
|
|
|
From de9b4be54fd5ad12a33aa35aa46421b74411ee75 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";
|
|
|
|
--
|
|
2.17.1
|
|
|
|
|
|
From 882e6f0dcf1af01c4bfcf18b07c54894cc6b441e 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";
|
|
--
|
|
2.17.1
|
|
|
|
|
|
From 72c61d5558abf21a5bb3e9ac4603a99a2594a647 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";
|
|
};
|
|
|
|
--
|
|
2.17.1
|
|
|
|
|
|
From d189fcfc6950f6a2f67662e3b024eff83b929322 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 {
|
|
--
|
|
2.17.1
|
|
|
|
|
|
From f6da47eada3ffa241c3c37917827ffa278391991 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>;
|
|
--
|
|
2.17.1
|
|
|
|
|
|
From 5b7cc260ec063a6cd695ab0119d355b5a72c1a19 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";
|
|
};
|
|
|
|
--
|
|
2.17.1
|
|
|
|
|
|
From 456c5f7d3accc12acfc84cf6baddb5dcf05836aa 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";
|
|
};
|
|
|
|
--
|
|
2.17.1
|
|
|
|
|
|
From e077bfec3ae60d827dd8c4a6c1f777e88f2c2a53 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 {
|
|
--
|
|
2.17.1
|
|
|
|
|
|
From b66dcf8f337f9308ba232880f48a93d6594bbf5b 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;
|
|
--
|
|
2.17.1
|
|
|
|
|
|
From 52aeabe772f86828a7fd7b2d5f5ca4706214d09f 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>;
|
|
--
|
|
2.17.1
|
|
|
|
|
|
From 589b2803582c476ae058e4fe2157eaa332c15bbf 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>;
|
|
--
|
|
2.17.1
|
|
|
|
|
|
From 23aa1a305bffe72c7fb26afac16c475569bef79a 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";
|
|
--
|
|
2.17.1
|
|
|
|
|
|
From b05c9d16191a716ba106abf6226410270ffa89a0 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 1f53ead52c7f..1b45131e8e48 100644
|
|
--- a/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
|
+++ b/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
|
@@ -319,6 +319,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>;
|
|
};
|
|
@@ -621,6 +625,7 @@
|
|
"ppmmu1";
|
|
clocks = <&cru ACLK_GPU>, <&cru ACLK_GPU>;
|
|
clock-names = "bus", "core";
|
|
+ power-domains = <&power RK3328_PD_GPU>;
|
|
resets = <&cru SRST_GPU_A>;
|
|
};
|
|
|
|
@@ -793,6 +798,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>,
|
|
@@ -814,6 +820,7 @@
|
|
<150000000>, <75000000>,
|
|
<75000000>, <150000000>,
|
|
<75000000>, <75000000>,
|
|
+ <500000000>,
|
|
<32768>;
|
|
};
|
|
|
|
--
|
|
2.17.1
|
|
|
|
|
|
From c047d9759f3b5376259657dc0608a51252371219 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 1b45131e8e48..c6f7cec13d15 100644
|
|
--- a/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
|
+++ b/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
|
@@ -210,6 +210,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)>,
|
|
--
|
|
2.17.1
|
|
|
|
|
|
From 8d8e7349b476ae980239abfdb8c460ccd5e3df0a 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
|
|
|
|
---
|
|
.../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>;
|
|
--
|
|
2.17.1
|
|
|
|
|
|
From b906dcd1489dd042dc67d9328952e18011fd6960 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 c6f7cec13d15..b92645187b19 100644
|
|
--- a/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
|
+++ b/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
|
@@ -890,6 +890,8 @@
|
|
clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
|
|
fifo-depth = <0x100>;
|
|
max-frequency = <150000000>;
|
|
+ resets = <&cru SRST_MMC0>;
|
|
+ reset-names = "reset";
|
|
status = "disabled";
|
|
};
|
|
|
|
@@ -902,6 +904,8 @@
|
|
clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
|
|
fifo-depth = <0x100>;
|
|
max-frequency = <150000000>;
|
|
+ resets = <&cru SRST_SDIO>;
|
|
+ reset-names = "reset";
|
|
status = "disabled";
|
|
};
|
|
|
|
@@ -914,6 +918,8 @@
|
|
clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
|
|
fifo-depth = <0x100>;
|
|
max-frequency = <150000000>;
|
|
+ resets = <&cru SRST_EMMC>;
|
|
+ reset-names = "reset";
|
|
status = "disabled";
|
|
};
|
|
|
|
--
|
|
2.17.1
|
|
|
|
|
|
From 584300ab010fa3ab29f5f402d94274740d231e1c 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 b92645187b19..cc44e17c8c43 100644
|
|
--- a/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
|
+++ b/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
|
@@ -1018,6 +1018,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>;
|
|
--
|
|
2.17.1
|
|
|
|
|
|
From af46e567772628417233844bb0994437f842d2a3 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 cc44e17c8c43..a4b0947f82a7 100644
|
|
--- a/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
|
+++ b/arch/arm64/boot/dts/rockchip/rk3328.dtsi
|
|
@@ -348,6 +348,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>;
|
|
@@ -701,6 +705,7 @@
|
|
clocks = <&cru ACLK_RKVDEC>, <&cru HCLK_RKVDEC>;
|
|
clock-names = "aclk", "iface";
|
|
#iommu-cells = <0>;
|
|
+ power-domains = <&power RK3328_PD_VIDEO>;
|
|
status = "disabled";
|
|
};
|
|
|
|
--
|
|
2.17.1
|
|
|
|
|
|
From fe5ff9c9fcb07b629f57282a25eba796616fbb50 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>
|
|
---
|
|
.../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 {
|
|
--
|
|
2.17.1
|
|
|
|
|
|
From 1c472df59bdd77b5f9dc651e4c25959cd53a2778 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";
|
|
};
|
|
--
|
|
2.17.1
|
|
|
|
|
|
From 2fae05a90a56a71c1ad749a96fac8eeb8beefaf0 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
|
|
|
|
---
|
|
.../arm64/boot/dts/rockchip/rk3328-roc-cc.dts | 34 +++++-----------
|
|
.../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 {
|
|
--
|
|
2.17.1
|
|
|
|
|
|
From 902ee56bf269bf4337eec25f0dc7d343bb9172b9 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 +
|
|
.../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 60d9437096c7..1df8933cb084 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";
|
|
+};
|
|
--
|
|
2.17.1
|
|
|
|
|
|
From 175d289ac91694f01eaf5914a7e124ec1de1f9ac 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 d63faf38cc81..e9e2a6fb623b 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>;
|
|
--
|
|
2.17.1
|
|
|
|
|
|
From f8982a639da0310faf15639a8a068e7534b97b57 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 9c659f3115c8..bfb9fa11adcc 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>;
|
|
--
|
|
2.17.1
|
|
|