@@ -107,10 +107,23 @@ struct lvts_ctrl_data {
107107 struct lvts_sensor_data lvts_sensor [LVTS_SENSOR_MAX ];
108108 int cal_offset [LVTS_SENSOR_MAX ];
109109 int num_lvts_sensor ;
110+ u8 valid_sensor_mask ;
110111 int offset ;
111112 int mode ;
112113};
113114
115+ #define VALID_SENSOR_MAP (s0 , s1 , s2 , s3 ) \
116+ .valid_sensor_mask = (((s0) ? BIT(0) : 0) | \
117+ ((s1) ? BIT(1) : 0) | \
118+ ((s2) ? BIT(2) : 0) | \
119+ ((s3) ? BIT(3) : 0))
120+
121+ #define lvts_for_each_valid_sensor (i , lvts_ctrl_data ) \
122+ for ((i) = 0; (i) < LVTS_SENSOR_MAX; (i)++) \
123+ if (!((lvts_ctrl_data)->valid_sensor_mask & BIT(i))) \
124+ continue; \
125+ else
126+
114127struct lvts_data {
115128 const struct lvts_ctrl_data * lvts_ctrl ;
116129 int num_lvts_ctrl ;
@@ -134,7 +147,6 @@ struct lvts_ctrl {
134147 const struct lvts_data * lvts_data ;
135148 u32 calibration [LVTS_SENSOR_MAX ];
136149 u32 hw_tshut_raw_temp ;
137- int num_lvts_sensor ;
138150 int mode ;
139151 void __iomem * base ;
140152 int low_thresh ;
@@ -346,7 +358,7 @@ static bool lvts_should_update_thresh(struct lvts_ctrl *lvts_ctrl, int high)
346358 if (high > lvts_ctrl -> high_thresh )
347359 return true;
348360
349- for ( i = 0 ; i < lvts_ctrl -> num_lvts_sensor ; i ++ )
361+ lvts_for_each_valid_sensor ( i , lvts_ctrl -> lvts_data -> lvts_ctrl )
350362 if (lvts_ctrl -> sensors [i ].high_thresh == lvts_ctrl -> high_thresh
351363 && lvts_ctrl -> sensors [i ].low_thresh == lvts_ctrl -> low_thresh )
352364 return false;
@@ -550,6 +562,7 @@ static int lvts_sensor_init(struct device *dev, struct lvts_ctrl *lvts_ctrl,
550562 const struct lvts_ctrl_data * lvts_ctrl_data )
551563{
552564 struct lvts_sensor * lvts_sensor = lvts_ctrl -> sensors ;
565+
553566 void __iomem * msr_regs [] = {
554567 LVTS_MSR0 (lvts_ctrl -> base ),
555568 LVTS_MSR1 (lvts_ctrl -> base ),
@@ -566,7 +579,7 @@ static int lvts_sensor_init(struct device *dev, struct lvts_ctrl *lvts_ctrl,
566579
567580 int i ;
568581
569- for ( i = 0 ; i < lvts_ctrl_data -> num_lvts_sensor ; i ++ ) {
582+ lvts_for_each_valid_sensor ( i , lvts_ctrl_data ) {
570583
571584 int dt_id = lvts_ctrl_data -> lvts_sensor [i ].dt_id ;
572585
@@ -606,8 +619,6 @@ static int lvts_sensor_init(struct device *dev, struct lvts_ctrl *lvts_ctrl,
606619 lvts_sensor [i ].high_thresh = INT_MIN ;
607620 };
608621
609- lvts_ctrl -> num_lvts_sensor = lvts_ctrl_data -> num_lvts_sensor ;
610-
611622 return 0 ;
612623}
613624
@@ -678,7 +689,7 @@ static int lvts_calibration_init(struct device *dev, struct lvts_ctrl *lvts_ctrl
678689{
679690 int i ;
680691
681- for ( i = 0 ; i < lvts_ctrl_data -> num_lvts_sensor ; i ++ ) {
692+ lvts_for_each_valid_sensor ( i , lvts_ctrl_data ) {
682693 const struct lvts_sensor_data * sensor =
683694 & lvts_ctrl_data -> lvts_sensor [i ];
684695
@@ -1103,7 +1114,7 @@ static int lvts_ctrl_start(struct device *dev, struct lvts_ctrl *lvts_ctrl)
11031114 u32 * sensor_bitmap = lvts_ctrl -> mode == LVTS_MSR_IMMEDIATE_MODE ?
11041115 sensor_imm_bitmap : sensor_filt_bitmap ;
11051116
1106- for ( i = 0 ; i < lvts_ctrl -> num_lvts_sensor ; i ++ ) {
1117+ lvts_for_each_valid_sensor ( i , lvts_ctrl -> lvts_data -> lvts_ctrl ) {
11071118
11081119 int dt_id = lvts_sensors [i ].dt_id ;
11091120
@@ -1326,7 +1337,7 @@ static const struct lvts_ctrl_data mt7988_lvts_ap_data_ctrl[] = {
13261337 { .dt_id = MT7988_ETH2P5G_1 ,
13271338 .cal_offsets = { 0x0c , 0x0d , 0x0e } }
13281339 },
1329- . num_lvts_sensor = 4 ,
1340+ VALID_SENSOR_MAP ( 1 , 1 , 1 , 1 ) ,
13301341 .offset = 0x0 ,
13311342 },
13321343 {
@@ -1340,7 +1351,7 @@ static const struct lvts_ctrl_data mt7988_lvts_ap_data_ctrl[] = {
13401351 { .dt_id = MT7988_ETHWARP_1 ,
13411352 .cal_offsets = { 0x20 , 0x21 , 0x22 } }
13421353 },
1343- . num_lvts_sensor = 4 ,
1354+ VALID_SENSOR_MAP ( 1 , 1 , 1 , 1 ) ,
13441355 .offset = 0x100 ,
13451356 }
13461357};
@@ -1403,7 +1414,7 @@ static const struct lvts_ctrl_data mt8186_lvts_data_ctrl[] = {
14031414 { .dt_id = MT8186_CAM ,
14041415 .cal_offsets = { 12 , 13 , 14 } }
14051416 },
1406- . num_lvts_sensor = 4 ,
1417+ VALID_SENSOR_MAP ( 1 , 1 , 1 , 1 ) ,
14071418 .offset = 0x0 ,
14081419 },
14091420 {
@@ -1413,7 +1424,7 @@ static const struct lvts_ctrl_data mt8186_lvts_data_ctrl[] = {
14131424 { .dt_id = MT8186_BIG_CPU1 ,
14141425 .cal_offsets = { 27 , 20 , 21 } }
14151426 },
1416- . num_lvts_sensor = 2 ,
1427+ VALID_SENSOR_MAP ( 1 , 1 , 0 , 0 ) ,
14171428 .offset = 0x100 ,
14181429 },
14191430 {
@@ -1425,7 +1436,7 @@ static const struct lvts_ctrl_data mt8186_lvts_data_ctrl[] = {
14251436 { .dt_id = MT8186_MFG ,
14261437 .cal_offsets = { 39 , 32 , 33 } }
14271438 },
1428- . num_lvts_sensor = 3 ,
1439+ VALID_SENSOR_MAP ( 1 , 1 , 1 , 0 ) ,
14291440 .offset = 0x200 ,
14301441 }
14311442};
@@ -1438,7 +1449,7 @@ static const struct lvts_ctrl_data mt8192_lvts_mcu_data_ctrl[] = {
14381449 { .dt_id = MT8192_MCU_BIG_CPU1 ,
14391450 .cal_offsets = { 0x08 , 0x09 , 0x0a } }
14401451 },
1441- . num_lvts_sensor = 2 ,
1452+ VALID_SENSOR_MAP ( 1 , 1 , 0 , 0 ) ,
14421453 .offset = 0x0 ,
14431454 .mode = LVTS_MSR_FILTERED_MODE ,
14441455 },
@@ -1449,7 +1460,7 @@ static const struct lvts_ctrl_data mt8192_lvts_mcu_data_ctrl[] = {
14491460 { .dt_id = MT8192_MCU_BIG_CPU3 ,
14501461 .cal_offsets = { 0x10 , 0x11 , 0x12 } }
14511462 },
1452- . num_lvts_sensor = 2 ,
1463+ VALID_SENSOR_MAP ( 1 , 1 , 0 , 0 ) ,
14531464 .offset = 0x100 ,
14541465 .mode = LVTS_MSR_FILTERED_MODE ,
14551466 },
@@ -1464,7 +1475,7 @@ static const struct lvts_ctrl_data mt8192_lvts_mcu_data_ctrl[] = {
14641475 { .dt_id = MT8192_MCU_LITTLE_CPU3 ,
14651476 .cal_offsets = { 0x20 , 0x21 , 0x22 } }
14661477 },
1467- . num_lvts_sensor = 4 ,
1478+ VALID_SENSOR_MAP ( 1 , 1 , 1 , 1 ) ,
14681479 .offset = 0x200 ,
14691480 .mode = LVTS_MSR_FILTERED_MODE ,
14701481 }
@@ -1478,7 +1489,7 @@ static const struct lvts_ctrl_data mt8192_lvts_ap_data_ctrl[] = {
14781489 { .dt_id = MT8192_AP_VPU1 ,
14791490 .cal_offsets = { 0x28 , 0x29 , 0x2a } }
14801491 },
1481- . num_lvts_sensor = 2 ,
1492+ VALID_SENSOR_MAP ( 1 , 1 , 0 , 0 ) ,
14821493 .offset = 0x0 ,
14831494 },
14841495 {
@@ -1488,7 +1499,7 @@ static const struct lvts_ctrl_data mt8192_lvts_ap_data_ctrl[] = {
14881499 { .dt_id = MT8192_AP_GPU1 ,
14891500 .cal_offsets = { 0x30 , 0x31 , 0x32 } }
14901501 },
1491- . num_lvts_sensor = 2 ,
1502+ VALID_SENSOR_MAP ( 1 , 1 , 0 , 0 ) ,
14921503 .offset = 0x100 ,
14931504 },
14941505 {
@@ -1498,7 +1509,7 @@ static const struct lvts_ctrl_data mt8192_lvts_ap_data_ctrl[] = {
14981509 { .dt_id = MT8192_AP_CAM ,
14991510 .cal_offsets = { 0x38 , 0x39 , 0x3a } },
15001511 },
1501- . num_lvts_sensor = 2 ,
1512+ VALID_SENSOR_MAP ( 1 , 1 , 0 , 0 ) ,
15021513 .offset = 0x200 ,
15031514 },
15041515 {
@@ -1510,7 +1521,7 @@ static const struct lvts_ctrl_data mt8192_lvts_ap_data_ctrl[] = {
15101521 { .dt_id = MT8192_AP_MD2 ,
15111522 .cal_offsets = { 0x44 , 0x45 , 0x46 } }
15121523 },
1513- . num_lvts_sensor = 3 ,
1524+ VALID_SENSOR_MAP ( 1 , 1 , 1 , 0 ) ,
15141525 .offset = 0x300 ,
15151526 }
15161527};
@@ -1523,7 +1534,7 @@ static const struct lvts_ctrl_data mt8195_lvts_mcu_data_ctrl[] = {
15231534 { .dt_id = MT8195_MCU_BIG_CPU1 ,
15241535 .cal_offsets = { 0x07 , 0x08 , 0x09 } }
15251536 },
1526- . num_lvts_sensor = 2 ,
1537+ VALID_SENSOR_MAP ( 1 , 1 , 0 , 0 ) ,
15271538 .offset = 0x0 ,
15281539 },
15291540 {
@@ -1533,7 +1544,7 @@ static const struct lvts_ctrl_data mt8195_lvts_mcu_data_ctrl[] = {
15331544 { .dt_id = MT8195_MCU_BIG_CPU3 ,
15341545 .cal_offsets = { 0x10 , 0x11 , 0x12 } }
15351546 },
1536- . num_lvts_sensor = 2 ,
1547+ VALID_SENSOR_MAP ( 1 , 1 , 0 , 0 ) ,
15371548 .offset = 0x100 ,
15381549 },
15391550 {
@@ -1547,7 +1558,7 @@ static const struct lvts_ctrl_data mt8195_lvts_mcu_data_ctrl[] = {
15471558 { .dt_id = MT8195_MCU_LITTLE_CPU3 ,
15481559 .cal_offsets = { 0x1f , 0x20 , 0x21 } }
15491560 },
1550- . num_lvts_sensor = 4 ,
1561+ VALID_SENSOR_MAP ( 1 , 1 , 1 , 1 ) ,
15511562 .offset = 0x200 ,
15521563 }
15531564};
@@ -1560,7 +1571,7 @@ static const struct lvts_ctrl_data mt8195_lvts_ap_data_ctrl[] = {
15601571 { .dt_id = MT8195_AP_VPU1 ,
15611572 .cal_offsets = { 0x28 , 0x29 , 0x2a } }
15621573 },
1563- . num_lvts_sensor = 2 ,
1574+ VALID_SENSOR_MAP ( 1 , 1 , 0 , 0 ) ,
15641575 .offset = 0x0 ,
15651576 },
15661577 {
@@ -1570,7 +1581,7 @@ static const struct lvts_ctrl_data mt8195_lvts_ap_data_ctrl[] = {
15701581 { .dt_id = MT8195_AP_GPU1 ,
15711582 .cal_offsets = { 0x31 , 0x32 , 0x33 } }
15721583 },
1573- . num_lvts_sensor = 2 ,
1584+ VALID_SENSOR_MAP ( 1 , 1 , 0 , 0 ) ,
15741585 .offset = 0x100 ,
15751586 },
15761587 {
@@ -1582,7 +1593,7 @@ static const struct lvts_ctrl_data mt8195_lvts_ap_data_ctrl[] = {
15821593 { .dt_id = MT8195_AP_INFRA ,
15831594 .cal_offsets = { 0x3d , 0x3e , 0x3f } }
15841595 },
1585- . num_lvts_sensor = 3 ,
1596+ VALID_SENSOR_MAP ( 1 , 1 , 1 , 0 ) ,
15861597 .offset = 0x200 ,
15871598 },
15881599 {
@@ -1592,7 +1603,7 @@ static const struct lvts_ctrl_data mt8195_lvts_ap_data_ctrl[] = {
15921603 { .dt_id = MT8195_AP_CAM1 ,
15931604 .cal_offsets = { 0x46 , 0x47 , 0x48 } }
15941605 },
1595- . num_lvts_sensor = 2 ,
1606+ VALID_SENSOR_MAP ( 1 , 1 , 0 , 0 ) ,
15961607 .offset = 0x300 ,
15971608 }
15981609};
0 commit comments