Martin Blumenstingl <martin.blumenstingl@xxxxxxxxxxxxxx> wrote: > The SDIO HCI implementation needs to know when the MAC is powered on. > This is needed because 32-bit register access has to be split into 4x > 8-bit register access when the MAC is not fully powered on or while > powering off. When the MAC is powered on 32-bit register access can be > used to reduce the number of transfers but splitting into 4x 8-bit > register access still works in that case. > > During the power on sequence is how RTW_FLAG_POWERON is only set when > the power on sequence has completed successfully. During power off > however RTW_FLAG_POWERON is set. This means that the upcoming SDIO HCI > implementation does not know that it has to use 4x 8-bit register > accessors. Clear the RTW_FLAG_POWERON flag early when powering off the > MAC so the whole power off sequence is processed with RTW_FLAG_POWERON > unset. This will make it possible to use the RTW_FLAG_POWERON flag in > the upcoming SDIO HCI implementation. > > Note that a failure in rtw_pwr_seq_parser() while applying > chip->pwr_off_seq can theoretically result in the RTW_FLAG_POWERON > flag being cleared while the chip is still powered on. However, > depending on when the failure occurs in the power off sequence the > chip may be on or off. Even the original approach of clearing > RTW_FLAG_POWERON only when the power off sequence has been applied > successfully could end up in some corner case where the chip is > powered off but RTW_FLAG_POWERON was not cleared. > > Reviewed-by: Ping-Ke Shih <pkshih@xxxxxxxxxxx> > Signed-off-by: Martin Blumenstingl <martin.blumenstingl@xxxxxxxxxxxxxx> 9 patches applied to wireless-next.git, thanks. 6a92566088b1 wifi: rtw88: Clear RTW_FLAG_POWERON early in rtw_mac_power_switch() 65371a3f14e7 wifi: rtw88: sdio: Add HCI implementation for SDIO based chipsets b722e5b130bc wifi: rtw88: mac: Support SDIO specific bits in the power on sequence a5d25f9ff918 wifi: rtw88: main: Add the {cpwm,rpwm}_addr for SDIO based chipsets 02461d9368c5 wifi: rtw88: main: Reserve 8 bytes of extra TX headroom for SDIO cards 7d6d2dd326a8 mmc: sdio: add Realtek SDIO vendor ID and various wifi device IDs 095e62dd7427 wifi: rtw88: Add support for the SDIO based RTL8822BS chipset 6fdacb78f799 wifi: rtw88: Add support for the SDIO based RTL8822CS chipset b2a777d68434 wifi: rtw88: Add support for the SDIO based RTL8821CS chipset -- https://patchwork.kernel.org/project/linux-wireless/patch/20230405200729.632435-2-martin.blumenstingl@xxxxxxxxxxxxxx/ https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches