mirror of
https://github.com/archlinuxarm/PKGBUILDs.git
synced 2025-01-17 23:34:07 +00:00
core/linux-gru to 4.4.52-3
This commit is contained in:
parent
6ca7466be0
commit
a18b0e8ef7
6 changed files with 599 additions and 17 deletions
|
@ -1,7 +1,7 @@
|
|||
From b28b17ba9afa1d09c0d9e15366b68fac8801fed6 Mon Sep 17 00:00:00 2001
|
||||
From 886b1c7c3588f365127e7119885bfd2b7fc1032d Mon Sep 17 00:00:00 2001
|
||||
From: Kevin Mihelich <kevin@archlinuxarm.org>
|
||||
Date: Wed, 15 Feb 2017 18:32:55 -0700
|
||||
Subject: [PATCH 1/2] Input: atmel_mxt_ts: Use KERN_DEBUG loglevel for status
|
||||
Subject: [PATCH 1/4] Input: atmel_mxt_ts: Use KERN_DEBUG loglevel for status
|
||||
message
|
||||
|
||||
Signed-off-by: Kevin Mihelich <kevin@archlinuxarm.org>
|
||||
|
@ -23,5 +23,5 @@ index 6a13f44e4cd8..4ee0679c5516 100644
|
|||
if (status == 0x00)
|
||||
complete(&data->auto_cal_completion);
|
||||
--
|
||||
2.11.1
|
||||
2.12.1
|
||||
|
||||
|
|
|
@ -0,0 +1,89 @@
|
|||
From e070341ce4eed1ccaab532704f42a1026aaecd1a Mon Sep 17 00:00:00 2001
|
||||
From: Kevin Mihelich <kevin@archlinuxarm.org>
|
||||
Date: Wed, 5 Apr 2017 22:55:05 -0600
|
||||
Subject: [PATCH 2/4] Revert "CHROMIUM: drm: rockchip: Add PSR residency debug
|
||||
entry"
|
||||
|
||||
This reverts commit 9f416401b95d3f1dee2ffb12e0e27339fce3ce1b.
|
||||
---
|
||||
drivers/gpu/drm/rockchip/analogix_dp-rockchip.c | 21 +--------------------
|
||||
1 file changed, 1 insertion(+), 20 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c
|
||||
index f2766cafd0b4..acd31ea3825d 100644
|
||||
--- a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c
|
||||
+++ b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c
|
||||
@@ -13,7 +13,6 @@
|
||||
*/
|
||||
|
||||
#include <linux/component.h>
|
||||
-#include <linux/debugfs.h>
|
||||
#include <linux/mfd/syscon.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <linux/of_graph.h>
|
||||
@@ -68,17 +67,12 @@ struct rockchip_dp_device {
|
||||
|
||||
struct analogix_dp_device *adp;
|
||||
struct analogix_dp_plat_data plat_data;
|
||||
-
|
||||
- struct dentry *debugfs_psr;
|
||||
- u64 psr_active_ms;
|
||||
- ktime_t psr_start_time;
|
||||
};
|
||||
|
||||
static int analogix_dp_psr_set(struct drm_encoder *encoder, bool enabled)
|
||||
{
|
||||
struct rockchip_dp_device *dp = to_dp(encoder);
|
||||
struct drm_crtc *crtc = dp->encoder.crtc;
|
||||
- s64 delta_ms;
|
||||
int vact_end;
|
||||
int ret;
|
||||
|
||||
@@ -103,7 +97,6 @@ static int analogix_dp_psr_set(struct drm_encoder *encoder, bool enabled)
|
||||
return ret;
|
||||
}
|
||||
rockchip_drm_set_win_enabled(crtc, false);
|
||||
- dp->psr_start_time = ktime_get();
|
||||
} else {
|
||||
rockchip_drm_set_win_enabled(crtc, true);
|
||||
ret = analogix_dp_disable_psr(dp->adp);
|
||||
@@ -111,9 +104,6 @@ static int analogix_dp_psr_set(struct drm_encoder *encoder, bool enabled)
|
||||
dev_err(dp->dev, "failed to disable psr %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
- delta_ms = ktime_ms_delta(ktime_get(), dp->psr_start_time);
|
||||
- if (!WARN_ON(delta_ms < 0))
|
||||
- dp->psr_active_ms += delta_ms;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -397,17 +387,9 @@ static int rockchip_dp_bind(struct device *dev, struct device *master,
|
||||
dp->plat_data.power_off = rockchip_dp_powerdown;
|
||||
dp->plat_data.get_modes = rockchip_dp_get_modes;
|
||||
|
||||
- dp->debugfs_psr = debugfs_create_u64("psr_active_ms", S_IRUGO,
|
||||
- drm_dev->primary->debugfs_root,
|
||||
- &dp->psr_active_ms);
|
||||
- if (IS_ERR(dp->debugfs_psr))
|
||||
- return PTR_ERR(dp->debugfs_psr);
|
||||
-
|
||||
dp->adp = analogix_dp_bind(dev, dp->drm_dev, &dp->plat_data);
|
||||
- if (IS_ERR(dp->adp)) {
|
||||
- debugfs_remove(dp->debugfs_psr);
|
||||
+ if (IS_ERR(dp->adp))
|
||||
return PTR_ERR(dp->adp);
|
||||
- }
|
||||
|
||||
rockchip_drm_psr_register(&dp->encoder, analogix_dp_psr_set);
|
||||
|
||||
@@ -422,7 +404,6 @@ static void rockchip_dp_unbind(struct device *dev, struct device *master,
|
||||
rockchip_drm_psr_unregister(&dp->encoder);
|
||||
|
||||
analogix_dp_unbind(dp->adp);
|
||||
- debugfs_remove(dp->debugfs_psr);
|
||||
|
||||
dp->adp = ERR_PTR(-ENODEV);
|
||||
}
|
||||
--
|
||||
2.12.1
|
||||
|
|
@ -1,14 +1,14 @@
|
|||
From 1318b64d6b132e2d8271c4afa1443dd9d29ac657 Mon Sep 17 00:00:00 2001
|
||||
From 0b864ff26059532ec58e430f7cd6e011f9ca353e Mon Sep 17 00:00:00 2001
|
||||
From: Kevin Mihelich <kevin@archlinuxarm.org>
|
||||
Date: Sun, 26 Feb 2017 19:14:10 -0700
|
||||
Subject: [PATCH 2/2] temporary hack to fix console output
|
||||
Subject: [PATCH 3/4] temporary hack to fix console output
|
||||
|
||||
---
|
||||
drivers/gpu/drm/rockchip/analogix_dp-rockchip.c | 14 --------------
|
||||
1 file changed, 14 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c
|
||||
index 784bea8a10fa..51bc27102daa 100644
|
||||
index acd31ea3825d..383129f82093 100644
|
||||
--- a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c
|
||||
+++ b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c
|
||||
@@ -90,20 +90,6 @@ static int analogix_dp_psr_set(struct drm_encoder *encoder, bool enabled)
|
||||
|
@ -33,5 +33,5 @@ index 784bea8a10fa..51bc27102daa 100644
|
|||
return 0;
|
||||
}
|
||||
--
|
||||
2.11.1
|
||||
2.12.1
|
||||
|
|
@ -0,0 +1,488 @@
|
|||
From 8cb2f6088d8d6076d9ff0fd7b2a8639080887cae Mon Sep 17 00:00:00 2001
|
||||
From: Kevin Mihelich <kevin@archlinuxarm.org>
|
||||
Date: Thu, 6 Apr 2017 00:05:00 -0600
|
||||
Subject: [PATCH 4/4] Revert "CHROMIUM: drm/rockchip: cdn-dp: add HDCP 1.4
|
||||
support"
|
||||
|
||||
This reverts commit 0a2145692ed04ff3aab64c0e3ef6d230caa99105.
|
||||
---
|
||||
drivers/gpu/drm/rockchip/cdn-dp-core.c | 198 ---------------------------------
|
||||
drivers/gpu/drm/rockchip/cdn-dp-core.h | 1 -
|
||||
drivers/gpu/drm/rockchip/cdn-dp-reg.c | 112 -------------------
|
||||
drivers/gpu/drm/rockchip/cdn-dp-reg.h | 35 ------
|
||||
4 files changed, 346 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/rockchip/cdn-dp-core.c b/drivers/gpu/drm/rockchip/cdn-dp-core.c
|
||||
index c951d2280866..48cbad5963b5 100644
|
||||
--- a/drivers/gpu/drm/rockchip/cdn-dp-core.c
|
||||
+++ b/drivers/gpu/drm/rockchip/cdn-dp-core.c
|
||||
@@ -26,7 +26,6 @@
|
||||
#include <linux/extcon.h>
|
||||
#include <linux/firmware.h>
|
||||
#include <linux/hdmi-notifier.h>
|
||||
-#include <linux/iopoll.h>
|
||||
#include <linux/regmap.h>
|
||||
#include <linux/reset.h>
|
||||
#include <linux/mfd/syscon.h>
|
||||
@@ -39,15 +38,10 @@
|
||||
#include "cdn-dp-reg.h"
|
||||
#include "rockchip_drm_vop.h"
|
||||
|
||||
-#define HDCP_RETRY_INTERVAL_MS 100
|
||||
-#define HDCP_EVENT_TIMEOUT_MS 500
|
||||
-#define HDCP_AUTHENTICATE_DELAY_MS 100
|
||||
-
|
||||
#define HDCP_KEY_DATA_START_TRANSFER 0
|
||||
#define HDCP_KEY_DATA_START_DECRYPT 1
|
||||
|
||||
#define RK_SIP_HDCP_CONTROL 0x82000009
|
||||
-#define RK_SIP_HDCP_KEY_DATA64 0xC200000A
|
||||
|
||||
#define connector_to_dp(c) \
|
||||
container_of(c, struct cdn_dp_device, connector)
|
||||
@@ -196,50 +190,6 @@ static int cdn_dp_get_sink_count(struct cdn_dp_device *dp, u8 *sink_count)
|
||||
return 0;
|
||||
}
|
||||
|
||||
-static int cdn_dp_start_hdcp1x_auth(struct cdn_dp_device *dp)
|
||||
-{
|
||||
- int ret;
|
||||
- struct arm_smccc_res res;
|
||||
- uint64_t *buf;
|
||||
-
|
||||
- mutex_lock(&dp->lock);
|
||||
- if (!dp->active) {
|
||||
- dev_err(dp->dev, "firmware is not active\n");
|
||||
- goto out;
|
||||
- }
|
||||
-
|
||||
- arm_smccc_smc(RK_SIP_HDCP_CONTROL, HDCP_KEY_DATA_START_TRANSFER,
|
||||
- 0, 0, 0, 0, 0, 0, &res);
|
||||
-
|
||||
- buf = (uint64_t *)&dp->key;
|
||||
-
|
||||
- for (; !res.a0 && (u8 *)buf - (u8 *)&dp->key < sizeof(dp->key);
|
||||
- buf += 6)
|
||||
- arm_smccc_smc(RK_SIP_HDCP_KEY_DATA64, buf[0], buf[1],
|
||||
- buf[2], buf[3], buf[4], buf[5], 0, &res);
|
||||
-
|
||||
- if (res.a0) {
|
||||
- dev_err(dp->dev, "send hdcp keys failed: %ld\n", res.a0);
|
||||
- ret = -EIO;
|
||||
- goto out;
|
||||
- }
|
||||
- arm_smccc_smc(RK_SIP_HDCP_CONTROL, HDCP_KEY_DATA_START_DECRYPT,
|
||||
- 0, 0, 0, 0, 0, 0, &res);
|
||||
-
|
||||
- ret = cdn_dp_hdcp_tx_configuration(dp, HDCP_TX_1, true);
|
||||
- if (ret) {
|
||||
- dev_err(dp->dev, "start hdcp authentication failed: %d\n", ret);
|
||||
- goto out;
|
||||
- }
|
||||
-
|
||||
- schedule_delayed_work(&dp->hdcp_event_work,
|
||||
- msecs_to_jiffies(HDCP_AUTHENTICATE_DELAY_MS));
|
||||
-
|
||||
-out:
|
||||
- mutex_unlock(&dp->lock);
|
||||
- return ret;
|
||||
-}
|
||||
-
|
||||
static struct cdn_dp_port *cdn_dp_connected_port(struct cdn_dp_device *dp)
|
||||
{
|
||||
struct cdn_dp_port *port;
|
||||
@@ -307,71 +257,12 @@ static void cdn_dp_connector_destroy(struct drm_connector *connector)
|
||||
drm_connector_cleanup(connector);
|
||||
}
|
||||
|
||||
-static int cdn_dp_set_content_protection(struct cdn_dp_device *dp,
|
||||
- struct drm_mode_object *obj,
|
||||
- struct drm_property *property,
|
||||
- uint64_t val)
|
||||
-{
|
||||
- int ret;
|
||||
-
|
||||
- switch (val) {
|
||||
- case DRM_MODE_CONTENT_PROTECTION_UNDESIRED:
|
||||
- ret = cdn_dp_hdcp_tx_configuration(dp, HDCP_TX_1, false);
|
||||
- break;
|
||||
-
|
||||
- case DRM_MODE_CONTENT_PROTECTION_DESIRED:
|
||||
- ret = cdn_dp_start_hdcp1x_auth(dp);
|
||||
- break;
|
||||
-
|
||||
- case DRM_MODE_CONTENT_PROTECTION_ENABLED:
|
||||
- ret = -EINVAL;
|
||||
- }
|
||||
- return ret;
|
||||
-}
|
||||
-
|
||||
-static int cdn_dp_connector_set_property(struct drm_connector *connector,
|
||||
- struct drm_property *property,
|
||||
- uint64_t val)
|
||||
-{
|
||||
- struct cdn_dp_device *dp = connector_to_dp(connector);
|
||||
- int ret = 0;
|
||||
-
|
||||
- if (strcmp(property->name, "Content Protection") == 0)
|
||||
- ret = cdn_dp_set_content_protection(dp, &connector->base,
|
||||
- property, val);
|
||||
-
|
||||
- return ret;
|
||||
-}
|
||||
-
|
||||
-static int cdn_dp_connector_atomic_get_property(
|
||||
- struct drm_connector *connector,
|
||||
- const struct drm_connector_state *state,
|
||||
- struct drm_property *property,
|
||||
- uint64_t *val)
|
||||
-{
|
||||
- struct drm_mode_config *mc = &connector->dev->mode_config;
|
||||
- int i;
|
||||
-
|
||||
- if (property == mc->content_protection_property) {
|
||||
- for (i = 0; i < connector->properties.count; i++) {
|
||||
- if (connector->properties.properties[i] == property) {
|
||||
- *val = connector->properties.values[i];
|
||||
- return 0;
|
||||
- }
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- return -EINVAL;
|
||||
-}
|
||||
-
|
||||
static struct drm_connector_funcs cdn_dp_atomic_connector_funcs = {
|
||||
.dpms = drm_atomic_helper_connector_dpms,
|
||||
.detect = cdn_dp_connector_detect,
|
||||
.destroy = cdn_dp_connector_destroy,
|
||||
.fill_modes = drm_helper_probe_single_connector_modes,
|
||||
.reset = drm_atomic_helper_connector_reset,
|
||||
- .set_property = cdn_dp_connector_set_property,
|
||||
- .atomic_get_property = cdn_dp_connector_atomic_get_property,
|
||||
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
|
||||
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
|
||||
};
|
||||
@@ -1148,88 +1039,6 @@ static int cdn_dp_pd_event(struct notifier_block *nb,
|
||||
return NOTIFY_DONE;
|
||||
}
|
||||
|
||||
-static int cdn_dp_set_hdcp_drm_property(struct cdn_dp_device *dp, uint64_t val)
|
||||
-{
|
||||
- struct drm_connector *connector = &dp->connector;
|
||||
- struct drm_mode_config *mc = &connector->dev->mode_config;
|
||||
-
|
||||
- return drm_object_property_set_value(&connector->base,
|
||||
- mc->content_protection_property,
|
||||
- val);
|
||||
-}
|
||||
-
|
||||
-static bool cdn_dp_hdcp_authorize(struct cdn_dp_device *dp)
|
||||
-{
|
||||
- bool auth_done = false;
|
||||
- u16 tx_status;
|
||||
- u32 sw_event;
|
||||
- int ret;
|
||||
-
|
||||
- mutex_lock(&dp->lock);
|
||||
-
|
||||
- /*
|
||||
- * HDCP authentication might cause the disconnect hpd event, just
|
||||
- * stop the hdcp event SM.
|
||||
- */
|
||||
- if (!dp->connected) {
|
||||
- auth_done = true;
|
||||
- goto out;
|
||||
- }
|
||||
-
|
||||
- sw_event = cdn_dp_get_event(dp);
|
||||
-
|
||||
- if (sw_event & HDCP_TX_STATUS_EVENT) {
|
||||
- auth_done = true;
|
||||
-
|
||||
- ret = cdn_dp_hdcp_tx_status_req(dp, &tx_status);
|
||||
- if (ret)
|
||||
- goto out;
|
||||
- if (HDCP_TX_STATUS_ERROR(tx_status)) {
|
||||
- dev_err(dp->dev, "hdcp status error: %x\n",
|
||||
- HDCP_TX_STATUS_ERROR(tx_status));
|
||||
- goto out;
|
||||
- } else if (tx_status & HDCP_TX_STATUS_AUTHENTICATED) {
|
||||
- cdn_dp_set_hdcp_drm_property(dp,
|
||||
- DRM_MODE_CONTENT_PROTECTION_ENABLED);
|
||||
- goto out;
|
||||
- } else {
|
||||
- auth_done = false;
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- if (sw_event & HDCP_TX_IS_RECEIVER_ID_VALID_EVENT) {
|
||||
- ret = cdn_dp_hdcp_tx_is_receiver_id_valid_req(dp);
|
||||
- if (ret) {
|
||||
- auth_done = true;
|
||||
- goto out;
|
||||
- }
|
||||
- ret = cdn_dp_hdcp_tx_respond_id_valid(dp, true);
|
||||
- if (ret)
|
||||
- auth_done = true;
|
||||
- }
|
||||
-
|
||||
-out:
|
||||
- mutex_unlock(&dp->lock);
|
||||
-
|
||||
- return auth_done;
|
||||
-}
|
||||
-
|
||||
-static void cdn_dp_hdcp_event_work(struct work_struct *work)
|
||||
-{
|
||||
- struct cdn_dp_device *dp = container_of(work, struct cdn_dp_device,
|
||||
- hdcp_event_work.work);
|
||||
- unsigned long timeout = jiffies +
|
||||
- msecs_to_jiffies(HDCP_EVENT_TIMEOUT_MS);
|
||||
-
|
||||
- while (time_before(jiffies, timeout)) {
|
||||
- if (cdn_dp_hdcp_authorize(dp))
|
||||
- return;
|
||||
- msleep(HDCP_RETRY_INTERVAL_MS);
|
||||
- }
|
||||
-
|
||||
- dev_err(dp->dev, "Failed to authorize hdcp\n");
|
||||
-}
|
||||
-
|
||||
static int cdn_dp_bind(struct device *dev, struct device *master, void *data)
|
||||
{
|
||||
struct cdn_dp_device *dp = dev_get_drvdata(dev);
|
||||
@@ -1237,7 +1046,6 @@ static int cdn_dp_bind(struct device *dev, struct device *master, void *data)
|
||||
struct drm_connector *connector;
|
||||
struct cdn_dp_port *port;
|
||||
struct drm_device *drm_dev = data;
|
||||
- struct drm_mode_config *mode_config;
|
||||
int ret, i;
|
||||
|
||||
ret = cdn_dp_parse_dt(dp);
|
||||
@@ -1250,7 +1058,6 @@ static int cdn_dp_bind(struct device *dev, struct device *master, void *data)
|
||||
dp->active_port = -1;
|
||||
|
||||
INIT_WORK(&dp->event_work, cdn_dp_pd_event_work);
|
||||
- INIT_DELAYED_WORK(&dp->hdcp_event_work, cdn_dp_hdcp_event_work);
|
||||
|
||||
encoder = &dp->encoder;
|
||||
|
||||
@@ -1307,11 +1114,6 @@ static int cdn_dp_bind(struct device *dev, struct device *master, void *data)
|
||||
|
||||
schedule_work(&dp->event_work);
|
||||
|
||||
- mode_config = &connector->dev->mode_config;
|
||||
- drm_object_attach_property(&connector->base,
|
||||
- mode_config->content_protection_property,
|
||||
- DRM_MODE_CONTENT_PROTECTION_UNDESIRED);
|
||||
-
|
||||
return 0;
|
||||
|
||||
err_free_connector:
|
||||
diff --git a/drivers/gpu/drm/rockchip/cdn-dp-core.h b/drivers/gpu/drm/rockchip/cdn-dp-core.h
|
||||
index bd9f31183241..53778c769840 100644
|
||||
--- a/drivers/gpu/drm/rockchip/cdn-dp-core.h
|
||||
+++ b/drivers/gpu/drm/rockchip/cdn-dp-core.h
|
||||
@@ -127,6 +127,5 @@ struct cdn_dp_device {
|
||||
bool sink_has_audio;
|
||||
|
||||
struct cdn_dp_hdcp_key_1x key;
|
||||
- struct delayed_work hdcp_event_work;
|
||||
};
|
||||
#endif /* _CDN_DP_CORE_H */
|
||||
diff --git a/drivers/gpu/drm/rockchip/cdn-dp-reg.c b/drivers/gpu/drm/rockchip/cdn-dp-reg.c
|
||||
index 63b35796fe26..39581986e722 100644
|
||||
--- a/drivers/gpu/drm/rockchip/cdn-dp-reg.c
|
||||
+++ b/drivers/gpu/drm/rockchip/cdn-dp-reg.c
|
||||
@@ -12,7 +12,6 @@
|
||||
* GNU General Public License for more details.
|
||||
*/
|
||||
|
||||
-#include <linux/arm-smccc.h>
|
||||
#include <linux/clk.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/delay.h>
|
||||
@@ -978,114 +977,3 @@ err_audio_config:
|
||||
DRM_DEV_ERROR(dp->dev, "audio config failed: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
-
|
||||
-int cdn_dp_hdcp_tx_configuration(struct cdn_dp_device *dp, int tx_mode,
|
||||
- bool active)
|
||||
-{
|
||||
- u8 msg;
|
||||
-
|
||||
- msg = tx_mode;
|
||||
- if (active)
|
||||
- msg |= HDCP_TX_ACTIVATE;
|
||||
-
|
||||
- return cdn_dp_mailbox_send(dp, MB_MODULE_ID_HDCP_TX,
|
||||
- HDCP_TX_CONFIGURATION, sizeof(msg), &msg);
|
||||
-}
|
||||
-
|
||||
-int cdn_dp_hdcp_tx_status_req(struct cdn_dp_device *dp, uint16_t *tx_status)
|
||||
-{
|
||||
- u8 status[5];
|
||||
- int ret;
|
||||
-
|
||||
- ret = cdn_dp_mailbox_send(dp, MB_MODULE_ID_HDCP_TX,
|
||||
- HDCP_TX_STATUS_CHANGE, 0, NULL);
|
||||
- if (ret)
|
||||
- goto err_hdcp_tx_status_rq;
|
||||
-
|
||||
- ret = cdn_dp_mailbox_validate_receive(dp, MB_MODULE_ID_HDCP_TX,
|
||||
- HDCP_TX_STATUS_CHANGE,
|
||||
- sizeof(status));
|
||||
- if (ret)
|
||||
- goto err_hdcp_tx_status_rq;
|
||||
-
|
||||
- ret = cdn_dp_mailbox_read_receive(dp, status, sizeof(status));
|
||||
- if (ret)
|
||||
- goto err_hdcp_tx_status_rq;
|
||||
-
|
||||
- *tx_status = status[0] << 8 | status[1];
|
||||
-
|
||||
-err_hdcp_tx_status_rq:
|
||||
- if (ret)
|
||||
- DRM_DEV_ERROR(dp->dev, "hdcp tx status failed: %d\n", ret);
|
||||
- return ret;
|
||||
-}
|
||||
-
|
||||
-int cdn_dp_hdcp_tx_is_receiver_id_valid_req(struct cdn_dp_device *dp)
|
||||
-{
|
||||
- int ret;
|
||||
- u32 mbox_size, i;
|
||||
- u8 header[4], *resp;
|
||||
-
|
||||
- ret = cdn_dp_mailbox_send(dp, MB_MODULE_ID_HDCP_TX,
|
||||
- HDCP_TX_IS_RECEIVER_ID_VALID,
|
||||
- 0, NULL);
|
||||
- if (ret)
|
||||
- goto err_hdcp_tx_is_receiver_id_valid_req;
|
||||
-
|
||||
- /*
|
||||
- * The size of HDCP_TX_IS_RECEIVER_ID_VALID_RESP is variable, which
|
||||
- * is dependent on HDCP device type. It will response receiver ID
|
||||
- * list if the device is a repeater.
|
||||
- * So we need to distinguish the size.
|
||||
- */
|
||||
- for (i = 0; i < 4; i++) {
|
||||
- ret = cdn_dp_mailbox_read(dp);
|
||||
- if (ret < 0)
|
||||
- goto err_hdcp_tx_is_receiver_id_valid_req;
|
||||
-
|
||||
- header[i] = ret;
|
||||
- }
|
||||
-
|
||||
- mbox_size = (header[2] << 8) | header[3];
|
||||
-
|
||||
- if (header[0] != HDCP_TX_IS_RECEIVER_ID_VALID ||
|
||||
- header[1] != MB_MODULE_ID_HDCP_TX ||
|
||||
- !IS_HDCP_TX_RECEIVER_ID_VALID_RESP_SIZE_VALID(mbox_size)) {
|
||||
- ret = -EINVAL;
|
||||
- for (i = 0; i < mbox_size; i++)
|
||||
- if (cdn_dp_mailbox_read(dp) < 0)
|
||||
- break;
|
||||
-
|
||||
- goto err_hdcp_tx_is_receiver_id_valid_req;
|
||||
- }
|
||||
-
|
||||
- resp = kzalloc(mbox_size, GFP_KERNEL);
|
||||
- if (IS_ERR(resp) || IS_ERR_OR_NULL(resp)) {
|
||||
- ret = -ENOMEM;
|
||||
- goto err_hdcp_tx_is_receiver_id_valid_req;
|
||||
- }
|
||||
-
|
||||
- ret = cdn_dp_mailbox_read_receive(dp, resp, mbox_size);
|
||||
-
|
||||
- /* TODO judge the all receivers are in revocation list. */
|
||||
- kfree(resp);
|
||||
-
|
||||
-err_hdcp_tx_is_receiver_id_valid_req:
|
||||
- if (ret)
|
||||
- DRM_DEV_ERROR(dp->dev,
|
||||
- "hdcp receivers id verification failed: %d\n",
|
||||
- ret);
|
||||
- return ret;
|
||||
-}
|
||||
-
|
||||
-int cdn_dp_hdcp_tx_respond_id_valid(struct cdn_dp_device *dp, bool valid)
|
||||
-{
|
||||
- u8 msg = 0;
|
||||
-
|
||||
- if (valid)
|
||||
- msg = 0x01;
|
||||
- return cdn_dp_mailbox_send(dp, MB_MODULE_ID_HDCP_TX,
|
||||
- HDCP_TX_RESPOND_RECEIVER_ID_VALID,
|
||||
- sizeof(msg), &msg);
|
||||
-}
|
||||
-
|
||||
diff --git a/drivers/gpu/drm/rockchip/cdn-dp-reg.h b/drivers/gpu/drm/rockchip/cdn-dp-reg.h
|
||||
index d8935c0bcf87..a295b899450c 100644
|
||||
--- a/drivers/gpu/drm/rockchip/cdn-dp-reg.h
|
||||
+++ b/drivers/gpu/drm/rockchip/cdn-dp-reg.h
|
||||
@@ -329,22 +329,6 @@
|
||||
#define GENERAL_BUS_SETTINGS 0x03
|
||||
#define GENERAL_TEST_ACCESS 0x04
|
||||
|
||||
-/* hdcp opcode */
|
||||
-#define HDCP_TX_CONFIGURATION 0x00
|
||||
-#define HDCP2_TX_SET_PUBLIC_KEY_PARAMS 0x01
|
||||
-#define HDCP2_TX_SET_DEBUG_RANDOM_NUMBERS 0x02
|
||||
-#define HDCP2_TX_RESPOND_KM 0x03
|
||||
-#define HDCP1_TX_SEND_KEYS 0x04
|
||||
-#define HDCP1_TX_SEND_RANDOM_AN 0x05
|
||||
-#define HDCP_TX_STATUS_CHANGE 0x06
|
||||
-#define HDCP2_TX_IS_KM_STORED 0x07
|
||||
-#define HDCP2_TX_STORE_KM 0x08
|
||||
-#define HDCP_TX_IS_RECEIVER_ID_VALID 0x09
|
||||
-#define HDCP_TX_RESPOND_RECEIVER_ID_VALID 0x0a
|
||||
-
|
||||
-#define IS_HDCP_TX_RECEIVER_ID_VALID_RESP_SIZE_VALID(x) \
|
||||
- (((((x) - 2) % 5) == 0) || ((((x) - 4) % 5) == 0))
|
||||
-
|
||||
#define DPTX_SET_POWER_MNG 0x00
|
||||
#define DPTX_SET_HOST_CAPABILITIES 0x01
|
||||
#define DPTX_GET_EDID 0x02
|
||||
@@ -411,14 +395,6 @@
|
||||
#define HDCP2_TX_STORE_KM_EVENT BIT(6)
|
||||
#define HDCP_TX_IS_RECEIVER_ID_VALID_EVENT BIT(7)
|
||||
|
||||
-#define HDCP_TX_ACTIVATE BIT(2)
|
||||
-
|
||||
-#define HDCP_TX_STATUS_AUTHENTICATED BIT(0)
|
||||
-#define HDCP_TX_STATUS_RECEIVER_IS_REPEATER BIT(1)
|
||||
-#define HDCP_TX_STATUS_RX_HDCP1 (0x01 << 2)
|
||||
-#define HDCP_TX_STATUS_RX_HDCP2 (0x02 << 2)
|
||||
-#define HDCP_TX_STATUS_ERROR(x) (((x) >> 5) & 0xf)
|
||||
-
|
||||
#define TU_SIZE 30
|
||||
#define CDN_DP_MAX_LINK_RATE DP_LINK_BW_5_4
|
||||
|
||||
@@ -484,12 +460,6 @@ enum vic_bt_type {
|
||||
BT_709 = 0x1,
|
||||
};
|
||||
|
||||
-enum HDCP_TX_SUPPORT {
|
||||
- HDCP_TX_2,
|
||||
- HDCP_TX_1,
|
||||
- HDCP_TX_BOTH,
|
||||
-};
|
||||
-
|
||||
void cdn_dp_clock_reset(struct cdn_dp_device *dp);
|
||||
|
||||
void cdn_dp_set_fw_clk(struct cdn_dp_device *dp, u32 clk);
|
||||
@@ -510,9 +480,4 @@ int cdn_dp_config_video(struct cdn_dp_device *dp);
|
||||
int cdn_dp_audio_stop(struct cdn_dp_device *dp, struct audio_info *audio);
|
||||
int cdn_dp_audio_mute(struct cdn_dp_device *dp, bool enable);
|
||||
int cdn_dp_audio_config(struct cdn_dp_device *dp, struct audio_info *audio);
|
||||
-int cdn_dp_hdcp_tx_configuration(struct cdn_dp_device *dp, int tx_mode,
|
||||
- bool active);
|
||||
-int cdn_dp_hdcp_tx_status_req(struct cdn_dp_device *dp, uint16_t *tx_status);
|
||||
-int cdn_dp_hdcp_tx_is_receiver_id_valid_req(struct cdn_dp_device *dp);
|
||||
-int cdn_dp_hdcp_tx_respond_id_valid(struct cdn_dp_device *dp, bool valid);
|
||||
#endif /* _CDN_DP_REG_H */
|
||||
--
|
||||
2.12.1
|
||||
|
|
@ -7,8 +7,8 @@ pkgbase=linux-gru
|
|||
_kernelname=${pkgbase#linux}
|
||||
_desc="Gru Chromebooks"
|
||||
pkgver=4.4.52
|
||||
pkgrel=2
|
||||
_commit=22201df26250dfd6cf647b984f259e6c4c6649b8
|
||||
pkgrel=3
|
||||
_commit=5a4b233ec6c1ca4291b3bcd2372e57b2b932738e
|
||||
arch=('aarch64')
|
||||
url="https://chromium.googlesource.com/chromiumos/third_party/kernel/+/chromeos-4.4"
|
||||
license=('GPL2')
|
||||
|
@ -16,22 +16,28 @@ makedepends=('xmlto' 'docbook-xsl' 'kmod' 'inetutils' 'bc' 'git' 'uboot-tools' '
|
|||
options=('!strip')
|
||||
source=("https://chromium.googlesource.com/chromiumos/third_party/kernel/+archive/${_commit}.tar.gz"
|
||||
'0001-Input-atmel_mxt_ts-Use-KERN_DEBUG-loglevel-for-statu.patch'
|
||||
'0002-temporary-hack-to-fix-console-output.patch'
|
||||
'0002-Revert-CHROMIUM-drm-rockchip-Add-PSR-residency-debug.patch'
|
||||
'0003-temporary-hack-to-fix-console-output.patch'
|
||||
'0004-Revert-CHROMIUM-drm-rockchip-cdn-dp-add-HDCP-1.4-sup.patch'
|
||||
'config'
|
||||
'kernel.its'
|
||||
'kernel.keyblock'
|
||||
'kernel_data_key.vbprivk')
|
||||
md5sums=('9109e451b830b08af6453f6bb5355c5f'
|
||||
'a2b9f09a8701abce798f2b4854631e47'
|
||||
'58f5619988f7b4253d618586c24bf085'
|
||||
'1bd46f0bec891ea125b5c88a8c60c8a7'
|
||||
md5sums=('e5459dbcd0197b41d654166ee9966df7'
|
||||
'a7fc13e2f5b0a3a4252e0d5c41a6ed69'
|
||||
'65353ad970d088e5d778c8dcf506ee30'
|
||||
'4c7730ef38df0d5e688e4fb10220489b'
|
||||
'a2d7572833eebdd2d36ef0f28dabf3e6'
|
||||
'ac126814e05a91a7456856cd9b1e8733'
|
||||
'ded019b1c1e32c53b98e602f46ea1ba0'
|
||||
'61c5ff73c136ed07a7aadbf58db3d96a'
|
||||
'584777ae88bce2c5659960151b64c7d8')
|
||||
|
||||
prepare() {
|
||||
git apply 0001-Input-atmel_mxt_ts-Use-KERN_DEBUG-loglevel-for-statu.patch
|
||||
git apply 0002-temporary-hack-to-fix-console-output.patch
|
||||
git apply 0002-Revert-CHROMIUM-drm-rockchip-Add-PSR-residency-debug.patch
|
||||
git apply 0003-temporary-hack-to-fix-console-output.patch
|
||||
git apply 0004-Revert-CHROMIUM-drm-rockchip-cdn-dp-add-HDCP-1.4-sup.patch
|
||||
|
||||
cp config .config
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/arm64 4.4.52-2 Kernel Configuration
|
||||
# Linux/arm64 4.4.52-3 Kernel Configuration
|
||||
#
|
||||
CONFIG_ARM64=y
|
||||
CONFIG_64BIT=y
|
||||
|
@ -1930,7 +1930,6 @@ CONFIG_WLAN_VENDOR_INTEL=y
|
|||
# CONFIG_IWL4965 is not set
|
||||
# CONFIG_IWL3945 is not set
|
||||
# CONFIG_IWLWIFI is not set
|
||||
# CONFIG_IWL7000 is not set
|
||||
CONFIG_WLAN_VENDOR_INTERSIL=y
|
||||
CONFIG_HOSTAP=m
|
||||
CONFIG_HOSTAP_FIRMWARE=y
|
||||
|
|
Loading…
Reference in a new issue