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]

 



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



[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