[PATCH v2 02/19] ath11k: Refactor PCI code to support hybrid bus devices

Manikanta Pubbisetty quic_mpubbise at quicinc.com
Mon Feb 21 02:19:19 PST 2022


On 2/21/2022 2:49 PM, Kalle Valo wrote:
> Manikanta Pubbisetty <quic_mpubbise at quicinc.com> writes:
> 
>> On 1/28/2022 5:43 PM, Kalle Valo wrote:
>>> Manikanta Pubbisetty <quic_mpubbise at quicinc.com> writes:
>>>
>>>> Unlike other ATH11K PCIe devices which are enumerated by APSS
>>>> processor (Application Processor SubSystem), WCN6750 gets
>>>> enumerated by the WPSS Q6 processor (Wireless Processor SubSystem);
>>>> In simple terms, though WCN6750 is PCIe device, it is not attached
>>>> to the APSS processor, APSS will not know of such a device being
>>>> present in the system and therefore WCN6750 will be registered as
>>>> a platform device to the kernel core like other supported AHB
>>>> devices.
>>>>
>>>> WCN6750 uses both AHB and PCI APIs for it's operation, it uses
>>>> AHB APIs for device probe/boot and PCI APIs for device setup
>>>> and register accesses; Because of this nature, it is referred
>>>> as a hybrid bus device.
>>>>
>>>> Refactor PCI code to support hybrid bus devices like WCN6750.
>>>>
>>>> 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 at quicinc.com>
>>>
>>> [...]
>>>
>>>> --- /dev/null
>>>> +++ b/drivers/net/wireless/ath/ath11k/pci_cmn.c
>>>
>>> [...]
>>>
>>>> +static inline void ath11k_pci_select_window(struct ath11k_pci *ab_pci, u32 offset)
>>>> +{
>>>> +	struct ath11k_base *ab = ab_pci->ab;
>>>> +
>>>> +	u32 window = FIELD_GET(ATH11K_PCI_WINDOW_VALUE_MASK, offset);
>>>> +
>>>> +	lockdep_assert_held(&ab_pci->window_lock);
>>>> +
>>>> +	if (window != ab_pci->register_window) {
>>>> +		iowrite32(ATH11K_PCI_WINDOW_ENABLE_BIT | window,
>>>> +			  ab->mem + ATH11K_PCI_WINDOW_REG_ADDRESS);
>>>> +		ioread32(ab->mem + ATH11K_PCI_WINDOW_REG_ADDRESS);
>>>> +		ab_pci->register_window = window;
>>>> +	}
>>>> +}
>>>
>>> So the style used in ath11k is ath11k_<filename>_foo, so that a function
>>> ath11k_pci_foo() should be in pci.c. This patch is now breaking that
>>> style. Maybe pci_cmn.c should renamed to cpci.c, pcic.c or something
>>> like that? Then the function prefix could be ath11k_cpci_, ath11k_pcic_
>>> or similar.
>>>
>>
>> Makes sense, pcic.c and ath11k_pcic_* looks better, I'll make these changes.
> 
> Of course another possiblity, which I forgot to mention in my previous
> email, is to keep pci_cmn.c filename but rename the functions to
> ath11k_pci_cmn_foo(). Though don't know which one is better.
> 

I was contemplating on having ath11k_pci_cmn_* for a very long time; In 
fact, in the patches which I worked on had the pci_cmn prefix for all 
the APIs, I felt the prefix is long and dropped the idea :)

At least to me, pcic.c and ath11k_pcic* looked good.



More information about the ath11k mailing list