Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1573834 > unrolled thread
| Started by | Chris Zhong <zyw@rock-chips.com> |
|---|---|
| First post | 2017-02-05 09:00 +0100 |
| Last post | 2017-02-05 09:50 +0100 |
| Articles | 6 — 2 participants |
Back to article view | Back to linux.kernel
[PATCH v17 0/7] drm/rockchip: Add CDN DP driver Chris Zhong <zyw@rock-chips.com> - 2017-02-05 09:00 +0100
[PATCH v17 2/7] drm/rockchip: cdn-dp: Load firmware if no monitor connected Chris Zhong <zyw@rock-chips.com> - 2017-02-05 09:00 +0100
[PATCH v17 3/7] drm/rockchip: cdn-dp: Do not run worker while suspended Chris Zhong <zyw@rock-chips.com> - 2017-02-05 09:00 +0100
[PATCH v17 6/7] drm/rockchip: cdn-dp: retry to check sink count Chris Zhong <zyw@rock-chips.com> - 2017-02-05 09:00 +0100
[PATCH v17 7/7] drm/rockchip: cdn-dp: don't configure hardware in mode_set Chris Zhong <zyw@rock-chips.com> - 2017-02-05 09:00 +0100
Re: [PATCH v17 0/7] drm/rockchip: Add CDN DP driver Mark yao <mark.yao@rock-chips.com> - 2017-02-05 09:50 +0100
| From | Chris Zhong <zyw@rock-chips.com> |
|---|---|
| Date | 2017-02-05 09:00 +0100 |
| Subject | [PATCH v17 0/7] drm/rockchip: Add CDN DP driver |
| Message-ID | <t7pTQ-4rV-7@gated-at.bofh.it> |
This series adds support for the CDN DP controller to the rockchip drm driver. This version fixes some coding style error in v16, it post by Sean Paul, you can find it here: https://patchwork.kernel.org/patch/9442135/ And I sorted out a few patches to fix the following problems: - suspend/resume crash cause by drm_helper_hpd_irq_event - crash during shutdown when cdn-dp failed to bind - check sink count failed after reconnection - suspend/reusme crash in mode_set function I also added these 2 patches to this series, although nothing changed: https://patchwork.kernel.org/patch/9442141/ https://patchwork.kernel.org/patch/9442151/ Changes in v17: - Correct the clock check condition - Correct the coding style - change LANE_REF_CYC to 0x8000 Chris Zhong (4): drm/rockchip: cdn-dp: add cdn DP support for rk3399 drm/rockchip: cdn-dp: do not use drm_helper_hpd_irq_event drm/rockchip: cdn-dp: retry to check sink count drm/rockchip: cdn-dp: don't configure hardware in mode_set Guenter Roeck (2): drm/rockchip: cdn-dp: Load firmware if no monitor connected drm/rockchip: cdn-dp: Do not run worker while suspended Jeffy Chen (1): drm/rockchip: cdn-dp: Move mutex_init to probe drivers/gpu/drm/rockchip/Kconfig | 10 + drivers/gpu/drm/rockchip/Makefile | 2 + drivers/gpu/drm/rockchip/cdn-dp-core.c | 1260 +++++++++++++++++++++++++++ drivers/gpu/drm/rockchip/cdn-dp-core.h | 112 +++ drivers/gpu/drm/rockchip/cdn-dp-reg.c | 979 +++++++++++++++++++++ drivers/gpu/drm/rockchip/cdn-dp-reg.h | 483 ++++++++++ drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 13 +- drivers/gpu/drm/rockchip/rockchip_drm_vop.h | 9 + drivers/gpu/drm/rockchip/rockchip_vop_reg.c | 2 + 9 files changed, 2867 insertions(+), 3 deletions(-) create mode 100644 drivers/gpu/drm/rockchip/cdn-dp-core.c create mode 100644 drivers/gpu/drm/rockchip/cdn-dp-core.h create mode 100644 drivers/gpu/drm/rockchip/cdn-dp-reg.c create mode 100644 drivers/gpu/drm/rockchip/cdn-dp-reg.h -- 2.6.3
[toc] | [next] | [standalone]
| From | Chris Zhong <zyw@rock-chips.com> |
|---|---|
| Date | 2017-02-05 09:00 +0100 |
| Subject | [PATCH v17 2/7] drm/rockchip: cdn-dp: Load firmware if no monitor connected |
| Message-ID | <t7pTQ-4rV-23@gated-at.bofh.it> |
| In reply to | #1573834 |
From: Guenter Roeck <groeck@chromium.org> If no monitor is connected, suspend/resume cycles result in firmware load errors because the driver attempts to load the firmware while the system is in suspend state. This results in a kernel warning and traceback. Loading the firmware during boot fixes the problem. Note that we can not just call schedule_work conditionally in cdn_dp_pd_event() if the insertion status changed. The problem would still be seen if a monitor is connected for the first time during suspend. Signed-off-by: Guenter Roeck <groeck@chromium.org> Signed-off-by: Sean Paul <seanpaul@chromium.org> Signed-off-by: Chris Zhong <zyw@rock-chips.com> --- Changes in v17: None drivers/gpu/drm/rockchip/cdn-dp-core.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/drivers/gpu/drm/rockchip/cdn-dp-core.c b/drivers/gpu/drm/rockchip/cdn-dp-core.c index 7db2508..b8d0dd7 100644 --- a/drivers/gpu/drm/rockchip/cdn-dp-core.c +++ b/drivers/gpu/drm/rockchip/cdn-dp-core.c @@ -1021,7 +1021,6 @@ static int cdn_dp_bind(struct device *dev, struct device *master, void *data) struct cdn_dp_port *port; struct drm_device *drm_dev = data; int ret, i; - bool schedule_event = false; ret = cdn_dp_parse_dt(dp); if (ret < 0) @@ -1083,15 +1082,11 @@ static int cdn_dp_bind(struct device *dev, struct device *master, void *data) "register EXTCON_DISP_DP notifier err\n"); goto err_free_connector; } - - if (extcon_get_state(port->extcon, EXTCON_DISP_DP)) - schedule_event = true; } pm_runtime_enable(dev); - if (schedule_event) - schedule_work(&dp->event_work); + schedule_work(&dp->event_work); return 0; -- 2.6.3
[toc] | [prev] | [next] | [standalone]
| From | Chris Zhong <zyw@rock-chips.com> |
|---|---|
| Date | 2017-02-05 09:00 +0100 |
| Subject | [PATCH v17 3/7] drm/rockchip: cdn-dp: Do not run worker while suspended |
| Message-ID | <t7pTQ-4rV-19@gated-at.bofh.it> |
| In reply to | #1573834 |
From: Guenter Roeck <groeck@chromium.org>
If the driver is in suspended mode, the dp block may be disabled, and
chip registers may not be accessible. Yet, the worker may be triggered
in this situation by an extcon event. If that happens, the following crash
will be seen.
cdn-dp fec00000.dp: [drm:cdn_dp_pd_event_work] *ERROR* Enable dp failed -19
cdn-dp fec00000.dp: [drm:cdn_dp_pd_event_work] Connected, not enabled. Enabling cdn
Bad mode in Error handler detected, code 0xbf000002 -- SError
CPU: 1 PID: 10357 Comm: kworker/1:2 Not tainted 4.4.21-05903-ge0514ea #1
Hardware name: Google Kevin (DT)
Workqueue: events cdn_dp_pd_event_work
task: ffffffc0cda67080 ti: ffffffc0b9b80000 task.ti: ffffffc0b9b80000
PC is at cdn_dp_clock_reset+0x30/0xa8
LR is at cdn_dp_enable+0x1e0/0x69c
...
Call trace:
[<ffffffc0005a7e24>] cdn_dp_pd_event_work+0x58/0x3f4
[<ffffffc0002397f0>] process_one_work+0x240/0x424
[<ffffffc00023a28c>] worker_thread+0x2fc/0x424
[<ffffffc00023f5fc>] kthread+0x10c/0x114
[<ffffffc000203dd0>] ret_from_fork+0x10/0x40
Problem is two-fold: The worker should not run while suspended, and the
suspend function should not call cdn_dp_disable() while the worker is
running.
Signed-off-by: Guenter Roeck <groeck@chromium.org>
Signed-off-by: Sean Paul <seanpaul@chromium.org>
Signed-off-by: Chris Zhong <zyw@rock-chips.com>
---
Changes in v17: None
drivers/gpu/drm/rockchip/cdn-dp-core.c | 15 +++++++++++++--
drivers/gpu/drm/rockchip/cdn-dp-core.h | 1 +
2 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/rockchip/cdn-dp-core.c b/drivers/gpu/drm/rockchip/cdn-dp-core.c
index b8d0dd7..a70eedc 100644
--- a/drivers/gpu/drm/rockchip/cdn-dp-core.c
+++ b/drivers/gpu/drm/rockchip/cdn-dp-core.c
@@ -939,6 +939,10 @@ static void cdn_dp_pd_event_work(struct work_struct *work)
u8 sink_count;
mutex_lock(&dp->lock);
+
+ if (dp->suspended)
+ goto out;
+
ret = cdn_dp_request_firmware(dp);
if (ret)
goto out;
@@ -1123,19 +1127,26 @@ static const struct component_ops cdn_dp_component_ops = {
int cdn_dp_suspend(struct device *dev)
{
struct cdn_dp_device *dp = dev_get_drvdata(dev);
+ int ret = 0;
+ mutex_lock(&dp->lock);
if (dp->active)
- return cdn_dp_disable(dp);
+ ret = cdn_dp_disable(dp);
+ dp->suspended = true;
+ mutex_unlock(&dp->lock);
- return 0;
+ return ret;
}
int cdn_dp_resume(struct device *dev)
{
struct cdn_dp_device *dp = dev_get_drvdata(dev);
+ mutex_lock(&dp->lock);
+ dp->suspended = false;
if (dp->fw_loaded)
schedule_work(&dp->event_work);
+ mutex_unlock(&dp->lock);
return 0;
}
diff --git a/drivers/gpu/drm/rockchip/cdn-dp-core.h b/drivers/gpu/drm/rockchip/cdn-dp-core.h
index 3bea4b8..7d48661 100644
--- a/drivers/gpu/drm/rockchip/cdn-dp-core.h
+++ b/drivers/gpu/drm/rockchip/cdn-dp-core.h
@@ -82,6 +82,7 @@ struct cdn_dp_device {
struct mutex lock;
bool connected;
bool active;
+ bool suspended;
const struct firmware *fw; /* cdn dp firmware */
unsigned int fw_version; /* cdn fw version */
--
2.6.3
[toc] | [prev] | [next] | [standalone]
| From | Chris Zhong <zyw@rock-chips.com> |
|---|---|
| Date | 2017-02-05 09:00 +0100 |
| Subject | [PATCH v17 6/7] drm/rockchip: cdn-dp: retry to check sink count |
| Message-ID | <t7pTQ-4rV-17@gated-at.bofh.it> |
| In reply to | #1573834 |
Sometimes the Dock is disconnected, but cdn_dp_encoder_disable is not
triggered by DRM. For example, unplug the Dock in console mode, and
re-plug it again, the cdn_dp_event_work will try to get the sink count
of Dock, since the DP is still active. But the Dock has been powered
down, it need re-power on, and wait for a while until it is ready to
DPCD communication.
Signed-off-by: Chris Zhong <zyw@rock-chips.com>
---
Changes in v17: None
drivers/gpu/drm/rockchip/cdn-dp-core.c | 91 +++++++++++++++++++---------------
drivers/gpu/drm/rockchip/cdn-dp-core.h | 1 +
2 files changed, 52 insertions(+), 40 deletions(-)
diff --git a/drivers/gpu/drm/rockchip/cdn-dp-core.c b/drivers/gpu/drm/rockchip/cdn-dp-core.c
index 799e826..a630b0d 100644
--- a/drivers/gpu/drm/rockchip/cdn-dp-core.c
+++ b/drivers/gpu/drm/rockchip/cdn-dp-core.c
@@ -197,6 +197,39 @@ static struct cdn_dp_port *cdn_dp_connected_port(struct cdn_dp_device *dp)
return NULL;
}
+static bool cdn_dp_check_sink_connection(struct cdn_dp_device *dp)
+{
+ unsigned long timeout = jiffies + msecs_to_jiffies(CDN_DPCD_TIMEOUT_MS);
+ struct cdn_dp_port *port;
+ u8 sink_count = 0;
+
+ if (dp->active_port < 0 || dp->active_port >= dp->ports) {
+ DRM_DEV_ERROR(dp->dev, "active_port is wrong!\n");
+ return false;
+ }
+
+ port = dp->port[dp->active_port];
+
+ /*
+ * Attempt to read sink count, retry in case the sink may not be ready.
+ *
+ * Sinks are *supposed* to come up within 1ms from an off state, but
+ * some docks need more time to power up.
+ */
+ while (time_before(jiffies, timeout)) {
+ if (!extcon_get_state(port->extcon, EXTCON_DISP_DP))
+ return false;
+
+ if (!cdn_dp_get_sink_count(dp, &sink_count))
+ return sink_count ? true : false;
+
+ usleep_range(5000, 10000);
+ }
+
+ DRM_DEV_ERROR(dp->dev, "Get sink capability timed out\n");
+ return false;
+}
+
static enum drm_connector_status
cdn_dp_connector_detect(struct drm_connector *connector, bool force)
{
@@ -345,47 +378,24 @@ static int cdn_dp_firmware_init(struct cdn_dp_device *dp)
return cdn_dp_event_config(dp);
}
-static int cdn_dp_get_sink_capability(struct cdn_dp_device *dp,
- struct cdn_dp_port *port,
- u8 *sink_count)
+static int cdn_dp_get_sink_capability(struct cdn_dp_device *dp)
{
int ret;
- unsigned long timeout = jiffies + msecs_to_jiffies(CDN_DPCD_TIMEOUT_MS);
- /*
- * Attempt to read sink count & sink capability, retry in case the sink
- * may not be ready.
- *
- * Sinks are *supposed* to come up within 1ms from an off state, but
- * some docks need more time to power up.
- */
- while (time_before(jiffies, timeout)) {
- if (!extcon_get_state(port->extcon, EXTCON_DISP_DP))
- return -ENODEV;
-
- if (cdn_dp_get_sink_count(dp, sink_count)) {
- usleep_range(5000, 10000);
- continue;
- }
-
- if (!*sink_count)
- return -ENODEV;
-
- ret = cdn_dp_dpcd_read(dp, DP_DPCD_REV, dp->dpcd,
- DP_RECEIVER_CAP_SIZE);
- if (ret) {
- DRM_DEV_ERROR(dp->dev, "Failed to get caps %d\n", ret);
- return ret;
- }
+ if (!cdn_dp_check_sink_connection(dp))
+ return -ENODEV;
- kfree(dp->edid);
- dp->edid = drm_do_get_edid(&dp->connector,
- cdn_dp_get_edid_block, dp);
- return 0;
+ ret = cdn_dp_dpcd_read(dp, DP_DPCD_REV, dp->dpcd,
+ DP_RECEIVER_CAP_SIZE);
+ if (ret) {
+ DRM_DEV_ERROR(dp->dev, "Failed to get caps %d\n", ret);
+ return ret;
}
- DRM_DEV_ERROR(dp->dev, "Get sink capability timed out\n");
- return -ETIMEDOUT;
+ kfree(dp->edid);
+ dp->edid = drm_do_get_edid(&dp->connector,
+ cdn_dp_get_edid_block, dp);
+ return 0;
}
static int cdn_dp_enable_phy(struct cdn_dp_device *dp, struct cdn_dp_port *port)
@@ -437,6 +447,7 @@ static int cdn_dp_enable_phy(struct cdn_dp_device *dp, struct cdn_dp_port *port)
goto err_power_on;
}
+ dp->active_port = port->id;
return 0;
err_power_on:
@@ -466,6 +477,7 @@ static int cdn_dp_disable_phy(struct cdn_dp_device *dp,
port->phy_enabled = false;
port->lanes = 0;
+ dp->active_port = -1;
return 0;
}
@@ -504,7 +516,6 @@ static int cdn_dp_enable(struct cdn_dp_device *dp)
{
int ret, i, lanes;
struct cdn_dp_port *port;
- u8 sink_count;
port = cdn_dp_connected_port(dp);
if (!port) {
@@ -535,8 +546,8 @@ static int cdn_dp_enable(struct cdn_dp_device *dp)
if (ret)
continue;
- ret = cdn_dp_get_sink_capability(dp, port, &sink_count);
- if (ret || (!ret && !sink_count)) {
+ ret = cdn_dp_get_sink_capability(dp);
+ if (ret) {
cdn_dp_disable_phy(dp, port);
} else {
dp->active = true;
@@ -939,7 +950,6 @@ static void cdn_dp_pd_event_work(struct work_struct *work)
enum drm_connector_status old_status;
int ret;
- u8 sink_count;
mutex_lock(&dp->lock);
@@ -967,7 +977,7 @@ static void cdn_dp_pd_event_work(struct work_struct *work)
}
/* Enabled and connected to a dongle without a sink, notify userspace */
- } else if (cdn_dp_get_sink_count(dp, &sink_count) || !sink_count) {
+ } else if (!cdn_dp_check_sink_connection(dp)) {
DRM_DEV_INFO(dp->dev, "Connected without sink. Assert hpd\n");
dp->connected = false;
@@ -1040,6 +1050,7 @@ static int cdn_dp_bind(struct device *dev, struct device *master, void *data)
dp->drm_dev = drm_dev;
dp->connected = false;
dp->active = false;
+ dp->active_port = -1;
INIT_WORK(&dp->event_work, cdn_dp_pd_event_work);
diff --git a/drivers/gpu/drm/rockchip/cdn-dp-core.h b/drivers/gpu/drm/rockchip/cdn-dp-core.h
index 7d48661..f57e296 100644
--- a/drivers/gpu/drm/rockchip/cdn-dp-core.h
+++ b/drivers/gpu/drm/rockchip/cdn-dp-core.h
@@ -104,6 +104,7 @@ struct cdn_dp_device {
struct cdn_dp_port *port[MAX_PHY];
u8 ports;
u8 lanes;
+ int active_port;
u8 dpcd[DP_RECEIVER_CAP_SIZE];
bool sink_has_audio;
--
2.6.3
[toc] | [prev] | [next] | [standalone]
| From | Chris Zhong <zyw@rock-chips.com> |
|---|---|
| Date | 2017-02-05 09:00 +0100 |
| Subject | [PATCH v17 7/7] drm/rockchip: cdn-dp: don't configure hardware in mode_set |
| Message-ID | <t7pTQ-4rV-27@gated-at.bofh.it> |
| In reply to | #1573834 |
With atomic modesetting the hardware will be powered off when the
mode_set function is called. We should configure the hardware in the
enable function.
Signed-off-by: Chris Zhong <zyw@rock-chips.com>
---
Changes in v17: None
drivers/gpu/drm/rockchip/cdn-dp-core.c | 49 +++++++++++++++++-----------------
1 file changed, 24 insertions(+), 25 deletions(-)
diff --git a/drivers/gpu/drm/rockchip/cdn-dp-core.c b/drivers/gpu/drm/rockchip/cdn-dp-core.c
index a630b0d..9ab67a6 100644
--- a/drivers/gpu/drm/rockchip/cdn-dp-core.c
+++ b/drivers/gpu/drm/rockchip/cdn-dp-core.c
@@ -568,9 +568,7 @@ static void cdn_dp_encoder_mode_set(struct drm_encoder *encoder,
{
struct cdn_dp_device *dp = encoder_to_dp(encoder);
struct drm_display_info *display_info = &dp->connector.display_info;
- struct rockchip_crtc_state *state;
struct video_info *video = &dp->video_info;
- int ret, val;
switch (display_info->bpc) {
case 10:
@@ -585,31 +583,9 @@ static void cdn_dp_encoder_mode_set(struct drm_encoder *encoder,
}
video->color_fmt = PXL_RGB;
-
video->v_sync_polarity = !!(mode->flags & DRM_MODE_FLAG_NVSYNC);
video->h_sync_polarity = !!(mode->flags & DRM_MODE_FLAG_NHSYNC);
- ret = drm_of_encoder_active_endpoint_id(dp->dev->of_node, encoder);
- if (ret < 0) {
- DRM_DEV_ERROR(dp->dev, "Could not get vop id, %d", ret);
- return;
- }
-
- DRM_DEV_DEBUG_KMS(dp->dev, "vop %s output to cdn-dp\n",
- (ret) ? "LIT" : "BIG");
- state = to_rockchip_crtc_state(encoder->crtc->state);
- if (ret) {
- val = DP_SEL_VOP_LIT | (DP_SEL_VOP_LIT << 16);
- state->output_mode = ROCKCHIP_OUT_MODE_P888;
- } else {
- val = DP_SEL_VOP_LIT << 16;
- state->output_mode = ROCKCHIP_OUT_MODE_AAAA;
- }
-
- ret = cdn_dp_grf_write(dp, GRF_SOC_CON9, val);
- if (ret)
- return;
-
memcpy(&dp->mode, adjusted, sizeof(*mode));
}
@@ -635,9 +611,32 @@ static bool cdn_dp_check_link_status(struct cdn_dp_device *dp)
static void cdn_dp_encoder_enable(struct drm_encoder *encoder)
{
struct cdn_dp_device *dp = encoder_to_dp(encoder);
- int ret;
+ int ret, val;
+ struct rockchip_crtc_state *state;
+
+ ret = drm_of_encoder_active_endpoint_id(dp->dev->of_node, encoder);
+ if (ret < 0) {
+ DRM_DEV_ERROR(dp->dev, "Could not get vop id, %d", ret);
+ return;
+ }
+
+ DRM_DEV_DEBUG_KMS(dp->dev, "vop %s output to cdn-dp\n",
+ (ret) ? "LIT" : "BIG");
+ state = to_rockchip_crtc_state(encoder->crtc->state);
+ if (ret) {
+ val = DP_SEL_VOP_LIT | (DP_SEL_VOP_LIT << 16);
+ state->output_mode = ROCKCHIP_OUT_MODE_P888;
+ } else {
+ val = DP_SEL_VOP_LIT << 16;
+ state->output_mode = ROCKCHIP_OUT_MODE_AAAA;
+ }
+
+ ret = cdn_dp_grf_write(dp, GRF_SOC_CON9, val);
+ if (ret)
+ return;
mutex_lock(&dp->lock);
+
ret = cdn_dp_enable(dp);
if (ret) {
DRM_DEV_ERROR(dp->dev, "Failed to enable encoder %d\n",
--
2.6.3
[toc] | [prev] | [next] | [standalone]
| From | Mark yao <mark.yao@rock-chips.com> |
|---|---|
| Date | 2017-02-05 09:50 +0100 |
| Message-ID | <t7qGd-4YY-15@gated-at.bofh.it> |
| In reply to | #1573834 |
Hi Chris Applied to my drm-next and already sent pull request to Dave. Thanks. On 2017年02月05日 15:54, Chris Zhong wrote: > This series adds support for the CDN DP controller to the rockchip drm > driver. This version fixes some coding style error in v16, it post by > Sean Paul, you can find it here: > https://patchwork.kernel.org/patch/9442135/ > > And I sorted out a few patches to fix the following problems: > - suspend/resume crash cause by drm_helper_hpd_irq_event > - crash during shutdown when cdn-dp failed to bind > - check sink count failed after reconnection > - suspend/reusme crash in mode_set function > > I also added these 2 patches to this series, although nothing changed: > https://patchwork.kernel.org/patch/9442141/ > https://patchwork.kernel.org/patch/9442151/ > > > Changes in v17: > - Correct the clock check condition > - Correct the coding style > - change LANE_REF_CYC to 0x8000 > > Chris Zhong (4): > drm/rockchip: cdn-dp: add cdn DP support for rk3399 > drm/rockchip: cdn-dp: do not use drm_helper_hpd_irq_event > drm/rockchip: cdn-dp: retry to check sink count > drm/rockchip: cdn-dp: don't configure hardware in mode_set > > Guenter Roeck (2): > drm/rockchip: cdn-dp: Load firmware if no monitor connected > drm/rockchip: cdn-dp: Do not run worker while suspended > > Jeffy Chen (1): > drm/rockchip: cdn-dp: Move mutex_init to probe > > drivers/gpu/drm/rockchip/Kconfig | 10 + > drivers/gpu/drm/rockchip/Makefile | 2 + > drivers/gpu/drm/rockchip/cdn-dp-core.c | 1260 +++++++++++++++++++++++++++ > drivers/gpu/drm/rockchip/cdn-dp-core.h | 112 +++ > drivers/gpu/drm/rockchip/cdn-dp-reg.c | 979 +++++++++++++++++++++ > drivers/gpu/drm/rockchip/cdn-dp-reg.h | 483 ++++++++++ > drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 13 +- > drivers/gpu/drm/rockchip/rockchip_drm_vop.h | 9 + > drivers/gpu/drm/rockchip/rockchip_vop_reg.c | 2 + > 9 files changed, 2867 insertions(+), 3 deletions(-) > create mode 100644 drivers/gpu/drm/rockchip/cdn-dp-core.c > create mode 100644 drivers/gpu/drm/rockchip/cdn-dp-core.h > create mode 100644 drivers/gpu/drm/rockchip/cdn-dp-reg.c > create mode 100644 drivers/gpu/drm/rockchip/cdn-dp-reg.h > -- Mark Yao
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web