kernel: update kernel 4.9 to 4.9.20
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
This commit is contained in:
		| @@ -4,11 +4,11 @@ LINUX_RELEASE?=1 | ||||
|  | ||||
| LINUX_VERSION-3.18 = .43 | ||||
| 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-4.4.56 = 55181e24869e4b550ef756eecd1ab4f6774228c457f4830e9e779c6db4c2a2b6 | ||||
| LINUX_KERNEL_HASH-4.9.17 = 9095c16550ebae9cbe0979a706116d95fbd8d270c1068857c4a8788de0f9ac7f | ||||
| LINUX_KERNEL_HASH-4.9.20 = 48660806dd32fb8dcbcf5932291bf6cc7d29240070372230871e0f56fea81341 | ||||
|  | ||||
| ifdef 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 | ||||
| +++ 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_hvs_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 | ||||
| +++ b/drivers/gpu/drm/vc4/vc4_drv.c | ||||
| @@ -78,6 +78,7 @@ static int vc4_get_param_ioctl(struct dr | ||||
|  		pm_runtime_put(&vc4->v3d->pdev->dev); | ||||
| @@ -81,6 +81,7 @@ static int vc4_get_param_ioctl(struct dr | ||||
|  		pm_runtime_put_autosuspend(&vc4->v3d->pdev->dev); | ||||
|  		break; | ||||
|  	case DRM_VC4_PARAM_SUPPORTS_BRANCHES: | ||||
| +	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 ++++++++++++++++++++++++++++++++++++ | ||||
|  1 file changed, 36 insertions(+) | ||||
|  | ||||
| Index: linux-4.9.17/drivers/mtd/ubi/build.c | ||||
| =================================================================== | ||||
| --- linux-4.9.17.orig/drivers/mtd/ubi/build.c | ||||
| +++ linux-4.9.17/drivers/mtd/ubi/build.c | ||||
| --- a/drivers/mtd/ubi/build.c | ||||
| +++ b/drivers/mtd/ubi/build.c | ||||
| @@ -1212,6 +1212,49 @@ static struct mtd_info * __init open_mtd | ||||
|  	return mtd; | ||||
|  } | ||||
|   | ||||
| @@ -25,7 +25,7 @@ | ||||
|  obj-$(CONFIG_PROC_FS) += net-procfs.o | ||||
| --- a/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) | ||||
|  { | ||||
|   | ||||
| @@ -173,7 +173,7 @@ | ||||
|  		goto err; | ||||
| --- a/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) | ||||
|  { | ||||
|   | ||||
| @@ -32,8 +32,6 @@ Signed-off-by: Rajith Cherian <rajith@codeaurora.org> | ||||
|  5 files changed, 558 insertions(+), 2 deletions(-) | ||||
|  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 | ||||
| +++ b/Documentation/devicetree/bindings/thermal/qcom-tsens.txt | ||||
| @@ -5,6 +5,7 @@ Required properties: | ||||
| @@ -44,8 +42,6 @@ index 292ed89..f4a76f6 100644 | ||||
|   | ||||
|  - reg: Address range of the thermal registers | ||||
|  - #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 | ||||
| +++ b/drivers/thermal/qcom/Makefile | ||||
| @@ -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 \ | ||||
| +				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 | ||||
| +++ b/drivers/thermal/qcom/tsens-ipq8064.c | ||||
| @@ -0,0 +1,551 @@ | ||||
| @@ -610,11 +603,9 @@ index 0000000..c52888f | ||||
| +	.num_sensors	= 11, | ||||
| +	.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 | ||||
| +++ 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", | ||||
|  		.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 | ||||
| +++ 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 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 +++++ | ||||
|  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 | ||||
| +++ b/Documentation/devicetree/bindings/thermal/qcom-tsens.txt | ||||
| @@ -12,11 +12,15 @@ Required properties: | ||||
| @@ -41,11 +39,9 @@ index f4a76f6..7c0a6a7 100644 | ||||
| +		interrupts = <0 178 0>; | ||||
|  		#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 | ||||
| +++ 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; | ||||
|   | ||||
| @@ -54,7 +50,7 @@ index d04ec3b..d83697e 100644 | ||||
|  		return -EINVAL; | ||||
|   | ||||
|  	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; | ||||
|   | ||||
| @@ -64,7 +60,7 @@ index d04ec3b..d83697e 100644 | ||||
|  		return -EINVAL; | ||||
|   | ||||
|  	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; | ||||
|   | ||||
| @@ -74,7 +70,7 @@ index d04ec3b..d83697e 100644 | ||||
|  	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; | ||||
|   | ||||
| @@ -83,7 +79,7 @@ index d04ec3b..d83697e 100644 | ||||
|  		return -EINVAL; | ||||
|   | ||||
|  	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); | ||||
|   | ||||
|  	data->mode = mode; | ||||
| @@ -94,7 +90,7 @@ index d04ec3b..d83697e 100644 | ||||
|   | ||||
|  	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; | ||||
|   | ||||
| @@ -104,7 +100,7 @@ index d04ec3b..d83697e 100644 | ||||
|  		return -EDOM; | ||||
|   | ||||
|  	*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; | ||||
|  } | ||||
|   | ||||
| @@ -145,7 +141,7 @@ index d04ec3b..d83697e 100644 | ||||
|  		return -EDOM; | ||||
|   | ||||
|  	*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; | ||||
|   | ||||
| @@ -155,7 +151,7 @@ index d04ec3b..d83697e 100644 | ||||
|  		return -EDOM; | ||||
|   | ||||
|  	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; | ||||
|   | ||||
| @@ -165,7 +161,7 @@ index d04ec3b..d83697e 100644 | ||||
|  		return -EDOM; | ||||
|   | ||||
|  	*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; | ||||
|   | ||||
| @@ -175,7 +171,7 @@ index d04ec3b..d83697e 100644 | ||||
|  		return -EDOM; | ||||
|   | ||||
|  	/* 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) | ||||
|  		tzd->ops->set_emul_temp = of_thermal_set_emul_temp; | ||||
|   | ||||
| @@ -185,7 +181,7 @@ index d04ec3b..d83697e 100644 | ||||
|  	mutex_unlock(&tzd->lock); | ||||
|   | ||||
|  	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_PASSIVE]	= "passive", | ||||
|  	[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 | ||||
| +++ 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) | ||||
|  { | ||||
| @@ -210,7 +204,7 @@ index 2d25593..ac68af3 100644 | ||||
|  	struct tsens_device *tmdev = s->tmdev; | ||||
|   | ||||
|  	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; | ||||
|  } | ||||
|   | ||||
| @@ -223,7 +217,7 @@ index 2d25593..ac68af3 100644 | ||||
|   | ||||
|  	if (tmdev->ops && tmdev->ops->suspend) | ||||
|  		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; | ||||
|  } | ||||
|   | ||||
| @@ -236,7 +230,7 @@ index 2d25593..ac68af3 100644 | ||||
|   | ||||
|  	if (tmdev->ops && tmdev->ops->resume) | ||||
|  		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; | ||||
|  } | ||||
|   | ||||
| @@ -276,7 +270,7 @@ index 2d25593..ac68af3 100644 | ||||
|  }; | ||||
|   | ||||
|  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) | ||||
|  		data = id->data; | ||||
|  	else | ||||
| @@ -285,7 +279,7 @@ index 2d25593..ac68af3 100644 | ||||
|   | ||||
|  	if (data->num_sensors <= 0) { | ||||
|  		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->num_sensors = data->num_sensors; | ||||
|  	tmdev->ops = data->ops; | ||||
| @@ -295,8 +289,6 @@ index 2d25593..ac68af3 100644 | ||||
|  	for (i = 0;  i < tmdev->num_sensors; i++) { | ||||
|  		if (data->hw_ids) | ||||
|  			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 | ||||
| +++ b/drivers/thermal/qcom/tsens.h | ||||
| @@ -24,9 +24,12 @@ struct tsens_device; | ||||
| @@ -346,11 +338,9 @@ index 31279a2..54bbdc0 100644 | ||||
|  	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 | ||||
| +++ 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"); | ||||
|  	case THERMAL_TRIP_ACTIVE: | ||||
|  		return sprintf(buf, "active\n"); | ||||
| @@ -399,7 +389,7 @@ index 226b0b4..20bd624 100644 | ||||
|  trip_point_temp_store(struct device *dev, struct device_attribute *attr, | ||||
|  		     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 trip, | ||||
| @@ -408,7 +398,7 @@ index 226b0b4..20bd624 100644 | ||||
|  				     unsigned long upper, unsigned long lower, | ||||
|  				     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.show = trip_point_type_show; | ||||
|   | ||||
| @@ -421,8 +411,6 @@ index 226b0b4..20bd624 100644 | ||||
|  		device_create_file(&tz->device, | ||||
|  				   &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 | ||||
| +++ b/include/linux/thermal.h | ||||
| @@ -77,11 +77,19 @@ enum thermal_device_mode { | ||||
|   | ||||
| @@ -105,7 +105,7 @@ Signed-off-by: Ajay Kishore <akisho@codeaurora.org> | ||||
|  #include "../core.h" | ||||
|  #include "../pinconf.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; | ||||
|  	unsigned long flags; | ||||
|  	u32 val; | ||||
| @@ -115,7 +115,7 @@ Signed-off-by: Ajay Kishore <akisho@codeaurora.org> | ||||
|   | ||||
|  	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 | ||||
|  		clear_bit(d->hwirq, pctrl->dual_edge_irqs); | ||||
|   | ||||
| @@ -150,7 +150,7 @@ Signed-off-by: Ajay Kishore <akisho@codeaurora.org> | ||||
|   | ||||
|  	/* Update configuration for gpio. | ||||
|  	 * 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; | ||||
|  } | ||||
|  EXPORT_SYMBOL(msm_pinctrl_remove); | ||||
|   | ||||
| @@ -10,10 +10,8 @@ Signed-off-by: John Crispin <blogic@openwrt.org> | ||||
|  2 files changed, 814 insertions(+) | ||||
|  create mode 100644 arch/mips/pci/pci-mt7621.c | ||||
|  | ||||
| Index: linux-4.9.14/arch/mips/pci/Makefile | ||||
| =================================================================== | ||||
| --- linux-4.9.14.orig/arch/mips/pci/Makefile | ||||
| +++ linux-4.9.14/arch/mips/pci/Makefile | ||||
| --- a/arch/mips/pci/Makefile | ||||
| +++ b/arch/mips/pci/Makefile | ||||
| @@ -46,6 +46,7 @@ obj-$(CONFIG_SNI_RM)		+= fixup-sni.o ops | ||||
|  obj-$(CONFIG_LANTIQ)		+= fixup-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_RT3883)	+= pci-rt3883.o | ||||
|  obj-$(CONFIG_TANBAC_TB0219)	+= fixup-tb0219.o | ||||
| Index: linux-4.9.14/arch/mips/pci/pci-mt7621.c | ||||
| =================================================================== | ||||
| --- /dev/null | ||||
| +++ linux-4.9.14/arch/mips/pci/pci-mt7621.c | ||||
| +++ b/arch/mips/pci/pci-mt7621.c | ||||
| @@ -0,0 +1,836 @@ | ||||
| +/************************************************************************** | ||||
| + * | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Hauke Mehrtens
					Hauke Mehrtens