kernel: update kernel 4.9 to 4.9.20

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
openwrt-18.06
Hauke Mehrtens 2017-04-02 10:29:55 +02:00
parent 97e6b67291
commit b26e34214c
12 changed files with 38 additions and 213 deletions

View File

@ -4,11 +4,11 @@ LINUX_RELEASE?=1
LINUX_VERSION-3.18 = .43 LINUX_VERSION-3.18 = .43
LINUX_VERSION-4.4 = .56 LINUX_VERSION-4.4 = .56
LINUX_VERSION-4.9 = .17 LINUX_VERSION-4.9 = .20
LINUX_KERNEL_HASH-3.18.43 = 1236e8123a6ce537d5029232560966feed054ae31776fe8481dd7d18cdd5492c LINUX_KERNEL_HASH-3.18.43 = 1236e8123a6ce537d5029232560966feed054ae31776fe8481dd7d18cdd5492c
LINUX_KERNEL_HASH-4.4.56 = 55181e24869e4b550ef756eecd1ab4f6774228c457f4830e9e779c6db4c2a2b6 LINUX_KERNEL_HASH-4.4.56 = 55181e24869e4b550ef756eecd1ab4f6774228c457f4830e9e779c6db4c2a2b6
LINUX_KERNEL_HASH-4.9.17 = 9095c16550ebae9cbe0979a706116d95fbd8d270c1068857c4a8788de0f9ac7f LINUX_KERNEL_HASH-4.9.20 = 48660806dd32fb8dcbcf5932291bf6cc7d29240070372230871e0f56fea81341
ifdef KERNEL_PATCHVER ifdef KERNEL_PATCHVER
LINUX_VERSION:=$(KERNEL_PATCHVER)$(strip $(LINUX_VERSION-$(KERNEL_PATCHVER))) LINUX_VERSION:=$(KERNEL_PATCHVER)$(strip $(LINUX_VERSION-$(KERNEL_PATCHVER)))

View File

@ -62,7 +62,7 @@ Signed-off-by: Eric Anholt <eric@anholt.net>
--- a/drivers/gpu/drm/vc4/vc4_drv.c --- a/drivers/gpu/drm/vc4/vc4_drv.c
+++ b/drivers/gpu/drm/vc4/vc4_drv.c +++ b/drivers/gpu/drm/vc4/vc4_drv.c
@@ -292,6 +292,7 @@ static struct platform_driver *const com @@ -295,6 +295,7 @@ static struct platform_driver *const com
&vc4_dpi_driver, &vc4_dpi_driver,
&vc4_hvs_driver, &vc4_hvs_driver,
&vc4_crtc_driver, &vc4_crtc_driver,

View File

@ -1,68 +0,0 @@
From 57b0774967d7ea8d4173f82387100a84e4ba05d8 Mon Sep 17 00:00:00 2001
From: Eric Anholt <eric@anholt.net>
Date: Thu, 20 Oct 2016 16:48:12 -0700
Subject: [PATCH] drm/vc4: Fix termination of the initial scan for branch
targets.
The loop is scanning until the original max_ip (size of the BO), but
we want to not examine any code after the PROG_END's delay slots.
There was a block trying to do that, except that we had some early
continue statements if the signal wasn't a PROG_END or a BRANCH.
The failure mode would be that a valid shader is rejected because some
undefined memory after the PROG_END slots is parsed as a branch and
the rest of its setup is illegal. I haven't seen this in the wild,
but valgrind was complaining when about this up in the userland
simulator mode.
Signed-off-by: Eric Anholt <eric@anholt.net>
(cherry picked from commit 457e67a728696c4f8e6423c64e93def50530db9a)
---
drivers/gpu/drm/vc4/vc4_validate_shaders.c | 19 ++++++++-----------
1 file changed, 8 insertions(+), 11 deletions(-)
--- a/drivers/gpu/drm/vc4/vc4_validate_shaders.c
+++ b/drivers/gpu/drm/vc4/vc4_validate_shaders.c
@@ -608,9 +608,7 @@ static bool
vc4_validate_branches(struct vc4_shader_validation_state *validation_state)
{
uint32_t max_branch_target = 0;
- bool found_shader_end = false;
int ip;
- int shader_end_ip = 0;
int last_branch = -2;
for (ip = 0; ip < validation_state->max_ip; ip++) {
@@ -621,8 +619,13 @@ vc4_validate_branches(struct vc4_shader_
uint32_t branch_target_ip;
if (sig == QPU_SIG_PROG_END) {
- shader_end_ip = ip;
- found_shader_end = true;
+ /* There are two delay slots after program end is
+ * signaled that are still executed, then we're
+ * finished. validation_state->max_ip is the
+ * instruction after the last valid instruction in the
+ * program.
+ */
+ validation_state->max_ip = ip + 3;
continue;
}
@@ -676,15 +679,9 @@ vc4_validate_branches(struct vc4_shader_
}
set_bit(after_delay_ip, validation_state->branch_targets);
max_branch_target = max(max_branch_target, after_delay_ip);
-
- /* There are two delay slots after program end is signaled
- * that are still executed, then we're finished.
- */
- if (found_shader_end && ip == shader_end_ip + 2)
- break;
}
- if (max_branch_target > shader_end_ip) {
+ if (max_branch_target > validation_state->max_ip - 3) {
DRM_ERROR("Branch landed after QPU_SIG_PROG_END");
return false;
}

View File

@ -19,8 +19,8 @@ Signed-off-by: Eric Anholt <eric@anholt.net>
--- a/drivers/gpu/drm/vc4/vc4_drv.c --- a/drivers/gpu/drm/vc4/vc4_drv.c
+++ b/drivers/gpu/drm/vc4/vc4_drv.c +++ b/drivers/gpu/drm/vc4/vc4_drv.c
@@ -78,6 +78,7 @@ static int vc4_get_param_ioctl(struct dr @@ -81,6 +81,7 @@ static int vc4_get_param_ioctl(struct dr
pm_runtime_put(&vc4->v3d->pdev->dev); pm_runtime_put_autosuspend(&vc4->v3d->pdev->dev);
break; break;
case DRM_VC4_PARAM_SUPPORTS_BRANCHES: case DRM_VC4_PARAM_SUPPORTS_BRANCHES:
+ case DRM_VC4_PARAM_SUPPORTS_ETC1: + case DRM_VC4_PARAM_SUPPORTS_ETC1:

View File

@ -1,78 +0,0 @@
From 936dc8b00ccd5072c5d610b97199402275bfdf26 Mon Sep 17 00:00:00 2001
From: Eric Anholt <eric@anholt.net>
Date: Fri, 4 Nov 2016 15:58:38 -0700
Subject: [PATCH] drm/vc4: Use runtime autosuspend to avoid thrashing V3D power
state.
The pm_runtime_put() we were using immediately released power on the
device, which meant that we were generally turning the device off and
on once per frame. In many profiles I've looked at, that added up to
about 1% of CPU time, but this could get worse in the case of frequent
rendering and readback (as may happen in X rendering). By keeping the
device on until we've been idle for a couple of frames, we drop the
overhead of runtime PM down to sub-.1%.
Signed-off-by: Eric Anholt <eric@anholt.net>
(cherry picked from commit 3a62234680d86efa0239665ed8a0e908f1aef147)
---
drivers/gpu/drm/vc4/vc4_drv.c | 9 ++++++---
drivers/gpu/drm/vc4/vc4_gem.c | 6 ++++--
drivers/gpu/drm/vc4/vc4_v3d.c | 2 ++
3 files changed, 12 insertions(+), 5 deletions(-)
--- a/drivers/gpu/drm/vc4/vc4_drv.c
+++ b/drivers/gpu/drm/vc4/vc4_drv.c
@@ -61,21 +61,24 @@ static int vc4_get_param_ioctl(struct dr
if (ret < 0)
return ret;
args->value = V3D_READ(V3D_IDENT0);
- pm_runtime_put(&vc4->v3d->pdev->dev);
+ pm_runtime_mark_last_busy(&vc4->v3d->pdev->dev);
+ pm_runtime_put_autosuspend(&vc4->v3d->pdev->dev);
break;
case DRM_VC4_PARAM_V3D_IDENT1:
ret = pm_runtime_get_sync(&vc4->v3d->pdev->dev);
if (ret < 0)
return ret;
args->value = V3D_READ(V3D_IDENT1);
- pm_runtime_put(&vc4->v3d->pdev->dev);
+ pm_runtime_mark_last_busy(&vc4->v3d->pdev->dev);
+ pm_runtime_put_autosuspend(&vc4->v3d->pdev->dev);
break;
case DRM_VC4_PARAM_V3D_IDENT2:
ret = pm_runtime_get_sync(&vc4->v3d->pdev->dev);
if (ret < 0)
return ret;
args->value = V3D_READ(V3D_IDENT2);
- pm_runtime_put(&vc4->v3d->pdev->dev);
+ pm_runtime_mark_last_busy(&vc4->v3d->pdev->dev);
+ pm_runtime_put_autosuspend(&vc4->v3d->pdev->dev);
break;
case DRM_VC4_PARAM_SUPPORTS_BRANCHES:
case DRM_VC4_PARAM_SUPPORTS_ETC1:
--- a/drivers/gpu/drm/vc4/vc4_gem.c
+++ b/drivers/gpu/drm/vc4/vc4_gem.c
@@ -711,8 +711,10 @@ vc4_complete_exec(struct drm_device *dev
}
mutex_lock(&vc4->power_lock);
- if (--vc4->power_refcount == 0)
- pm_runtime_put(&vc4->v3d->pdev->dev);
+ if (--vc4->power_refcount == 0) {
+ pm_runtime_mark_last_busy(&vc4->v3d->pdev->dev);
+ pm_runtime_put_autosuspend(&vc4->v3d->pdev->dev);
+ }
mutex_unlock(&vc4->power_lock);
kfree(exec);
--- a/drivers/gpu/drm/vc4/vc4_v3d.c
+++ b/drivers/gpu/drm/vc4/vc4_v3d.c
@@ -222,6 +222,8 @@ static int vc4_v3d_bind(struct device *d
return ret;
}
+ pm_runtime_use_autosuspend(dev);
+ pm_runtime_set_autosuspend_delay(dev, 40); /* a little over 2 frames. */
pm_runtime_enable(dev);
return 0;

View File

@ -9,10 +9,8 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
drivers/mtd/ubi/build.c | 36 ++++++++++++++++++++++++++++++++++++ drivers/mtd/ubi/build.c | 36 ++++++++++++++++++++++++++++++++++++
1 file changed, 36 insertions(+) 1 file changed, 36 insertions(+)
Index: linux-4.9.17/drivers/mtd/ubi/build.c --- a/drivers/mtd/ubi/build.c
=================================================================== +++ b/drivers/mtd/ubi/build.c
--- linux-4.9.17.orig/drivers/mtd/ubi/build.c
+++ linux-4.9.17/drivers/mtd/ubi/build.c
@@ -1212,6 +1212,49 @@ static struct mtd_info * __init open_mtd @@ -1212,6 +1212,49 @@ static struct mtd_info * __init open_mtd
return mtd; return mtd;
} }

View File

@ -25,7 +25,7 @@
obj-$(CONFIG_PROC_FS) += net-procfs.o obj-$(CONFIG_PROC_FS) += net-procfs.o
--- a/net/core/sock.c --- a/net/core/sock.c
+++ b/net/core/sock.c +++ b/net/core/sock.c
@@ -1455,9 +1455,11 @@ void sk_destruct(struct sock *sk) @@ -1460,9 +1460,11 @@ void sk_destruct(struct sock *sk)
static void __sk_free(struct sock *sk) static void __sk_free(struct sock *sk)
{ {

View File

@ -173,7 +173,7 @@
goto err; goto err;
--- a/net/core/sock.c --- a/net/core/sock.c
+++ b/net/core/sock.c +++ b/net/core/sock.c
@@ -3083,6 +3083,8 @@ static __net_initdata struct pernet_oper @@ -3089,6 +3089,8 @@ static __net_initdata struct pernet_oper
static int __init proto_init(void) static int __init proto_init(void)
{ {

View File

@ -32,8 +32,6 @@ Signed-off-by: Rajith Cherian <rajith@codeaurora.org>
5 files changed, 558 insertions(+), 2 deletions(-) 5 files changed, 558 insertions(+), 2 deletions(-)
create mode 100644 drivers/thermal/qcom/tsens-ipq8064.c create mode 100644 drivers/thermal/qcom/tsens-ipq8064.c
diff --git a/Documentation/devicetree/bindings/thermal/qcom-tsens.txt b/Documentation/devicetree/bindings/thermal/qcom-tsens.txt
index 292ed89..f4a76f6 100644
--- a/Documentation/devicetree/bindings/thermal/qcom-tsens.txt --- a/Documentation/devicetree/bindings/thermal/qcom-tsens.txt
+++ b/Documentation/devicetree/bindings/thermal/qcom-tsens.txt +++ b/Documentation/devicetree/bindings/thermal/qcom-tsens.txt
@@ -5,6 +5,7 @@ Required properties: @@ -5,6 +5,7 @@ Required properties:
@ -44,8 +42,6 @@ index 292ed89..f4a76f6 100644
- reg: Address range of the thermal registers - reg: Address range of the thermal registers
- #thermal-sensor-cells : Should be 1. See ./thermal.txt for a description. - #thermal-sensor-cells : Should be 1. See ./thermal.txt for a description.
diff --git a/drivers/thermal/qcom/Makefile b/drivers/thermal/qcom/Makefile
index 2cc2193..cc07cf4 100644
--- a/drivers/thermal/qcom/Makefile --- a/drivers/thermal/qcom/Makefile
+++ b/drivers/thermal/qcom/Makefile +++ b/drivers/thermal/qcom/Makefile
@@ -1,2 +1,3 @@ @@ -1,2 +1,3 @@
@ -53,9 +49,6 @@ index 2cc2193..cc07cf4 100644
-qcom_tsens-y += tsens.o tsens-common.o tsens-8916.o tsens-8974.o tsens-8960.o tsens-8996.o -qcom_tsens-y += tsens.o tsens-common.o tsens-8916.o tsens-8974.o tsens-8960.o tsens-8996.o
+qcom_tsens-y += tsens.o tsens-common.o tsens-8916.o tsens-8974.o tsens-8960.o tsens-8996.o \ +qcom_tsens-y += tsens.o tsens-common.o tsens-8916.o tsens-8974.o tsens-8960.o tsens-8996.o \
+ tsens-ipq8064.o + tsens-ipq8064.o
diff --git a/drivers/thermal/qcom/tsens-ipq8064.c b/drivers/thermal/qcom/tsens-ipq8064.c
new file mode 100644
index 0000000..c52888f
--- /dev/null --- /dev/null
+++ b/drivers/thermal/qcom/tsens-ipq8064.c +++ b/drivers/thermal/qcom/tsens-ipq8064.c
@@ -0,0 +1,551 @@ @@ -0,0 +1,551 @@
@ -610,11 +603,9 @@ index 0000000..c52888f
+ .num_sensors = 11, + .num_sensors = 11,
+ .ops = &ops_ipq8064, + .ops = &ops_ipq8064,
+}; +};
diff --git a/drivers/thermal/qcom/tsens.c b/drivers/thermal/qcom/tsens.c
index 3f9fe6a..2d25593 100644
--- a/drivers/thermal/qcom/tsens.c --- a/drivers/thermal/qcom/tsens.c
+++ b/drivers/thermal/qcom/tsens.c +++ b/drivers/thermal/qcom/tsens.c
@@ -72,6 +72,9 @@ static const struct of_device_id tsens_table[] = { @@ -72,6 +72,9 @@ static const struct of_device_id tsens_t
}, { }, {
.compatible = "qcom,msm8996-tsens", .compatible = "qcom,msm8996-tsens",
.data = &data_8996, .data = &data_8996,
@ -624,11 +615,9 @@ index 3f9fe6a..2d25593 100644
}, },
{} {}
}; };
diff --git a/drivers/thermal/qcom/tsens.h b/drivers/thermal/qcom/tsens.h
index 911c197..31279a2 100644
--- a/drivers/thermal/qcom/tsens.h --- a/drivers/thermal/qcom/tsens.h
+++ b/drivers/thermal/qcom/tsens.h +++ b/drivers/thermal/qcom/tsens.h
@@ -89,6 +89,6 @@ void compute_intercept_slope(struct tsens_device *, u32 *, u32 *, u32); @@ -89,6 +89,6 @@ void compute_intercept_slope(struct tsen
int init_common(struct tsens_device *); int init_common(struct tsens_device *);
int get_temp_common(struct tsens_device *, int, int *); int get_temp_common(struct tsens_device *, int, int *);

View File

@ -21,8 +21,6 @@ Signed-off-by: Rajith Cherian <rajith@codeaurora.org>
include/linux/thermal.h | 14 +++++ include/linux/thermal.h | 14 +++++
6 files changed, 162 insertions(+), 17 deletions(-) 6 files changed, 162 insertions(+), 17 deletions(-)
diff --git a/Documentation/devicetree/bindings/thermal/qcom-tsens.txt b/Documentation/devicetree/bindings/thermal/qcom-tsens.txt
index f4a76f6..7c0a6a7 100644
--- a/Documentation/devicetree/bindings/thermal/qcom-tsens.txt --- a/Documentation/devicetree/bindings/thermal/qcom-tsens.txt
+++ b/Documentation/devicetree/bindings/thermal/qcom-tsens.txt +++ b/Documentation/devicetree/bindings/thermal/qcom-tsens.txt
@@ -12,11 +12,15 @@ Required properties: @@ -12,11 +12,15 @@ Required properties:
@ -41,11 +39,9 @@ index f4a76f6..7c0a6a7 100644
+ interrupts = <0 178 0>; + interrupts = <0 178 0>;
#thermal-sensor-cells = <1>; #thermal-sensor-cells = <1>;
}; };
diff --git a/drivers/thermal/of-thermal.c b/drivers/thermal/of-thermal.c
index d04ec3b..d83697e 100644
--- a/drivers/thermal/of-thermal.c --- a/drivers/thermal/of-thermal.c
+++ b/drivers/thermal/of-thermal.c +++ b/drivers/thermal/of-thermal.c
@@ -95,7 +95,7 @@ static int of_thermal_get_temp(struct thermal_zone_device *tz, @@ -95,7 +95,7 @@ static int of_thermal_get_temp(struct th
{ {
struct __thermal_zone *data = tz->devdata; struct __thermal_zone *data = tz->devdata;
@ -54,7 +50,7 @@ index d04ec3b..d83697e 100644
return -EINVAL; return -EINVAL;
return data->ops->get_temp(data->sensor_data, temp); return data->ops->get_temp(data->sensor_data, temp);
@@ -106,7 +106,8 @@ static int of_thermal_set_trips(struct thermal_zone_device *tz, @@ -106,7 +106,8 @@ static int of_thermal_set_trips(struct t
{ {
struct __thermal_zone *data = tz->devdata; struct __thermal_zone *data = tz->devdata;
@ -64,7 +60,7 @@ index d04ec3b..d83697e 100644
return -EINVAL; return -EINVAL;
return data->ops->set_trips(data->sensor_data, low, high); return data->ops->set_trips(data->sensor_data, low, high);
@@ -192,6 +193,9 @@ static int of_thermal_set_emul_temp(struct thermal_zone_device *tz, @@ -192,6 +193,9 @@ static int of_thermal_set_emul_temp(stru
{ {
struct __thermal_zone *data = tz->devdata; struct __thermal_zone *data = tz->devdata;
@ -74,7 +70,7 @@ index d04ec3b..d83697e 100644
return data->ops->set_emul_temp(data->sensor_data, temp); return data->ops->set_emul_temp(data->sensor_data, temp);
} }
@@ -200,7 +204,7 @@ static int of_thermal_get_trend(struct thermal_zone_device *tz, int trip, @@ -200,7 +204,7 @@ static int of_thermal_get_trend(struct t
{ {
struct __thermal_zone *data = tz->devdata; struct __thermal_zone *data = tz->devdata;
@ -83,7 +79,7 @@ index d04ec3b..d83697e 100644
return -EINVAL; return -EINVAL;
return data->ops->get_trend(data->sensor_data, trip, trend); return data->ops->get_trend(data->sensor_data, trip, trend);
@@ -286,7 +290,9 @@ static int of_thermal_set_mode(struct thermal_zone_device *tz, @@ -286,7 +290,9 @@ static int of_thermal_set_mode(struct th
mutex_unlock(&tz->lock); mutex_unlock(&tz->lock);
data->mode = mode; data->mode = mode;
@ -94,7 +90,7 @@ index d04ec3b..d83697e 100644
return 0; return 0;
} }
@@ -296,7 +302,8 @@ static int of_thermal_get_trip_type(struct thermal_zone_device *tz, int trip, @@ -296,7 +302,8 @@ static int of_thermal_get_trip_type(stru
{ {
struct __thermal_zone *data = tz->devdata; struct __thermal_zone *data = tz->devdata;
@ -104,7 +100,7 @@ index d04ec3b..d83697e 100644
return -EDOM; return -EDOM;
*type = data->trips[trip].type; *type = data->trips[trip].type;
@@ -304,12 +311,39 @@ static int of_thermal_get_trip_type(struct thermal_zone_device *tz, int trip, @@ -304,12 +311,39 @@ static int of_thermal_get_trip_type(stru
return 0; return 0;
} }
@ -145,7 +141,7 @@ index d04ec3b..d83697e 100644
return -EDOM; return -EDOM;
*temp = data->trips[trip].temperature; *temp = data->trips[trip].temperature;
@@ -322,7 +356,8 @@ static int of_thermal_set_trip_temp(struct thermal_zone_device *tz, int trip, @@ -322,7 +356,8 @@ static int of_thermal_set_trip_temp(stru
{ {
struct __thermal_zone *data = tz->devdata; struct __thermal_zone *data = tz->devdata;
@ -155,7 +151,7 @@ index d04ec3b..d83697e 100644
return -EDOM; return -EDOM;
if (data->ops->set_trip_temp) { if (data->ops->set_trip_temp) {
@@ -344,7 +379,8 @@ static int of_thermal_get_trip_hyst(struct thermal_zone_device *tz, int trip, @@ -344,7 +379,8 @@ static int of_thermal_get_trip_hyst(stru
{ {
struct __thermal_zone *data = tz->devdata; struct __thermal_zone *data = tz->devdata;
@ -165,7 +161,7 @@ index d04ec3b..d83697e 100644
return -EDOM; return -EDOM;
*hyst = data->trips[trip].hysteresis; *hyst = data->trips[trip].hysteresis;
@@ -357,7 +393,8 @@ static int of_thermal_set_trip_hyst(struct thermal_zone_device *tz, int trip, @@ -357,7 +393,8 @@ static int of_thermal_set_trip_hyst(stru
{ {
struct __thermal_zone *data = tz->devdata; struct __thermal_zone *data = tz->devdata;
@ -175,7 +171,7 @@ index d04ec3b..d83697e 100644
return -EDOM; return -EDOM;
/* thermal framework should take care of data->mask & (1 << trip) */ /* thermal framework should take care of data->mask & (1 << trip) */
@@ -432,6 +469,9 @@ thermal_zone_of_add_sensor(struct device_node *zone, @@ -432,6 +469,9 @@ thermal_zone_of_add_sensor(struct device
if (ops->set_emul_temp) if (ops->set_emul_temp)
tzd->ops->set_emul_temp = of_thermal_set_emul_temp; tzd->ops->set_emul_temp = of_thermal_set_emul_temp;
@ -185,7 +181,7 @@ index d04ec3b..d83697e 100644
mutex_unlock(&tzd->lock); mutex_unlock(&tzd->lock);
return tzd; return tzd;
@@ -726,7 +766,10 @@ static const char * const trip_types[] = { @@ -726,7 +766,10 @@ static const char * const trip_types[] =
[THERMAL_TRIP_ACTIVE] = "active", [THERMAL_TRIP_ACTIVE] = "active",
[THERMAL_TRIP_PASSIVE] = "passive", [THERMAL_TRIP_PASSIVE] = "passive",
[THERMAL_TRIP_HOT] = "hot", [THERMAL_TRIP_HOT] = "hot",
@ -197,11 +193,9 @@ index d04ec3b..d83697e 100644
}; };
/** /**
diff --git a/drivers/thermal/qcom/tsens.c b/drivers/thermal/qcom/tsens.c
index 2d25593..ac68af3 100644
--- a/drivers/thermal/qcom/tsens.c --- a/drivers/thermal/qcom/tsens.c
+++ b/drivers/thermal/qcom/tsens.c +++ b/drivers/thermal/qcom/tsens.c
@@ -31,7 +31,7 @@ static int tsens_get_temp(void *data, int *temp) @@ -31,7 +31,7 @@ static int tsens_get_temp(void *data, in
static int tsens_get_trend(void *p, int trip, enum thermal_trend *trend) static int tsens_get_trend(void *p, int trip, enum thermal_trend *trend)
{ {
@ -210,7 +204,7 @@ index 2d25593..ac68af3 100644
struct tsens_device *tmdev = s->tmdev; struct tsens_device *tmdev = s->tmdev;
if (tmdev->ops->get_trend) if (tmdev->ops->get_trend)
@@ -40,9 +40,10 @@ static int tsens_get_trend(void *p, int trip, enum thermal_trend *trend) @@ -40,9 +40,10 @@ static int tsens_get_trend(void *p, int
return -ENOTSUPP; return -ENOTSUPP;
} }
@ -223,7 +217,7 @@ index 2d25593..ac68af3 100644
if (tmdev->ops && tmdev->ops->suspend) if (tmdev->ops && tmdev->ops->suspend)
return tmdev->ops->suspend(tmdev); return tmdev->ops->suspend(tmdev);
@@ -50,9 +51,10 @@ static int __maybe_unused tsens_suspend(struct device *dev) @@ -50,9 +51,10 @@ static int __maybe_unused tsens_suspend
return 0; return 0;
} }
@ -236,7 +230,7 @@ index 2d25593..ac68af3 100644
if (tmdev->ops && tmdev->ops->resume) if (tmdev->ops && tmdev->ops->resume)
return tmdev->ops->resume(tmdev); return tmdev->ops->resume(tmdev);
@@ -60,6 +62,30 @@ static int __maybe_unused tsens_resume(struct device *dev) @@ -60,6 +62,30 @@ static int __maybe_unused tsens_resume(s
return 0; return 0;
} }
@ -276,7 +270,7 @@ index 2d25593..ac68af3 100644
}; };
static int tsens_register(struct tsens_device *tmdev) static int tsens_register(struct tsens_device *tmdev)
@@ -131,7 +159,7 @@ static int tsens_probe(struct platform_device *pdev) @@ -131,7 +159,7 @@ static int tsens_probe(struct platform_d
if (id) if (id)
data = id->data; data = id->data;
else else
@ -285,7 +279,7 @@ index 2d25593..ac68af3 100644
if (data->num_sensors <= 0) { if (data->num_sensors <= 0) {
dev_err(dev, "invalid number of sensors\n"); dev_err(dev, "invalid number of sensors\n");
@@ -146,6 +174,9 @@ static int tsens_probe(struct platform_device *pdev) @@ -146,6 +174,9 @@ static int tsens_probe(struct platform_d
tmdev->dev = dev; tmdev->dev = dev;
tmdev->num_sensors = data->num_sensors; tmdev->num_sensors = data->num_sensors;
tmdev->ops = data->ops; tmdev->ops = data->ops;
@ -295,8 +289,6 @@ index 2d25593..ac68af3 100644
for (i = 0; i < tmdev->num_sensors; i++) { for (i = 0; i < tmdev->num_sensors; i++) {
if (data->hw_ids) if (data->hw_ids)
tmdev->sensor[i].hw_id = data->hw_ids[i]; tmdev->sensor[i].hw_id = data->hw_ids[i];
diff --git a/drivers/thermal/qcom/tsens.h b/drivers/thermal/qcom/tsens.h
index 31279a2..54bbdc0 100644
--- a/drivers/thermal/qcom/tsens.h --- a/drivers/thermal/qcom/tsens.h
+++ b/drivers/thermal/qcom/tsens.h +++ b/drivers/thermal/qcom/tsens.h
@@ -24,9 +24,12 @@ struct tsens_device; @@ -24,9 +24,12 @@ struct tsens_device;
@ -346,11 +338,9 @@ index 31279a2..54bbdc0 100644
struct tsens_sensor sensor[0]; struct tsens_sensor sensor[0];
}; };
diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
index 226b0b4..20bd624 100644
--- a/drivers/thermal/thermal_core.c --- a/drivers/thermal/thermal_core.c
+++ b/drivers/thermal/thermal_core.c +++ b/drivers/thermal/thermal_core.c
@@ -732,12 +732,48 @@ trip_point_type_show(struct device *dev, struct device_attribute *attr, @@ -732,12 +732,48 @@ trip_point_type_show(struct device *dev,
return sprintf(buf, "passive\n"); return sprintf(buf, "passive\n");
case THERMAL_TRIP_ACTIVE: case THERMAL_TRIP_ACTIVE:
return sprintf(buf, "active\n"); return sprintf(buf, "active\n");
@ -399,7 +389,7 @@ index 226b0b4..20bd624 100644
trip_point_temp_store(struct device *dev, struct device_attribute *attr, trip_point_temp_store(struct device *dev, struct device_attribute *attr,
const char *buf, size_t count) const char *buf, size_t count)
{ {
@@ -1321,7 +1357,7 @@ thermal_cooling_device_weight_store(struct device *dev, @@ -1321,7 +1357,7 @@ thermal_cooling_device_weight_store(stru
*/ */
int thermal_zone_bind_cooling_device(struct thermal_zone_device *tz, int thermal_zone_bind_cooling_device(struct thermal_zone_device *tz,
int trip, int trip,
@ -408,7 +398,7 @@ index 226b0b4..20bd624 100644
unsigned long upper, unsigned long lower, unsigned long upper, unsigned long lower,
unsigned int weight) unsigned int weight)
{ {
@@ -1772,6 +1808,12 @@ static int create_trip_attrs(struct thermal_zone_device *tz, int mask) @@ -1772,6 +1808,12 @@ static int create_trip_attrs(struct ther
tz->trip_type_attrs[indx].attr.attr.mode = S_IRUGO; tz->trip_type_attrs[indx].attr.attr.mode = S_IRUGO;
tz->trip_type_attrs[indx].attr.show = trip_point_type_show; tz->trip_type_attrs[indx].attr.show = trip_point_type_show;
@ -421,8 +411,6 @@ index 226b0b4..20bd624 100644
device_create_file(&tz->device, device_create_file(&tz->device,
&tz->trip_type_attrs[indx].attr); &tz->trip_type_attrs[indx].attr);
diff --git a/include/linux/thermal.h b/include/linux/thermal.h
index 511182a..510a087 100644
--- a/include/linux/thermal.h --- a/include/linux/thermal.h
+++ b/include/linux/thermal.h +++ b/include/linux/thermal.h
@@ -77,11 +77,19 @@ enum thermal_device_mode { @@ -77,11 +77,19 @@ enum thermal_device_mode {

View File

@ -105,7 +105,7 @@ Signed-off-by: Ajay Kishore <akisho@codeaurora.org>
#include "../core.h" #include "../core.h"
#include "../pinconf.h" #include "../pinconf.h"
#include "pinctrl-msm.h" #include "pinctrl-msm.h"
@@ -639,6 +640,9 @@ static int msm_gpio_irq_set_type(struct @@ -635,6 +636,9 @@ static int msm_gpio_irq_set_type(struct
const struct msm_pingroup *g; const struct msm_pingroup *g;
unsigned long flags; unsigned long flags;
u32 val; u32 val;
@ -115,7 +115,7 @@ Signed-off-by: Ajay Kishore <akisho@codeaurora.org>
g = &pctrl->soc->groups[d->hwirq]; g = &pctrl->soc->groups[d->hwirq];
@@ -652,11 +656,30 @@ static int msm_gpio_irq_set_type(struct @@ -648,11 +652,30 @@ static int msm_gpio_irq_set_type(struct
else else
clear_bit(d->hwirq, pctrl->dual_edge_irqs); clear_bit(d->hwirq, pctrl->dual_edge_irqs);
@ -150,7 +150,7 @@ Signed-off-by: Ajay Kishore <akisho@codeaurora.org>
/* Update configuration for gpio. /* Update configuration for gpio.
* RAW_STATUS_EN is left on for all gpio irqs. Due to the * RAW_STATUS_EN is left on for all gpio irqs. Due to the
@@ -930,4 +953,3 @@ int msm_pinctrl_remove(struct platform_d @@ -926,4 +949,3 @@ int msm_pinctrl_remove(struct platform_d
return 0; return 0;
} }
EXPORT_SYMBOL(msm_pinctrl_remove); EXPORT_SYMBOL(msm_pinctrl_remove);

View File

@ -10,10 +10,8 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
2 files changed, 814 insertions(+) 2 files changed, 814 insertions(+)
create mode 100644 arch/mips/pci/pci-mt7621.c create mode 100644 arch/mips/pci/pci-mt7621.c
Index: linux-4.9.14/arch/mips/pci/Makefile --- a/arch/mips/pci/Makefile
=================================================================== +++ b/arch/mips/pci/Makefile
--- linux-4.9.14.orig/arch/mips/pci/Makefile
+++ linux-4.9.14/arch/mips/pci/Makefile
@@ -46,6 +46,7 @@ obj-$(CONFIG_SNI_RM) += fixup-sni.o ops @@ -46,6 +46,7 @@ obj-$(CONFIG_SNI_RM) += fixup-sni.o ops
obj-$(CONFIG_LANTIQ) += fixup-lantiq.o obj-$(CONFIG_LANTIQ) += fixup-lantiq.o
obj-$(CONFIG_PCI_LANTIQ) += pci-lantiq.o ops-lantiq.o obj-$(CONFIG_PCI_LANTIQ) += pci-lantiq.o ops-lantiq.o
@ -22,10 +20,8 @@ Index: linux-4.9.14/arch/mips/pci/Makefile
obj-$(CONFIG_SOC_RT288X) += pci-rt2880.o obj-$(CONFIG_SOC_RT288X) += pci-rt2880.o
obj-$(CONFIG_SOC_RT3883) += pci-rt3883.o obj-$(CONFIG_SOC_RT3883) += pci-rt3883.o
obj-$(CONFIG_TANBAC_TB0219) += fixup-tb0219.o obj-$(CONFIG_TANBAC_TB0219) += fixup-tb0219.o
Index: linux-4.9.14/arch/mips/pci/pci-mt7621.c
===================================================================
--- /dev/null --- /dev/null
+++ linux-4.9.14/arch/mips/pci/pci-mt7621.c +++ b/arch/mips/pci/pci-mt7621.c
@@ -0,0 +1,836 @@ @@ -0,0 +1,836 @@
+/************************************************************************** +/**************************************************************************
+ * + *