From 3098d3b6ceaf02463e8b6fd9f813b8dd4d1310d5 Mon Sep 17 00:00:00 2001 From: zador-blood-stained Date: Sun, 15 Oct 2017 17:06:40 +0300 Subject: [PATCH] Remove unneeded H5 patches from sunxi64-dev --- patch/kernel/sunxi64-dev/add-h3-h5-THS.patch | 340 ------------------- patch/kernel/sunxi64-dev/add-ths-DT-h5.patch | 46 --- 2 files changed, 386 deletions(-) delete mode 100644 patch/kernel/sunxi64-dev/add-h3-h5-THS.patch delete mode 100644 patch/kernel/sunxi64-dev/add-ths-DT-h5.patch diff --git a/patch/kernel/sunxi64-dev/add-h3-h5-THS.patch b/patch/kernel/sunxi64-dev/add-h3-h5-THS.patch deleted file mode 100644 index deeee383a1..0000000000 --- a/patch/kernel/sunxi64-dev/add-h3-h5-THS.patch +++ /dev/null @@ -1,340 +0,0 @@ -From d622c59b1a71f9e5e20663fae693b268fcb2d39b Mon Sep 17 00:00:00 2001 -From: Ondrej Jirman -Date: Sat, 25 Jun 2016 21:51:05 +0200 -Subject: [PATCH] thermal: sun8i_ths: Add support for the thermal sensor on - Allwinner H3 -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This patch adds support for the sun8i thermal sensor on -Allwinner H3 SoC. - -Signed-off-by: Ondřej Jirman ---- - drivers/thermal/Kconfig | 7 ++ - drivers/thermal/Makefile | 1 + - drivers/thermal/sun8i_ths.c | 239 ++++++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 247 insertions(+) - create mode 100644 drivers/thermal/sun8i_ths.c - -diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig -index 776b3439..d46d97b 100644 ---- a/drivers/thermal/Kconfig -+++ b/drivers/thermal/Kconfig -@@ -392,6 +392,13 @@ config MTK_THERMAL - Enable this option if you want to have support for thermal management - controller present in Mediatek SoCs - -+config SUN8I_THS -+ tristate "Thermal sensor driver for Allwinner H3" -+ depends on MACH_SUN8I || (ARM64 && ARCH_SUNXI) -+ depends on OF -+ help -+ Enable this to support thermal reporting on some newer Allwinner SoCs. -+ - menu "Texas Instruments thermal drivers" - depends on ARCH_HAS_BANDGAP || COMPILE_TEST - depends on HAS_IOMEM -diff --git a/drivers/thermal/Makefile b/drivers/thermal/Makefile -index 7adae20..2480dc5 100644 ---- a/drivers/thermal/Makefile -+++ b/drivers/thermal/Makefile -@@ -58,3 +58,4 @@ obj-$(CONFIG_HISI_THERMAL) += hisi_thermal.o - obj-$(CONFIG_MTK_THERMAL) += mtk_thermal.o - obj-$(CONFIG_GENERIC_ADC_THERMAL) += thermal-generic-adc.o - obj-$(CONFIG_ZX2967_THERMAL) += zx2967_thermal.o -+obj-$(CONFIG_SUN8I_THS) += sun8i_ths.o -diff --git a/drivers/thermal/sun8i_ths.c b/drivers/thermal/sun8i_ths.c -new file mode 100644 -index 0000000..cfe7d10 ---- /dev/null -+++ b/drivers/thermal/sun8i_ths.c -@@ -0,0 +1,239 @@ -+/* -+ * Thermal sensor driver for Allwinner H3 SoC -+ * -+ * Copyright (C) 2016 Ondřej Jirman -+ * Based on the work of Josef Gajdusek -+ * -+ * This software is licensed under the terms of the GNU General Public -+ * License version 2, as published by the Free Software Foundation, and -+ * may be copied, distributed, and modified under those terms. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#define THS_H3_CTRL0 0x00 -+#define THS_H3_CTRL2 0x40 -+#define THS_H3_INT_CTRL 0x44 -+#define THS_H3_STAT 0x48 -+#define THS_H3_FILTER 0x70 -+#define THS_H3_CDATA 0x74 -+#define THS_H3_DATA 0x80 -+ -+#define THS_H3_CTRL0_SENSOR_ACQ0(x) (x) -+#define THS_H3_CTRL2_SENSE_EN BIT(0) -+#define THS_H3_CTRL2_SENSOR_ACQ1(x) ((x) << 16) -+#define THS_H3_INT_CTRL_DATA_IRQ_EN BIT(8) -+#define THS_H3_INT_CTRL_THERMAL_PER(x) ((x) << 12) -+#define THS_H3_STAT_DATA_IRQ_STS BIT(8) -+#define THS_H3_FILTER_TYPE(x) ((x) << 0) -+#define THS_H3_FILTER_EN BIT(2) -+ -+#define THS_H3_CLK_IN 40000000 /* Hz */ -+#define THS_H3_DATA_PERIOD 330 /* ms */ -+ -+#define THS_H3_FILTER_TYPE_VALUE 2 /* average over 2^(n+1) samples */ -+#define THS_H3_FILTER_DIV (1 << (THS_H3_FILTER_TYPE_VALUE + 1)) -+#define THS_H3_INT_CTRL_THERMAL_PER_VALUE \ -+ (THS_H3_DATA_PERIOD * (THS_H3_CLK_IN / 1000) / THS_H3_FILTER_DIV / 4096 - 1) -+#define THS_H3_CTRL0_SENSOR_ACQ0_VALUE 0x3f /* 16us */ -+#define THS_H3_CTRL2_SENSOR_ACQ1_VALUE 0x3f -+ -+struct sun8i_ths_data { -+ struct reset_control *reset; -+ struct clk *clk; -+ struct clk *busclk; -+ void __iomem *regs; -+ struct thermal_zone_device *tzd; -+ u32 temp; -+}; -+ -+static int sun8i_ths_get_temp(void *_data, int *out) -+{ -+ struct sun8i_ths_data *data = _data; -+ -+ if (data->temp == 0) -+ return -EBUSY; -+ -+ /* Formula and parameters from the Allwinner 3.4 kernel */ -+ *out = 217000 - (int)((data->temp * 1000000) / 8253); -+ return 0; -+} -+ -+static irqreturn_t sun8i_ths_irq_thread(int irq, void *_data) -+{ -+ struct sun8i_ths_data *data = _data; -+ -+ writel(THS_H3_STAT_DATA_IRQ_STS, data->regs + THS_H3_STAT); -+ -+ data->temp = readl(data->regs + THS_H3_DATA); -+ if (data->temp) -+ thermal_zone_device_update(data->tzd, THERMAL_EVENT_TEMP_SAMPLE); -+ -+ return IRQ_HANDLED; -+} -+ -+static void sun8i_ths_h3_init(struct sun8i_ths_data *data) -+{ -+ writel(THS_H3_CTRL0_SENSOR_ACQ0(THS_H3_CTRL0_SENSOR_ACQ0_VALUE), -+ data->regs + THS_H3_CTRL0); -+ writel(THS_H3_FILTER_EN | THS_H3_FILTER_TYPE(THS_H3_FILTER_TYPE_VALUE), -+ data->regs + THS_H3_FILTER); -+ writel(THS_H3_CTRL2_SENSOR_ACQ1(THS_H3_CTRL2_SENSOR_ACQ1_VALUE) | -+ THS_H3_CTRL2_SENSE_EN, -+ data->regs + THS_H3_CTRL2); -+ writel(THS_H3_INT_CTRL_THERMAL_PER(THS_H3_INT_CTRL_THERMAL_PER_VALUE) | -+ THS_H3_INT_CTRL_DATA_IRQ_EN, -+ data->regs + THS_H3_INT_CTRL); -+} -+ -+static const struct thermal_zone_of_device_ops sun8i_ths_thermal_ops = { -+ .get_temp = sun8i_ths_get_temp, -+}; -+ -+static int sun8i_ths_probe(struct platform_device *pdev) -+{ -+ struct sun8i_ths_data *data; -+ struct resource *res; -+ int ret; -+ int irq; -+ -+ data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL); -+ if (!data) -+ return -ENOMEM; -+ -+ res = platform_get_resource(pdev, IORESOURCE_MEM, 0); -+ if (!res) { -+ dev_err(&pdev->dev, "no memory resources defined\n"); -+ return -EINVAL; -+ } -+ -+ data->regs = devm_ioremap_resource(&pdev->dev, res); -+ if (IS_ERR(data->regs)) { -+ ret = PTR_ERR(data->regs); -+ dev_err(&pdev->dev, "failed to ioremap THS registers: %d\n", ret); -+ return ret; -+ } -+ -+ irq = platform_get_irq(pdev, 0); -+ if (irq < 0) { -+ dev_err(&pdev->dev, "failed to get IRQ: %d\n", irq); -+ return irq; -+ } -+ -+ ret = devm_request_threaded_irq(&pdev->dev, irq, NULL, -+ sun8i_ths_irq_thread, IRQF_ONESHOT, -+ dev_name(&pdev->dev), data); -+ if (ret) -+ return ret; -+ -+ data->busclk = devm_clk_get(&pdev->dev, "ahb"); -+ if (IS_ERR(data->busclk)) { -+ ret = PTR_ERR(data->busclk); -+ dev_err(&pdev->dev, "failed to get ahb clk: %d\n", ret); -+ return ret; -+ } -+ -+ data->clk = devm_clk_get(&pdev->dev, "ths"); -+ if (IS_ERR(data->clk)) { -+ ret = PTR_ERR(data->clk); -+ dev_err(&pdev->dev, "failed to get ths clk: %d\n", ret); -+ return ret; -+ } -+ -+ data->reset = devm_reset_control_get(&pdev->dev, "ahb"); -+ if (IS_ERR(data->reset)) { -+ ret = PTR_ERR(data->reset); -+ dev_err(&pdev->dev, "failed to get reset: %d\n", ret); -+ return ret; -+ } -+ -+ ret = reset_control_deassert(data->reset); -+ if (ret) { -+ dev_err(&pdev->dev, "reset deassert failed: %d\n", ret); -+ return ret; -+ } -+ -+ ret = clk_prepare_enable(data->busclk); -+ if (ret) { -+ dev_err(&pdev->dev, "failed to enable bus clk: %d\n", ret); -+ goto err_assert_reset; -+ } -+ -+ ret = clk_prepare_enable(data->clk); -+ if (ret) { -+ dev_err(&pdev->dev, "failed to enable ths clk: %d\n", ret); -+ goto err_disable_bus; -+ } -+ -+ ret = clk_set_rate(data->clk, THS_H3_CLK_IN); -+ if (ret) -+ goto err_disable_ths; -+ -+ data->tzd = devm_thermal_zone_of_sensor_register(&pdev->dev, 0, data, -+ &sun8i_ths_thermal_ops); -+ if (IS_ERR(data->tzd)) { -+ ret = PTR_ERR(data->tzd); -+ dev_err(&pdev->dev, "failed to register thermal zone: %d\n", -+ ret); -+ goto err_disable_ths; -+ } -+ -+ sun8i_ths_h3_init(data); -+ -+ platform_set_drvdata(pdev, data); -+ return 0; -+ -+err_disable_ths: -+ clk_disable_unprepare(data->clk); -+err_disable_bus: -+ clk_disable_unprepare(data->busclk); -+err_assert_reset: -+ reset_control_assert(data->reset); -+ return ret; -+} -+ -+static int sun8i_ths_remove(struct platform_device *pdev) -+{ -+ struct sun8i_ths_data *data = platform_get_drvdata(pdev); -+ -+ reset_control_assert(data->reset); -+ clk_disable_unprepare(data->clk); -+ clk_disable_unprepare(data->busclk); -+ return 0; -+} -+ -+static const struct of_device_id sun8i_ths_id_table[] = { -+ { .compatible = "allwinner,sun8i-h3-ths", }, -+ { /* sentinel */ }, -+}; -+MODULE_DEVICE_TABLE(of, sun8i_ths_id_table); -+ -+static struct platform_driver sun8i_ths_driver = { -+ .probe = sun8i_ths_probe, -+ .remove = sun8i_ths_remove, -+ .driver = { -+ .name = "sun8i_ths", -+ .of_match_table = sun8i_ths_id_table, -+ }, -+}; -+ -+module_platform_driver(sun8i_ths_driver); -+ -+MODULE_AUTHOR("Ondřej Jirman "); -+MODULE_DESCRIPTION("Thermal sensor driver for Allwinner H3 SoC"); -+MODULE_LICENSE("GPL v2"); -From 71010833320fd2ffded4e7d6ee5e49902f6827c7 Mon Sep 17 00:00:00 2001 -From: Ondrej Jirman -Date: Sat, 25 Jun 2016 00:02:04 +0200 -Subject: [PATCH] dt-bindings: document sun8i_ths - H3 thermal sensor driver -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This patch adds the binding documentation for the -sun8i_ths driver. This is a driver for thermal sensor -found in Allwinner H3 SoC. - -Signed-off-by: Ondřej Jirman ---- - .../devicetree/bindings/thermal/sun8i-ths.txt | 24 ++++++++++++++++++++++ - 1 file changed, 24 insertions(+) - create mode 100644 Documentation/devicetree/bindings/thermal/sun8i-ths.txt - -diff --git a/Documentation/devicetree/bindings/thermal/sun8i-ths.txt b/Documentation/devicetree/bindings/thermal/sun8i-ths.txt -new file mode 100644 -index 0000000..ba12881 ---- /dev/null -+++ b/Documentation/devicetree/bindings/thermal/sun8i-ths.txt -@@ -0,0 +1,24 @@ -+* Thermal sensor driver for Allwinner H3 SoC -+ -+Required properties: -+- compatible : "allwinner,sun8i-h3-ths" -+- reg : Address range of the thermal sensor registers -+- resets : Must contain phandles to reset controls matching the entries -+ of the names -+- reset-names : Must include the name "ahb" -+- clocks : Must contain phandles to clock controls matching the entries -+ of the names -+- clock-names : Must contain "ahb" for the bus gate and "ths" for the THS -+ clock -+ -+Example: -+ths: ths@01c25000 { -+ #thermal-sensor-cells = <0>; -+ compatible = "allwinner,sun8i-h3-ths"; -+ reg = <0x01c25000 0x400>; -+ interrupts = ; -+ resets = <&bus_rst 136>; -+ reset-names = "ahb"; -+ clocks = <&bus_gates 72>, <&ths_clk>; -+ clock-names = "ahb", "ths"; -+}; diff --git a/patch/kernel/sunxi64-dev/add-ths-DT-h5.patch b/patch/kernel/sunxi64-dev/add-ths-DT-h5.patch deleted file mode 100644 index eb1161b610..0000000000 --- a/patch/kernel/sunxi64-dev/add-ths-DT-h5.patch +++ /dev/null @@ -1,46 +0,0 @@ -From 563b07168a2727813385db0d255779c6eeb7bfe1 Mon Sep 17 00:00:00 2001 -From: Ondrej Jirman -Date: Sun, 26 Feb 2017 16:05:58 +0100 -Subject: [PATCH] ARM: dts: sun8i: Add thermal sensor node to H3 dts - -Signed-off-by: Ondrej Jirman ---- - arch/arm/boot/dts/sunxi-h3-h5.dtsi | 20 ++++++++++++++++++++ - 1 file changed, 20 insertions(+) - -diff --git a/arch/arm/boot/dts/sunxi-h3-h5.dtsi b/arch/arm/boot/dts/sunxi-h3-h5.dtsi -index 47a9aac..92f9222 100644 ---- a/arch/arm/boot/dts/sunxi-h3-h5.dtsi -+++ b/arch/arm/boot/dts/sunxi-h3-h5.dtsi -@@ -420,6 +420,18 @@ - }; - }; - -+ ths: ths@01c25000 { -+ #thermal-sensor-cells = <0>; -+ compatible = "allwinner,sun8i-h3-ths"; -+ reg = <0x01c25000 0x400>, -+ <0x01c14234 0x4>; -+ interrupts = ; -+ resets = <&ccu RST_BUS_THS>; -+ reset-names = "ahb"; -+ clocks = <&ccu CLK_BUS_THS>, <&ccu CLK_THS>; -+ clock-names = "ahb", "ths"; -+ }; -+ - timer@01c20c00 { - compatible = "allwinner,sun4i-a10-timer"; - reg = <0x01c20c00 0xa0>; -@@ -655,4 +667,12 @@ - }; - }; - }; -+ -+ thermal-zones { -+ cpu_thermal: cpu_thermal { -+ polling-delay-passive = <330>; -+ polling-delay = <1000>; -+ thermal-sensors = <&ths 0>; -+ }; -+ }; - };