mirror of https://github.com/hak5/openwrt.git
kernel: update kernel 4.9 to 4.9.20
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>openwrt-18.06
parent
97e6b67291
commit
b26e34214c
|
@ -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)))
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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;
|
|
||||||
}
|
|
|
@ -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:
|
||||||
|
|
|
@ -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;
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)
|
||||||
{
|
{
|
||||||
|
|
|
@ -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)
|
||||||
{
|
{
|
||||||
|
|
|
@ -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 *);
|
||||||
|
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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 @@
|
||||||
+/**************************************************************************
|
+/**************************************************************************
|
||||||
+ *
|
+ *
|
||||||
|
|
Loading…
Reference in New Issue