Manikanta Pubbisetty <quic_mpubbise@xxxxxxxxxxx> writes: > On 1/28/2022 4:07 PM, Kalle Valo wrote: >> Kalle Valo <kvalo@xxxxxxxxxx> writes: >> >>> Manikanta Pubbisetty <quic_mpubbise@xxxxxxxxxxx> writes: >>> >>>> Remove core PCI and ath11k PCI references(struct ath11k_pci) >>>> from PCI common code. Since, PCI common code will be used >>>> by hybrid bus devices, this code should be independent >>>> from ATH11K PCI references and Linux core PCI references >>>> like struct pci_dev. >>>> >>>> Since this change introduces function callbacks for bus wakeup >>>> and bus release operations, wakeup_mhi HW param is no longer >>>> needed and hence it is removed completely. Alternatively, bus >>>> wakeup/release ops for QCA9074 are initialized to NULL as >>>> QCA9704 does not need bus wakeup/release for register accesses. >>>> >>>> Tested-on: WCN6750 hw1.0 AHB WLAN.MSL.1.0.1-00573-QCAMSLSWPLZ-1 >>>> Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-01720.1-QCAHSPSWPL_V1_V2_SILICONZ_LITE-1 >>>> Tested-on: QCN9074 hw1.0 PCI WLAN.HK.2.5.0.1-01100-QCAHKSWPL_SILICONZ-1 >>>> Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.4.0.1-00192-QCAHKSWPL_SILICONZ-1 >>>> >>>> Signed-off-by: Manikanta Pubbisetty <quic_mpubbise@xxxxxxxxxxx> >>> >>> [...] >>> >>>> @@ -651,6 +653,13 @@ struct ath11k_bus_params { >>>> bool fixed_bdf_addr; >>>> bool fixed_mem_region; >>>> bool static_window_map; >>>> + struct { >>>> + void (*wakeup)(struct ath11k_base *ab); >>>> + void (*release)(struct ath11k_base *ab); >>>> + int (*get_msi_irq)(struct ath11k_base *ab, unsigned int vector); >>>> + void (*window_write32)(struct ath11k_base *ab, u32 offset, u32 value); >>>> + u32 (*window_read32)(struct ath11k_base *ab, u32 offset); >>>> + } ops; >>>> }; >>> >>> Please don't use bus_params for this, I'm starting to suspect that we >>> actually need to remove struct ath11k_bus_params altogether. It would be >>> cleaner to have separate 'struct ath11k_pci_ops' or something like that. >> >> And after looking at this more it seems .get_msi_irq is the only >> function which actually has two different implementations. The other >> four are either run or not run, there's no difference in the >> implementation. So would it be cleaner to have a some sort check within >> the function for these other four, instead using function pointers? >> > > WCN6750 has it's own wakeup() and release(), I'll send that patch > separately. QCN9074 doesn't need wakeup() and release() functions. > > The intention of the patch was to remove all Linux and ATH11K PCI > reference like struct pci_dev and ath11k_pci in the common code. > TBH, WCN6750 doesn't need these references since it is a AHB device > in ATH11K. If we have these references in common code, first thing is > the code will look kind of messed up and another aspect is we need to > enable CONFIG_PCI unnecessarily. This was the reason behind defining > other two callbacks window_write32() and read32(). Ah, makes sense. -- https://patchwork.kernel.org/project/linux-wireless/list/ https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches