Initial Linux-wireless contribution

Eugene Krasnikov k.eugene.e at gmail.com
Mon Aug 5 07:20:49 EDT 2013


> No i understand more what do you imply under "glue layer":)

Now*

2013/8/5 Eugene Krasnikov <k.eugene.e at gmail.com>:
> No i understand more what do you imply under "glue layer":)
> So basically what wcn_glue will do is just call
> platform_device_register and will be a proxy between wcn36xx and
> wcnss_core when it comes to getting irqs, memory maps and so on right?
>
> In this case we do not need to modify wcnss_core at all. Let me
> probably implement a draft version of such a module so then we can
> sync up on details;)
>
> 2013/8/5 Kalle Valo <kvalo at qca.qualcomm.com>:
>> Eugene Krasnikov <k.eugene.e at gmail.com> writes:
>>
>>> Aha, I see your point. So your suggestion is to define platform
>>> interface that will make it possible to use wcn36xx with any platform
>>> that supports specific interface similar to
>>> wl12xx_platform_data/wl1271_if_operations right?
>>
>> Actually wl12xx was a bad example as it uses sdio, so let's forget it
>> for now.
>>
>>> Let me have a deeper look if we cad get rid of module_init/exit
>>> because platform_device_register/module_platform_driver is done in
>>> wcnss_core hence
>>
>> Basically my idea is to have something like this in wcn36xx:
>>
>> static struct platform_driver wcn36xx_driver = {
>>         .probe = wcn36xx_probe,
>>         .remove = wcn36xx_remove,
>>         .driver = {
>>                 .owner = THIS_MODULE,
>>                 .name = "wcn36xx",
>>         },
>> }
>>
>> static wcn36xx_probe(struct platform_device *pdev)
>> {
>>         ...
>> }
>>
>> Then the glue layer (what ever kernel module that will be) will call
>> platform_device_register() with name "wcn36xx", which eventually will
>> call wcn36xx_probe(). This way wcn36xx will be generic and not depending
>> on any msm code, which is a requirement for upstream. We can also
>> provide the platform data through the struct platform_device.
>>
>> Also then we don't need to use hacks like this with help of
>> platform_set_drvdata():
>>
>> static struct ieee80211_hw *private_hw;
>>
>> And if we ever get proper msm support to upstream when we don't any glue
>> layer and the board files from arch/arm/mach-msm/ will call
>> platform_device_register().
>>
>>> or we have to rewrite wcnss_core ourselves or hack into wcnss_core.
>>
>> Do you see now why I suggested implementing our own glue layer? :)
>>
>> --
>> Kalle Valo
>
>
>
> --
> Best regards,
> Eugene



-- 
Best regards,
Eugene



More information about the wcn36xx mailing list