Lines Matching refs:bgp
46 static int ti_bandgap_force_single_read(struct ti_bandgap *bgp, int id);
58 static u32 ti_bandgap_readl(struct ti_bandgap *bgp, u32 reg) in ti_bandgap_readl() argument
60 return readl(bgp->base + reg); in ti_bandgap_readl()
71 static void ti_bandgap_writel(struct ti_bandgap *bgp, u32 val, u32 reg) in ti_bandgap_writel() argument
73 writel(val, bgp->base + reg); in ti_bandgap_writel()
82 #define RMW_BITS(bgp, id, reg, mask, val) \ argument
87 t = bgp->conf->sensors[(id)].registers; \
88 r = ti_bandgap_readl(bgp, t->reg); \
91 ti_bandgap_writel(bgp, r, t->reg); \
106 static int ti_bandgap_power(struct ti_bandgap *bgp, bool on) in ti_bandgap_power() argument
110 if (!TI_BANDGAP_HAS(bgp, POWER_SWITCH)) in ti_bandgap_power()
113 for (i = 0; i < bgp->conf->sensor_count; i++) in ti_bandgap_power()
115 RMW_BITS(bgp, i, temp_sensor_ctrl, bgap_tempsoff_mask, !on); in ti_bandgap_power()
135 static u32 ti_errata814_bandgap_read_temp(struct ti_bandgap *bgp, u32 reg) in ti_errata814_bandgap_read_temp() argument
139 val1 = ti_bandgap_readl(bgp, reg); in ti_errata814_bandgap_read_temp()
140 val2 = ti_bandgap_readl(bgp, reg); in ti_errata814_bandgap_read_temp()
147 return ti_bandgap_readl(bgp, reg); in ti_errata814_bandgap_read_temp()
162 static u32 ti_bandgap_read_temp(struct ti_bandgap *bgp, int id) in ti_bandgap_read_temp() argument
167 tsr = bgp->conf->sensors[id].registers; in ti_bandgap_read_temp()
170 if (TI_BANDGAP_HAS(bgp, FREEZE_BIT)) { in ti_bandgap_read_temp()
171 RMW_BITS(bgp, id, bgap_mask_ctrl, mask_freeze_mask, 1); in ti_bandgap_read_temp()
180 if (TI_BANDGAP_HAS(bgp, ERRATA_814)) in ti_bandgap_read_temp()
181 temp = ti_errata814_bandgap_read_temp(bgp, reg); in ti_bandgap_read_temp()
183 temp = ti_bandgap_readl(bgp, reg); in ti_bandgap_read_temp()
187 if (TI_BANDGAP_HAS(bgp, FREEZE_BIT)) in ti_bandgap_read_temp()
188 RMW_BITS(bgp, id, bgap_mask_ctrl, mask_freeze_mask, 0); in ti_bandgap_read_temp()
210 struct ti_bandgap *bgp = data; in ti_bandgap_talert_irq_handler() local
215 spin_lock(&bgp->lock); in ti_bandgap_talert_irq_handler()
216 for (i = 0; i < bgp->conf->sensor_count; i++) { in ti_bandgap_talert_irq_handler()
217 tsr = bgp->conf->sensors[i].registers; in ti_bandgap_talert_irq_handler()
218 ctrl = ti_bandgap_readl(bgp, tsr->bgap_status); in ti_bandgap_talert_irq_handler()
229 ctrl = ti_bandgap_readl(bgp, tsr->bgap_mask_ctrl); in ti_bandgap_talert_irq_handler()
243 ti_bandgap_writel(bgp, ctrl, tsr->bgap_mask_ctrl); in ti_bandgap_talert_irq_handler()
245 dev_dbg(bgp->dev, in ti_bandgap_talert_irq_handler()
247 __func__, bgp->conf->sensors[i].domain, in ti_bandgap_talert_irq_handler()
251 if (bgp->conf->report_temperature) in ti_bandgap_talert_irq_handler()
252 bgp->conf->report_temperature(bgp, i); in ti_bandgap_talert_irq_handler()
254 spin_unlock(&bgp->lock); in ti_bandgap_talert_irq_handler()
296 int ti_bandgap_adc_to_mcelsius(struct ti_bandgap *bgp, int adc_val, int *t) in ti_bandgap_adc_to_mcelsius() argument
298 const struct ti_bandgap_data *conf = bgp->conf; in ti_bandgap_adc_to_mcelsius()
304 *t = bgp->conf->conv_table[adc_val - conf->adc_start_val]; in ti_bandgap_adc_to_mcelsius()
319 static inline int ti_bandgap_validate(struct ti_bandgap *bgp, int id) in ti_bandgap_validate() argument
321 if (!bgp || IS_ERR(bgp)) { in ti_bandgap_validate()
326 if ((id < 0) || (id >= bgp->conf->sensor_count)) { in ti_bandgap_validate()
327 dev_err(bgp->dev, "%s: sensor id out of range (%d)\n", in ti_bandgap_validate()
341 static void ti_bandgap_read_counter(struct ti_bandgap *bgp, int id, in ti_bandgap_read_counter() argument
347 tsr = bgp->conf->sensors[id].registers; in ti_bandgap_read_counter()
348 time = ti_bandgap_readl(bgp, tsr->bgap_counter); in ti_bandgap_read_counter()
351 time = time * 1000 / bgp->clk_rate; in ti_bandgap_read_counter()
361 static void ti_bandgap_read_counter_delay(struct ti_bandgap *bgp, int id, in ti_bandgap_read_counter_delay() argument
367 tsr = bgp->conf->sensors[id].registers; in ti_bandgap_read_counter_delay()
369 reg_val = ti_bandgap_readl(bgp, tsr->bgap_mask_ctrl); in ti_bandgap_read_counter_delay()
392 dev_warn(bgp->dev, "Wrong counter delay value read from register %X", in ti_bandgap_read_counter_delay()
405 int ti_bandgap_read_update_interval(struct ti_bandgap *bgp, int id, in ti_bandgap_read_update_interval() argument
410 ret = ti_bandgap_validate(bgp, id); in ti_bandgap_read_update_interval()
414 if (!TI_BANDGAP_HAS(bgp, COUNTER) && in ti_bandgap_read_update_interval()
415 !TI_BANDGAP_HAS(bgp, COUNTER_DELAY)) { in ti_bandgap_read_update_interval()
420 if (TI_BANDGAP_HAS(bgp, COUNTER)) { in ti_bandgap_read_update_interval()
421 ti_bandgap_read_counter(bgp, id, interval); in ti_bandgap_read_update_interval()
425 ti_bandgap_read_counter_delay(bgp, id, interval); in ti_bandgap_read_update_interval()
438 static int ti_bandgap_write_counter_delay(struct ti_bandgap *bgp, int id, in ti_bandgap_write_counter_delay() argument
463 dev_warn(bgp->dev, "Delay %d ms is not supported\n", interval); in ti_bandgap_write_counter_delay()
467 spin_lock(&bgp->lock); in ti_bandgap_write_counter_delay()
468 RMW_BITS(bgp, id, bgap_mask_ctrl, mask_counter_delay_mask, rval); in ti_bandgap_write_counter_delay()
469 spin_unlock(&bgp->lock); in ti_bandgap_write_counter_delay()
480 static void ti_bandgap_write_counter(struct ti_bandgap *bgp, int id, in ti_bandgap_write_counter() argument
483 interval = interval * bgp->clk_rate / 1000; in ti_bandgap_write_counter()
484 spin_lock(&bgp->lock); in ti_bandgap_write_counter()
485 RMW_BITS(bgp, id, bgap_counter, counter_mask, interval); in ti_bandgap_write_counter()
486 spin_unlock(&bgp->lock); in ti_bandgap_write_counter()
497 int ti_bandgap_write_update_interval(struct ti_bandgap *bgp, in ti_bandgap_write_update_interval() argument
500 int ret = ti_bandgap_validate(bgp, id); in ti_bandgap_write_update_interval()
504 if (!TI_BANDGAP_HAS(bgp, COUNTER) && in ti_bandgap_write_update_interval()
505 !TI_BANDGAP_HAS(bgp, COUNTER_DELAY)) { in ti_bandgap_write_update_interval()
510 if (TI_BANDGAP_HAS(bgp, COUNTER)) { in ti_bandgap_write_update_interval()
511 ti_bandgap_write_counter(bgp, id, interval); in ti_bandgap_write_update_interval()
515 ret = ti_bandgap_write_counter_delay(bgp, id, interval); in ti_bandgap_write_update_interval()
528 int ti_bandgap_read_temperature(struct ti_bandgap *bgp, int id, in ti_bandgap_read_temperature() argument
534 ret = ti_bandgap_validate(bgp, id); in ti_bandgap_read_temperature()
538 if (!TI_BANDGAP_HAS(bgp, MODE_CONFIG)) { in ti_bandgap_read_temperature()
539 ret = ti_bandgap_force_single_read(bgp, id); in ti_bandgap_read_temperature()
544 spin_lock(&bgp->lock); in ti_bandgap_read_temperature()
545 temp = ti_bandgap_read_temp(bgp, id); in ti_bandgap_read_temperature()
546 spin_unlock(&bgp->lock); in ti_bandgap_read_temperature()
548 ret = ti_bandgap_adc_to_mcelsius(bgp, temp, &temp); in ti_bandgap_read_temperature()
566 int ti_bandgap_set_sensor_data(struct ti_bandgap *bgp, int id, void *data) in ti_bandgap_set_sensor_data() argument
568 int ret = ti_bandgap_validate(bgp, id); in ti_bandgap_set_sensor_data()
572 bgp->regval[id].data = data; in ti_bandgap_set_sensor_data()
585 void *ti_bandgap_get_sensor_data(struct ti_bandgap *bgp, int id) in ti_bandgap_get_sensor_data() argument
587 int ret = ti_bandgap_validate(bgp, id); in ti_bandgap_get_sensor_data()
591 return bgp->regval[id].data; in ti_bandgap_get_sensor_data()
607 ti_bandgap_force_single_read(struct ti_bandgap *bgp, int id) in ti_bandgap_force_single_read() argument
613 if (TI_BANDGAP_HAS(bgp, MODE_CONFIG)) in ti_bandgap_force_single_read()
614 RMW_BITS(bgp, id, bgap_mode_ctrl, mode_ctrl_mask, 0); in ti_bandgap_force_single_read()
617 RMW_BITS(bgp, id, temp_sensor_ctrl, bgap_soc_mask, 1); in ti_bandgap_force_single_read()
620 tsr = bgp->conf->sensors[id].registers; in ti_bandgap_force_single_read()
623 if (ti_bandgap_readl(bgp, tsr->temp_sensor_ctrl) & in ti_bandgap_force_single_read()
629 RMW_BITS(bgp, id, temp_sensor_ctrl, bgap_soc_mask, 0); in ti_bandgap_force_single_read()
634 if (!(ti_bandgap_readl(bgp, tsr->temp_sensor_ctrl) & in ti_bandgap_force_single_read()
653 static int ti_bandgap_set_continuous_mode(struct ti_bandgap *bgp) in ti_bandgap_set_continuous_mode() argument
657 for (i = 0; i < bgp->conf->sensor_count; i++) { in ti_bandgap_set_continuous_mode()
659 ti_bandgap_force_single_read(bgp, i); in ti_bandgap_set_continuous_mode()
660 RMW_BITS(bgp, i, bgap_mode_ctrl, mode_ctrl_mask, 1); in ti_bandgap_set_continuous_mode()
681 int ti_bandgap_get_trend(struct ti_bandgap *bgp, int id, int *trend) in ti_bandgap_get_trend() argument
687 ret = ti_bandgap_validate(bgp, id); in ti_bandgap_get_trend()
691 if (!TI_BANDGAP_HAS(bgp, HISTORY_BUFFER) || in ti_bandgap_get_trend()
692 !TI_BANDGAP_HAS(bgp, FREEZE_BIT)) { in ti_bandgap_get_trend()
697 spin_lock(&bgp->lock); in ti_bandgap_get_trend()
699 tsr = bgp->conf->sensors[id].registers; in ti_bandgap_get_trend()
702 RMW_BITS(bgp, id, bgap_mask_ctrl, mask_freeze_mask, 1); in ti_bandgap_get_trend()
707 temp1 = ti_bandgap_readl(bgp, reg1); in ti_bandgap_get_trend()
710 temp2 = ti_bandgap_readl(bgp, reg2); in ti_bandgap_get_trend()
714 ret = ti_bandgap_adc_to_mcelsius(bgp, temp1, &t1); in ti_bandgap_get_trend()
718 ret = ti_bandgap_adc_to_mcelsius(bgp, temp2, &t2); in ti_bandgap_get_trend()
723 ret = ti_bandgap_read_update_interval(bgp, id, &interval); in ti_bandgap_get_trend()
733 dev_dbg(bgp->dev, "The temperatures are t1 = %d and t2 = %d and trend =%d\n", in ti_bandgap_get_trend()
737 RMW_BITS(bgp, id, bgap_mask_ctrl, mask_freeze_mask, 0); in ti_bandgap_get_trend()
738 spin_unlock(&bgp->lock); in ti_bandgap_get_trend()
757 static int ti_bandgap_tshut_init(struct ti_bandgap *bgp, in ti_bandgap_tshut_init() argument
760 int gpio_nr = bgp->tshut_gpio; in ti_bandgap_tshut_init()
766 dev_err(bgp->dev, "Could not request for TSHUT GPIO:%i\n", 86); in ti_bandgap_tshut_init()
771 dev_err(bgp->dev, "Cannot set input TSHUT GPIO %d\n", gpio_nr); in ti_bandgap_tshut_init()
779 dev_err(bgp->dev, "request irq failed for TSHUT"); in ti_bandgap_tshut_init()
798 static int ti_bandgap_talert_init(struct ti_bandgap *bgp, in ti_bandgap_talert_init() argument
803 bgp->irq = platform_get_irq(pdev, 0); in ti_bandgap_talert_init()
804 if (bgp->irq < 0) { in ti_bandgap_talert_init()
806 return bgp->irq; in ti_bandgap_talert_init()
808 ret = request_threaded_irq(bgp->irq, NULL, in ti_bandgap_talert_init()
811 "talert", bgp); in ti_bandgap_talert_init()
836 struct ti_bandgap *bgp; in ti_bandgap_build() local
846 bgp = devm_kzalloc(&pdev->dev, sizeof(*bgp), GFP_KERNEL); in ti_bandgap_build()
847 if (!bgp) in ti_bandgap_build()
852 bgp->conf = of_id->data; in ti_bandgap_build()
855 bgp->regval = devm_kcalloc(&pdev->dev, bgp->conf->sensor_count, in ti_bandgap_build()
856 sizeof(*bgp->regval), GFP_KERNEL); in ti_bandgap_build()
857 if (!bgp->regval) in ti_bandgap_build()
869 bgp->base = chunk; in ti_bandgap_build()
876 if (TI_BANDGAP_HAS(bgp, TSHUT)) { in ti_bandgap_build()
877 bgp->tshut_gpio = of_get_gpio(node, 0); in ti_bandgap_build()
878 if (!gpio_is_valid(bgp->tshut_gpio)) { in ti_bandgap_build()
880 bgp->tshut_gpio); in ti_bandgap_build()
885 return bgp; in ti_bandgap_build()
893 struct ti_bandgap *bgp; in ti_bandgap_probe() local
896 bgp = ti_bandgap_build(pdev); in ti_bandgap_probe()
897 if (IS_ERR(bgp)) { in ti_bandgap_probe()
899 return PTR_ERR(bgp); in ti_bandgap_probe()
901 bgp->dev = &pdev->dev; in ti_bandgap_probe()
903 if (TI_BANDGAP_HAS(bgp, UNRELIABLE)) in ti_bandgap_probe()
907 if (TI_BANDGAP_HAS(bgp, TSHUT)) { in ti_bandgap_probe()
908 ret = ti_bandgap_tshut_init(bgp, pdev); in ti_bandgap_probe()
916 bgp->fclock = clk_get(NULL, bgp->conf->fclock_name); in ti_bandgap_probe()
917 if (IS_ERR(bgp->fclock)) { in ti_bandgap_probe()
919 ret = PTR_ERR(bgp->fclock); in ti_bandgap_probe()
923 bgp->div_clk = clk_get(NULL, bgp->conf->div_ck_name); in ti_bandgap_probe()
924 if (IS_ERR(bgp->div_clk)) { in ti_bandgap_probe()
926 ret = PTR_ERR(bgp->div_clk); in ti_bandgap_probe()
930 for (i = 0; i < bgp->conf->sensor_count; i++) { in ti_bandgap_probe()
934 tsr = bgp->conf->sensors[i].registers; in ti_bandgap_probe()
940 val = ti_bandgap_readl(bgp, tsr->bgap_efuse); in ti_bandgap_probe()
946 clk_rate = clk_round_rate(bgp->div_clk, in ti_bandgap_probe()
947 bgp->conf->sensors[0].ts_data->max_freq); in ti_bandgap_probe()
948 if (clk_rate < bgp->conf->sensors[0].ts_data->min_freq || in ti_bandgap_probe()
955 ret = clk_set_rate(bgp->div_clk, clk_rate); in ti_bandgap_probe()
959 bgp->clk_rate = clk_rate; in ti_bandgap_probe()
960 if (TI_BANDGAP_HAS(bgp, CLK_CTRL)) in ti_bandgap_probe()
961 clk_prepare_enable(bgp->fclock); in ti_bandgap_probe()
964 spin_lock_init(&bgp->lock); in ti_bandgap_probe()
965 bgp->dev = &pdev->dev; in ti_bandgap_probe()
966 platform_set_drvdata(pdev, bgp); in ti_bandgap_probe()
968 ti_bandgap_power(bgp, true); in ti_bandgap_probe()
971 if (TI_BANDGAP_HAS(bgp, COUNTER)) in ti_bandgap_probe()
972 for (i = 0; i < bgp->conf->sensor_count; i++) in ti_bandgap_probe()
973 RMW_BITS(bgp, i, bgap_counter, counter_mask, 1); in ti_bandgap_probe()
976 for (i = 0; i < bgp->conf->sensor_count; i++) { in ti_bandgap_probe()
979 ts_data = bgp->conf->sensors[i].ts_data; in ti_bandgap_probe()
981 if (TI_BANDGAP_HAS(bgp, TALERT)) { in ti_bandgap_probe()
983 RMW_BITS(bgp, i, bgap_threshold, in ti_bandgap_probe()
985 RMW_BITS(bgp, i, bgap_threshold, in ti_bandgap_probe()
988 RMW_BITS(bgp, i, bgap_mask_ctrl, mask_hot_mask, 1); in ti_bandgap_probe()
989 RMW_BITS(bgp, i, bgap_mask_ctrl, mask_cold_mask, 1); in ti_bandgap_probe()
992 if (TI_BANDGAP_HAS(bgp, TSHUT_CONFIG)) { in ti_bandgap_probe()
994 RMW_BITS(bgp, i, tshut_threshold, in ti_bandgap_probe()
996 RMW_BITS(bgp, i, tshut_threshold, in ti_bandgap_probe()
1001 if (TI_BANDGAP_HAS(bgp, MODE_CONFIG)) in ti_bandgap_probe()
1002 ti_bandgap_set_continuous_mode(bgp); in ti_bandgap_probe()
1005 if (TI_BANDGAP_HAS(bgp, COUNTER)) in ti_bandgap_probe()
1006 for (i = 0; i < bgp->conf->sensor_count; i++) in ti_bandgap_probe()
1007 RMW_BITS(bgp, i, bgap_counter, counter_mask, in ti_bandgap_probe()
1008 bgp->clk_rate / 4); in ti_bandgap_probe()
1011 for (i = 0; i < bgp->conf->sensor_count; i++) { in ti_bandgap_probe()
1014 if (bgp->conf->sensors[i].register_cooling) { in ti_bandgap_probe()
1015 ret = bgp->conf->sensors[i].register_cooling(bgp, i); in ti_bandgap_probe()
1020 if (bgp->conf->expose_sensor) { in ti_bandgap_probe()
1021 domain = bgp->conf->sensors[i].domain; in ti_bandgap_probe()
1022 ret = bgp->conf->expose_sensor(bgp, i, domain); in ti_bandgap_probe()
1033 if (TI_BANDGAP_HAS(bgp, TALERT)) { in ti_bandgap_probe()
1034 ret = ti_bandgap_talert_init(bgp, pdev); in ti_bandgap_probe()
1037 i = bgp->conf->sensor_count; in ti_bandgap_probe()
1045 if (bgp->conf->sensors[i].unregister_cooling) in ti_bandgap_probe()
1046 bgp->conf->sensors[i].unregister_cooling(bgp, i); in ti_bandgap_probe()
1049 if (bgp->conf->sensors[i].unregister_cooling) in ti_bandgap_probe()
1050 bgp->conf->sensors[i].unregister_cooling(bgp, i); in ti_bandgap_probe()
1051 if (bgp->conf->remove_sensor) in ti_bandgap_probe()
1052 bgp->conf->remove_sensor(bgp, i); in ti_bandgap_probe()
1054 ti_bandgap_power(bgp, false); in ti_bandgap_probe()
1056 if (TI_BANDGAP_HAS(bgp, CLK_CTRL)) in ti_bandgap_probe()
1057 clk_disable_unprepare(bgp->fclock); in ti_bandgap_probe()
1059 clk_put(bgp->div_clk); in ti_bandgap_probe()
1061 clk_put(bgp->fclock); in ti_bandgap_probe()
1063 if (TI_BANDGAP_HAS(bgp, TSHUT)) { in ti_bandgap_probe()
1064 free_irq(gpio_to_irq(bgp->tshut_gpio), NULL); in ti_bandgap_probe()
1065 gpio_free(bgp->tshut_gpio); in ti_bandgap_probe()
1074 struct ti_bandgap *bgp = platform_get_drvdata(pdev); in ti_bandgap_remove() local
1078 for (i = 0; i < bgp->conf->sensor_count; i++) { in ti_bandgap_remove()
1079 if (bgp->conf->sensors[i].unregister_cooling) in ti_bandgap_remove()
1080 bgp->conf->sensors[i].unregister_cooling(bgp, i); in ti_bandgap_remove()
1082 if (bgp->conf->remove_sensor) in ti_bandgap_remove()
1083 bgp->conf->remove_sensor(bgp, i); in ti_bandgap_remove()
1086 ti_bandgap_power(bgp, false); in ti_bandgap_remove()
1088 if (TI_BANDGAP_HAS(bgp, CLK_CTRL)) in ti_bandgap_remove()
1089 clk_disable_unprepare(bgp->fclock); in ti_bandgap_remove()
1090 clk_put(bgp->fclock); in ti_bandgap_remove()
1091 clk_put(bgp->div_clk); in ti_bandgap_remove()
1093 if (TI_BANDGAP_HAS(bgp, TALERT)) in ti_bandgap_remove()
1094 free_irq(bgp->irq, bgp); in ti_bandgap_remove()
1096 if (TI_BANDGAP_HAS(bgp, TSHUT)) { in ti_bandgap_remove()
1097 free_irq(gpio_to_irq(bgp->tshut_gpio), NULL); in ti_bandgap_remove()
1098 gpio_free(bgp->tshut_gpio); in ti_bandgap_remove()
1105 static int ti_bandgap_save_ctxt(struct ti_bandgap *bgp) in ti_bandgap_save_ctxt() argument
1109 for (i = 0; i < bgp->conf->sensor_count; i++) { in ti_bandgap_save_ctxt()
1113 rval = &bgp->regval[i]; in ti_bandgap_save_ctxt()
1114 tsr = bgp->conf->sensors[i].registers; in ti_bandgap_save_ctxt()
1116 if (TI_BANDGAP_HAS(bgp, MODE_CONFIG)) in ti_bandgap_save_ctxt()
1117 rval->bg_mode_ctrl = ti_bandgap_readl(bgp, in ti_bandgap_save_ctxt()
1119 if (TI_BANDGAP_HAS(bgp, COUNTER)) in ti_bandgap_save_ctxt()
1120 rval->bg_counter = ti_bandgap_readl(bgp, in ti_bandgap_save_ctxt()
1122 if (TI_BANDGAP_HAS(bgp, TALERT)) { in ti_bandgap_save_ctxt()
1123 rval->bg_threshold = ti_bandgap_readl(bgp, in ti_bandgap_save_ctxt()
1125 rval->bg_ctrl = ti_bandgap_readl(bgp, in ti_bandgap_save_ctxt()
1129 if (TI_BANDGAP_HAS(bgp, TSHUT_CONFIG)) in ti_bandgap_save_ctxt()
1130 rval->tshut_threshold = ti_bandgap_readl(bgp, in ti_bandgap_save_ctxt()
1137 static int ti_bandgap_restore_ctxt(struct ti_bandgap *bgp) in ti_bandgap_restore_ctxt() argument
1141 for (i = 0; i < bgp->conf->sensor_count; i++) { in ti_bandgap_restore_ctxt()
1146 rval = &bgp->regval[i]; in ti_bandgap_restore_ctxt()
1147 tsr = bgp->conf->sensors[i].registers; in ti_bandgap_restore_ctxt()
1149 if (TI_BANDGAP_HAS(bgp, COUNTER)) in ti_bandgap_restore_ctxt()
1150 val = ti_bandgap_readl(bgp, tsr->bgap_counter); in ti_bandgap_restore_ctxt()
1152 if (TI_BANDGAP_HAS(bgp, TSHUT_CONFIG)) in ti_bandgap_restore_ctxt()
1153 ti_bandgap_writel(bgp, rval->tshut_threshold, in ti_bandgap_restore_ctxt()
1158 ti_bandgap_force_single_read(bgp, i); in ti_bandgap_restore_ctxt()
1160 if (TI_BANDGAP_HAS(bgp, COUNTER)) in ti_bandgap_restore_ctxt()
1161 ti_bandgap_writel(bgp, rval->bg_counter, in ti_bandgap_restore_ctxt()
1163 if (TI_BANDGAP_HAS(bgp, MODE_CONFIG)) in ti_bandgap_restore_ctxt()
1164 ti_bandgap_writel(bgp, rval->bg_mode_ctrl, in ti_bandgap_restore_ctxt()
1166 if (TI_BANDGAP_HAS(bgp, TALERT)) { in ti_bandgap_restore_ctxt()
1167 ti_bandgap_writel(bgp, rval->bg_threshold, in ti_bandgap_restore_ctxt()
1169 ti_bandgap_writel(bgp, rval->bg_ctrl, in ti_bandgap_restore_ctxt()
1179 struct ti_bandgap *bgp = dev_get_drvdata(dev); in ti_bandgap_suspend() local
1182 err = ti_bandgap_save_ctxt(bgp); in ti_bandgap_suspend()
1183 ti_bandgap_power(bgp, false); in ti_bandgap_suspend()
1185 if (TI_BANDGAP_HAS(bgp, CLK_CTRL)) in ti_bandgap_suspend()
1186 clk_disable_unprepare(bgp->fclock); in ti_bandgap_suspend()
1193 struct ti_bandgap *bgp = dev_get_drvdata(dev); in ti_bandgap_resume() local
1195 if (TI_BANDGAP_HAS(bgp, CLK_CTRL)) in ti_bandgap_resume()
1196 clk_prepare_enable(bgp->fclock); in ti_bandgap_resume()
1198 ti_bandgap_power(bgp, true); in ti_bandgap_resume()
1200 return ti_bandgap_restore_ctxt(bgp); in ti_bandgap_resume()