126
126
127
127
#define EXYNOS5433_G3D_BASE 0x10070000
128
128
129
- /*exynos5440 specific registers*/
130
- #define EXYNOS5440_TMU_S0_7_TRIM 0x000
131
- #define EXYNOS5440_TMU_S0_7_CTRL 0x020
132
- #define EXYNOS5440_TMU_S0_7_DEBUG 0x040
133
- #define EXYNOS5440_TMU_S0_7_TEMP 0x0f0
134
- #define EXYNOS5440_TMU_S0_7_TH0 0x110
135
- #define EXYNOS5440_TMU_S0_7_TH1 0x130
136
- #define EXYNOS5440_TMU_S0_7_TH2 0x150
137
- #define EXYNOS5440_TMU_S0_7_IRQEN 0x210
138
- #define EXYNOS5440_TMU_S0_7_IRQ 0x230
139
- /* exynos5440 common registers */
140
- #define EXYNOS5440_TMU_IRQ_STATUS 0x000
141
- #define EXYNOS5440_TMU_PMIN 0x004
142
-
143
- #define EXYNOS5440_TMU_INTEN_RISE0_SHIFT 0
144
- #define EXYNOS5440_TMU_INTEN_RISE1_SHIFT 1
145
- #define EXYNOS5440_TMU_INTEN_RISE2_SHIFT 2
146
- #define EXYNOS5440_TMU_INTEN_RISE3_SHIFT 3
147
- #define EXYNOS5440_TMU_INTEN_FALL0_SHIFT 4
148
- #define EXYNOS5440_TMU_TH_RISE4_SHIFT 24
149
- #define EXYNOS5440_EFUSE_SWAP_OFFSET 8
150
-
151
129
/* Exynos7 specific registers */
152
130
#define EXYNOS7_THD_TEMP_RISE7_6 0x50
153
131
#define EXYNOS7_THD_TEMP_FALL7_6 0x60
@@ -184,7 +162,6 @@ enum soc_type {
184
162
SOC_ARCH_EXYNOS5420 ,
185
163
SOC_ARCH_EXYNOS5420_TRIMINFO ,
186
164
SOC_ARCH_EXYNOS5433 ,
187
- SOC_ARCH_EXYNOS5440 ,
188
165
SOC_ARCH_EXYNOS7 ,
189
166
};
190
167
@@ -619,57 +596,6 @@ static int exynos5433_tmu_initialize(struct platform_device *pdev)
619
596
return ret ;
620
597
}
621
598
622
- static int exynos5440_tmu_initialize (struct platform_device * pdev )
623
- {
624
- struct exynos_tmu_data * data = platform_get_drvdata (pdev );
625
- unsigned int trim_info = 0 , con , rising_threshold ;
626
- int threshold_code ;
627
- int crit_temp = 0 ;
628
-
629
- /*
630
- * For exynos5440 soc triminfo value is swapped between TMU0 and
631
- * TMU2, so the below logic is needed.
632
- */
633
- switch (data -> id ) {
634
- case 0 :
635
- trim_info = readl (data -> base + EXYNOS5440_EFUSE_SWAP_OFFSET +
636
- EXYNOS5440_TMU_S0_7_TRIM );
637
- break ;
638
- case 1 :
639
- trim_info = readl (data -> base + EXYNOS5440_TMU_S0_7_TRIM );
640
- break ;
641
- case 2 :
642
- trim_info = readl (data -> base - EXYNOS5440_EFUSE_SWAP_OFFSET +
643
- EXYNOS5440_TMU_S0_7_TRIM );
644
- }
645
- sanitize_temp_error (data , trim_info );
646
-
647
- /* Write temperature code for rising and falling threshold */
648
- rising_threshold = readl (data -> base + EXYNOS5440_TMU_S0_7_TH0 );
649
- rising_threshold = get_th_reg (data , rising_threshold , false);
650
- writel (rising_threshold , data -> base + EXYNOS5440_TMU_S0_7_TH0 );
651
- writel (0 , data -> base + EXYNOS5440_TMU_S0_7_TH1 );
652
-
653
- data -> tmu_clear_irqs (data );
654
-
655
- /* if last threshold limit is also present */
656
- if (!data -> tzd -> ops -> get_crit_temp (data -> tzd , & crit_temp )) {
657
- threshold_code = temp_to_code (data , crit_temp / MCELSIUS );
658
- /* 5th level to be assigned in th2 reg */
659
- rising_threshold =
660
- threshold_code << EXYNOS5440_TMU_TH_RISE4_SHIFT ;
661
- writel (rising_threshold , data -> base + EXYNOS5440_TMU_S0_7_TH2 );
662
- con = readl (data -> base + EXYNOS5440_TMU_S0_7_CTRL );
663
- con |= (1 << EXYNOS_TMU_THERM_TRIP_EN_SHIFT );
664
- writel (con , data -> base + EXYNOS5440_TMU_S0_7_CTRL );
665
- }
666
- /* Clear the PMIN in the common TMU register */
667
- if (!data -> id )
668
- writel (0 , data -> base_second + EXYNOS5440_TMU_PMIN );
669
-
670
- return 0 ;
671
- }
672
-
673
599
static int exynos7_tmu_initialize (struct platform_device * pdev )
674
600
{
675
601
struct exynos_tmu_data * data = platform_get_drvdata (pdev );
@@ -820,35 +746,6 @@ static void exynos5433_tmu_control(struct platform_device *pdev, bool on)
820
746
writel (con , data -> base + EXYNOS_TMU_REG_CONTROL );
821
747
}
822
748
823
- static void exynos5440_tmu_control (struct platform_device * pdev , bool on )
824
- {
825
- struct exynos_tmu_data * data = platform_get_drvdata (pdev );
826
- struct thermal_zone_device * tz = data -> tzd ;
827
- unsigned int con , interrupt_en ;
828
-
829
- con = get_con_reg (data , readl (data -> base + EXYNOS5440_TMU_S0_7_CTRL ));
830
-
831
- if (on ) {
832
- con |= (1 << EXYNOS_TMU_CORE_EN_SHIFT );
833
- interrupt_en =
834
- (of_thermal_is_trip_valid (tz , 3 )
835
- << EXYNOS5440_TMU_INTEN_RISE3_SHIFT ) |
836
- (of_thermal_is_trip_valid (tz , 2 )
837
- << EXYNOS5440_TMU_INTEN_RISE2_SHIFT ) |
838
- (of_thermal_is_trip_valid (tz , 1 )
839
- << EXYNOS5440_TMU_INTEN_RISE1_SHIFT ) |
840
- (of_thermal_is_trip_valid (tz , 0 )
841
- << EXYNOS5440_TMU_INTEN_RISE0_SHIFT );
842
- interrupt_en |=
843
- interrupt_en << EXYNOS5440_TMU_INTEN_FALL0_SHIFT ;
844
- } else {
845
- con &= ~(1 << EXYNOS_TMU_CORE_EN_SHIFT );
846
- interrupt_en = 0 ; /* Disable all interrupts */
847
- }
848
- writel (interrupt_en , data -> base + EXYNOS5440_TMU_S0_7_IRQEN );
849
- writel (con , data -> base + EXYNOS5440_TMU_S0_7_CTRL );
850
- }
851
-
852
749
static void exynos7_tmu_control (struct platform_device * pdev , bool on )
853
750
{
854
751
struct exynos_tmu_data * data = platform_get_drvdata (pdev );
@@ -920,10 +817,8 @@ static u32 get_emul_con_reg(struct exynos_tmu_data *data, unsigned int val,
920
817
if (temp ) {
921
818
temp /= MCELSIUS ;
922
819
923
- if (data -> soc != SOC_ARCH_EXYNOS5440 ) {
924
- val &= ~(EXYNOS_EMUL_TIME_MASK << EXYNOS_EMUL_TIME_SHIFT );
925
- val |= (EXYNOS_EMUL_TIME << EXYNOS_EMUL_TIME_SHIFT );
926
- }
820
+ val &= ~(EXYNOS_EMUL_TIME_MASK << EXYNOS_EMUL_TIME_SHIFT );
821
+ val |= (EXYNOS_EMUL_TIME << EXYNOS_EMUL_TIME_SHIFT );
927
822
if (data -> soc == SOC_ARCH_EXYNOS7 ) {
928
823
val &= ~(EXYNOS7_EMUL_DATA_MASK <<
929
824
EXYNOS7_EMUL_DATA_SHIFT );
@@ -964,16 +859,6 @@ static void exynos4412_tmu_set_emulation(struct exynos_tmu_data *data,
964
859
writel (val , data -> base + emul_con );
965
860
}
966
861
967
- static void exynos5440_tmu_set_emulation (struct exynos_tmu_data * data ,
968
- int temp )
969
- {
970
- unsigned int val ;
971
-
972
- val = readl (data -> base + EXYNOS5440_TMU_S0_7_DEBUG );
973
- val = get_emul_con_reg (data , val , temp );
974
- writel (val , data -> base + EXYNOS5440_TMU_S0_7_DEBUG );
975
- }
976
-
977
862
static int exynos_tmu_set_emulation (void * drv_data , int temp )
978
863
{
979
864
struct exynos_tmu_data * data = drv_data ;
@@ -996,7 +881,6 @@ static int exynos_tmu_set_emulation(void *drv_data, int temp)
996
881
}
997
882
#else
998
883
#define exynos4412_tmu_set_emulation NULL
999
- #define exynos5440_tmu_set_emulation NULL
1000
884
static int exynos_tmu_set_emulation (void * drv_data , int temp )
1001
885
{ return - EINVAL ; }
1002
886
#endif /* CONFIG_THERMAL_EMULATION */
@@ -1014,11 +898,6 @@ static int exynos4412_tmu_read(struct exynos_tmu_data *data)
1014
898
return readb (data -> base + EXYNOS_TMU_REG_CURRENT_TEMP );
1015
899
}
1016
900
1017
- static int exynos5440_tmu_read (struct exynos_tmu_data * data )
1018
- {
1019
- return readb (data -> base + EXYNOS5440_TMU_S0_7_TEMP );
1020
- }
1021
-
1022
901
static int exynos7_tmu_read (struct exynos_tmu_data * data )
1023
902
{
1024
903
return readw (data -> base + EXYNOS_TMU_REG_CURRENT_TEMP ) &
@@ -1029,16 +908,9 @@ static void exynos_tmu_work(struct work_struct *work)
1029
908
{
1030
909
struct exynos_tmu_data * data = container_of (work ,
1031
910
struct exynos_tmu_data , irq_work );
1032
- unsigned int val_type ;
1033
911
1034
912
if (!IS_ERR (data -> clk_sec ))
1035
913
clk_enable (data -> clk_sec );
1036
- /* Find which sensor generated this interrupt */
1037
- if (data -> soc == SOC_ARCH_EXYNOS5440 ) {
1038
- val_type = readl (data -> base_second + EXYNOS5440_TMU_IRQ_STATUS );
1039
- if (!((val_type >> data -> id ) & 0x1 ))
1040
- goto out ;
1041
- }
1042
914
if (!IS_ERR (data -> clk_sec ))
1043
915
clk_disable (data -> clk_sec );
1044
916
@@ -1051,7 +923,6 @@ static void exynos_tmu_work(struct work_struct *work)
1051
923
1052
924
clk_disable (data -> clk );
1053
925
mutex_unlock (& data -> lock );
1054
- out :
1055
926
enable_irq (data -> irq );
1056
927
}
1057
928
@@ -1086,15 +957,6 @@ static void exynos4210_tmu_clear_irqs(struct exynos_tmu_data *data)
1086
957
writel (val_irq , data -> base + tmu_intclear );
1087
958
}
1088
959
1089
- static void exynos5440_tmu_clear_irqs (struct exynos_tmu_data * data )
1090
- {
1091
- unsigned int val_irq ;
1092
-
1093
- val_irq = readl (data -> base + EXYNOS5440_TMU_S0_7_IRQ );
1094
- /* clear the interrupts */
1095
- writel (val_irq , data -> base + EXYNOS5440_TMU_S0_7_IRQ );
1096
- }
1097
-
1098
960
static irqreturn_t exynos_tmu_irq (int irq , void * id )
1099
961
{
1100
962
struct exynos_tmu_data * data = id ;
@@ -1130,9 +992,6 @@ static const struct of_device_id exynos_tmu_match[] = {
1130
992
}, {
1131
993
.compatible = "samsung,exynos5433-tmu" ,
1132
994
.data = (const void * )SOC_ARCH_EXYNOS5433 ,
1133
- }, {
1134
- .compatible = "samsung,exynos5440-tmu" ,
1135
- .data = (const void * )SOC_ARCH_EXYNOS5440 ,
1136
995
}, {
1137
996
.compatible = "samsung,exynos7-tmu" ,
1138
997
.data = (const void * )SOC_ARCH_EXYNOS7 ,
@@ -1223,19 +1082,6 @@ static int exynos_map_dt_data(struct platform_device *pdev)
1223
1082
data -> min_efuse_value = 40 ;
1224
1083
data -> max_efuse_value = 150 ;
1225
1084
break ;
1226
- case SOC_ARCH_EXYNOS5440 :
1227
- data -> tmu_initialize = exynos5440_tmu_initialize ;
1228
- data -> tmu_control = exynos5440_tmu_control ;
1229
- data -> tmu_read = exynos5440_tmu_read ;
1230
- data -> tmu_set_emulation = exynos5440_tmu_set_emulation ;
1231
- data -> tmu_clear_irqs = exynos5440_tmu_clear_irqs ;
1232
- data -> ntrip = 4 ;
1233
- data -> gain = 5 ;
1234
- data -> reference_voltage = 16 ;
1235
- data -> efuse_value = 0x5d2d ;
1236
- data -> min_efuse_value = 16 ;
1237
- data -> max_efuse_value = 76 ;
1238
- break ;
1239
1085
case SOC_ARCH_EXYNOS7 :
1240
1086
data -> tmu_initialize = exynos7_tmu_initialize ;
1241
1087
data -> tmu_control = exynos7_tmu_control ;
@@ -1260,8 +1106,7 @@ static int exynos_map_dt_data(struct platform_device *pdev)
1260
1106
* Check if the TMU shares some registers and then try to map the
1261
1107
* memory of common registers.
1262
1108
*/
1263
- if (data -> soc != SOC_ARCH_EXYNOS5420_TRIMINFO &&
1264
- data -> soc != SOC_ARCH_EXYNOS5440 )
1109
+ if (data -> soc != SOC_ARCH_EXYNOS5420_TRIMINFO )
1265
1110
return 0 ;
1266
1111
1267
1112
if (of_address_to_resource (pdev -> dev .of_node , 1 , & res )) {
0 commit comments