From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Bartlomiej Zolnierkiewicz To: Krzysztof Kozlowski , Eduardo Valentin Cc: Kukjin Kim , Rob Herring , Mark Rutland , Tejun Heo , Sylwester Nawrocki , Tomasz Figa , Chanwoo Choi , Michael Turquette , Stephen Boyd , "Rafael J. Wysocki" , Viresh Kumar , Zhang Rui , Russell King , Hans de Goede , Linus Walleij , Andi Shyti , Mark Brown , Alan Stern , Greg Kroah-Hartman , linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-ide@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, linux-i2c@vger.kernel.org, linux-gpio@vger.kernel.org, linux-spi@vger.kernel.org, linux-usb@vger.kernel.org, Marek Szyprowski , Arnd Bergmann , Olof Johansson , Jaehoon Chung Subject: [PATCH] thermal: samsung: Remove support for Exynos5440 Date: Thu, 26 Apr 2018 13:21:12 +0200 Message-id: <2734003.UHSMxVLybj@amdc3058> In-reply-to: <1951102.VLysaozMLK@amdc3058> MIME-version: 1.0 Content-type: text/plain; charset="us-ascii" References: <20180424203239.21885-1-krzk@kernel.org> <20180424203239.21885-7-krzk@kernel.org> <1951102.VLysaozMLK@amdc3058> List-ID: From: Krzysztof Kozlowski Subject: [PATCH] thermal: samsung: Remove support for Exynos5440 The Exynos5440 is not actively developed, there are no development boards available and probably there are no real products with it. Remove wide-tree support for Exynos5440. Signed-off-by: Krzysztof Kozlowski [b.zolnierkie: ported over driver changes] Signed-off-by: Bartlomiej Zolnierkiewicz --- Eduardo, here is a version which applies on top of pending Exynos thermal changes (https://lkml.org/lkml/2018/4/16/256). Documentation/devicetree/bindings/thermal/exynos-thermal.txt | 14 drivers/thermal/samsung/exynos_tmu.c | 161 ----------- 2 files changed, 4 insertions(+), 171 deletions(-) Index: b/Documentation/devicetree/bindings/thermal/exynos-thermal.txt =================================================================== --- a/Documentation/devicetree/bindings/thermal/exynos-thermal.txt 2018-04-26 12:29:42.716294204 +0200 +++ b/Documentation/devicetree/bindings/thermal/exynos-thermal.txt 2018-04-26 12:29:42.716294204 +0200 @@ -12,7 +12,6 @@ "samsung,exynos5420-tmu-ext-triminfo" for TMU channels 2, 3 and 4 Exynos5420 (Must pass triminfo base and triminfo clock) "samsung,exynos5433-tmu" - "samsung,exynos5440-tmu" "samsung,exynos7-tmu" - interrupt-parent : The phandle for the interrupt controller - reg : Address range of the thermal registers. For soc's which has multiple @@ -68,18 +67,7 @@ Example 1): #thermal-sensor-cells = <0>; }; -Example 2): - - tmuctrl_0: tmuctrl@160118 { - compatible = "samsung,exynos5440-tmu"; - reg = <0x160118 0x230>, <0x160368 0x10>; - interrupts = <0 58 0>; - clocks = <&clock 21>; - clock-names = "tmu_apbif"; - #thermal-sensor-cells = <0>; - }; - -Example 3): (In case of Exynos5420 "with misplaced TRIMINFO register") +Example 2): (In case of Exynos5420 "with misplaced TRIMINFO register") tmu_cpu2: tmu@10068000 { compatible = "samsung,exynos5420-tmu-ext-triminfo"; reg = <0x10068000 0x100>, <0x1006c000 0x4>; Index: b/drivers/thermal/samsung/exynos_tmu.c =================================================================== --- a/drivers/thermal/samsung/exynos_tmu.c 2018-04-26 12:29:42.716294204 +0200 +++ b/drivers/thermal/samsung/exynos_tmu.c 2018-04-26 12:30:52.648295965 +0200 @@ -126,28 +126,6 @@ #define EXYNOS5433_G3D_BASE 0x10070000 -/*exynos5440 specific registers*/ -#define EXYNOS5440_TMU_S0_7_TRIM 0x000 -#define EXYNOS5440_TMU_S0_7_CTRL 0x020 -#define EXYNOS5440_TMU_S0_7_DEBUG 0x040 -#define EXYNOS5440_TMU_S0_7_TEMP 0x0f0 -#define EXYNOS5440_TMU_S0_7_TH0 0x110 -#define EXYNOS5440_TMU_S0_7_TH1 0x130 -#define EXYNOS5440_TMU_S0_7_TH2 0x150 -#define EXYNOS5440_TMU_S0_7_IRQEN 0x210 -#define EXYNOS5440_TMU_S0_7_IRQ 0x230 -/* exynos5440 common registers */ -#define EXYNOS5440_TMU_IRQ_STATUS 0x000 -#define EXYNOS5440_TMU_PMIN 0x004 - -#define EXYNOS5440_TMU_INTEN_RISE0_SHIFT 0 -#define EXYNOS5440_TMU_INTEN_RISE1_SHIFT 1 -#define EXYNOS5440_TMU_INTEN_RISE2_SHIFT 2 -#define EXYNOS5440_TMU_INTEN_RISE3_SHIFT 3 -#define EXYNOS5440_TMU_INTEN_FALL0_SHIFT 4 -#define EXYNOS5440_TMU_TH_RISE4_SHIFT 24 -#define EXYNOS5440_EFUSE_SWAP_OFFSET 8 - /* Exynos7 specific registers */ #define EXYNOS7_THD_TEMP_RISE7_6 0x50 #define EXYNOS7_THD_TEMP_FALL7_6 0x60 @@ -184,7 +162,6 @@ enum soc_type { SOC_ARCH_EXYNOS5420, SOC_ARCH_EXYNOS5420_TRIMINFO, SOC_ARCH_EXYNOS5433, - SOC_ARCH_EXYNOS5440, SOC_ARCH_EXYNOS7, }; @@ -619,57 +596,6 @@ out: return ret; } -static int exynos5440_tmu_initialize(struct platform_device *pdev) -{ - struct exynos_tmu_data *data = platform_get_drvdata(pdev); - unsigned int trim_info = 0, con, rising_threshold; - int threshold_code; - int crit_temp = 0; - - /* - * For exynos5440 soc triminfo value is swapped between TMU0 and - * TMU2, so the below logic is needed. - */ - switch (data->id) { - case 0: - trim_info = readl(data->base + EXYNOS5440_EFUSE_SWAP_OFFSET + - EXYNOS5440_TMU_S0_7_TRIM); - break; - case 1: - trim_info = readl(data->base + EXYNOS5440_TMU_S0_7_TRIM); - break; - case 2: - trim_info = readl(data->base - EXYNOS5440_EFUSE_SWAP_OFFSET + - EXYNOS5440_TMU_S0_7_TRIM); - } - sanitize_temp_error(data, trim_info); - - /* Write temperature code for rising and falling threshold */ - rising_threshold = readl(data->base + EXYNOS5440_TMU_S0_7_TH0); - rising_threshold = get_th_reg(data, rising_threshold, false); - writel(rising_threshold, data->base + EXYNOS5440_TMU_S0_7_TH0); - writel(0, data->base + EXYNOS5440_TMU_S0_7_TH1); - - data->tmu_clear_irqs(data); - - /* if last threshold limit is also present */ - if (!data->tzd->ops->get_crit_temp(data->tzd, &crit_temp)) { - threshold_code = temp_to_code(data, crit_temp / MCELSIUS); - /* 5th level to be assigned in th2 reg */ - rising_threshold = - threshold_code << EXYNOS5440_TMU_TH_RISE4_SHIFT; - writel(rising_threshold, data->base + EXYNOS5440_TMU_S0_7_TH2); - con = readl(data->base + EXYNOS5440_TMU_S0_7_CTRL); - con |= (1 << EXYNOS_TMU_THERM_TRIP_EN_SHIFT); - writel(con, data->base + EXYNOS5440_TMU_S0_7_CTRL); - } - /* Clear the PMIN in the common TMU register */ - if (!data->id) - writel(0, data->base_second + EXYNOS5440_TMU_PMIN); - - return 0; -} - static int exynos7_tmu_initialize(struct platform_device *pdev) { struct exynos_tmu_data *data = platform_get_drvdata(pdev); @@ -820,35 +746,6 @@ static void exynos5433_tmu_control(struc writel(con, data->base + EXYNOS_TMU_REG_CONTROL); } -static void exynos5440_tmu_control(struct platform_device *pdev, bool on) -{ - struct exynos_tmu_data *data = platform_get_drvdata(pdev); - struct thermal_zone_device *tz = data->tzd; - unsigned int con, interrupt_en; - - con = get_con_reg(data, readl(data->base + EXYNOS5440_TMU_S0_7_CTRL)); - - if (on) { - con |= (1 << EXYNOS_TMU_CORE_EN_SHIFT); - interrupt_en = - (of_thermal_is_trip_valid(tz, 3) - << EXYNOS5440_TMU_INTEN_RISE3_SHIFT) | - (of_thermal_is_trip_valid(tz, 2) - << EXYNOS5440_TMU_INTEN_RISE2_SHIFT) | - (of_thermal_is_trip_valid(tz, 1) - << EXYNOS5440_TMU_INTEN_RISE1_SHIFT) | - (of_thermal_is_trip_valid(tz, 0) - << EXYNOS5440_TMU_INTEN_RISE0_SHIFT); - interrupt_en |= - interrupt_en << EXYNOS5440_TMU_INTEN_FALL0_SHIFT; - } else { - con &= ~(1 << EXYNOS_TMU_CORE_EN_SHIFT); - interrupt_en = 0; /* Disable all interrupts */ - } - writel(interrupt_en, data->base + EXYNOS5440_TMU_S0_7_IRQEN); - writel(con, data->base + EXYNOS5440_TMU_S0_7_CTRL); -} - static void exynos7_tmu_control(struct platform_device *pdev, bool on) { struct exynos_tmu_data *data = platform_get_drvdata(pdev); @@ -920,10 +817,8 @@ static u32 get_emul_con_reg(struct exyno if (temp) { temp /= MCELSIUS; - if (data->soc != SOC_ARCH_EXYNOS5440) { - val &= ~(EXYNOS_EMUL_TIME_MASK << EXYNOS_EMUL_TIME_SHIFT); - val |= (EXYNOS_EMUL_TIME << EXYNOS_EMUL_TIME_SHIFT); - } + val &= ~(EXYNOS_EMUL_TIME_MASK << EXYNOS_EMUL_TIME_SHIFT); + val |= (EXYNOS_EMUL_TIME << EXYNOS_EMUL_TIME_SHIFT); if (data->soc == SOC_ARCH_EXYNOS7) { val &= ~(EXYNOS7_EMUL_DATA_MASK << EXYNOS7_EMUL_DATA_SHIFT); @@ -964,16 +859,6 @@ static void exynos4412_tmu_set_emulation writel(val, data->base + emul_con); } -static void exynos5440_tmu_set_emulation(struct exynos_tmu_data *data, - int temp) -{ - unsigned int val; - - val = readl(data->base + EXYNOS5440_TMU_S0_7_DEBUG); - val = get_emul_con_reg(data, val, temp); - writel(val, data->base + EXYNOS5440_TMU_S0_7_DEBUG); -} - static int exynos_tmu_set_emulation(void *drv_data, int temp) { struct exynos_tmu_data *data = drv_data; @@ -996,7 +881,6 @@ out: } #else #define exynos4412_tmu_set_emulation NULL -#define exynos5440_tmu_set_emulation NULL static int exynos_tmu_set_emulation(void *drv_data, int temp) { return -EINVAL; } #endif /* CONFIG_THERMAL_EMULATION */ @@ -1014,11 +898,6 @@ static int exynos4412_tmu_read(struct ex return readb(data->base + EXYNOS_TMU_REG_CURRENT_TEMP); } -static int exynos5440_tmu_read(struct exynos_tmu_data *data) -{ - return readb(data->base + EXYNOS5440_TMU_S0_7_TEMP); -} - static int exynos7_tmu_read(struct exynos_tmu_data *data) { return readw(data->base + EXYNOS_TMU_REG_CURRENT_TEMP) & @@ -1029,16 +908,9 @@ static void exynos_tmu_work(struct work_ { struct exynos_tmu_data *data = container_of(work, struct exynos_tmu_data, irq_work); - unsigned int val_type; if (!IS_ERR(data->clk_sec)) clk_enable(data->clk_sec); - /* Find which sensor generated this interrupt */ - if (data->soc == SOC_ARCH_EXYNOS5440) { - val_type = readl(data->base_second + EXYNOS5440_TMU_IRQ_STATUS); - if (!((val_type >> data->id) & 0x1)) - goto out; - } if (!IS_ERR(data->clk_sec)) clk_disable(data->clk_sec); @@ -1051,7 +923,6 @@ static void exynos_tmu_work(struct work_ clk_disable(data->clk); mutex_unlock(&data->lock); -out: enable_irq(data->irq); } @@ -1086,15 +957,6 @@ static void exynos4210_tmu_clear_irqs(st writel(val_irq, data->base + tmu_intclear); } -static void exynos5440_tmu_clear_irqs(struct exynos_tmu_data *data) -{ - unsigned int val_irq; - - val_irq = readl(data->base + EXYNOS5440_TMU_S0_7_IRQ); - /* clear the interrupts */ - writel(val_irq, data->base + EXYNOS5440_TMU_S0_7_IRQ); -} - static irqreturn_t exynos_tmu_irq(int irq, void *id) { struct exynos_tmu_data *data = id; @@ -1131,9 +993,6 @@ static const struct of_device_id exynos_ .compatible = "samsung,exynos5433-tmu", .data = (const void *)SOC_ARCH_EXYNOS5433, }, { - .compatible = "samsung,exynos5440-tmu", - .data = (const void *)SOC_ARCH_EXYNOS5440, - }, { .compatible = "samsung,exynos7-tmu", .data = (const void *)SOC_ARCH_EXYNOS7, }, @@ -1223,19 +1082,6 @@ static int exynos_map_dt_data(struct pla data->min_efuse_value = 40; data->max_efuse_value = 150; break; - case SOC_ARCH_EXYNOS5440: - data->tmu_initialize = exynos5440_tmu_initialize; - data->tmu_control = exynos5440_tmu_control; - data->tmu_read = exynos5440_tmu_read; - data->tmu_set_emulation = exynos5440_tmu_set_emulation; - data->tmu_clear_irqs = exynos5440_tmu_clear_irqs; - data->ntrip = 4; - data->gain = 5; - data->reference_voltage = 16; - data->efuse_value = 0x5d2d; - data->min_efuse_value = 16; - data->max_efuse_value = 76; - break; case SOC_ARCH_EXYNOS7: data->tmu_initialize = exynos7_tmu_initialize; data->tmu_control = exynos7_tmu_control; @@ -1260,8 +1106,7 @@ static int exynos_map_dt_data(struct pla * Check if the TMU shares some registers and then try to map the * memory of common registers. */ - if (data->soc != SOC_ARCH_EXYNOS5420_TRIMINFO && - data->soc != SOC_ARCH_EXYNOS5440) + if (data->soc != SOC_ARCH_EXYNOS5420_TRIMINFO) return 0; if (of_address_to_resource(pdev->dev.of_node, 1, &res)) { From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bartlomiej Zolnierkiewicz Subject: [PATCH] thermal: samsung: Remove support for Exynos5440 Date: Thu, 26 Apr 2018 13:21:12 +0200 Message-ID: <2734003.UHSMxVLybj@amdc3058> References: <20180424203239.21885-1-krzk@kernel.org> <20180424203239.21885-7-krzk@kernel.org> <1951102.VLysaozMLK@amdc3058> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7Bit Return-path: In-reply-to: <1951102.VLysaozMLK@amdc3058> Sender: linux-kernel-owner@vger.kernel.org To: Krzysztof Kozlowski , Eduardo Valentin Cc: Kukjin Kim , Rob Herring , Mark Rutland , Tejun Heo , Sylwester Nawrocki , Tomasz Figa , Chanwoo Choi , Michael Turquette , Stephen Boyd , "Rafael J. Wysocki" , Viresh Kumar , Zhang Rui , Russell King , Hans de Goede , Linus Walleij , Andi Shyti , Mark Brown , Alan Stern , Greg Kroah-Hartman , linux-arm-kernel@lists.infradead.org, linux-samsu List-Id: linux-gpio@vger.kernel.org From: Krzysztof Kozlowski Subject: [PATCH] thermal: samsung: Remove support for Exynos5440 The Exynos5440 is not actively developed, there are no development boards available and probably there are no real products with it. Remove wide-tree support for Exynos5440. Signed-off-by: Krzysztof Kozlowski [b.zolnierkie: ported over driver changes] Signed-off-by: Bartlomiej Zolnierkiewicz --- Eduardo, here is a version which applies on top of pending Exynos thermal changes (https://lkml.org/lkml/2018/4/16/256). Documentation/devicetree/bindings/thermal/exynos-thermal.txt | 14 drivers/thermal/samsung/exynos_tmu.c | 161 ----------- 2 files changed, 4 insertions(+), 171 deletions(-) Index: b/Documentation/devicetree/bindings/thermal/exynos-thermal.txt =================================================================== --- a/Documentation/devicetree/bindings/thermal/exynos-thermal.txt 2018-04-26 12:29:42.716294204 +0200 +++ b/Documentation/devicetree/bindings/thermal/exynos-thermal.txt 2018-04-26 12:29:42.716294204 +0200 @@ -12,7 +12,6 @@ "samsung,exynos5420-tmu-ext-triminfo" for TMU channels 2, 3 and 4 Exynos5420 (Must pass triminfo base and triminfo clock) "samsung,exynos5433-tmu" - "samsung,exynos5440-tmu" "samsung,exynos7-tmu" - interrupt-parent : The phandle for the interrupt controller - reg : Address range of the thermal registers. For soc's which has multiple @@ -68,18 +67,7 @@ Example 1): #thermal-sensor-cells = <0>; }; -Example 2): - - tmuctrl_0: tmuctrl@160118 { - compatible = "samsung,exynos5440-tmu"; - reg = <0x160118 0x230>, <0x160368 0x10>; - interrupts = <0 58 0>; - clocks = <&clock 21>; - clock-names = "tmu_apbif"; - #thermal-sensor-cells = <0>; - }; - -Example 3): (In case of Exynos5420 "with misplaced TRIMINFO register") +Example 2): (In case of Exynos5420 "with misplaced TRIMINFO register") tmu_cpu2: tmu@10068000 { compatible = "samsung,exynos5420-tmu-ext-triminfo"; reg = <0x10068000 0x100>, <0x1006c000 0x4>; Index: b/drivers/thermal/samsung/exynos_tmu.c =================================================================== --- a/drivers/thermal/samsung/exynos_tmu.c 2018-04-26 12:29:42.716294204 +0200 +++ b/drivers/thermal/samsung/exynos_tmu.c 2018-04-26 12:30:52.648295965 +0200 @@ -126,28 +126,6 @@ #define EXYNOS5433_G3D_BASE 0x10070000 -/*exynos5440 specific registers*/ -#define EXYNOS5440_TMU_S0_7_TRIM 0x000 -#define EXYNOS5440_TMU_S0_7_CTRL 0x020 -#define EXYNOS5440_TMU_S0_7_DEBUG 0x040 -#define EXYNOS5440_TMU_S0_7_TEMP 0x0f0 -#define EXYNOS5440_TMU_S0_7_TH0 0x110 -#define EXYNOS5440_TMU_S0_7_TH1 0x130 -#define EXYNOS5440_TMU_S0_7_TH2 0x150 -#define EXYNOS5440_TMU_S0_7_IRQEN 0x210 -#define EXYNOS5440_TMU_S0_7_IRQ 0x230 -/* exynos5440 common registers */ -#define EXYNOS5440_TMU_IRQ_STATUS 0x000 -#define EXYNOS5440_TMU_PMIN 0x004 - -#define EXYNOS5440_TMU_INTEN_RISE0_SHIFT 0 -#define EXYNOS5440_TMU_INTEN_RISE1_SHIFT 1 -#define EXYNOS5440_TMU_INTEN_RISE2_SHIFT 2 -#define EXYNOS5440_TMU_INTEN_RISE3_SHIFT 3 -#define EXYNOS5440_TMU_INTEN_FALL0_SHIFT 4 -#define EXYNOS5440_TMU_TH_RISE4_SHIFT 24 -#define EXYNOS5440_EFUSE_SWAP_OFFSET 8 - /* Exynos7 specific registers */ #define EXYNOS7_THD_TEMP_RISE7_6 0x50 #define EXYNOS7_THD_TEMP_FALL7_6 0x60 @@ -184,7 +162,6 @@ enum soc_type { SOC_ARCH_EXYNOS5420, SOC_ARCH_EXYNOS5420_TRIMINFO, SOC_ARCH_EXYNOS5433, - SOC_ARCH_EXYNOS5440, SOC_ARCH_EXYNOS7, }; @@ -619,57 +596,6 @@ out: return ret; } -static int exynos5440_tmu_initialize(struct platform_device *pdev) -{ - struct exynos_tmu_data *data = platform_get_drvdata(pdev); - unsigned int trim_info = 0, con, rising_threshold; - int threshold_code; - int crit_temp = 0; - - /* - * For exynos5440 soc triminfo value is swapped between TMU0 and - * TMU2, so the below logic is needed. - */ - switch (data->id) { - case 0: - trim_info = readl(data->base + EXYNOS5440_EFUSE_SWAP_OFFSET + - EXYNOS5440_TMU_S0_7_TRIM); - break; - case 1: - trim_info = readl(data->base + EXYNOS5440_TMU_S0_7_TRIM); - break; - case 2: - trim_info = readl(data->base - EXYNOS5440_EFUSE_SWAP_OFFSET + - EXYNOS5440_TMU_S0_7_TRIM); - } - sanitize_temp_error(data, trim_info); - - /* Write temperature code for rising and falling threshold */ - rising_threshold = readl(data->base + EXYNOS5440_TMU_S0_7_TH0); - rising_threshold = get_th_reg(data, rising_threshold, false); - writel(rising_threshold, data->base + EXYNOS5440_TMU_S0_7_TH0); - writel(0, data->base + EXYNOS5440_TMU_S0_7_TH1); - - data->tmu_clear_irqs(data); - - /* if last threshold limit is also present */ - if (!data->tzd->ops->get_crit_temp(data->tzd, &crit_temp)) { - threshold_code = temp_to_code(data, crit_temp / MCELSIUS); - /* 5th level to be assigned in th2 reg */ - rising_threshold = - threshold_code << EXYNOS5440_TMU_TH_RISE4_SHIFT; - writel(rising_threshold, data->base + EXYNOS5440_TMU_S0_7_TH2); - con = readl(data->base + EXYNOS5440_TMU_S0_7_CTRL); - con |= (1 << EXYNOS_TMU_THERM_TRIP_EN_SHIFT); - writel(con, data->base + EXYNOS5440_TMU_S0_7_CTRL); - } - /* Clear the PMIN in the common TMU register */ - if (!data->id) - writel(0, data->base_second + EXYNOS5440_TMU_PMIN); - - return 0; -} - static int exynos7_tmu_initialize(struct platform_device *pdev) { struct exynos_tmu_data *data = platform_get_drvdata(pdev); @@ -820,35 +746,6 @@ static void exynos5433_tmu_control(struc writel(con, data->base + EXYNOS_TMU_REG_CONTROL); } -static void exynos5440_tmu_control(struct platform_device *pdev, bool on) -{ - struct exynos_tmu_data *data = platform_get_drvdata(pdev); - struct thermal_zone_device *tz = data->tzd; - unsigned int con, interrupt_en; - - con = get_con_reg(data, readl(data->base + EXYNOS5440_TMU_S0_7_CTRL)); - - if (on) { - con |= (1 << EXYNOS_TMU_CORE_EN_SHIFT); - interrupt_en = - (of_thermal_is_trip_valid(tz, 3) - << EXYNOS5440_TMU_INTEN_RISE3_SHIFT) | - (of_thermal_is_trip_valid(tz, 2) - << EXYNOS5440_TMU_INTEN_RISE2_SHIFT) | - (of_thermal_is_trip_valid(tz, 1) - << EXYNOS5440_TMU_INTEN_RISE1_SHIFT) | - (of_thermal_is_trip_valid(tz, 0) - << EXYNOS5440_TMU_INTEN_RISE0_SHIFT); - interrupt_en |= - interrupt_en << EXYNOS5440_TMU_INTEN_FALL0_SHIFT; - } else { - con &= ~(1 << EXYNOS_TMU_CORE_EN_SHIFT); - interrupt_en = 0; /* Disable all interrupts */ - } - writel(interrupt_en, data->base + EXYNOS5440_TMU_S0_7_IRQEN); - writel(con, data->base + EXYNOS5440_TMU_S0_7_CTRL); -} - static void exynos7_tmu_control(struct platform_device *pdev, bool on) { struct exynos_tmu_data *data = platform_get_drvdata(pdev); @@ -920,10 +817,8 @@ static u32 get_emul_con_reg(struct exyno if (temp) { temp /= MCELSIUS; - if (data->soc != SOC_ARCH_EXYNOS5440) { - val &= ~(EXYNOS_EMUL_TIME_MASK << EXYNOS_EMUL_TIME_SHIFT); - val |= (EXYNOS_EMUL_TIME << EXYNOS_EMUL_TIME_SHIFT); - } + val &= ~(EXYNOS_EMUL_TIME_MASK << EXYNOS_EMUL_TIME_SHIFT); + val |= (EXYNOS_EMUL_TIME << EXYNOS_EMUL_TIME_SHIFT); if (data->soc == SOC_ARCH_EXYNOS7) { val &= ~(EXYNOS7_EMUL_DATA_MASK << EXYNOS7_EMUL_DATA_SHIFT); @@ -964,16 +859,6 @@ static void exynos4412_tmu_set_emulation writel(val, data->base + emul_con); } -static void exynos5440_tmu_set_emulation(struct exynos_tmu_data *data, - int temp) -{ - unsigned int val; - - val = readl(data->base + EXYNOS5440_TMU_S0_7_DEBUG); - val = get_emul_con_reg(data, val, temp); - writel(val, data->base + EXYNOS5440_TMU_S0_7_DEBUG); -} - static int exynos_tmu_set_emulation(void *drv_data, int temp) { struct exynos_tmu_data *data = drv_data; @@ -996,7 +881,6 @@ out: } #else #define exynos4412_tmu_set_emulation NULL -#define exynos5440_tmu_set_emulation NULL static int exynos_tmu_set_emulation(void *drv_data, int temp) { return -EINVAL; } #endif /* CONFIG_THERMAL_EMULATION */ @@ -1014,11 +898,6 @@ static int exynos4412_tmu_read(struct ex return readb(data->base + EXYNOS_TMU_REG_CURRENT_TEMP); } -static int exynos5440_tmu_read(struct exynos_tmu_data *data) -{ - return readb(data->base + EXYNOS5440_TMU_S0_7_TEMP); -} - static int exynos7_tmu_read(struct exynos_tmu_data *data) { return readw(data->base + EXYNOS_TMU_REG_CURRENT_TEMP) & @@ -1029,16 +908,9 @@ static void exynos_tmu_work(struct work_ { struct exynos_tmu_data *data = container_of(work, struct exynos_tmu_data, irq_work); - unsigned int val_type; if (!IS_ERR(data->clk_sec)) clk_enable(data->clk_sec); - /* Find which sensor generated this interrupt */ - if (data->soc == SOC_ARCH_EXYNOS5440) { - val_type = readl(data->base_second + EXYNOS5440_TMU_IRQ_STATUS); - if (!((val_type >> data->id) & 0x1)) - goto out; - } if (!IS_ERR(data->clk_sec)) clk_disable(data->clk_sec); @@ -1051,7 +923,6 @@ static void exynos_tmu_work(struct work_ clk_disable(data->clk); mutex_unlock(&data->lock); -out: enable_irq(data->irq); } @@ -1086,15 +957,6 @@ static void exynos4210_tmu_clear_irqs(st writel(val_irq, data->base + tmu_intclear); } -static void exynos5440_tmu_clear_irqs(struct exynos_tmu_data *data) -{ - unsigned int val_irq; - - val_irq = readl(data->base + EXYNOS5440_TMU_S0_7_IRQ); - /* clear the interrupts */ - writel(val_irq, data->base + EXYNOS5440_TMU_S0_7_IRQ); -} - static irqreturn_t exynos_tmu_irq(int irq, void *id) { struct exynos_tmu_data *data = id; @@ -1131,9 +993,6 @@ static const struct of_device_id exynos_ .compatible = "samsung,exynos5433-tmu", .data = (const void *)SOC_ARCH_EXYNOS5433, }, { - .compatible = "samsung,exynos5440-tmu", - .data = (const void *)SOC_ARCH_EXYNOS5440, - }, { .compatible = "samsung,exynos7-tmu", .data = (const void *)SOC_ARCH_EXYNOS7, }, @@ -1223,19 +1082,6 @@ static int exynos_map_dt_data(struct pla data->min_efuse_value = 40; data->max_efuse_value = 150; break; - case SOC_ARCH_EXYNOS5440: - data->tmu_initialize = exynos5440_tmu_initialize; - data->tmu_control = exynos5440_tmu_control; - data->tmu_read = exynos5440_tmu_read; - data->tmu_set_emulation = exynos5440_tmu_set_emulation; - data->tmu_clear_irqs = exynos5440_tmu_clear_irqs; - data->ntrip = 4; - data->gain = 5; - data->reference_voltage = 16; - data->efuse_value = 0x5d2d; - data->min_efuse_value = 16; - data->max_efuse_value = 76; - break; case SOC_ARCH_EXYNOS7: data->tmu_initialize = exynos7_tmu_initialize; data->tmu_control = exynos7_tmu_control; @@ -1260,8 +1106,7 @@ static int exynos_map_dt_data(struct pla * Check if the TMU shares some registers and then try to map the * memory of common registers. */ - if (data->soc != SOC_ARCH_EXYNOS5420_TRIMINFO && - data->soc != SOC_ARCH_EXYNOS5440) + if (data->soc != SOC_ARCH_EXYNOS5420_TRIMINFO) return 0; if (of_address_to_resource(pdev->dev.of_node, 1, &res)) { From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: thermal: samsung: Remove support for Exynos5440 From: Bartlomiej Zolnierkiewicz Message-Id: <2734003.UHSMxVLybj@amdc3058> Date: Thu, 26 Apr 2018 13:21:12 +0200 To: Krzysztof Kozlowski , Eduardo Valentin Cc: Kukjin Kim , Rob Herring , Mark Rutland , Tejun Heo , Sylwester Nawrocki , Tomasz Figa , Chanwoo Choi , Michael Turquette , Stephen Boyd , "Rafael J. Wysocki" , Viresh Kumar , Zhang Rui , Russell King , Hans de Goede , Linus Walleij , Andi Shyti , Mark Brown , Alan Stern , Greg Kroah-Hartman , linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-ide@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, linux-i2c@vger.kernel.org, linux-gpio@vger.kernel.org, linux-spi@vger.kernel.org, linux-usb@vger.kernel.org, Marek Szyprowski , Arnd Bergmann , Olof Johansson , Jaehoon Chung List-ID: RnJvbTogS3J6eXN6dG9mIEtvemxvd3NraSA8a3J6a0BrZXJuZWwub3JnPgpTdWJqZWN0OiBbUEFU Q0hdIHRoZXJtYWw6IHNhbXN1bmc6IFJlbW92ZSBzdXBwb3J0IGZvciBFeHlub3M1NDQwCgpUaGUg RXh5bm9zNTQ0MCBpcyBub3QgYWN0aXZlbHkgZGV2ZWxvcGVkLCB0aGVyZSBhcmUgbm8gZGV2ZWxv cG1lbnQKYm9hcmRzIGF2YWlsYWJsZSBhbmQgcHJvYmFibHkgdGhlcmUgYXJlIG5vIHJlYWwgcHJv ZHVjdHMgd2l0aCBpdC4KUmVtb3ZlIHdpZGUtdHJlZSBzdXBwb3J0IGZvciBFeHlub3M1NDQwLgoK U2lnbmVkLW9mZi1ieTogS3J6eXN6dG9mIEtvemxvd3NraSA8a3J6a0BrZXJuZWwub3JnPgpbYi56 b2xuaWVya2llOiBwb3J0ZWQgb3ZlciBkcml2ZXIgY2hhbmdlc10KU2lnbmVkLW9mZi1ieTogQmFy dGxvbWllaiBab2xuaWVya2lld2ljeiA8Yi56b2xuaWVya2llQHNhbXN1bmcuY29tPgotLS0KRWR1 YXJkbywgaGVyZSBpcyBhIHZlcnNpb24gd2hpY2ggYXBwbGllcyBvbiB0b3Agb2YgcGVuZGluZyBF eHlub3MKdGhlcm1hbCBjaGFuZ2VzIChodHRwczovL2xrbWwub3JnL2xrbWwvMjAxOC80LzE2LzI1 NikuCgogRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RoZXJtYWwvZXh5bm9zLXRo ZXJtYWwudHh0IHwgICAxNCAKIGRyaXZlcnMvdGhlcm1hbC9zYW1zdW5nL2V4eW5vc190bXUuYyAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAxNjEgLS0tLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdl ZCwgNCBpbnNlcnRpb25zKCspLCAxNzEgZGVsZXRpb25zKC0pCgoKLS0KVG8gdW5zdWJzY3JpYmUg ZnJvbSB0aGlzIGxpc3Q6IHNlbmQgdGhlIGxpbmUgInVuc3Vic2NyaWJlIGxpbnV4LXVzYiIgaW4K dGhlIGJvZHkgb2YgYSBtZXNzYWdlIHRvIG1ham9yZG9tb0B2Z2VyLmtlcm5lbC5vcmcKTW9yZSBt YWpvcmRvbW8gaW5mbyBhdCAgaHR0cDovL3ZnZXIua2VybmVsLm9yZy9tYWpvcmRvbW8taW5mby5o dG1sCgpJbmRleDogYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGhlcm1hbC9l eHlub3MtdGhlcm1hbC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRy ZWUvYmluZGluZ3MvdGhlcm1hbC9leHlub3MtdGhlcm1hbC50eHQJMjAxOC0wNC0yNiAxMjoyOTo0 Mi43MTYyOTQyMDQgKzAyMDAKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdz L3RoZXJtYWwvZXh5bm9zLXRoZXJtYWwudHh0CTIwMTgtMDQtMjYgMTI6Mjk6NDIuNzE2Mjk0MjA0 ICswMjAwCkBAIC0xMiw3ICsxMiw2IEBACiAJICAgICAgICJzYW1zdW5nLGV4eW5vczU0MjAtdG11 LWV4dC10cmltaW5mbyIgZm9yIFRNVSBjaGFubmVscyAyLCAzIGFuZCA0CiAJCQlFeHlub3M1NDIw IChNdXN0IHBhc3MgdHJpbWluZm8gYmFzZSBhbmQgdHJpbWluZm8gY2xvY2spCiAgICAgICAgICAg ICAgICAic2Ftc3VuZyxleHlub3M1NDMzLXRtdSIKLQkgICAgICAgInNhbXN1bmcsZXh5bm9zNTQ0 MC10bXUiCiAJICAgICAgICJzYW1zdW5nLGV4eW5vczctdG11IgogLSBpbnRlcnJ1cHQtcGFyZW50 IDogVGhlIHBoYW5kbGUgZm9yIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlcgogLSByZWcgOiBBZGRy ZXNzIHJhbmdlIG9mIHRoZSB0aGVybWFsIHJlZ2lzdGVycy4gRm9yIHNvYydzIHdoaWNoIGhhcyBt dWx0aXBsZQpAQCAtNjgsMTggKzY3LDcgQEAgRXhhbXBsZSAxKToKIAkJI3RoZXJtYWwtc2Vuc29y LWNlbGxzID0gPDA+OwogCX07CiAKLUV4YW1wbGUgMik6Ci0KLQl0bXVjdHJsXzA6IHRtdWN0cmxA MTYwMTE4IHsKLQkJY29tcGF0aWJsZSA9ICJzYW1zdW5nLGV4eW5vczU0NDAtdG11IjsKLQkJcmVn ID0gPDB4MTYwMTE4IDB4MjMwPiwgPDB4MTYwMzY4IDB4MTA+OwotCQlpbnRlcnJ1cHRzID0gPDAg NTggMD47Ci0JCWNsb2NrcyA9IDwmY2xvY2sgMjE+OwotCQljbG9jay1uYW1lcyA9ICJ0bXVfYXBi aWYiOwotCQkjdGhlcm1hbC1zZW5zb3ItY2VsbHMgPSA8MD47Ci0JfTsKLQotRXhhbXBsZSAzKTog KEluIGNhc2Ugb2YgRXh5bm9zNTQyMCAid2l0aCBtaXNwbGFjZWQgVFJJTUlORk8gcmVnaXN0ZXIi KQorRXhhbXBsZSAyKTogKEluIGNhc2Ugb2YgRXh5bm9zNTQyMCAid2l0aCBtaXNwbGFjZWQgVFJJ TUlORk8gcmVnaXN0ZXIiKQogCXRtdV9jcHUyOiB0bXVAMTAwNjgwMDAgewogCQljb21wYXRpYmxl ID0gInNhbXN1bmcsZXh5bm9zNTQyMC10bXUtZXh0LXRyaW1pbmZvIjsKIAkJcmVnID0gPDB4MTAw NjgwMDAgMHgxMDA+LCA8MHgxMDA2YzAwMCAweDQ+OwpJbmRleDogYi9kcml2ZXJzL3RoZXJtYWwv c2Ftc3VuZy9leHlub3NfdG11LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gYS9kcml2ZXJzL3RoZXJtYWwvc2Ft c3VuZy9leHlub3NfdG11LmMJMjAxOC0wNC0yNiAxMjoyOTo0Mi43MTYyOTQyMDQgKzAyMDAKKysr IGIvZHJpdmVycy90aGVybWFsL3NhbXN1bmcvZXh5bm9zX3RtdS5jCTIwMTgtMDQtMjYgMTI6MzA6 NTIuNjQ4Mjk1OTY1ICswMjAwCkBAIC0xMjYsMjggKzEyNiw2IEBACiAKICNkZWZpbmUgRVhZTk9T NTQzM19HM0RfQkFTRQkJCTB4MTAwNzAwMDAKIAotLypleHlub3M1NDQwIHNwZWNpZmljIHJlZ2lz dGVycyovCi0jZGVmaW5lIEVYWU5PUzU0NDBfVE1VX1MwXzdfVFJJTQkJMHgwMDAKLSNkZWZpbmUg RVhZTk9TNTQ0MF9UTVVfUzBfN19DVFJMCQkweDAyMAotI2RlZmluZSBFWFlOT1M1NDQwX1RNVV9T MF83X0RFQlVHCQkweDA0MAotI2RlZmluZSBFWFlOT1M1NDQwX1RNVV9TMF83X1RFTVAJCTB4MGYw Ci0jZGVmaW5lIEVYWU5PUzU0NDBfVE1VX1MwXzdfVEgwCQkJMHgxMTAKLSNkZWZpbmUgRVhZTk9T NTQ0MF9UTVVfUzBfN19USDEJCQkweDEzMAotI2RlZmluZSBFWFlOT1M1NDQwX1RNVV9TMF83X1RI MgkJCTB4MTUwCi0jZGVmaW5lIEVYWU5PUzU0NDBfVE1VX1MwXzdfSVJRRU4JCTB4MjEwCi0jZGVm aW5lIEVYWU5PUzU0NDBfVE1VX1MwXzdfSVJRCQkJMHgyMzAKLS8qIGV4eW5vczU0NDAgY29tbW9u IHJlZ2lzdGVycyAqLwotI2RlZmluZSBFWFlOT1M1NDQwX1RNVV9JUlFfU1RBVFVTCQkweDAwMAot I2RlZmluZSBFWFlOT1M1NDQwX1RNVV9QTUlOCQkJMHgwMDQKLQotI2RlZmluZSBFWFlOT1M1NDQw X1RNVV9JTlRFTl9SSVNFMF9TSElGVAkwCi0jZGVmaW5lIEVYWU5PUzU0NDBfVE1VX0lOVEVOX1JJ U0UxX1NISUZUCTEKLSNkZWZpbmUgRVhZTk9TNTQ0MF9UTVVfSU5URU5fUklTRTJfU0hJRlQJMgot I2RlZmluZSBFWFlOT1M1NDQwX1RNVV9JTlRFTl9SSVNFM19TSElGVAkzCi0jZGVmaW5lIEVYWU5P UzU0NDBfVE1VX0lOVEVOX0ZBTEwwX1NISUZUCTQKLSNkZWZpbmUgRVhZTk9TNTQ0MF9UTVVfVEhf UklTRTRfU0hJRlQJCTI0Ci0jZGVmaW5lIEVYWU5PUzU0NDBfRUZVU0VfU1dBUF9PRkZTRVQJCTgK LQogLyogRXh5bm9zNyBzcGVjaWZpYyByZWdpc3RlcnMgKi8KICNkZWZpbmUgRVhZTk9TN19USERf VEVNUF9SSVNFN182CQkweDUwCiAjZGVmaW5lIEVYWU5PUzdfVEhEX1RFTVBfRkFMTDdfNgkJMHg2 MApAQCAtMTg0LDcgKzE2Miw2IEBAIGVudW0gc29jX3R5cGUgewogCVNPQ19BUkNIX0VYWU5PUzU0 MjAsCiAJU09DX0FSQ0hfRVhZTk9TNTQyMF9UUklNSU5GTywKIAlTT0NfQVJDSF9FWFlOT1M1NDMz LAotCVNPQ19BUkNIX0VYWU5PUzU0NDAsCiAJU09DX0FSQ0hfRVhZTk9TNywKIH07CiAKQEAgLTYx OSw1NyArNTk2LDYgQEAgb3V0OgogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBpbnQgZXh5bm9z NTQ0MF90bXVfaW5pdGlhbGl6ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQotewotCXN0 cnVjdCBleHlub3NfdG11X2RhdGEgKmRhdGEgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsK LQl1bnNpZ25lZCBpbnQgdHJpbV9pbmZvID0gMCwgY29uLCByaXNpbmdfdGhyZXNob2xkOwotCWlu dCB0aHJlc2hvbGRfY29kZTsKLQlpbnQgY3JpdF90ZW1wID0gMDsKLQotCS8qCi0JICogRm9yIGV4 eW5vczU0NDAgc29jIHRyaW1pbmZvIHZhbHVlIGlzIHN3YXBwZWQgYmV0d2VlbiBUTVUwIGFuZAot CSAqIFRNVTIsIHNvIHRoZSBiZWxvdyBsb2dpYyBpcyBuZWVkZWQuCi0JICovCi0Jc3dpdGNoIChk YXRhLT5pZCkgewotCWNhc2UgMDoKLQkJdHJpbV9pbmZvID0gcmVhZGwoZGF0YS0+YmFzZSArIEVY WU5PUzU0NDBfRUZVU0VfU1dBUF9PRkZTRVQgKwotCQkJCSBFWFlOT1M1NDQwX1RNVV9TMF83X1RS SU0pOwotCQlicmVhazsKLQljYXNlIDE6Ci0JCXRyaW1faW5mbyA9IHJlYWRsKGRhdGEtPmJhc2Ug KyBFWFlOT1M1NDQwX1RNVV9TMF83X1RSSU0pOwotCQlicmVhazsKLQljYXNlIDI6Ci0JCXRyaW1f aW5mbyA9IHJlYWRsKGRhdGEtPmJhc2UgLSBFWFlOT1M1NDQwX0VGVVNFX1NXQVBfT0ZGU0VUICsK LQkJCQkgIEVYWU5PUzU0NDBfVE1VX1MwXzdfVFJJTSk7Ci0JfQotCXNhbml0aXplX3RlbXBfZXJy b3IoZGF0YSwgdHJpbV9pbmZvKTsKLQotCS8qIFdyaXRlIHRlbXBlcmF0dXJlIGNvZGUgZm9yIHJp c2luZyBhbmQgZmFsbGluZyB0aHJlc2hvbGQgKi8KLQlyaXNpbmdfdGhyZXNob2xkID0gcmVhZGwo ZGF0YS0+YmFzZSArIEVYWU5PUzU0NDBfVE1VX1MwXzdfVEgwKTsKLQlyaXNpbmdfdGhyZXNob2xk ID0gZ2V0X3RoX3JlZyhkYXRhLCByaXNpbmdfdGhyZXNob2xkLCBmYWxzZSk7Ci0Jd3JpdGVsKHJp c2luZ190aHJlc2hvbGQsIGRhdGEtPmJhc2UgKyBFWFlOT1M1NDQwX1RNVV9TMF83X1RIMCk7Ci0J d3JpdGVsKDAsIGRhdGEtPmJhc2UgKyBFWFlOT1M1NDQwX1RNVV9TMF83X1RIMSk7Ci0KLQlkYXRh LT50bXVfY2xlYXJfaXJxcyhkYXRhKTsKLQotCS8qIGlmIGxhc3QgdGhyZXNob2xkIGxpbWl0IGlz IGFsc28gcHJlc2VudCAqLwotCWlmICghZGF0YS0+dHpkLT5vcHMtPmdldF9jcml0X3RlbXAoZGF0 YS0+dHpkLCAmY3JpdF90ZW1wKSkgewotCQl0aHJlc2hvbGRfY29kZSA9IHRlbXBfdG9fY29kZShk YXRhLCBjcml0X3RlbXAgLyBNQ0VMU0lVUyk7Ci0JCS8qIDV0aCBsZXZlbCB0byBiZSBhc3NpZ25l ZCBpbiB0aDIgcmVnICovCi0JCXJpc2luZ190aHJlc2hvbGQgPQotCQkJdGhyZXNob2xkX2NvZGUg PDwgRVhZTk9TNTQ0MF9UTVVfVEhfUklTRTRfU0hJRlQ7Ci0JCXdyaXRlbChyaXNpbmdfdGhyZXNo b2xkLCBkYXRhLT5iYXNlICsgRVhZTk9TNTQ0MF9UTVVfUzBfN19USDIpOwotCQljb24gPSByZWFk bChkYXRhLT5iYXNlICsgRVhZTk9TNTQ0MF9UTVVfUzBfN19DVFJMKTsKLQkJY29uIHw9ICgxIDw8 IEVYWU5PU19UTVVfVEhFUk1fVFJJUF9FTl9TSElGVCk7Ci0JCXdyaXRlbChjb24sIGRhdGEtPmJh c2UgKyBFWFlOT1M1NDQwX1RNVV9TMF83X0NUUkwpOwotCX0KLQkvKiBDbGVhciB0aGUgUE1JTiBp biB0aGUgY29tbW9uIFRNVSByZWdpc3RlciAqLwotCWlmICghZGF0YS0+aWQpCi0JCXdyaXRlbCgw LCBkYXRhLT5iYXNlX3NlY29uZCArIEVYWU5PUzU0NDBfVE1VX1BNSU4pOwotCi0JcmV0dXJuIDA7 Ci19Ci0KIHN0YXRpYyBpbnQgZXh5bm9zN190bXVfaW5pdGlhbGl6ZShzdHJ1Y3QgcGxhdGZvcm1f ZGV2aWNlICpwZGV2KQogewogCXN0cnVjdCBleHlub3NfdG11X2RhdGEgKmRhdGEgPSBwbGF0Zm9y bV9nZXRfZHJ2ZGF0YShwZGV2KTsKQEAgLTgyMCwzNSArNzQ2LDYgQEAgc3RhdGljIHZvaWQgZXh5 bm9zNTQzM190bXVfY29udHJvbChzdHJ1YwogCXdyaXRlbChjb24sIGRhdGEtPmJhc2UgKyBFWFlO T1NfVE1VX1JFR19DT05UUk9MKTsKIH0KIAotc3RhdGljIHZvaWQgZXh5bm9zNTQ0MF90bXVfY29u dHJvbChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBib29sIG9uKQotewotCXN0cnVjdCBl eHlub3NfdG11X2RhdGEgKmRhdGEgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKLQlzdHJ1 Y3QgdGhlcm1hbF96b25lX2RldmljZSAqdHogPSBkYXRhLT50emQ7Ci0JdW5zaWduZWQgaW50IGNv biwgaW50ZXJydXB0X2VuOwotCi0JY29uID0gZ2V0X2Nvbl9yZWcoZGF0YSwgcmVhZGwoZGF0YS0+ YmFzZSArIEVYWU5PUzU0NDBfVE1VX1MwXzdfQ1RSTCkpOwotCi0JaWYgKG9uKSB7Ci0JCWNvbiB8 PSAoMSA8PCBFWFlOT1NfVE1VX0NPUkVfRU5fU0hJRlQpOwotCQlpbnRlcnJ1cHRfZW4gPQotCQkJ KG9mX3RoZXJtYWxfaXNfdHJpcF92YWxpZCh0eiwgMykKLQkJCSA8PCBFWFlOT1M1NDQwX1RNVV9J TlRFTl9SSVNFM19TSElGVCkgfAotCQkJKG9mX3RoZXJtYWxfaXNfdHJpcF92YWxpZCh0eiwgMikK LQkJCSA8PCBFWFlOT1M1NDQwX1RNVV9JTlRFTl9SSVNFMl9TSElGVCkgfAotCQkJKG9mX3RoZXJt YWxfaXNfdHJpcF92YWxpZCh0eiwgMSkKLQkJCSA8PCBFWFlOT1M1NDQwX1RNVV9JTlRFTl9SSVNF MV9TSElGVCkgfAotCQkJKG9mX3RoZXJtYWxfaXNfdHJpcF92YWxpZCh0eiwgMCkKLQkJCSA8PCBF WFlOT1M1NDQwX1RNVV9JTlRFTl9SSVNFMF9TSElGVCk7Ci0JCWludGVycnVwdF9lbiB8PQotCQkJ aW50ZXJydXB0X2VuIDw8IEVYWU5PUzU0NDBfVE1VX0lOVEVOX0ZBTEwwX1NISUZUOwotCX0gZWxz ZSB7Ci0JCWNvbiAmPSB+KDEgPDwgRVhZTk9TX1RNVV9DT1JFX0VOX1NISUZUKTsKLQkJaW50ZXJy dXB0X2VuID0gMDsgLyogRGlzYWJsZSBhbGwgaW50ZXJydXB0cyAqLwotCX0KLQl3cml0ZWwoaW50 ZXJydXB0X2VuLCBkYXRhLT5iYXNlICsgRVhZTk9TNTQ0MF9UTVVfUzBfN19JUlFFTik7Ci0Jd3Jp dGVsKGNvbiwgZGF0YS0+YmFzZSArIEVYWU5PUzU0NDBfVE1VX1MwXzdfQ1RSTCk7Ci19Ci0KIHN0 YXRpYyB2b2lkIGV4eW5vczdfdG11X2NvbnRyb2woc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRl diwgYm9vbCBvbikKIHsKIAlzdHJ1Y3QgZXh5bm9zX3RtdV9kYXRhICpkYXRhID0gcGxhdGZvcm1f Z2V0X2RydmRhdGEocGRldik7CkBAIC05MjAsMTAgKzgxNyw4IEBAIHN0YXRpYyB1MzIgZ2V0X2Vt dWxfY29uX3JlZyhzdHJ1Y3QgZXh5bm8KIAlpZiAodGVtcCkgewogCQl0ZW1wIC89IE1DRUxTSVVT OwogCi0JCWlmIChkYXRhLT5zb2MgIT0gU09DX0FSQ0hfRVhZTk9TNTQ0MCkgewotCQkJdmFsICY9 IH4oRVhZTk9TX0VNVUxfVElNRV9NQVNLIDw8IEVYWU5PU19FTVVMX1RJTUVfU0hJRlQpOwotCQkJ dmFsIHw9IChFWFlOT1NfRU1VTF9USU1FIDw8IEVYWU5PU19FTVVMX1RJTUVfU0hJRlQpOwotCQl9 CisJCXZhbCAmPSB+KEVYWU5PU19FTVVMX1RJTUVfTUFTSyA8PCBFWFlOT1NfRU1VTF9USU1FX1NI SUZUKTsKKwkJdmFsIHw9IChFWFlOT1NfRU1VTF9USU1FIDw8IEVYWU5PU19FTVVMX1RJTUVfU0hJ RlQpOwogCQlpZiAoZGF0YS0+c29jID09IFNPQ19BUkNIX0VYWU5PUzcpIHsKIAkJCXZhbCAmPSB+ KEVYWU5PUzdfRU1VTF9EQVRBX01BU0sgPDwKIAkJCQlFWFlOT1M3X0VNVUxfREFUQV9TSElGVCk7 CkBAIC05NjQsMTYgKzg1OSw2IEBAIHN0YXRpYyB2b2lkIGV4eW5vczQ0MTJfdG11X3NldF9lbXVs YXRpb24KIAl3cml0ZWwodmFsLCBkYXRhLT5iYXNlICsgZW11bF9jb24pOwogfQogCi1zdGF0aWMg dm9pZCBleHlub3M1NDQwX3RtdV9zZXRfZW11bGF0aW9uKHN0cnVjdCBleHlub3NfdG11X2RhdGEg KmRhdGEsCi0JCQkJCSBpbnQgdGVtcCkKLXsKLQl1bnNpZ25lZCBpbnQgdmFsOwotCi0JdmFsID0g cmVhZGwoZGF0YS0+YmFzZSArIEVYWU5PUzU0NDBfVE1VX1MwXzdfREVCVUcpOwotCXZhbCA9IGdl dF9lbXVsX2Nvbl9yZWcoZGF0YSwgdmFsLCB0ZW1wKTsKLQl3cml0ZWwodmFsLCBkYXRhLT5iYXNl ICsgRVhZTk9TNTQ0MF9UTVVfUzBfN19ERUJVRyk7Ci19Ci0KIHN0YXRpYyBpbnQgZXh5bm9zX3Rt dV9zZXRfZW11bGF0aW9uKHZvaWQgKmRydl9kYXRhLCBpbnQgdGVtcCkKIHsKIAlzdHJ1Y3QgZXh5 bm9zX3RtdV9kYXRhICpkYXRhID0gZHJ2X2RhdGE7CkBAIC05OTYsNyArODgxLDYgQEAgb3V0Ogog fQogI2Vsc2UKICNkZWZpbmUgZXh5bm9zNDQxMl90bXVfc2V0X2VtdWxhdGlvbiBOVUxMCi0jZGVm aW5lIGV4eW5vczU0NDBfdG11X3NldF9lbXVsYXRpb24gTlVMTAogc3RhdGljIGludCBleHlub3Nf dG11X3NldF9lbXVsYXRpb24odm9pZCAqZHJ2X2RhdGEsIGludCB0ZW1wKQogCXsgcmV0dXJuIC1F SU5WQUw7IH0KICNlbmRpZiAvKiBDT05GSUdfVEhFUk1BTF9FTVVMQVRJT04gKi8KQEAgLTEwMTQs MTEgKzg5OCw2IEBAIHN0YXRpYyBpbnQgZXh5bm9zNDQxMl90bXVfcmVhZChzdHJ1Y3QgZXgKIAly ZXR1cm4gcmVhZGIoZGF0YS0+YmFzZSArIEVYWU5PU19UTVVfUkVHX0NVUlJFTlRfVEVNUCk7CiB9 CiAKLXN0YXRpYyBpbnQgZXh5bm9zNTQ0MF90bXVfcmVhZChzdHJ1Y3QgZXh5bm9zX3RtdV9kYXRh ICpkYXRhKQotewotCXJldHVybiByZWFkYihkYXRhLT5iYXNlICsgRVhZTk9TNTQ0MF9UTVVfUzBf N19URU1QKTsKLX0KLQogc3RhdGljIGludCBleHlub3M3X3RtdV9yZWFkKHN0cnVjdCBleHlub3Nf dG11X2RhdGEgKmRhdGEpCiB7CiAJcmV0dXJuIHJlYWR3KGRhdGEtPmJhc2UgKyBFWFlOT1NfVE1V X1JFR19DVVJSRU5UX1RFTVApICYKQEAgLTEwMjksMTYgKzkwOCw5IEBAIHN0YXRpYyB2b2lkIGV4 eW5vc190bXVfd29yayhzdHJ1Y3Qgd29ya18KIHsKIAlzdHJ1Y3QgZXh5bm9zX3RtdV9kYXRhICpk YXRhID0gY29udGFpbmVyX29mKHdvcmssCiAJCQlzdHJ1Y3QgZXh5bm9zX3RtdV9kYXRhLCBpcnFf d29yayk7Ci0JdW5zaWduZWQgaW50IHZhbF90eXBlOwogCiAJaWYgKCFJU19FUlIoZGF0YS0+Y2xr X3NlYykpCiAJCWNsa19lbmFibGUoZGF0YS0+Y2xrX3NlYyk7Ci0JLyogRmluZCB3aGljaCBzZW5z b3IgZ2VuZXJhdGVkIHRoaXMgaW50ZXJydXB0ICovCi0JaWYgKGRhdGEtPnNvYyA9PSBTT0NfQVJD SF9FWFlOT1M1NDQwKSB7Ci0JCXZhbF90eXBlID0gcmVhZGwoZGF0YS0+YmFzZV9zZWNvbmQgKyBF WFlOT1M1NDQwX1RNVV9JUlFfU1RBVFVTKTsKLQkJaWYgKCEoKHZhbF90eXBlID4+IGRhdGEtPmlk KSAmIDB4MSkpCi0JCQlnb3RvIG91dDsKLQl9CiAJaWYgKCFJU19FUlIoZGF0YS0+Y2xrX3NlYykp CiAJCWNsa19kaXNhYmxlKGRhdGEtPmNsa19zZWMpOwogCkBAIC0xMDUxLDcgKzkyMyw2IEBAIHN0 YXRpYyB2b2lkIGV4eW5vc190bXVfd29yayhzdHJ1Y3Qgd29ya18KIAogCWNsa19kaXNhYmxlKGRh dGEtPmNsayk7CiAJbXV0ZXhfdW5sb2NrKCZkYXRhLT5sb2NrKTsKLW91dDoKIAllbmFibGVfaXJx KGRhdGEtPmlycSk7CiB9CiAKQEAgLTEwODYsMTUgKzk1Nyw2IEBAIHN0YXRpYyB2b2lkIGV4eW5v czQyMTBfdG11X2NsZWFyX2lycXMoc3QKIAl3cml0ZWwodmFsX2lycSwgZGF0YS0+YmFzZSArIHRt dV9pbnRjbGVhcik7CiB9CiAKLXN0YXRpYyB2b2lkIGV4eW5vczU0NDBfdG11X2NsZWFyX2lycXMo c3RydWN0IGV4eW5vc190bXVfZGF0YSAqZGF0YSkKLXsKLQl1bnNpZ25lZCBpbnQgdmFsX2lycTsK LQotCXZhbF9pcnEgPSByZWFkbChkYXRhLT5iYXNlICsgRVhZTk9TNTQ0MF9UTVVfUzBfN19JUlEp OwotCS8qIGNsZWFyIHRoZSBpbnRlcnJ1cHRzICovCi0Jd3JpdGVsKHZhbF9pcnEsIGRhdGEtPmJh c2UgKyBFWFlOT1M1NDQwX1RNVV9TMF83X0lSUSk7Ci19Ci0KIHN0YXRpYyBpcnFyZXR1cm5fdCBl eHlub3NfdG11X2lycShpbnQgaXJxLCB2b2lkICppZCkKIHsKIAlzdHJ1Y3QgZXh5bm9zX3RtdV9k YXRhICpkYXRhID0gaWQ7CkBAIC0xMTMxLDkgKzk5Myw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg b2ZfZGV2aWNlX2lkIGV4eW5vc18KIAkJLmNvbXBhdGlibGUgPSAic2Ftc3VuZyxleHlub3M1NDMz LXRtdSIsCiAJCS5kYXRhID0gKGNvbnN0IHZvaWQgKilTT0NfQVJDSF9FWFlOT1M1NDMzLAogCX0s IHsKLQkJLmNvbXBhdGlibGUgPSAic2Ftc3VuZyxleHlub3M1NDQwLXRtdSIsCi0JCS5kYXRhID0g KGNvbnN0IHZvaWQgKilTT0NfQVJDSF9FWFlOT1M1NDQwLAotCX0sIHsKIAkJLmNvbXBhdGlibGUg PSAic2Ftc3VuZyxleHlub3M3LXRtdSIsCiAJCS5kYXRhID0gKGNvbnN0IHZvaWQgKilTT0NfQVJD SF9FWFlOT1M3LAogCX0sCkBAIC0xMjIzLDE5ICsxMDgyLDYgQEAgc3RhdGljIGludCBleHlub3Nf bWFwX2R0X2RhdGEoc3RydWN0IHBsYQogCQlkYXRhLT5taW5fZWZ1c2VfdmFsdWUgPSA0MDsKIAkJ ZGF0YS0+bWF4X2VmdXNlX3ZhbHVlID0gMTUwOwogCQlicmVhazsKLQljYXNlIFNPQ19BUkNIX0VY WU5PUzU0NDA6Ci0JCWRhdGEtPnRtdV9pbml0aWFsaXplID0gZXh5bm9zNTQ0MF90bXVfaW5pdGlh bGl6ZTsKLQkJZGF0YS0+dG11X2NvbnRyb2wgPSBleHlub3M1NDQwX3RtdV9jb250cm9sOwotCQlk YXRhLT50bXVfcmVhZCA9IGV4eW5vczU0NDBfdG11X3JlYWQ7Ci0JCWRhdGEtPnRtdV9zZXRfZW11 bGF0aW9uID0gZXh5bm9zNTQ0MF90bXVfc2V0X2VtdWxhdGlvbjsKLQkJZGF0YS0+dG11X2NsZWFy X2lycXMgPSBleHlub3M1NDQwX3RtdV9jbGVhcl9pcnFzOwotCQlkYXRhLT5udHJpcCA9IDQ7Ci0J CWRhdGEtPmdhaW4gPSA1OwotCQlkYXRhLT5yZWZlcmVuY2Vfdm9sdGFnZSA9IDE2OwotCQlkYXRh LT5lZnVzZV92YWx1ZSA9IDB4NWQyZDsKLQkJZGF0YS0+bWluX2VmdXNlX3ZhbHVlID0gMTY7Ci0J CWRhdGEtPm1heF9lZnVzZV92YWx1ZSA9IDc2OwotCQlicmVhazsKIAljYXNlIFNPQ19BUkNIX0VY WU5PUzc6CiAJCWRhdGEtPnRtdV9pbml0aWFsaXplID0gZXh5bm9zN190bXVfaW5pdGlhbGl6ZTsK IAkJZGF0YS0+dG11X2NvbnRyb2wgPSBleHlub3M3X3RtdV9jb250cm9sOwpAQCAtMTI2MCw4ICsx MTA2LDcgQEAgc3RhdGljIGludCBleHlub3NfbWFwX2R0X2RhdGEoc3RydWN0IHBsYQogCSAqIENo ZWNrIGlmIHRoZSBUTVUgc2hhcmVzIHNvbWUgcmVnaXN0ZXJzIGFuZCB0aGVuIHRyeSB0byBtYXAg dGhlCiAJICogbWVtb3J5IG9mIGNvbW1vbiByZWdpc3RlcnMuCiAJICovCi0JaWYgKGRhdGEtPnNv YyAhPSBTT0NfQVJDSF9FWFlOT1M1NDIwX1RSSU1JTkZPICYmCi0JICAgIGRhdGEtPnNvYyAhPSBT T0NfQVJDSF9FWFlOT1M1NDQwKQorCWlmIChkYXRhLT5zb2MgIT0gU09DX0FSQ0hfRVhZTk9TNTQy MF9UUklNSU5GTykKIAkJcmV0dXJuIDA7CiAKIAlpZiAob2ZfYWRkcmVzc190b19yZXNvdXJjZShw ZGV2LT5kZXYub2Zfbm9kZSwgMSwgJnJlcykpIHsK From mboxrd@z Thu Jan 1 00:00:00 1970 From: b.zolnierkie@samsung.com (Bartlomiej Zolnierkiewicz) Date: Thu, 26 Apr 2018 13:21:12 +0200 Subject: [PATCH] thermal: samsung: Remove support for Exynos5440 In-Reply-To: <1951102.VLysaozMLK@amdc3058> References: <20180424203239.21885-1-krzk@kernel.org> <20180424203239.21885-7-krzk@kernel.org> <1951102.VLysaozMLK@amdc3058> Message-ID: <2734003.UHSMxVLybj@amdc3058> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org From: Krzysztof Kozlowski Subject: [PATCH] thermal: samsung: Remove support for Exynos5440 The Exynos5440 is not actively developed, there are no development boards available and probably there are no real products with it. Remove wide-tree support for Exynos5440. Signed-off-by: Krzysztof Kozlowski [b.zolnierkie: ported over driver changes] Signed-off-by: Bartlomiej Zolnierkiewicz --- Eduardo, here is a version which applies on top of pending Exynos thermal changes (https://lkml.org/lkml/2018/4/16/256). Documentation/devicetree/bindings/thermal/exynos-thermal.txt | 14 drivers/thermal/samsung/exynos_tmu.c | 161 ----------- 2 files changed, 4 insertions(+), 171 deletions(-) Index: b/Documentation/devicetree/bindings/thermal/exynos-thermal.txt =================================================================== --- a/Documentation/devicetree/bindings/thermal/exynos-thermal.txt 2018-04-26 12:29:42.716294204 +0200 +++ b/Documentation/devicetree/bindings/thermal/exynos-thermal.txt 2018-04-26 12:29:42.716294204 +0200 @@ -12,7 +12,6 @@ "samsung,exynos5420-tmu-ext-triminfo" for TMU channels 2, 3 and 4 Exynos5420 (Must pass triminfo base and triminfo clock) "samsung,exynos5433-tmu" - "samsung,exynos5440-tmu" "samsung,exynos7-tmu" - interrupt-parent : The phandle for the interrupt controller - reg : Address range of the thermal registers. For soc's which has multiple @@ -68,18 +67,7 @@ Example 1): #thermal-sensor-cells = <0>; }; -Example 2): - - tmuctrl_0: tmuctrl at 160118 { - compatible = "samsung,exynos5440-tmu"; - reg = <0x160118 0x230>, <0x160368 0x10>; - interrupts = <0 58 0>; - clocks = <&clock 21>; - clock-names = "tmu_apbif"; - #thermal-sensor-cells = <0>; - }; - -Example 3): (In case of Exynos5420 "with misplaced TRIMINFO register") +Example 2): (In case of Exynos5420 "with misplaced TRIMINFO register") tmu_cpu2: tmu at 10068000 { compatible = "samsung,exynos5420-tmu-ext-triminfo"; reg = <0x10068000 0x100>, <0x1006c000 0x4>; Index: b/drivers/thermal/samsung/exynos_tmu.c =================================================================== --- a/drivers/thermal/samsung/exynos_tmu.c 2018-04-26 12:29:42.716294204 +0200 +++ b/drivers/thermal/samsung/exynos_tmu.c 2018-04-26 12:30:52.648295965 +0200 @@ -126,28 +126,6 @@ #define EXYNOS5433_G3D_BASE 0x10070000 -/*exynos5440 specific registers*/ -#define EXYNOS5440_TMU_S0_7_TRIM 0x000 -#define EXYNOS5440_TMU_S0_7_CTRL 0x020 -#define EXYNOS5440_TMU_S0_7_DEBUG 0x040 -#define EXYNOS5440_TMU_S0_7_TEMP 0x0f0 -#define EXYNOS5440_TMU_S0_7_TH0 0x110 -#define EXYNOS5440_TMU_S0_7_TH1 0x130 -#define EXYNOS5440_TMU_S0_7_TH2 0x150 -#define EXYNOS5440_TMU_S0_7_IRQEN 0x210 -#define EXYNOS5440_TMU_S0_7_IRQ 0x230 -/* exynos5440 common registers */ -#define EXYNOS5440_TMU_IRQ_STATUS 0x000 -#define EXYNOS5440_TMU_PMIN 0x004 - -#define EXYNOS5440_TMU_INTEN_RISE0_SHIFT 0 -#define EXYNOS5440_TMU_INTEN_RISE1_SHIFT 1 -#define EXYNOS5440_TMU_INTEN_RISE2_SHIFT 2 -#define EXYNOS5440_TMU_INTEN_RISE3_SHIFT 3 -#define EXYNOS5440_TMU_INTEN_FALL0_SHIFT 4 -#define EXYNOS5440_TMU_TH_RISE4_SHIFT 24 -#define EXYNOS5440_EFUSE_SWAP_OFFSET 8 - /* Exynos7 specific registers */ #define EXYNOS7_THD_TEMP_RISE7_6 0x50 #define EXYNOS7_THD_TEMP_FALL7_6 0x60 @@ -184,7 +162,6 @@ enum soc_type { SOC_ARCH_EXYNOS5420, SOC_ARCH_EXYNOS5420_TRIMINFO, SOC_ARCH_EXYNOS5433, - SOC_ARCH_EXYNOS5440, SOC_ARCH_EXYNOS7, }; @@ -619,57 +596,6 @@ out: return ret; } -static int exynos5440_tmu_initialize(struct platform_device *pdev) -{ - struct exynos_tmu_data *data = platform_get_drvdata(pdev); - unsigned int trim_info = 0, con, rising_threshold; - int threshold_code; - int crit_temp = 0; - - /* - * For exynos5440 soc triminfo value is swapped between TMU0 and - * TMU2, so the below logic is needed. - */ - switch (data->id) { - case 0: - trim_info = readl(data->base + EXYNOS5440_EFUSE_SWAP_OFFSET + - EXYNOS5440_TMU_S0_7_TRIM); - break; - case 1: - trim_info = readl(data->base + EXYNOS5440_TMU_S0_7_TRIM); - break; - case 2: - trim_info = readl(data->base - EXYNOS5440_EFUSE_SWAP_OFFSET + - EXYNOS5440_TMU_S0_7_TRIM); - } - sanitize_temp_error(data, trim_info); - - /* Write temperature code for rising and falling threshold */ - rising_threshold = readl(data->base + EXYNOS5440_TMU_S0_7_TH0); - rising_threshold = get_th_reg(data, rising_threshold, false); - writel(rising_threshold, data->base + EXYNOS5440_TMU_S0_7_TH0); - writel(0, data->base + EXYNOS5440_TMU_S0_7_TH1); - - data->tmu_clear_irqs(data); - - /* if last threshold limit is also present */ - if (!data->tzd->ops->get_crit_temp(data->tzd, &crit_temp)) { - threshold_code = temp_to_code(data, crit_temp / MCELSIUS); - /* 5th level to be assigned in th2 reg */ - rising_threshold = - threshold_code << EXYNOS5440_TMU_TH_RISE4_SHIFT; - writel(rising_threshold, data->base + EXYNOS5440_TMU_S0_7_TH2); - con = readl(data->base + EXYNOS5440_TMU_S0_7_CTRL); - con |= (1 << EXYNOS_TMU_THERM_TRIP_EN_SHIFT); - writel(con, data->base + EXYNOS5440_TMU_S0_7_CTRL); - } - /* Clear the PMIN in the common TMU register */ - if (!data->id) - writel(0, data->base_second + EXYNOS5440_TMU_PMIN); - - return 0; -} - static int exynos7_tmu_initialize(struct platform_device *pdev) { struct exynos_tmu_data *data = platform_get_drvdata(pdev); @@ -820,35 +746,6 @@ static void exynos5433_tmu_control(struc writel(con, data->base + EXYNOS_TMU_REG_CONTROL); } -static void exynos5440_tmu_control(struct platform_device *pdev, bool on) -{ - struct exynos_tmu_data *data = platform_get_drvdata(pdev); - struct thermal_zone_device *tz = data->tzd; - unsigned int con, interrupt_en; - - con = get_con_reg(data, readl(data->base + EXYNOS5440_TMU_S0_7_CTRL)); - - if (on) { - con |= (1 << EXYNOS_TMU_CORE_EN_SHIFT); - interrupt_en = - (of_thermal_is_trip_valid(tz, 3) - << EXYNOS5440_TMU_INTEN_RISE3_SHIFT) | - (of_thermal_is_trip_valid(tz, 2) - << EXYNOS5440_TMU_INTEN_RISE2_SHIFT) | - (of_thermal_is_trip_valid(tz, 1) - << EXYNOS5440_TMU_INTEN_RISE1_SHIFT) | - (of_thermal_is_trip_valid(tz, 0) - << EXYNOS5440_TMU_INTEN_RISE0_SHIFT); - interrupt_en |= - interrupt_en << EXYNOS5440_TMU_INTEN_FALL0_SHIFT; - } else { - con &= ~(1 << EXYNOS_TMU_CORE_EN_SHIFT); - interrupt_en = 0; /* Disable all interrupts */ - } - writel(interrupt_en, data->base + EXYNOS5440_TMU_S0_7_IRQEN); - writel(con, data->base + EXYNOS5440_TMU_S0_7_CTRL); -} - static void exynos7_tmu_control(struct platform_device *pdev, bool on) { struct exynos_tmu_data *data = platform_get_drvdata(pdev); @@ -920,10 +817,8 @@ static u32 get_emul_con_reg(struct exyno if (temp) { temp /= MCELSIUS; - if (data->soc != SOC_ARCH_EXYNOS5440) { - val &= ~(EXYNOS_EMUL_TIME_MASK << EXYNOS_EMUL_TIME_SHIFT); - val |= (EXYNOS_EMUL_TIME << EXYNOS_EMUL_TIME_SHIFT); - } + val &= ~(EXYNOS_EMUL_TIME_MASK << EXYNOS_EMUL_TIME_SHIFT); + val |= (EXYNOS_EMUL_TIME << EXYNOS_EMUL_TIME_SHIFT); if (data->soc == SOC_ARCH_EXYNOS7) { val &= ~(EXYNOS7_EMUL_DATA_MASK << EXYNOS7_EMUL_DATA_SHIFT); @@ -964,16 +859,6 @@ static void exynos4412_tmu_set_emulation writel(val, data->base + emul_con); } -static void exynos5440_tmu_set_emulation(struct exynos_tmu_data *data, - int temp) -{ - unsigned int val; - - val = readl(data->base + EXYNOS5440_TMU_S0_7_DEBUG); - val = get_emul_con_reg(data, val, temp); - writel(val, data->base + EXYNOS5440_TMU_S0_7_DEBUG); -} - static int exynos_tmu_set_emulation(void *drv_data, int temp) { struct exynos_tmu_data *data = drv_data; @@ -996,7 +881,6 @@ out: } #else #define exynos4412_tmu_set_emulation NULL -#define exynos5440_tmu_set_emulation NULL static int exynos_tmu_set_emulation(void *drv_data, int temp) { return -EINVAL; } #endif /* CONFIG_THERMAL_EMULATION */ @@ -1014,11 +898,6 @@ static int exynos4412_tmu_read(struct ex return readb(data->base + EXYNOS_TMU_REG_CURRENT_TEMP); } -static int exynos5440_tmu_read(struct exynos_tmu_data *data) -{ - return readb(data->base + EXYNOS5440_TMU_S0_7_TEMP); -} - static int exynos7_tmu_read(struct exynos_tmu_data *data) { return readw(data->base + EXYNOS_TMU_REG_CURRENT_TEMP) & @@ -1029,16 +908,9 @@ static void exynos_tmu_work(struct work_ { struct exynos_tmu_data *data = container_of(work, struct exynos_tmu_data, irq_work); - unsigned int val_type; if (!IS_ERR(data->clk_sec)) clk_enable(data->clk_sec); - /* Find which sensor generated this interrupt */ - if (data->soc == SOC_ARCH_EXYNOS5440) { - val_type = readl(data->base_second + EXYNOS5440_TMU_IRQ_STATUS); - if (!((val_type >> data->id) & 0x1)) - goto out; - } if (!IS_ERR(data->clk_sec)) clk_disable(data->clk_sec); @@ -1051,7 +923,6 @@ static void exynos_tmu_work(struct work_ clk_disable(data->clk); mutex_unlock(&data->lock); -out: enable_irq(data->irq); } @@ -1086,15 +957,6 @@ static void exynos4210_tmu_clear_irqs(st writel(val_irq, data->base + tmu_intclear); } -static void exynos5440_tmu_clear_irqs(struct exynos_tmu_data *data) -{ - unsigned int val_irq; - - val_irq = readl(data->base + EXYNOS5440_TMU_S0_7_IRQ); - /* clear the interrupts */ - writel(val_irq, data->base + EXYNOS5440_TMU_S0_7_IRQ); -} - static irqreturn_t exynos_tmu_irq(int irq, void *id) { struct exynos_tmu_data *data = id; @@ -1131,9 +993,6 @@ static const struct of_device_id exynos_ .compatible = "samsung,exynos5433-tmu", .data = (const void *)SOC_ARCH_EXYNOS5433, }, { - .compatible = "samsung,exynos5440-tmu", - .data = (const void *)SOC_ARCH_EXYNOS5440, - }, { .compatible = "samsung,exynos7-tmu", .data = (const void *)SOC_ARCH_EXYNOS7, }, @@ -1223,19 +1082,6 @@ static int exynos_map_dt_data(struct pla data->min_efuse_value = 40; data->max_efuse_value = 150; break; - case SOC_ARCH_EXYNOS5440: - data->tmu_initialize = exynos5440_tmu_initialize; - data->tmu_control = exynos5440_tmu_control; - data->tmu_read = exynos5440_tmu_read; - data->tmu_set_emulation = exynos5440_tmu_set_emulation; - data->tmu_clear_irqs = exynos5440_tmu_clear_irqs; - data->ntrip = 4; - data->gain = 5; - data->reference_voltage = 16; - data->efuse_value = 0x5d2d; - data->min_efuse_value = 16; - data->max_efuse_value = 76; - break; case SOC_ARCH_EXYNOS7: data->tmu_initialize = exynos7_tmu_initialize; data->tmu_control = exynos7_tmu_control; @@ -1260,8 +1106,7 @@ static int exynos_map_dt_data(struct pla * Check if the TMU shares some registers and then try to map the * memory of common registers. */ - if (data->soc != SOC_ARCH_EXYNOS5420_TRIMINFO && - data->soc != SOC_ARCH_EXYNOS5440) + if (data->soc != SOC_ARCH_EXYNOS5420_TRIMINFO) return 0; if (of_address_to_resource(pdev->dev.of_node, 1, &res)) {