patch "misc: rtsx: separate aspm mode into MODE_REG and MODE_CFG" added to char-misc-linus
Subsystems (2)
This is a note to let you know that I've just added the patch titled
misc: rtsx: separate aspm mode into MODE_REG and MODE_CFG
to my char-misc git tree which can be found at
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git
in the char-misc-linus branch.
The patch will show up in the next release of the linux-next tree (usually sometime within the next 24 hours during the week.)
The patch will hopefully also be merged in Linus's tree for the next -rc kernel release.
If you have any questions about this process, please let me know.
From 3df4fce739e2b263120f528c5e0fe6b2f8937b5b Mon Sep 17 00:00:00 2001
From: Ricky Wu <[email protected]>
Date: Mon, 7 Jun 2021 18:16:34 +0800
Subject: misc: rtsx: separate aspm mode into MODE_REG and MODE_CFG
aspm (Active State Power Management)rtsx_comm_set_aspm: this function is for driver to make sure not enter power saving when processing of init and card_detcctASPM_MODE_CFG: 8411 5209 5227 5229 5249 5250
Change back to use original way to control aspmASPM_MODE_REG: 5227A 524A 5250A 5260 5261 5228
Keep the new way to control aspm
--- drivers/misc/cardreader/rtl8411.c | 1 + drivers/misc/cardreader/rts5209.c | 1 + drivers/misc/cardreader/rts5227.c | 2 ++ drivers/misc/cardreader/rts5228.c | 1 + drivers/misc/cardreader/rts5229.c | 1 + drivers/misc/cardreader/rts5249.c | 3 ++ drivers/misc/cardreader/rts5260.c | 1 + drivers/misc/cardreader/rts5261.c | 1 + drivers/misc/cardreader/rtsx_pcr.c | 44 +++++++++++++++++++++--------- include/linux/rtsx_pci.h | 2 ++ 10 files changed, 44 insertions(+), 13 deletions(-)
drivers/misc/cardreader/rtl8411.c +1 -0
@@ -468,6 +468,7 @@ static void rtl8411_init_common_params(struct rtsx_pcr *pcr) pcr->sd30_drive_sel_1v8 =DRIVER_TYPE_B ; pcr->sd30_drive_sel_3v3 =DRIVER_TYPE_D ; pcr->aspm_en =ASPM_L1_EN ; + pcr->aspm_mode =ASPM_MODE_CFG ; pcr->tx_initial_phase =SET_CLOCK_PHASE (23 ,7 ,14 ); pcr->rx_initial_phase =SET_CLOCK_PHASE (4 ,3 ,10 ); pcr->ic_version =rtl8411_get_ic_version (pcr);
drivers/misc/cardreader/rts5209.c +1 -0
@@ -255,6 +255,7 @@ void rts5209_init_params(struct rtsx_pcr *pcr) pcr->sd30_drive_sel_1v8 =DRIVER_TYPE_B ; pcr->sd30_drive_sel_3v3 =DRIVER_TYPE_D ; pcr->aspm_en =ASPM_L1_EN ; + pcr->aspm_mode =ASPM_MODE_CFG ; pcr->tx_initial_phase =SET_CLOCK_PHASE (27 ,27 ,16 ); pcr->rx_initial_phase =SET_CLOCK_PHASE (24 ,6 ,5 );
drivers/misc/cardreader/rts5227.c +2 -0
@@ -358,6 +358,7 @@ void rts5227_init_params(struct rtsx_pcr *pcr) pcr->sd30_drive_sel_1v8 =CFG_DRIVER_TYPE_B ; pcr->sd30_drive_sel_3v3 =CFG_DRIVER_TYPE_B ; pcr->aspm_en =ASPM_L1_EN ; + pcr->aspm_mode =ASPM_MODE_CFG ; pcr->tx_initial_phase =SET_CLOCK_PHASE (27 ,27 ,15 ); pcr->rx_initial_phase =SET_CLOCK_PHASE (30 ,7 ,7 );
@@ -483,6 +484,7 @@ void rts522a_init_params(struct rtsx_pcr *pcr)rts5227_init_params (pcr); pcr->ops = &rts522a_pcr_ops; + pcr->aspm_mode =ASPM_MODE_REG ; pcr->tx_initial_phase =SET_CLOCK_PHASE (20 ,20 ,11 ); pcr->reg_pm_ctrl3 =RTS522A_PM_CTRL3 ;
drivers/misc/cardreader/rts5228.c +1 -0
@@ -718,6 +718,7 @@ void rts5228_init_params(struct rtsx_pcr *pcr) pcr->sd30_drive_sel_1v8 =CFG_DRIVER_TYPE_B ; pcr->sd30_drive_sel_3v3 =CFG_DRIVER_TYPE_B ; pcr->aspm_en =ASPM_L1_EN ; + pcr->aspm_mode =ASPM_MODE_REG ; pcr->tx_initial_phase =SET_CLOCK_PHASE (28 ,27 ,11 ); pcr->rx_initial_phase =SET_CLOCK_PHASE (24 ,6 ,5 );
drivers/misc/cardreader/rts5229.c +1 -0
@@ -246,6 +246,7 @@ void rts5229_init_params(struct rtsx_pcr *pcr) pcr->sd30_drive_sel_1v8 =DRIVER_TYPE_B ; pcr->sd30_drive_sel_3v3 =DRIVER_TYPE_D ; pcr->aspm_en =ASPM_L1_EN ; + pcr->aspm_mode =ASPM_MODE_CFG ; pcr->tx_initial_phase =SET_CLOCK_PHASE (27 ,27 ,15 ); pcr->rx_initial_phase =SET_CLOCK_PHASE (30 ,6 ,6 );
drivers/misc/cardreader/rts5249.c +3 -0
@@ -566,6 +566,7 @@ void rts5249_init_params(struct rtsx_pcr *pcr) pcr->sd30_drive_sel_1v8 =CFG_DRIVER_TYPE_B ; pcr->sd30_drive_sel_3v3 =CFG_DRIVER_TYPE_B ; pcr->aspm_en =ASPM_L1_EN ; + pcr->aspm_mode =ASPM_MODE_CFG ; pcr->tx_initial_phase =SET_CLOCK_PHASE (1 ,29 ,16 ); pcr->rx_initial_phase =SET_CLOCK_PHASE (24 ,6 ,5 );
@@ -729,6 +730,7 @@ static const struct pcr_ops rts524a_pcr_ops = {void rts524a_init_params (struct rtsx_pcr *pcr) {rts5249_init_params (pcr); + pcr->aspm_mode =ASPM_MODE_REG ; pcr->tx_initial_phase =SET_CLOCK_PHASE (27 ,29 ,11 ); pcr->option.ltr_l1off_sspwrgate =LTR_L1OFF_SSPWRGATE_5250_DEF ; pcr->option.ltr_l1off_snooze_sspwrgate =
@@ -845,6 +847,7 @@ static const struct pcr_ops rts525a_pcr_ops = {void rts525a_init_params (struct rtsx_pcr *pcr) {rts5249_init_params (pcr); + pcr->aspm_mode =ASPM_MODE_REG ; pcr->tx_initial_phase =SET_CLOCK_PHASE (25 ,29 ,11 ); pcr->option.ltr_l1off_sspwrgate =LTR_L1OFF_SSPWRGATE_5250_DEF ; pcr->option.ltr_l1off_snooze_sspwrgate =
drivers/misc/cardreader/rts5260.c +1 -0
@@ -628,6 +628,7 @@ void rts5260_init_params(struct rtsx_pcr *pcr) pcr->sd30_drive_sel_1v8 =CFG_DRIVER_TYPE_B ; pcr->sd30_drive_sel_3v3 =CFG_DRIVER_TYPE_B ; pcr->aspm_en =ASPM_L1_EN ; + pcr->aspm_mode =ASPM_MODE_REG ; pcr->tx_initial_phase =SET_CLOCK_PHASE (27 ,29 ,11 ); pcr->rx_initial_phase =SET_CLOCK_PHASE (24 ,6 ,5 );
drivers/misc/cardreader/rts5261.c +1 -0
@@ -783,6 +783,7 @@ void rts5261_init_params(struct rtsx_pcr *pcr) pcr->sd30_drive_sel_1v8 =0x00 ; pcr->sd30_drive_sel_3v3 =0x00 ; pcr->aspm_en =ASPM_L1_EN ; + pcr->aspm_mode =ASPM_MODE_REG ; pcr->tx_initial_phase =SET_CLOCK_PHASE (27 ,27 ,11 ); pcr->rx_initial_phase =SET_CLOCK_PHASE (24 ,6 ,5 );
drivers/misc/cardreader/rtsx_pcr.c +31 -13
80 lines not on this page · raw message
include/linux/rtsx_pci.h +2 -0
@@ -1109,6 +1109,7 @@ struct pcr_ops { };enum PDEV_STAT {PDEV_STAT_IDLE ,PDEV_STAT_RUN }; +enum ASPM_MODE {ASPM_MODE_CFG ,ASPM_MODE_REG };#define ASPM_L1_1_EN BIT(0)#define ASPM_L1_2_EN BIT(1)
@@ -1234,6 +1235,7 @@ struct rtsx_pcr {u8 card_drive_sel;#define ASPM_L1_EN 0x02u8 aspm_en; +enum ASPM_MODE aspm_mode;bool aspm_enabled;#define PCR_MS_PMOS (1 << 0)
Signature · 1 line
2.32.0