diff options
author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2017-09-21 09:16:40 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2017-09-21 09:16:40 +0200 |
commit | 6adcca806694a3e47f94625d7855b02368391d7a (patch) | |
tree | 791ca2c0442fe364206592dbb25a403e16d7ae03 | |
parent | 6f420586f4c17ce2800abae383d6f289120285d2 (diff) | |
download | ltsi-kernel-6adcca806694a3e47f94625d7855b02368391d7a.tar.gz |
Update KERNEL_VERSION to 4.9.51v4.9.51-ltsi
6 files changed, 14 insertions, 158 deletions
diff --git a/KERNEL_VERSION b/KERNEL_VERSION index 83e4ab67ec7a54..2ba6040343925f 100644 --- a/KERNEL_VERSION +++ b/KERNEL_VERSION @@ -1 +1 @@ -4.9.47 +4.9.51 diff --git a/patches.renesas/0001-drm-bridge-adv7511-Add-Audio-support.patch b/patches.renesas/0001-drm-bridge-adv7511-Add-Audio-support.patch index 68098bc81a4c29..718ed1e89958a1 100644 --- a/patches.renesas/0001-drm-bridge-adv7511-Add-Audio-support.patch +++ b/patches.renesas/0001-drm-bridge-adv7511-Add-Audio-support.patch @@ -85,7 +85,7 @@ Signed-off-by: Simon Horman <horms+renesas@verge.net.au> unsigned int current_edid_segment; uint8_t edid_buf[256]; -@@ -334,6 +336,7 @@ struct adv7511 { +@@ -336,6 +338,7 @@ struct adv7511 { bool use_timing_gen; enum adv7511_type type; @@ -93,7 +93,7 @@ Signed-off-by: Simon Horman <horms+renesas@verge.net.au> }; #ifdef CONFIG_DRM_I2C_ADV7533 -@@ -389,4 +392,17 @@ static inline int adv7533_parse_dt(struc +@@ -391,4 +394,17 @@ static inline int adv7533_parse_dt(struc } #endif @@ -329,7 +329,7 @@ Signed-off-by: Simon Horman <horms+renesas@verge.net.au> +} --- a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c +++ b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c -@@ -1037,6 +1037,8 @@ static int adv7511_probe(struct i2c_clie +@@ -1060,6 +1060,8 @@ static int adv7511_probe(struct i2c_clie goto err_unregister_cec; } @@ -338,7 +338,7 @@ Signed-off-by: Simon Horman <horms+renesas@verge.net.au> return 0; err_unregister_cec: -@@ -1058,6 +1060,8 @@ static int adv7511_remove(struct i2c_cli +@@ -1081,6 +1083,8 @@ static int adv7511_remove(struct i2c_cli drm_bridge_remove(&adv7511->bridge); diff --git a/patches.renesas/0001-drm-bridge-adv7511-Initialize-regulators.patch b/patches.renesas/0001-drm-bridge-adv7511-Initialize-regulators.patch index 3126469a3b422d..fcca4b05f81427 100644 --- a/patches.renesas/0001-drm-bridge-adv7511-Initialize-regulators.patch +++ b/patches.renesas/0001-drm-bridge-adv7511-Initialize-regulators.patch @@ -29,7 +29,7 @@ Signed-off-by: Simon Horman <horms+renesas@verge.net.au> #include <drm/drm_crtc_helper.h> #include <drm/drm_mipi_dsi.h> -@@ -329,6 +330,9 @@ struct adv7511 { +@@ -331,6 +332,9 @@ struct adv7511 { struct gpio_desc *gpio_pd; @@ -41,7 +41,7 @@ Signed-off-by: Simon Horman <horms+renesas@verge.net.au> struct mipi_dsi_device *dsi; --- a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c +++ b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c -@@ -839,6 +839,58 @@ static struct drm_bridge_funcs adv7511_b +@@ -860,6 +860,58 @@ static struct drm_bridge_funcs adv7511_b * Probe & remove */ @@ -100,7 +100,7 @@ Signed-off-by: Simon Horman <horms+renesas@verge.net.au> static int adv7511_parse_dt(struct device_node *np, struct adv7511_link_config *config) { -@@ -939,6 +991,7 @@ static int adv7511_probe(struct i2c_clie +@@ -960,6 +1012,7 @@ static int adv7511_probe(struct i2c_clie if (!adv7511) return -ENOMEM; @@ -108,7 +108,7 @@ Signed-off-by: Simon Horman <horms+renesas@verge.net.au> adv7511->powered = false; adv7511->status = connector_status_disconnected; -@@ -956,13 +1009,21 @@ static int adv7511_probe(struct i2c_clie +@@ -977,13 +1030,21 @@ static int adv7511_probe(struct i2c_clie if (ret) return ret; @@ -132,7 +132,7 @@ Signed-off-by: Simon Horman <horms+renesas@verge.net.au> if (adv7511->gpio_pd) { mdelay(5); -@@ -970,12 +1031,14 @@ static int adv7511_probe(struct i2c_clie +@@ -991,12 +1052,14 @@ static int adv7511_probe(struct i2c_clie } adv7511->regmap = devm_regmap_init_i2c(i2c, &adv7511_regmap_config); @@ -150,7 +150,7 @@ Signed-off-by: Simon Horman <horms+renesas@verge.net.au> dev_dbg(dev, "Rev. %d\n", val); if (adv7511->type == ADV7511) -@@ -985,7 +1048,7 @@ static int adv7511_probe(struct i2c_clie +@@ -1006,7 +1069,7 @@ static int adv7511_probe(struct i2c_clie else ret = adv7533_patch_registers(adv7511); if (ret) @@ -159,7 +159,7 @@ Signed-off-by: Simon Horman <horms+renesas@verge.net.au> regmap_write(adv7511->regmap, ADV7511_REG_EDID_I2C_ADDR, edid_i2c_addr); regmap_write(adv7511->regmap, ADV7511_REG_PACKET_I2C_ADDR, -@@ -995,10 +1058,11 @@ static int adv7511_probe(struct i2c_clie +@@ -1016,10 +1079,11 @@ static int adv7511_probe(struct i2c_clie adv7511_packet_disable(adv7511, 0xffff); @@ -174,7 +174,7 @@ Signed-off-by: Simon Horman <horms+renesas@verge.net.au> if (adv7511->type == ADV7533) { ret = adv7533_init_cec(adv7511); -@@ -1045,6 +1109,8 @@ err_unregister_cec: +@@ -1068,6 +1132,8 @@ err_unregister_cec: adv7533_uninit_cec(adv7511); err_i2c_unregister_edid: i2c_unregister_device(adv7511->i2c_edid); @@ -183,7 +183,7 @@ Signed-off-by: Simon Horman <horms+renesas@verge.net.au> return ret; } -@@ -1058,6 +1124,8 @@ static int adv7511_remove(struct i2c_cli +@@ -1081,6 +1147,8 @@ static int adv7511_remove(struct i2c_cli adv7533_uninit_cec(adv7511); } diff --git a/patches.renesas/0002-drm-bridge-adv7511-Use-work_struct-to-defer-hotplug-.patch b/patches.renesas/0002-drm-bridge-adv7511-Use-work_struct-to-defer-hotplug-.patch deleted file mode 100644 index c8881752f4e89a..00000000000000 --- a/patches.renesas/0002-drm-bridge-adv7511-Use-work_struct-to-defer-hotplug-.patch +++ /dev/null @@ -1,83 +0,0 @@ -From 4f389283ad4ecc0bceb09cccb825df1822fca6e3 Mon Sep 17 00:00:00 2001 -From: John Stultz <john.stultz@linaro.org> -Date: Mon, 16 Jan 2017 16:52:47 -0800 -Subject: [PATCH 002/255] drm/bridge: adv7511: Use work_struct to defer hotplug - handing to out of irq context - -I was recently seeing issues with EDID probing, where -the logic to wait for the EDID read bit to be set by the -IRQ wasn't happening and the code would time out and fail. - -Digging deeper, I found this was due to the fact that -IRQs were disabled as we were running in IRQ context from -the HPD signal. - -Thus this patch changes the logic to handle the HPD signal -via a work_struct so we can be out of irq context. - -With this patch, the EDID probing on hotplug does not time -out. - -Cc: David Airlie <airlied@linux.ie> -Cc: Archit Taneja <architt@codeaurora.org> -Cc: Wolfram Sang <wsa+renesas@sang-engineering.com> -Cc: Lars-Peter Clausen <lars@metafoo.de> -Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com> -Cc: dri-devel@lists.freedesktop.org -Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> -Tested-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> -Signed-off-by: John Stultz <john.stultz@linaro.org> -Signed-off-by: Archit Taneja <architt@codeaurora.org> -Link: http://patchwork.freedesktop.org/patch/msgid/1484614372-15342-2-git-send-email-john.stultz@linaro.org -(cherry picked from commit 518cb7057a59b9441336d2e88a396d52b6ab0cce) -Signed-off-by: Simon Horman <horms+renesas@verge.net.au> ---- - drivers/gpu/drm/bridge/adv7511/adv7511.h | 2 ++ - drivers/gpu/drm/bridge/adv7511/adv7511_drv.c | 11 ++++++++++- - 2 files changed, 12 insertions(+), 1 deletion(-) - ---- a/drivers/gpu/drm/bridge/adv7511/adv7511.h -+++ b/drivers/gpu/drm/bridge/adv7511/adv7511.h -@@ -318,6 +318,8 @@ struct adv7511 { - bool edid_read; - - wait_queue_head_t wq; -+ struct work_struct hpd_work; -+ - struct drm_bridge bridge; - struct drm_connector connector; - ---- a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c -+++ b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c -@@ -402,6 +402,13 @@ static bool adv7511_hpd(struct adv7511 * - return false; - } - -+static void adv7511_hpd_work(struct work_struct *work) -+{ -+ struct adv7511 *adv7511 = container_of(work, struct adv7511, hpd_work); -+ -+ drm_helper_hpd_irq_event(adv7511->connector.dev); -+} -+ - static int adv7511_irq_process(struct adv7511 *adv7511, bool process_hpd) - { - unsigned int irq0, irq1; -@@ -419,7 +426,7 @@ static int adv7511_irq_process(struct ad - regmap_write(adv7511->regmap, ADV7511_REG_INT(1), irq1); - - if (process_hpd && irq0 & ADV7511_INT0_HPD && adv7511->bridge.encoder) -- drm_helper_hpd_irq_event(adv7511->connector.dev); -+ schedule_work(&adv7511->hpd_work); - - if (irq0 & ADV7511_INT0_EDID_READY || irq1 & ADV7511_INT1_DDC_ERROR) { - adv7511->edid_read = true; -@@ -1070,6 +1077,8 @@ static int adv7511_probe(struct i2c_clie - goto err_i2c_unregister_edid; - } - -+ INIT_WORK(&adv7511->hpd_work, adv7511_hpd_work); -+ - if (i2c->irq) { - init_waitqueue_head(&adv7511->wq); - diff --git a/patches.renesas/0003-drm-bridge-adv7511-Switch-to-using-drm_kms_helper_ho.patch b/patches.renesas/0003-drm-bridge-adv7511-Switch-to-using-drm_kms_helper_ho.patch deleted file mode 100644 index 2ed38c015e163b..00000000000000 --- a/patches.renesas/0003-drm-bridge-adv7511-Switch-to-using-drm_kms_helper_ho.patch +++ /dev/null @@ -1,59 +0,0 @@ -From 399870f6fae9864ccc6a72db51b05cbdddfe5af5 Mon Sep 17 00:00:00 2001 -From: John Stultz <john.stultz@linaro.org> -Date: Mon, 16 Jan 2017 16:52:48 -0800 -Subject: [PATCH 003/255] drm/bridge: adv7511: Switch to using - drm_kms_helper_hotplug_event() - -In chasing down a previous issue with EDID probing from calling -drm_helper_hpd_irq_event() from irq context, Laurent noticed -that the DRM documentation suggests that -drm_kms_helper_hotplug_event() should be used instead. - -Thus this patch replaces drm_helper_hpd_irq_event() with -drm_kms_helper_hotplug_event(), which requires we update the -connector.status entry and only call _hotplug_event() when the -status changes. - -Cc: David Airlie <airlied@linux.ie> -Cc: Archit Taneja <architt@codeaurora.org> -Cc: Wolfram Sang <wsa+renesas@sang-engineering.com> -Cc: Lars-Peter Clausen <lars@metafoo.de> -Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com> -Cc: dri-devel@lists.freedesktop.org -Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> -Tested-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> -Signed-off-by: John Stultz <john.stultz@linaro.org> -Signed-off-by: Archit Taneja <architt@codeaurora.org> -Link: http://patchwork.freedesktop.org/patch/msgid/1484614372-15342-3-git-send-email-john.stultz@linaro.org -(cherry picked from commit 6d5104c5a6b56385426e15047050584794bb6254) -Signed-off-by: Simon Horman <horms+renesas@verge.net.au> ---- - drivers/gpu/drm/bridge/adv7511/adv7511_drv.c | 16 +++++++++++++++- - 1 file changed, 15 insertions(+), 1 deletion(-) - ---- a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c -+++ b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c -@@ -405,8 +405,22 @@ static bool adv7511_hpd(struct adv7511 * - static void adv7511_hpd_work(struct work_struct *work) - { - struct adv7511 *adv7511 = container_of(work, struct adv7511, hpd_work); -+ enum drm_connector_status status; -+ unsigned int val; -+ int ret; - -- drm_helper_hpd_irq_event(adv7511->connector.dev); -+ ret = regmap_read(adv7511->regmap, ADV7511_REG_STATUS, &val); -+ if (ret < 0) -+ status = connector_status_disconnected; -+ else if (val & ADV7511_STATUS_HPD) -+ status = connector_status_connected; -+ else -+ status = connector_status_disconnected; -+ -+ if (adv7511->connector.status != status) { -+ adv7511->connector.status = status; -+ drm_kms_helper_hotplug_event(adv7511->connector.dev); -+ } - } - - static int adv7511_irq_process(struct adv7511 *adv7511, bool process_hpd) @@ -314,8 +314,6 @@ patches.renesas/0298-drm-bridge-dw_hdmi-add-dw-hdmi-i2c-bus-adapter-suppo.patch patches.renesas/0299-drm-bridge-add-DesignWare-HDMI-I2S-audio-support.patch patches.renesas/0001-drm-bridge-adv7511-Initialize-regulators.patch -patches.renesas/0002-drm-bridge-adv7511-Use-work_struct-to-defer-hotplug-.patch -patches.renesas/0003-drm-bridge-adv7511-Switch-to-using-drm_kms_helper_ho.patch patches.renesas/0004-drm-bridge-adv7511-Enable-HPD-interrupts-to-support-.patch patches.renesas/0005-drm-bridge-adv7511-Rework-adv7511_power_on-off-so-th.patch patches.renesas/0006-drm-bridge-adv7511-Reuse-__adv7511_power_on-off-when.patch |