@@ -1413,79 +1413,52 @@ static int rtw89_write16_mdio_clr(struct rtw89_dev *rtwdev, u8 addr, u16 mask, u
1413
1413
return 0 ;
1414
1414
}
1415
1415
1416
- static int rtw89_dbi_write8 (struct rtw89_dev * rtwdev , u16 addr , u8 data )
1416
+ static int rtw89_pci_write_config_byte (struct rtw89_dev * rtwdev , u16 addr ,
1417
+ u8 data )
1417
1418
{
1418
- u16 write_addr ;
1419
- u16 remainder = addr & ~(B_AX_DBI_ADDR_MSK | B_AX_DBI_WREN_MSK );
1420
- u8 flag ;
1421
- int ret ;
1422
-
1423
- write_addr = addr & B_AX_DBI_ADDR_MSK ;
1424
- write_addr |= u16_encode_bits (BIT (remainder ), B_AX_DBI_WREN_MSK );
1425
- rtw89_write8 (rtwdev , R_AX_DBI_WDATA + remainder , data );
1426
- rtw89_write16 (rtwdev , R_AX_DBI_FLAG , write_addr );
1427
- rtw89_write8 (rtwdev , R_AX_DBI_FLAG + 2 , B_AX_DBI_WFLAG >> 16 );
1428
-
1429
- ret = read_poll_timeout_atomic (rtw89_read8 , flag , !flag , 10 ,
1430
- 10 * RTW89_PCI_WR_RETRY_CNT , false,
1431
- rtwdev , R_AX_DBI_FLAG + 2 );
1432
- if (ret )
1433
- WARN (flag , "failed to write to DBI register, addr=0x%04x\n" ,
1434
- addr );
1419
+ struct rtw89_pci * rtwpci = (struct rtw89_pci * )rtwdev -> priv ;
1420
+ struct pci_dev * pdev = rtwpci -> pdev ;
1435
1421
1436
- return ret ;
1422
+ return pci_write_config_byte ( pdev , addr , data ) ;
1437
1423
}
1438
1424
1439
- static int rtw89_dbi_read8 (struct rtw89_dev * rtwdev , u16 addr , u8 * value )
1425
+ static int rtw89_pci_read_config_byte (struct rtw89_dev * rtwdev , u16 addr ,
1426
+ u8 * value )
1440
1427
{
1441
- u16 read_addr = addr & B_AX_DBI_ADDR_MSK ;
1442
- u8 flag ;
1443
- int ret ;
1444
-
1445
- rtw89_write16 (rtwdev , R_AX_DBI_FLAG , read_addr );
1446
- rtw89_write8 (rtwdev , R_AX_DBI_FLAG + 2 , B_AX_DBI_RFLAG >> 16 );
1447
-
1448
- ret = read_poll_timeout_atomic (rtw89_read8 , flag , !flag , 10 ,
1449
- 10 * RTW89_PCI_WR_RETRY_CNT , false,
1450
- rtwdev , R_AX_DBI_FLAG + 2 );
1451
-
1452
- if (!ret ) {
1453
- read_addr = R_AX_DBI_RDATA + (addr & 3 );
1454
- * value = rtw89_read8 (rtwdev , read_addr );
1455
- } else {
1456
- WARN (1 , "failed to read DBI register, addr=0x%04x\n" , addr );
1457
- ret = - EIO ;
1458
- }
1428
+ struct rtw89_pci * rtwpci = (struct rtw89_pci * )rtwdev -> priv ;
1429
+ struct pci_dev * pdev = rtwpci -> pdev ;
1459
1430
1460
- return ret ;
1431
+ return pci_read_config_byte ( pdev , addr , value ) ;
1461
1432
}
1462
1433
1463
- static int rtw89_dbi_write8_set (struct rtw89_dev * rtwdev , u16 addr , u8 bit )
1434
+ static int rtw89_pci_config_byte_set (struct rtw89_dev * rtwdev , u16 addr ,
1435
+ u8 bit )
1464
1436
{
1465
1437
u8 value ;
1466
1438
int ret ;
1467
1439
1468
- ret = rtw89_dbi_read8 (rtwdev , addr , & value );
1440
+ ret = rtw89_pci_read_config_byte (rtwdev , addr , & value );
1469
1441
if (ret )
1470
1442
return ret ;
1471
1443
1472
1444
value |= bit ;
1473
- ret = rtw89_dbi_write8 (rtwdev , addr , value );
1445
+ ret = rtw89_pci_write_config_byte (rtwdev , addr , value );
1474
1446
1475
1447
return ret ;
1476
1448
}
1477
1449
1478
- static int rtw89_dbi_write8_clr (struct rtw89_dev * rtwdev , u16 addr , u8 bit )
1450
+ static int rtw89_pci_config_byte_clr (struct rtw89_dev * rtwdev , u16 addr ,
1451
+ u8 bit )
1479
1452
{
1480
1453
u8 value ;
1481
1454
int ret ;
1482
1455
1483
- ret = rtw89_dbi_read8 (rtwdev , addr , & value );
1456
+ ret = rtw89_pci_read_config_byte (rtwdev , addr , & value );
1484
1457
if (ret )
1485
1458
return ret ;
1486
1459
1487
1460
value &= ~bit ;
1488
- ret = rtw89_dbi_write8 (rtwdev , addr , value );
1461
+ ret = rtw89_pci_write_config_byte (rtwdev , addr , value );
1489
1462
1490
1463
return ret ;
1491
1464
}
@@ -1542,9 +1515,10 @@ static int rtw89_pci_auto_refclk_cal(struct rtw89_dev *rtwdev, bool autook_en)
1542
1515
rtwdev -> chip -> chip_id == RTL8852C )
1543
1516
return 0 ;
1544
1517
1545
- ret = rtw89_dbi_read8 (rtwdev , RTW89_PCIE_PHY_RATE , & val8 );
1518
+ ret = rtw89_pci_read_config_byte (rtwdev , RTW89_PCIE_PHY_RATE , & val8 );
1546
1519
if (ret ) {
1547
- rtw89_err (rtwdev , "[ERR]dbi_r8_pcie %X\n" , RTW89_PCIE_PHY_RATE );
1520
+ rtw89_err (rtwdev , "[ERR]pci config read %X\n" ,
1521
+ RTW89_PCIE_PHY_RATE );
1548
1522
return ret ;
1549
1523
}
1550
1524
@@ -1557,17 +1531,18 @@ static int rtw89_pci_auto_refclk_cal(struct rtw89_dev *rtwdev, bool autook_en)
1557
1531
return - EOPNOTSUPP ;
1558
1532
}
1559
1533
/* Disable L1BD */
1560
- ret = rtw89_dbi_read8 (rtwdev , RTW89_PCIE_L1_CTRL , & bdr_ori );
1534
+ ret = rtw89_pci_read_config_byte (rtwdev , RTW89_PCIE_L1_CTRL , & bdr_ori );
1561
1535
if (ret ) {
1562
- rtw89_err (rtwdev , "[ERR]dbi_r8_pcie %X\n" , RTW89_PCIE_L1_CTRL );
1536
+ rtw89_err (rtwdev , "[ERR]pci config read %X\n" , RTW89_PCIE_L1_CTRL );
1563
1537
return ret ;
1564
1538
}
1565
1539
1566
1540
if (bdr_ori & RTW89_PCIE_BIT_L1 ) {
1567
- ret = rtw89_dbi_write8 (rtwdev , RTW89_PCIE_L1_CTRL ,
1568
- bdr_ori & ~RTW89_PCIE_BIT_L1 );
1541
+ ret = rtw89_pci_write_config_byte (rtwdev , RTW89_PCIE_L1_CTRL ,
1542
+ bdr_ori & ~RTW89_PCIE_BIT_L1 );
1569
1543
if (ret ) {
1570
- rtw89_err (rtwdev , "[ERR]dbi_w8_pcie %X\n" , RTW89_PCIE_L1_CTRL );
1544
+ rtw89_err (rtwdev , "[ERR]pci config write %X\n" ,
1545
+ RTW89_PCIE_L1_CTRL );
1571
1546
return ret ;
1572
1547
}
1573
1548
l1_flag = true;
@@ -1662,14 +1637,17 @@ static int rtw89_pci_auto_refclk_cal(struct rtw89_dev *rtwdev, bool autook_en)
1662
1637
}
1663
1638
1664
1639
/* CLK delay = 0 */
1665
- ret = rtw89_dbi_write8 (rtwdev , RTW89_PCIE_CLK_CTRL , PCIE_CLKDLY_HW_0 );
1640
+ ret = rtw89_pci_write_config_byte (rtwdev , RTW89_PCIE_CLK_CTRL ,
1641
+ PCIE_CLKDLY_HW_0 );
1666
1642
1667
1643
end :
1668
1644
/* Set L1BD to ori */
1669
1645
if (l1_flag ) {
1670
- ret = rtw89_dbi_write8 (rtwdev , RTW89_PCIE_L1_CTRL , bdr_ori );
1646
+ ret = rtw89_pci_write_config_byte (rtwdev , RTW89_PCIE_L1_CTRL ,
1647
+ bdr_ori );
1671
1648
if (ret ) {
1672
- rtw89_err (rtwdev , "[ERR]dbi_w8_pcie %X\n" , RTW89_PCIE_L1_CTRL );
1649
+ rtw89_err (rtwdev , "[ERR]pci config write %X\n" ,
1650
+ RTW89_PCIE_L1_CTRL );
1673
1651
return ret ;
1674
1652
}
1675
1653
}
@@ -2552,17 +2530,17 @@ static void rtw89_pci_clkreq_set(struct rtw89_dev *rtwdev, bool enable)
2552
2530
if (rtw89_pci_disable_clkreq )
2553
2531
return ;
2554
2532
2555
- ret = rtw89_dbi_write8 (rtwdev , RTW89_PCIE_CLK_CTRL ,
2556
- PCIE_CLKDLY_HW_30US );
2533
+ ret = rtw89_pci_write_config_byte (rtwdev , RTW89_PCIE_CLK_CTRL ,
2534
+ PCIE_CLKDLY_HW_30US );
2557
2535
if (ret )
2558
2536
rtw89_err (rtwdev , "failed to set CLKREQ Delay\n" );
2559
2537
2560
2538
if (enable )
2561
- ret = rtw89_dbi_write8_set (rtwdev , RTW89_PCIE_L1_CTRL ,
2562
- RTW89_PCIE_BIT_CLK );
2539
+ ret = rtw89_pci_config_byte_set (rtwdev , RTW89_PCIE_L1_CTRL ,
2540
+ RTW89_PCIE_BIT_CLK );
2563
2541
else
2564
- ret = rtw89_dbi_write8_clr (rtwdev , RTW89_PCIE_L1_CTRL ,
2565
- RTW89_PCIE_BIT_CLK );
2542
+ ret = rtw89_pci_config_byte_clr (rtwdev , RTW89_PCIE_L1_CTRL ,
2543
+ RTW89_PCIE_BIT_CLK );
2566
2544
if (ret )
2567
2545
rtw89_err (rtwdev , "failed to %s CLKREQ_L1, ret=%d" ,
2568
2546
enable ? "set" : "unset" , ret );
@@ -2576,24 +2554,24 @@ static void rtw89_pci_aspm_set(struct rtw89_dev *rtwdev, bool enable)
2576
2554
if (rtw89_pci_disable_aspm_l1 )
2577
2555
return ;
2578
2556
2579
- ret = rtw89_dbi_read8 (rtwdev , RTW89_PCIE_ASPM_CTRL , & value );
2557
+ ret = rtw89_pci_read_config_byte (rtwdev , RTW89_PCIE_ASPM_CTRL , & value );
2580
2558
if (ret )
2581
2559
rtw89_err (rtwdev , "failed to read ASPM Delay\n" );
2582
2560
2583
2561
value &= ~(RTW89_L1DLY_MASK | RTW89_L0DLY_MASK );
2584
2562
value |= FIELD_PREP (RTW89_L1DLY_MASK , PCIE_L1DLY_16US ) |
2585
2563
FIELD_PREP (RTW89_L0DLY_MASK , PCIE_L0SDLY_4US );
2586
2564
2587
- ret = rtw89_dbi_write8 (rtwdev , RTW89_PCIE_ASPM_CTRL , value );
2565
+ ret = rtw89_pci_write_config_byte (rtwdev , RTW89_PCIE_ASPM_CTRL , value );
2588
2566
if (ret )
2589
2567
rtw89_err (rtwdev , "failed to read ASPM Delay\n" );
2590
2568
2591
2569
if (enable )
2592
- ret = rtw89_dbi_write8_set (rtwdev , RTW89_PCIE_L1_CTRL ,
2593
- RTW89_PCIE_BIT_L1 );
2570
+ ret = rtw89_pci_config_byte_set (rtwdev , RTW89_PCIE_L1_CTRL ,
2571
+ RTW89_PCIE_BIT_L1 );
2594
2572
else
2595
- ret = rtw89_dbi_write8_clr (rtwdev , RTW89_PCIE_L1_CTRL ,
2596
- RTW89_PCIE_BIT_L1 );
2573
+ ret = rtw89_pci_config_byte_clr (rtwdev , RTW89_PCIE_L1_CTRL ,
2574
+ RTW89_PCIE_BIT_L1 );
2597
2575
if (ret )
2598
2576
rtw89_err (rtwdev , "failed to %s ASPM L1, ret=%d" ,
2599
2577
enable ? "set" : "unset" , ret );
@@ -2657,11 +2635,11 @@ static void rtw89_pci_l1ss_set(struct rtw89_dev *rtwdev, bool enable)
2657
2635
int ret ;
2658
2636
2659
2637
if (enable )
2660
- ret = rtw89_dbi_write8_set (rtwdev , RTW89_PCIE_TIMER_CTRL ,
2661
- RTW89_PCIE_BIT_L1SUB );
2638
+ ret = rtw89_pci_config_byte_set (rtwdev , RTW89_PCIE_TIMER_CTRL ,
2639
+ RTW89_PCIE_BIT_L1SUB );
2662
2640
else
2663
- ret = rtw89_dbi_write8_clr (rtwdev , RTW89_PCIE_TIMER_CTRL ,
2664
- RTW89_PCIE_BIT_L1SUB );
2641
+ ret = rtw89_pci_config_byte_clr (rtwdev , RTW89_PCIE_TIMER_CTRL ,
2642
+ RTW89_PCIE_BIT_L1SUB );
2665
2643
if (ret )
2666
2644
rtw89_err (rtwdev , "failed to %s L1SS, ret=%d" ,
2667
2645
enable ? "set" : "unset" , ret );
@@ -2878,10 +2856,10 @@ static void rtw89_pci_l2_hci_ldo(struct rtw89_dev *rtwdev)
2878
2856
return ;
2879
2857
2880
2858
/* Hardware need write the reg twice to ensure the setting work */
2881
- rtw89_dbi_write8_set (rtwdev , RTW89_PCIE_RST_MSTATE ,
2882
- RTW89_PCIE_BIT_CFG_RST_MSTATE );
2883
- rtw89_dbi_write8_set (rtwdev , RTW89_PCIE_RST_MSTATE ,
2884
- RTW89_PCIE_BIT_CFG_RST_MSTATE );
2859
+ rtw89_pci_write_config_byte (rtwdev , RTW89_PCIE_RST_MSTATE ,
2860
+ RTW89_PCIE_BIT_CFG_RST_MSTATE );
2861
+ rtw89_pci_write_config_byte (rtwdev , RTW89_PCIE_RST_MSTATE ,
2862
+ RTW89_PCIE_BIT_CFG_RST_MSTATE );
2885
2863
}
2886
2864
2887
2865
static int __maybe_unused rtw89_pci_resume (struct device * dev )
0 commit comments