@@ -107,10 +107,23 @@ struct lvts_ctrl_data {
107
107
struct lvts_sensor_data lvts_sensor [LVTS_SENSOR_MAX ];
108
108
int cal_offset [LVTS_SENSOR_MAX ];
109
109
int num_lvts_sensor ;
110
+ u8 valid_sensor_mask ;
110
111
int offset ;
111
112
int mode ;
112
113
};
113
114
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
+
114
127
struct lvts_data {
115
128
const struct lvts_ctrl_data * lvts_ctrl ;
116
129
int num_lvts_ctrl ;
@@ -134,7 +147,6 @@ struct lvts_ctrl {
134
147
const struct lvts_data * lvts_data ;
135
148
u32 calibration [LVTS_SENSOR_MAX ];
136
149
u32 hw_tshut_raw_temp ;
137
- int num_lvts_sensor ;
138
150
int mode ;
139
151
void __iomem * base ;
140
152
int low_thresh ;
@@ -346,7 +358,7 @@ static bool lvts_should_update_thresh(struct lvts_ctrl *lvts_ctrl, int high)
346
358
if (high > lvts_ctrl -> high_thresh )
347
359
return true;
348
360
349
- for ( i = 0 ; i < lvts_ctrl -> num_lvts_sensor ; i ++ )
361
+ lvts_for_each_valid_sensor ( i , lvts_ctrl -> lvts_data -> lvts_ctrl )
350
362
if (lvts_ctrl -> sensors [i ].high_thresh == lvts_ctrl -> high_thresh
351
363
&& lvts_ctrl -> sensors [i ].low_thresh == lvts_ctrl -> low_thresh )
352
364
return false;
@@ -550,6 +562,7 @@ static int lvts_sensor_init(struct device *dev, struct lvts_ctrl *lvts_ctrl,
550
562
const struct lvts_ctrl_data * lvts_ctrl_data )
551
563
{
552
564
struct lvts_sensor * lvts_sensor = lvts_ctrl -> sensors ;
565
+
553
566
void __iomem * msr_regs [] = {
554
567
LVTS_MSR0 (lvts_ctrl -> base ),
555
568
LVTS_MSR1 (lvts_ctrl -> base ),
@@ -566,7 +579,7 @@ static int lvts_sensor_init(struct device *dev, struct lvts_ctrl *lvts_ctrl,
566
579
567
580
int i ;
568
581
569
- for ( i = 0 ; i < lvts_ctrl_data -> num_lvts_sensor ; i ++ ) {
582
+ lvts_for_each_valid_sensor ( i , lvts_ctrl_data ) {
570
583
571
584
int dt_id = lvts_ctrl_data -> lvts_sensor [i ].dt_id ;
572
585
@@ -606,8 +619,6 @@ static int lvts_sensor_init(struct device *dev, struct lvts_ctrl *lvts_ctrl,
606
619
lvts_sensor [i ].high_thresh = INT_MIN ;
607
620
};
608
621
609
- lvts_ctrl -> num_lvts_sensor = lvts_ctrl_data -> num_lvts_sensor ;
610
-
611
622
return 0 ;
612
623
}
613
624
@@ -678,7 +689,7 @@ static int lvts_calibration_init(struct device *dev, struct lvts_ctrl *lvts_ctrl
678
689
{
679
690
int i ;
680
691
681
- for ( i = 0 ; i < lvts_ctrl_data -> num_lvts_sensor ; i ++ ) {
692
+ lvts_for_each_valid_sensor ( i , lvts_ctrl_data ) {
682
693
const struct lvts_sensor_data * sensor =
683
694
& lvts_ctrl_data -> lvts_sensor [i ];
684
695
@@ -1103,7 +1114,7 @@ static int lvts_ctrl_start(struct device *dev, struct lvts_ctrl *lvts_ctrl)
1103
1114
u32 * sensor_bitmap = lvts_ctrl -> mode == LVTS_MSR_IMMEDIATE_MODE ?
1104
1115
sensor_imm_bitmap : sensor_filt_bitmap ;
1105
1116
1106
- for ( i = 0 ; i < lvts_ctrl -> num_lvts_sensor ; i ++ ) {
1117
+ lvts_for_each_valid_sensor ( i , lvts_ctrl -> lvts_data -> lvts_ctrl ) {
1107
1118
1108
1119
int dt_id = lvts_sensors [i ].dt_id ;
1109
1120
@@ -1326,7 +1337,7 @@ static const struct lvts_ctrl_data mt7988_lvts_ap_data_ctrl[] = {
1326
1337
{ .dt_id = MT7988_ETH2P5G_1 ,
1327
1338
.cal_offsets = { 0x0c , 0x0d , 0x0e } }
1328
1339
},
1329
- . num_lvts_sensor = 4 ,
1340
+ VALID_SENSOR_MAP ( 1 , 1 , 1 , 1 ) ,
1330
1341
.offset = 0x0 ,
1331
1342
},
1332
1343
{
@@ -1340,7 +1351,7 @@ static const struct lvts_ctrl_data mt7988_lvts_ap_data_ctrl[] = {
1340
1351
{ .dt_id = MT7988_ETHWARP_1 ,
1341
1352
.cal_offsets = { 0x20 , 0x21 , 0x22 } }
1342
1353
},
1343
- . num_lvts_sensor = 4 ,
1354
+ VALID_SENSOR_MAP ( 1 , 1 , 1 , 1 ) ,
1344
1355
.offset = 0x100 ,
1345
1356
}
1346
1357
};
@@ -1403,7 +1414,7 @@ static const struct lvts_ctrl_data mt8186_lvts_data_ctrl[] = {
1403
1414
{ .dt_id = MT8186_CAM ,
1404
1415
.cal_offsets = { 12 , 13 , 14 } }
1405
1416
},
1406
- . num_lvts_sensor = 4 ,
1417
+ VALID_SENSOR_MAP ( 1 , 1 , 1 , 1 ) ,
1407
1418
.offset = 0x0 ,
1408
1419
},
1409
1420
{
@@ -1413,7 +1424,7 @@ static const struct lvts_ctrl_data mt8186_lvts_data_ctrl[] = {
1413
1424
{ .dt_id = MT8186_BIG_CPU1 ,
1414
1425
.cal_offsets = { 27 , 20 , 21 } }
1415
1426
},
1416
- . num_lvts_sensor = 2 ,
1427
+ VALID_SENSOR_MAP ( 1 , 1 , 0 , 0 ) ,
1417
1428
.offset = 0x100 ,
1418
1429
},
1419
1430
{
@@ -1425,7 +1436,7 @@ static const struct lvts_ctrl_data mt8186_lvts_data_ctrl[] = {
1425
1436
{ .dt_id = MT8186_MFG ,
1426
1437
.cal_offsets = { 39 , 32 , 33 } }
1427
1438
},
1428
- . num_lvts_sensor = 3 ,
1439
+ VALID_SENSOR_MAP ( 1 , 1 , 1 , 0 ) ,
1429
1440
.offset = 0x200 ,
1430
1441
}
1431
1442
};
@@ -1438,7 +1449,7 @@ static const struct lvts_ctrl_data mt8192_lvts_mcu_data_ctrl[] = {
1438
1449
{ .dt_id = MT8192_MCU_BIG_CPU1 ,
1439
1450
.cal_offsets = { 0x08 , 0x09 , 0x0a } }
1440
1451
},
1441
- . num_lvts_sensor = 2 ,
1452
+ VALID_SENSOR_MAP ( 1 , 1 , 0 , 0 ) ,
1442
1453
.offset = 0x0 ,
1443
1454
.mode = LVTS_MSR_FILTERED_MODE ,
1444
1455
},
@@ -1449,7 +1460,7 @@ static const struct lvts_ctrl_data mt8192_lvts_mcu_data_ctrl[] = {
1449
1460
{ .dt_id = MT8192_MCU_BIG_CPU3 ,
1450
1461
.cal_offsets = { 0x10 , 0x11 , 0x12 } }
1451
1462
},
1452
- . num_lvts_sensor = 2 ,
1463
+ VALID_SENSOR_MAP ( 1 , 1 , 0 , 0 ) ,
1453
1464
.offset = 0x100 ,
1454
1465
.mode = LVTS_MSR_FILTERED_MODE ,
1455
1466
},
@@ -1464,7 +1475,7 @@ static const struct lvts_ctrl_data mt8192_lvts_mcu_data_ctrl[] = {
1464
1475
{ .dt_id = MT8192_MCU_LITTLE_CPU3 ,
1465
1476
.cal_offsets = { 0x20 , 0x21 , 0x22 } }
1466
1477
},
1467
- . num_lvts_sensor = 4 ,
1478
+ VALID_SENSOR_MAP ( 1 , 1 , 1 , 1 ) ,
1468
1479
.offset = 0x200 ,
1469
1480
.mode = LVTS_MSR_FILTERED_MODE ,
1470
1481
}
@@ -1478,7 +1489,7 @@ static const struct lvts_ctrl_data mt8192_lvts_ap_data_ctrl[] = {
1478
1489
{ .dt_id = MT8192_AP_VPU1 ,
1479
1490
.cal_offsets = { 0x28 , 0x29 , 0x2a } }
1480
1491
},
1481
- . num_lvts_sensor = 2 ,
1492
+ VALID_SENSOR_MAP ( 1 , 1 , 0 , 0 ) ,
1482
1493
.offset = 0x0 ,
1483
1494
},
1484
1495
{
@@ -1488,7 +1499,7 @@ static const struct lvts_ctrl_data mt8192_lvts_ap_data_ctrl[] = {
1488
1499
{ .dt_id = MT8192_AP_GPU1 ,
1489
1500
.cal_offsets = { 0x30 , 0x31 , 0x32 } }
1490
1501
},
1491
- . num_lvts_sensor = 2 ,
1502
+ VALID_SENSOR_MAP ( 1 , 1 , 0 , 0 ) ,
1492
1503
.offset = 0x100 ,
1493
1504
},
1494
1505
{
@@ -1498,7 +1509,7 @@ static const struct lvts_ctrl_data mt8192_lvts_ap_data_ctrl[] = {
1498
1509
{ .dt_id = MT8192_AP_CAM ,
1499
1510
.cal_offsets = { 0x38 , 0x39 , 0x3a } },
1500
1511
},
1501
- . num_lvts_sensor = 2 ,
1512
+ VALID_SENSOR_MAP ( 1 , 1 , 0 , 0 ) ,
1502
1513
.offset = 0x200 ,
1503
1514
},
1504
1515
{
@@ -1510,7 +1521,7 @@ static const struct lvts_ctrl_data mt8192_lvts_ap_data_ctrl[] = {
1510
1521
{ .dt_id = MT8192_AP_MD2 ,
1511
1522
.cal_offsets = { 0x44 , 0x45 , 0x46 } }
1512
1523
},
1513
- . num_lvts_sensor = 3 ,
1524
+ VALID_SENSOR_MAP ( 1 , 1 , 1 , 0 ) ,
1514
1525
.offset = 0x300 ,
1515
1526
}
1516
1527
};
@@ -1523,7 +1534,7 @@ static const struct lvts_ctrl_data mt8195_lvts_mcu_data_ctrl[] = {
1523
1534
{ .dt_id = MT8195_MCU_BIG_CPU1 ,
1524
1535
.cal_offsets = { 0x07 , 0x08 , 0x09 } }
1525
1536
},
1526
- . num_lvts_sensor = 2 ,
1537
+ VALID_SENSOR_MAP ( 1 , 1 , 0 , 0 ) ,
1527
1538
.offset = 0x0 ,
1528
1539
},
1529
1540
{
@@ -1533,7 +1544,7 @@ static const struct lvts_ctrl_data mt8195_lvts_mcu_data_ctrl[] = {
1533
1544
{ .dt_id = MT8195_MCU_BIG_CPU3 ,
1534
1545
.cal_offsets = { 0x10 , 0x11 , 0x12 } }
1535
1546
},
1536
- . num_lvts_sensor = 2 ,
1547
+ VALID_SENSOR_MAP ( 1 , 1 , 0 , 0 ) ,
1537
1548
.offset = 0x100 ,
1538
1549
},
1539
1550
{
@@ -1547,7 +1558,7 @@ static const struct lvts_ctrl_data mt8195_lvts_mcu_data_ctrl[] = {
1547
1558
{ .dt_id = MT8195_MCU_LITTLE_CPU3 ,
1548
1559
.cal_offsets = { 0x1f , 0x20 , 0x21 } }
1549
1560
},
1550
- . num_lvts_sensor = 4 ,
1561
+ VALID_SENSOR_MAP ( 1 , 1 , 1 , 1 ) ,
1551
1562
.offset = 0x200 ,
1552
1563
}
1553
1564
};
@@ -1560,7 +1571,7 @@ static const struct lvts_ctrl_data mt8195_lvts_ap_data_ctrl[] = {
1560
1571
{ .dt_id = MT8195_AP_VPU1 ,
1561
1572
.cal_offsets = { 0x28 , 0x29 , 0x2a } }
1562
1573
},
1563
- . num_lvts_sensor = 2 ,
1574
+ VALID_SENSOR_MAP ( 1 , 1 , 0 , 0 ) ,
1564
1575
.offset = 0x0 ,
1565
1576
},
1566
1577
{
@@ -1570,7 +1581,7 @@ static const struct lvts_ctrl_data mt8195_lvts_ap_data_ctrl[] = {
1570
1581
{ .dt_id = MT8195_AP_GPU1 ,
1571
1582
.cal_offsets = { 0x31 , 0x32 , 0x33 } }
1572
1583
},
1573
- . num_lvts_sensor = 2 ,
1584
+ VALID_SENSOR_MAP ( 1 , 1 , 0 , 0 ) ,
1574
1585
.offset = 0x100 ,
1575
1586
},
1576
1587
{
@@ -1582,7 +1593,7 @@ static const struct lvts_ctrl_data mt8195_lvts_ap_data_ctrl[] = {
1582
1593
{ .dt_id = MT8195_AP_INFRA ,
1583
1594
.cal_offsets = { 0x3d , 0x3e , 0x3f } }
1584
1595
},
1585
- . num_lvts_sensor = 3 ,
1596
+ VALID_SENSOR_MAP ( 1 , 1 , 1 , 0 ) ,
1586
1597
.offset = 0x200 ,
1587
1598
},
1588
1599
{
@@ -1592,7 +1603,7 @@ static const struct lvts_ctrl_data mt8195_lvts_ap_data_ctrl[] = {
1592
1603
{ .dt_id = MT8195_AP_CAM1 ,
1593
1604
.cal_offsets = { 0x46 , 0x47 , 0x48 } }
1594
1605
},
1595
- . num_lvts_sensor = 2 ,
1606
+ VALID_SENSOR_MAP ( 1 , 1 , 0 , 0 ) ,
1596
1607
.offset = 0x300 ,
1597
1608
}
1598
1609
};
0 commit comments