Search Linux Wireless

Re: [PATCH V2 5/8] brcmfmac: allow GCI core enumuration

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

 




On 11/12/2018 6:16, Arend van Spriel wrote:
> On 11/12/2018 8:29 AM, Chi-Hsien Lin wrote:
>> GCI core is needed for ULP operation. Allow GCI core enumuration with
>> below changes:
>>  - Allow GCI to be added to core list even when it doesn't have a 
>> wrapper.
>>  - Allow 8K address space size.
>>  - Don't overwrite the address value when an additional size descriptor
>>    is in place.
> 
> One question. This only assures the GCI core is listed. So does the
> driver need to access it for ULP operation?

Yes, the GCI core registers are accessed when entering/exiting ULP sleep 
modes. There will be other patches for the ULP support.

Regards,
Chi-hsien Lin

> 
> Regards,
> Arend
> 
>> Reviewed-by: Arend van Spriel <arend.vanspriel@xxxxxxxxxxxx>
>> Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@xxxxxxxxxxx>
>> ---
>>  drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c | 14 
>> ++++++++------
>>  1 file changed, 8 insertions(+), 6 deletions(-)
>>
>> diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c 
>> b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
>> index a3c857721446..a8d3b96b727f 100644
>> --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
>> +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
>> @@ -786,7 +786,7 @@ static int brcmf_chip_dmp_get_regaddr(struct 
>> brcmf_chip_priv *ci, u32 *eromaddr,
>>                                     u32 *regbase, u32 *wrapbase)
>>  {
>>       u8 desc;
>> -     u32 val;
>> +     u32 val, szdesc;
>>       u8 mpnum = 0;
>>       u8 stype, sztype, wraptype;
>>
>> @@ -832,14 +832,15 @@ static int brcmf_chip_dmp_get_regaddr(struct 
>> brcmf_chip_priv *ci, u32 *eromaddr,
>>
>>               /* next size descriptor can be skipped */
>>               if (sztype == DMP_SLAVE_SIZE_DESC) {
>> -                     val = brcmf_chip_dmp_get_desc(ci, eromaddr, NULL);
>> +                     szdesc = brcmf_chip_dmp_get_desc(ci, eromaddr, 
>> NULL);
>>                       /* skip upper size descriptor if present */
>> -                     if (val & DMP_DESC_ADDRSIZE_GT32)
>> +                     if (szdesc & DMP_DESC_ADDRSIZE_GT32)
>>                               brcmf_chip_dmp_get_desc(ci, eromaddr, 
>> NULL);
>>               }
>>
>> -             /* only look for 4K register regions */
>> -             if (sztype != DMP_SLAVE_SIZE_4K)
>> +             /* look for 4K or 8K register regions */
>> +             if (sztype != DMP_SLAVE_SIZE_4K &&
>> +                 sztype != DMP_SLAVE_SIZE_8K)
>>                       continue;
>>
>>               stype = (val & DMP_SLAVE_TYPE) >> DMP_SLAVE_TYPE_S;
>> @@ -896,7 +897,8 @@ int brcmf_chip_dmp_erom_scan(struct 
>> brcmf_chip_priv *ci)
>>
>>               /* need core with ports */
>>               if (nmw + nsw == 0 &&
>> -                 id != BCMA_CORE_PMU)
>> +                 id != BCMA_CORE_PMU &&
>> +                 id != BCMA_CORE_GCI)
>>                       continue;
>>
>>               /* try to obtain register address info */
>>
> 
> 
> 
> ----------
> 
> You're receiving this message because you're a member of the 
> brcm80211-dev-list group.
> .
> 




[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