Lines Matching refs:data

209 	int (*tmu_read)(struct exynos_tmu_data *data);
210 void (*tmu_set_emulation)(struct exynos_tmu_data *data, int temp);
211 void (*tmu_clear_irqs)(struct exynos_tmu_data *data);
216 char data[10], *envp[] = { data, NULL }; in exynos_report_trigger() local
236 snprintf(data, sizeof(data), "%u", i); in exynos_report_trigger()
245 static int temp_to_code(struct exynos_tmu_data *data, u8 temp) in temp_to_code() argument
247 struct exynos_tmu_platform_data *pdata = data->pdata; in temp_to_code()
253 (data->temp_error2 - data->temp_error1) / in temp_to_code()
255 data->temp_error1; in temp_to_code()
258 temp_code = temp + data->temp_error1 - pdata->first_point_trim; in temp_to_code()
272 static int code_to_temp(struct exynos_tmu_data *data, u16 temp_code) in code_to_temp() argument
274 struct exynos_tmu_platform_data *pdata = data->pdata; in code_to_temp()
279 temp = (temp_code - data->temp_error1) * in code_to_temp()
281 (data->temp_error2 - data->temp_error1) + in code_to_temp()
285 temp = temp_code - data->temp_error1 + pdata->first_point_trim; in code_to_temp()
295 static void sanitize_temp_error(struct exynos_tmu_data *data, u32 trim_info) in sanitize_temp_error() argument
297 struct exynos_tmu_platform_data *pdata = data->pdata; in sanitize_temp_error()
299 data->temp_error1 = trim_info & EXYNOS_TMU_TEMP_MASK; in sanitize_temp_error()
300 data->temp_error2 = ((trim_info >> EXYNOS_TRIMINFO_85_SHIFT) & in sanitize_temp_error()
303 if (!data->temp_error1 || in sanitize_temp_error()
304 (pdata->min_efuse_value > data->temp_error1) || in sanitize_temp_error()
305 (data->temp_error1 > pdata->max_efuse_value)) in sanitize_temp_error()
306 data->temp_error1 = pdata->efuse_value & EXYNOS_TMU_TEMP_MASK; in sanitize_temp_error()
308 if (!data->temp_error2) in sanitize_temp_error()
309 data->temp_error2 = in sanitize_temp_error()
314 static u32 get_th_reg(struct exynos_tmu_data *data, u32 threshold, bool falling) in get_th_reg() argument
316 struct thermal_zone_device *tz = data->tzd; in get_th_reg()
338 threshold |= temp_to_code(data, temp) << 8 * i; in get_th_reg()
346 struct exynos_tmu_data *data = platform_get_drvdata(pdev); in exynos_tmu_initialize() local
349 mutex_lock(&data->lock); in exynos_tmu_initialize()
350 clk_enable(data->clk); in exynos_tmu_initialize()
351 if (!IS_ERR(data->clk_sec)) in exynos_tmu_initialize()
352 clk_enable(data->clk_sec); in exynos_tmu_initialize()
353 ret = data->tmu_initialize(pdev); in exynos_tmu_initialize()
354 clk_disable(data->clk); in exynos_tmu_initialize()
355 mutex_unlock(&data->lock); in exynos_tmu_initialize()
356 if (!IS_ERR(data->clk_sec)) in exynos_tmu_initialize()
357 clk_disable(data->clk_sec); in exynos_tmu_initialize()
362 static u32 get_con_reg(struct exynos_tmu_data *data, u32 con) in get_con_reg() argument
364 struct exynos_tmu_platform_data *pdata = data->pdata; in get_con_reg()
366 if (data->soc == SOC_ARCH_EXYNOS4412 || in get_con_reg()
367 data->soc == SOC_ARCH_EXYNOS3250) in get_con_reg()
386 struct exynos_tmu_data *data = platform_get_drvdata(pdev); in exynos_tmu_control() local
388 mutex_lock(&data->lock); in exynos_tmu_control()
389 clk_enable(data->clk); in exynos_tmu_control()
390 data->tmu_control(pdev, on); in exynos_tmu_control()
391 clk_disable(data->clk); in exynos_tmu_control()
392 mutex_unlock(&data->lock); in exynos_tmu_control()
397 struct exynos_tmu_data *data = platform_get_drvdata(pdev); in exynos4210_tmu_initialize() local
398 struct thermal_zone_device *tz = data->tzd; in exynos4210_tmu_initialize()
412 status = readb(data->base + EXYNOS_TMU_REG_STATUS); in exynos4210_tmu_initialize()
418 sanitize_temp_error(data, readl(data->base + EXYNOS_TMU_REG_TRIMINFO)); in exynos4210_tmu_initialize()
422 threshold_code = temp_to_code(data, reference); in exynos4210_tmu_initialize()
427 writeb(threshold_code, data->base + EXYNOS4210_TMU_REG_THRESHOLD_TEMP); in exynos4210_tmu_initialize()
431 writeb(temp - reference, data->base + in exynos4210_tmu_initialize()
435 data->tmu_clear_irqs(data); in exynos4210_tmu_initialize()
442 struct exynos_tmu_data *data = platform_get_drvdata(pdev); in exynos4412_tmu_initialize() local
444 of_thermal_get_trip_points(data->tzd); in exynos4412_tmu_initialize()
449 status = readb(data->base + EXYNOS_TMU_REG_STATUS); in exynos4412_tmu_initialize()
455 if (data->soc == SOC_ARCH_EXYNOS3250 || in exynos4412_tmu_initialize()
456 data->soc == SOC_ARCH_EXYNOS4412 || in exynos4412_tmu_initialize()
457 data->soc == SOC_ARCH_EXYNOS5250) { in exynos4412_tmu_initialize()
458 if (data->soc == SOC_ARCH_EXYNOS3250) { in exynos4412_tmu_initialize()
459 ctrl = readl(data->base + EXYNOS_TMU_TRIMINFO_CON1); in exynos4412_tmu_initialize()
461 writel(ctrl, data->base + EXYNOS_TMU_TRIMINFO_CON1); in exynos4412_tmu_initialize()
463 ctrl = readl(data->base + EXYNOS_TMU_TRIMINFO_CON2); in exynos4412_tmu_initialize()
465 writel(ctrl, data->base + EXYNOS_TMU_TRIMINFO_CON2); in exynos4412_tmu_initialize()
469 if (data->soc == SOC_ARCH_EXYNOS5420_TRIMINFO) in exynos4412_tmu_initialize()
470 trim_info = readl(data->base_second + EXYNOS_TMU_REG_TRIMINFO); in exynos4412_tmu_initialize()
472 trim_info = readl(data->base + EXYNOS_TMU_REG_TRIMINFO); in exynos4412_tmu_initialize()
474 sanitize_temp_error(data, trim_info); in exynos4412_tmu_initialize()
477 rising_threshold = readl(data->base + EXYNOS_THD_TEMP_RISE); in exynos4412_tmu_initialize()
478 rising_threshold = get_th_reg(data, rising_threshold, false); in exynos4412_tmu_initialize()
479 writel(rising_threshold, data->base + EXYNOS_THD_TEMP_RISE); in exynos4412_tmu_initialize()
480 writel(get_th_reg(data, 0, true), data->base + EXYNOS_THD_TEMP_FALL); in exynos4412_tmu_initialize()
482 data->tmu_clear_irqs(data); in exynos4412_tmu_initialize()
485 for (i = 0; i < of_thermal_get_ntrips(data->tzd); i++) { in exynos4412_tmu_initialize()
492 if (i == of_thermal_get_ntrips(data->tzd)) { in exynos4412_tmu_initialize()
499 threshold_code = temp_to_code(data, crit_temp / MCELSIUS); in exynos4412_tmu_initialize()
503 writel(rising_threshold, data->base + EXYNOS_THD_TEMP_RISE); in exynos4412_tmu_initialize()
504 con = readl(data->base + EXYNOS_TMU_REG_CONTROL); in exynos4412_tmu_initialize()
506 writel(con, data->base + EXYNOS_TMU_REG_CONTROL); in exynos4412_tmu_initialize()
514 struct exynos_tmu_data *data = platform_get_drvdata(pdev); in exynos5433_tmu_initialize() local
515 struct exynos_tmu_platform_data *pdata = data->pdata; in exynos5433_tmu_initialize()
516 struct thermal_zone_device *tz = data->tzd; in exynos5433_tmu_initialize()
522 status = readb(data->base + EXYNOS_TMU_REG_STATUS); in exynos5433_tmu_initialize()
528 trim_info = readl(data->base + EXYNOS_TMU_REG_TRIMINFO); in exynos5433_tmu_initialize()
529 sanitize_temp_error(data, trim_info); in exynos5433_tmu_initialize()
537 writel(trim_info, data->base + EXYNOS_TMU_REG_TRIMINFO); in exynos5433_tmu_initialize()
585 threshold_code = temp_to_code(data, temp); in exynos5433_tmu_initialize()
587 rising_threshold = readl(data->base + rising_reg_offset); in exynos5433_tmu_initialize()
589 writel(rising_threshold, data->base + rising_reg_offset); in exynos5433_tmu_initialize()
594 threshold_code = temp_to_code(data, temp_hist); in exynos5433_tmu_initialize()
596 falling_threshold = readl(data->base + falling_reg_offset); in exynos5433_tmu_initialize()
599 writel(falling_threshold, data->base + falling_reg_offset); in exynos5433_tmu_initialize()
602 data->tmu_clear_irqs(data); in exynos5433_tmu_initialize()
609 struct exynos_tmu_data *data = platform_get_drvdata(pdev); in exynos5440_tmu_initialize() local
618 switch (data->id) { in exynos5440_tmu_initialize()
620 trim_info = readl(data->base + EXYNOS5440_EFUSE_SWAP_OFFSET + in exynos5440_tmu_initialize()
624 trim_info = readl(data->base + EXYNOS5440_TMU_S0_7_TRIM); in exynos5440_tmu_initialize()
627 trim_info = readl(data->base - EXYNOS5440_EFUSE_SWAP_OFFSET + in exynos5440_tmu_initialize()
630 sanitize_temp_error(data, trim_info); in exynos5440_tmu_initialize()
633 rising_threshold = readl(data->base + EXYNOS5440_TMU_S0_7_TH0); in exynos5440_tmu_initialize()
634 rising_threshold = get_th_reg(data, rising_threshold, false); in exynos5440_tmu_initialize()
635 writel(rising_threshold, data->base + EXYNOS5440_TMU_S0_7_TH0); in exynos5440_tmu_initialize()
636 writel(0, data->base + EXYNOS5440_TMU_S0_7_TH1); in exynos5440_tmu_initialize()
638 data->tmu_clear_irqs(data); in exynos5440_tmu_initialize()
641 if (!data->tzd->ops->get_crit_temp(data->tzd, &crit_temp)) { in exynos5440_tmu_initialize()
642 threshold_code = temp_to_code(data, crit_temp / MCELSIUS); in exynos5440_tmu_initialize()
646 writel(rising_threshold, data->base + EXYNOS5440_TMU_S0_7_TH2); in exynos5440_tmu_initialize()
647 con = readl(data->base + EXYNOS5440_TMU_S0_7_CTRL); in exynos5440_tmu_initialize()
649 writel(con, data->base + EXYNOS5440_TMU_S0_7_CTRL); in exynos5440_tmu_initialize()
652 if (!data->id) in exynos5440_tmu_initialize()
653 writel(0, data->base_second + EXYNOS5440_TMU_PMIN); in exynos5440_tmu_initialize()
660 struct exynos_tmu_data *data = platform_get_drvdata(pdev); in exynos7_tmu_initialize() local
661 struct thermal_zone_device *tz = data->tzd; in exynos7_tmu_initialize()
662 struct exynos_tmu_platform_data *pdata = data->pdata; in exynos7_tmu_initialize()
669 status = readb(data->base + EXYNOS_TMU_REG_STATUS); in exynos7_tmu_initialize()
675 trim_info = readl(data->base + EXYNOS_TMU_REG_TRIMINFO); in exynos7_tmu_initialize()
677 data->temp_error1 = trim_info & EXYNOS7_TMU_TEMP_MASK; in exynos7_tmu_initialize()
678 if (!data->temp_error1 || in exynos7_tmu_initialize()
679 (pdata->min_efuse_value > data->temp_error1) || in exynos7_tmu_initialize()
680 (data->temp_error1 > pdata->max_efuse_value)) in exynos7_tmu_initialize()
681 data->temp_error1 = pdata->efuse_value & EXYNOS_TMU_TEMP_MASK; in exynos7_tmu_initialize()
715 threshold_code = temp_to_code(data, temp); in exynos7_tmu_initialize()
716 rising_threshold = readl(data->base + in exynos7_tmu_initialize()
721 data->base + EXYNOS7_THD_TEMP_RISE7_6 + reg_off); in exynos7_tmu_initialize()
724 threshold_code = temp_to_code(data, temp_hist); in exynos7_tmu_initialize()
728 data->base + EXYNOS7_THD_TEMP_FALL7_6 + reg_off); in exynos7_tmu_initialize()
731 data->tmu_clear_irqs(data); in exynos7_tmu_initialize()
738 struct exynos_tmu_data *data = platform_get_drvdata(pdev); in exynos4210_tmu_control() local
739 struct thermal_zone_device *tz = data->tzd; in exynos4210_tmu_control()
742 con = get_con_reg(data, readl(data->base + EXYNOS_TMU_REG_CONTROL)); in exynos4210_tmu_control()
756 if (data->soc != SOC_ARCH_EXYNOS4210) in exynos4210_tmu_control()
763 writel(interrupt_en, data->base + EXYNOS_TMU_REG_INTEN); in exynos4210_tmu_control()
764 writel(con, data->base + EXYNOS_TMU_REG_CONTROL); in exynos4210_tmu_control()
769 struct exynos_tmu_data *data = platform_get_drvdata(pdev); in exynos5433_tmu_control() local
770 struct thermal_zone_device *tz = data->tzd; in exynos5433_tmu_control()
773 con = get_con_reg(data, readl(data->base + EXYNOS_TMU_REG_CONTROL)); in exynos5433_tmu_control()
804 writel(pd_det_en, data->base + EXYNOS5433_TMU_PD_DET_EN); in exynos5433_tmu_control()
805 writel(interrupt_en, data->base + EXYNOS5433_TMU_REG_INTEN); in exynos5433_tmu_control()
806 writel(con, data->base + EXYNOS_TMU_REG_CONTROL); in exynos5433_tmu_control()
811 struct exynos_tmu_data *data = platform_get_drvdata(pdev); in exynos5440_tmu_control() local
812 struct thermal_zone_device *tz = data->tzd; in exynos5440_tmu_control()
815 con = get_con_reg(data, readl(data->base + EXYNOS5440_TMU_S0_7_CTRL)); in exynos5440_tmu_control()
834 writel(interrupt_en, data->base + EXYNOS5440_TMU_S0_7_IRQEN); in exynos5440_tmu_control()
835 writel(con, data->base + EXYNOS5440_TMU_S0_7_CTRL); in exynos5440_tmu_control()
840 struct exynos_tmu_data *data = platform_get_drvdata(pdev); in exynos7_tmu_control() local
841 struct thermal_zone_device *tz = data->tzd; in exynos7_tmu_control()
844 con = get_con_reg(data, readl(data->base + EXYNOS_TMU_REG_CONTROL)); in exynos7_tmu_control()
875 writel(interrupt_en, data->base + EXYNOS7_TMU_REG_INTEN); in exynos7_tmu_control()
876 writel(con, data->base + EXYNOS_TMU_REG_CONTROL); in exynos7_tmu_control()
881 struct exynos_tmu_data *data = p; in exynos_get_temp() local
883 if (!data || !data->tmu_read) in exynos_get_temp()
886 mutex_lock(&data->lock); in exynos_get_temp()
887 clk_enable(data->clk); in exynos_get_temp()
889 *temp = code_to_temp(data, data->tmu_read(data)) * MCELSIUS; in exynos_get_temp()
891 clk_disable(data->clk); in exynos_get_temp()
892 mutex_unlock(&data->lock); in exynos_get_temp()
898 static u32 get_emul_con_reg(struct exynos_tmu_data *data, unsigned int val, in get_emul_con_reg() argument
904 if (data->soc != SOC_ARCH_EXYNOS5440) { in get_emul_con_reg()
908 if (data->soc == SOC_ARCH_EXYNOS7) { in get_emul_con_reg()
911 val |= (temp_to_code(data, temp) << in get_emul_con_reg()
917 val |= (temp_to_code(data, temp) << in get_emul_con_reg()
928 static void exynos4412_tmu_set_emulation(struct exynos_tmu_data *data, in exynos4412_tmu_set_emulation() argument
934 if (data->soc == SOC_ARCH_EXYNOS5260) in exynos4412_tmu_set_emulation()
936 else if (data->soc == SOC_ARCH_EXYNOS5433) in exynos4412_tmu_set_emulation()
938 else if (data->soc == SOC_ARCH_EXYNOS7) in exynos4412_tmu_set_emulation()
943 val = readl(data->base + emul_con); in exynos4412_tmu_set_emulation()
944 val = get_emul_con_reg(data, val, temp); in exynos4412_tmu_set_emulation()
945 writel(val, data->base + emul_con); in exynos4412_tmu_set_emulation()
948 static void exynos5440_tmu_set_emulation(struct exynos_tmu_data *data, in exynos5440_tmu_set_emulation() argument
953 val = readl(data->base + EXYNOS5440_TMU_S0_7_DEBUG); in exynos5440_tmu_set_emulation()
954 val = get_emul_con_reg(data, val, temp); in exynos5440_tmu_set_emulation()
955 writel(val, data->base + EXYNOS5440_TMU_S0_7_DEBUG); in exynos5440_tmu_set_emulation()
960 struct exynos_tmu_data *data = drv_data; in exynos_tmu_set_emulation() local
963 if (data->soc == SOC_ARCH_EXYNOS4210) in exynos_tmu_set_emulation()
969 mutex_lock(&data->lock); in exynos_tmu_set_emulation()
970 clk_enable(data->clk); in exynos_tmu_set_emulation()
971 data->tmu_set_emulation(data, temp); in exynos_tmu_set_emulation()
972 clk_disable(data->clk); in exynos_tmu_set_emulation()
973 mutex_unlock(&data->lock); in exynos_tmu_set_emulation()
985 static int exynos4210_tmu_read(struct exynos_tmu_data *data) in exynos4210_tmu_read() argument
987 int ret = readb(data->base + EXYNOS_TMU_REG_CURRENT_TEMP); in exynos4210_tmu_read()
993 static int exynos4412_tmu_read(struct exynos_tmu_data *data) in exynos4412_tmu_read() argument
995 return readb(data->base + EXYNOS_TMU_REG_CURRENT_TEMP); in exynos4412_tmu_read()
998 static int exynos5440_tmu_read(struct exynos_tmu_data *data) in exynos5440_tmu_read() argument
1000 return readb(data->base + EXYNOS5440_TMU_S0_7_TEMP); in exynos5440_tmu_read()
1003 static int exynos7_tmu_read(struct exynos_tmu_data *data) in exynos7_tmu_read() argument
1005 return readw(data->base + EXYNOS_TMU_REG_CURRENT_TEMP) & in exynos7_tmu_read()
1011 struct exynos_tmu_data *data = container_of(work, in exynos_tmu_work() local
1015 if (!IS_ERR(data->clk_sec)) in exynos_tmu_work()
1016 clk_enable(data->clk_sec); in exynos_tmu_work()
1018 if (data->soc == SOC_ARCH_EXYNOS5440) { in exynos_tmu_work()
1019 val_type = readl(data->base_second + EXYNOS5440_TMU_IRQ_STATUS); in exynos_tmu_work()
1020 if (!((val_type >> data->id) & 0x1)) in exynos_tmu_work()
1023 if (!IS_ERR(data->clk_sec)) in exynos_tmu_work()
1024 clk_disable(data->clk_sec); in exynos_tmu_work()
1026 exynos_report_trigger(data); in exynos_tmu_work()
1027 mutex_lock(&data->lock); in exynos_tmu_work()
1028 clk_enable(data->clk); in exynos_tmu_work()
1031 data->tmu_clear_irqs(data); in exynos_tmu_work()
1033 clk_disable(data->clk); in exynos_tmu_work()
1034 mutex_unlock(&data->lock); in exynos_tmu_work()
1036 enable_irq(data->irq); in exynos_tmu_work()
1039 static void exynos4210_tmu_clear_irqs(struct exynos_tmu_data *data) in exynos4210_tmu_clear_irqs() argument
1044 if (data->soc == SOC_ARCH_EXYNOS5260) { in exynos4210_tmu_clear_irqs()
1047 } else if (data->soc == SOC_ARCH_EXYNOS7) { in exynos4210_tmu_clear_irqs()
1050 } else if (data->soc == SOC_ARCH_EXYNOS5433) { in exynos4210_tmu_clear_irqs()
1058 val_irq = readl(data->base + tmu_intstat); in exynos4210_tmu_clear_irqs()
1067 writel(val_irq, data->base + tmu_intclear); in exynos4210_tmu_clear_irqs()
1070 static void exynos5440_tmu_clear_irqs(struct exynos_tmu_data *data) in exynos5440_tmu_clear_irqs() argument
1074 val_irq = readl(data->base + EXYNOS5440_TMU_S0_7_IRQ); in exynos5440_tmu_clear_irqs()
1076 writel(val_irq, data->base + EXYNOS5440_TMU_S0_7_IRQ); in exynos5440_tmu_clear_irqs()
1081 struct exynos_tmu_data *data = id; in exynos_tmu_irq() local
1084 schedule_work(&data->irq_work); in exynos_tmu_irq()
1169 struct exynos_tmu_data *data = platform_get_drvdata(pdev); in exynos_map_dt_data() local
1173 if (!data || !pdev->dev.of_node) in exynos_map_dt_data()
1176 data->id = of_alias_get_id(pdev->dev.of_node, "tmuctrl"); in exynos_map_dt_data()
1177 if (data->id < 0) in exynos_map_dt_data()
1178 data->id = 0; in exynos_map_dt_data()
1180 data->irq = irq_of_parse_and_map(pdev->dev.of_node, 0); in exynos_map_dt_data()
1181 if (data->irq <= 0) { in exynos_map_dt_data()
1191 data->base = devm_ioremap(&pdev->dev, res.start, resource_size(&res)); in exynos_map_dt_data()
1192 if (!data->base) { in exynos_map_dt_data()
1204 data->pdata = pdata; in exynos_map_dt_data()
1205 data->soc = exynos_of_get_soc_type(pdev->dev.of_node); in exynos_map_dt_data()
1207 switch (data->soc) { in exynos_map_dt_data()
1209 data->tmu_initialize = exynos4210_tmu_initialize; in exynos_map_dt_data()
1210 data->tmu_control = exynos4210_tmu_control; in exynos_map_dt_data()
1211 data->tmu_read = exynos4210_tmu_read; in exynos_map_dt_data()
1212 data->tmu_clear_irqs = exynos4210_tmu_clear_irqs; in exynos_map_dt_data()
1220 data->tmu_initialize = exynos4412_tmu_initialize; in exynos_map_dt_data()
1221 data->tmu_control = exynos4210_tmu_control; in exynos_map_dt_data()
1222 data->tmu_read = exynos4412_tmu_read; in exynos_map_dt_data()
1223 data->tmu_set_emulation = exynos4412_tmu_set_emulation; in exynos_map_dt_data()
1224 data->tmu_clear_irqs = exynos4210_tmu_clear_irqs; in exynos_map_dt_data()
1227 data->tmu_initialize = exynos5433_tmu_initialize; in exynos_map_dt_data()
1228 data->tmu_control = exynos5433_tmu_control; in exynos_map_dt_data()
1229 data->tmu_read = exynos4412_tmu_read; in exynos_map_dt_data()
1230 data->tmu_set_emulation = exynos4412_tmu_set_emulation; in exynos_map_dt_data()
1231 data->tmu_clear_irqs = exynos4210_tmu_clear_irqs; in exynos_map_dt_data()
1234 data->tmu_initialize = exynos5440_tmu_initialize; in exynos_map_dt_data()
1235 data->tmu_control = exynos5440_tmu_control; in exynos_map_dt_data()
1236 data->tmu_read = exynos5440_tmu_read; in exynos_map_dt_data()
1237 data->tmu_set_emulation = exynos5440_tmu_set_emulation; in exynos_map_dt_data()
1238 data->tmu_clear_irqs = exynos5440_tmu_clear_irqs; in exynos_map_dt_data()
1241 data->tmu_initialize = exynos7_tmu_initialize; in exynos_map_dt_data()
1242 data->tmu_control = exynos7_tmu_control; in exynos_map_dt_data()
1243 data->tmu_read = exynos7_tmu_read; in exynos_map_dt_data()
1244 data->tmu_set_emulation = exynos4412_tmu_set_emulation; in exynos_map_dt_data()
1245 data->tmu_clear_irqs = exynos4210_tmu_clear_irqs; in exynos_map_dt_data()
1256 if (data->soc != SOC_ARCH_EXYNOS5420_TRIMINFO && in exynos_map_dt_data()
1257 data->soc != SOC_ARCH_EXYNOS5440) in exynos_map_dt_data()
1265 data->base_second = devm_ioremap(&pdev->dev, res.start, in exynos_map_dt_data()
1267 if (!data->base_second) { in exynos_map_dt_data()
1282 struct exynos_tmu_data *data; in exynos_tmu_probe() local
1285 data = devm_kzalloc(&pdev->dev, sizeof(struct exynos_tmu_data), in exynos_tmu_probe()
1287 if (!data) in exynos_tmu_probe()
1290 platform_set_drvdata(pdev, data); in exynos_tmu_probe()
1291 mutex_init(&data->lock); in exynos_tmu_probe()
1298 data->regulator = devm_regulator_get(&pdev->dev, "vtmu"); in exynos_tmu_probe()
1299 if (!IS_ERR(data->regulator)) { in exynos_tmu_probe()
1300 ret = regulator_enable(data->regulator); in exynos_tmu_probe()
1313 INIT_WORK(&data->irq_work, exynos_tmu_work); in exynos_tmu_probe()
1315 data->clk = devm_clk_get(&pdev->dev, "tmu_apbif"); in exynos_tmu_probe()
1316 if (IS_ERR(data->clk)) { in exynos_tmu_probe()
1318 ret = PTR_ERR(data->clk); in exynos_tmu_probe()
1322 data->clk_sec = devm_clk_get(&pdev->dev, "tmu_triminfo_apbif"); in exynos_tmu_probe()
1323 if (IS_ERR(data->clk_sec)) { in exynos_tmu_probe()
1324 if (data->soc == SOC_ARCH_EXYNOS5420_TRIMINFO) { in exynos_tmu_probe()
1326 ret = PTR_ERR(data->clk_sec); in exynos_tmu_probe()
1330 ret = clk_prepare(data->clk_sec); in exynos_tmu_probe()
1337 ret = clk_prepare(data->clk); in exynos_tmu_probe()
1343 switch (data->soc) { in exynos_tmu_probe()
1346 data->sclk = devm_clk_get(&pdev->dev, "tmu_sclk"); in exynos_tmu_probe()
1347 if (IS_ERR(data->sclk)) { in exynos_tmu_probe()
1351 ret = clk_prepare_enable(data->sclk); in exynos_tmu_probe()
1366 data->tzd = thermal_zone_of_sensor_register(&pdev->dev, 0, data, in exynos_tmu_probe()
1368 if (IS_ERR(data->tzd)) { in exynos_tmu_probe()
1369 ret = PTR_ERR(data->tzd); in exynos_tmu_probe()
1380 ret = devm_request_irq(&pdev->dev, data->irq, exynos_tmu_irq, in exynos_tmu_probe()
1381 IRQF_TRIGGER_RISING | IRQF_SHARED, dev_name(&pdev->dev), data); in exynos_tmu_probe()
1383 dev_err(&pdev->dev, "Failed to request irq: %d\n", data->irq); in exynos_tmu_probe()
1391 thermal_zone_of_sensor_unregister(&pdev->dev, data->tzd); in exynos_tmu_probe()
1393 clk_disable_unprepare(data->sclk); in exynos_tmu_probe()
1395 clk_unprepare(data->clk); in exynos_tmu_probe()
1397 if (!IS_ERR(data->clk_sec)) in exynos_tmu_probe()
1398 clk_unprepare(data->clk_sec); in exynos_tmu_probe()
1400 if (!IS_ERR(data->regulator)) in exynos_tmu_probe()
1401 regulator_disable(data->regulator); in exynos_tmu_probe()
1408 struct exynos_tmu_data *data = platform_get_drvdata(pdev); in exynos_tmu_remove() local
1409 struct thermal_zone_device *tzd = data->tzd; in exynos_tmu_remove()
1414 clk_disable_unprepare(data->sclk); in exynos_tmu_remove()
1415 clk_unprepare(data->clk); in exynos_tmu_remove()
1416 if (!IS_ERR(data->clk_sec)) in exynos_tmu_remove()
1417 clk_unprepare(data->clk_sec); in exynos_tmu_remove()
1419 if (!IS_ERR(data->regulator)) in exynos_tmu_remove()
1420 regulator_disable(data->regulator); in exynos_tmu_remove()