Search Linux Wireless

Re: [PATCH v2 05/19] ath11k: Remove core PCI references from PCI common code

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





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().



[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux