[v9,0/5] staging: vc04_services: vchiq: Register devices with a custom bus_type

Message ID 20230719164427.1383646-1-umang.jain@ideasonboard.com
Headers
Series staging: vc04_services: vchiq: Register devices with a custom bus_type |

Message

Umang Jain July 19, 2023, 4:44 p.m. UTC
  The patch series added a new bus type vchiq_bus_type and registers
child devices in order to move them away from using platform
device/driver.

Patch 1/5 and 2/5 adds a new bus_type and registers them to vchiq
interface

Patch 3/5 and 4/5 moves the bcm2835-camera and bcm2835-audio
to the new bus respectively

Patch 5/5 removes a platform registeration helper which is no
longer required.

Changes in v9:
- Fix module autoloading
- Implement bus_type's probe() callback to load drivers
- Implement bus_type's uevent() to make sure appropriate drivers are
  loaded when device are registed from vchiq.

Changes in v8:
- Drop dual licensing. Instead use GPL-2.0 only for patch 1/5

Changes in v7:
(5 out of 6 patches from v6 merged)
- Split the main patch (6/6) as requested.
- Use struct vchiq_device * instead of struct device * in
  all bus functions.
- Drop additional name attribute displayed in sysfs (redundant info)
- Document vchiq_interface doesn't enumerate device discovery
- remove EXPORT_SYMBOL_GPL(vchiq_bus_type)

Changes in v6:
- Split struct device and struct driver wrappers in vchiq_device.[ch]
- Move vchiq_bus_type definition to vchiq_device.[ch] as well
- return error on bus_register() failure
- drop dma_set_mask_and_coherent
- trivial variable name change

Changes in v5:
- Fixup missing "staging: " in commits' subject line
- No code changes from v4

Changes in v4:
- Introduce patches to drop include directives from Makefile

Changes in v3:
- Rework entirely to replace platform devices/driver model

-v2:
https://lore.kernel.org/all/20221222191500.515795-1-umang.jain@ideasonboard.com/

-v1:
https://lore.kernel.org/all/20221220084404.19280-1-umang.jain@ideasonboard.com/

Umang Jain (5):
  staging: vc04_services: vchiq_arm: Add new bus type and device type
  staging: vc04_services: vchiq_arm: Register vchiq_bus_type
  staging: bcm2835-camera: Register bcm2835-camera with vchiq_bus_type
  staging: bcm2835-audio: Register bcm2835-audio with vchiq_bus_type
  staging: vc04_services: vchiq_arm: Remove vchiq_register_child()

 drivers/staging/vc04_services/Makefile        |   1 +
 .../vc04_services/bcm2835-audio/bcm2835.c     |  20 ++--
 .../bcm2835-camera/bcm2835-camera.c           |  17 +--
 .../interface/vchiq_arm/vchiq_arm.c           |  48 ++++-----
 .../interface/vchiq_arm/vchiq_device.c        | 102 ++++++++++++++++++
 .../interface/vchiq_arm/vchiq_device.h        |  54 ++++++++++
 6 files changed, 196 insertions(+), 46 deletions(-)
 create mode 100644 drivers/staging/vc04_services/interface/vchiq_arm/vchiq_device.c
 create mode 100644 drivers/staging/vc04_services/interface/vchiq_arm/vchiq_device.h
  

Comments

Stefan Wahren July 19, 2023, 5:35 p.m. UTC | #1
Hi Umang,

Am 19.07.23 um 18:54 schrieb Umang Jain:
> Hi,
> 
> One comment,
> 
> On 7/19/23 10:14 PM, Umang Jain wrote:
>> The patch series added a new bus type vchiq_bus_type and registers
>> child devices in order to move them away from using platform
>> device/driver.
>>
>> Patch 1/5 and 2/5 adds a new bus_type and registers them to vchiq
>> interface
>>
>> Patch 3/5 and 4/5 moves the bcm2835-camera and bcm2835-audio
>> to the new bus respectively
>>
>> Patch 5/5 removes a platform registeration helper which is no
>> longer required.
>>
>> Changes in v9:
>> - Fix module autoloading
> 
> While the autoloading of bcm2835-audio, bcm2835-camera is fixed as part 
> of this series, there is one WARN coming in when bcm2835-audio is loaded 
> regarding dma_alloc_attr
> 
> dmesg output: https://paste.debian.net/plain/1286359

is it possible that after your patch series no DMA mask like 
DMA_BIT_MASK(32) is provided?

> 
> I am investigating further...
>> - Implement bus_type's probe() callback to load drivers
>> - Implement bus_type's uevent() to make sure appropriate drivers are
>>    loaded when device are registed from vchiq.
>>
>> Changes in v8:
>> - Drop dual licensing. Instead use GPL-2.0 only for patch 1/5
>>
>> Changes in v7:
>> (5 out of 6 patches from v6 merged)
>> - Split the main patch (6/6) as requested.
>> - Use struct vchiq_device * instead of struct device * in
>>    all bus functions.
>> - Drop additional name attribute displayed in sysfs (redundant info)
>> - Document vchiq_interface doesn't enumerate device discovery
>> - remove EXPORT_SYMBOL_GPL(vchiq_bus_type)
>>
>> Changes in v6:
>> - Split struct device and struct driver wrappers in vchiq_device.[ch]
>> - Move vchiq_bus_type definition to vchiq_device.[ch] as well
>> - return error on bus_register() failure
>> - drop dma_set_mask_and_coherent
>> - trivial variable name change
>>
>> Changes in v5:
>> - Fixup missing "staging: " in commits' subject line
>> - No code changes from v4
>>
>> Changes in v4:
>> - Introduce patches to drop include directives from Makefile
>>
>> Changes in v3:
>> - Rework entirely to replace platform devices/driver model
>>
>> -v2:
>> https://lore.kernel.org/all/20221222191500.515795-1-umang.jain@ideasonboard.com/
>>
>> -v1:
>> https://lore.kernel.org/all/20221220084404.19280-1-umang.jain@ideasonboard.com/
>>
>> Umang Jain (5):
>>    staging: vc04_services: vchiq_arm: Add new bus type and device type
>>    staging: vc04_services: vchiq_arm: Register vchiq_bus_type
>>    staging: bcm2835-camera: Register bcm2835-camera with vchiq_bus_type
>>    staging: bcm2835-audio: Register bcm2835-audio with vchiq_bus_type
>>    staging: vc04_services: vchiq_arm: Remove vchiq_register_child()
>>
>>   drivers/staging/vc04_services/Makefile        |   1 +
>>   .../vc04_services/bcm2835-audio/bcm2835.c     |  20 ++--
>>   .../bcm2835-camera/bcm2835-camera.c           |  17 +--
>>   .../interface/vchiq_arm/vchiq_arm.c           |  48 ++++-----
>>   .../interface/vchiq_arm/vchiq_device.c        | 102 ++++++++++++++++++
>>   .../interface/vchiq_arm/vchiq_device.h        |  54 ++++++++++
>>   6 files changed, 196 insertions(+), 46 deletions(-)
>>   create mode 100644 
>> drivers/staging/vc04_services/interface/vchiq_arm/vchiq_device.c
>>   create mode 100644 
>> drivers/staging/vc04_services/interface/vchiq_arm/vchiq_device.h
>>
>
  
Umang Jain July 20, 2023, 12:08 p.m. UTC | #2
Hi Stefan ,


On 7/19/23 11:05 PM, Stefan Wahren wrote:
> Hi Umang,
>
> Am 19.07.23 um 18:54 schrieb Umang Jain:
>> Hi,
>>
>> One comment,
>>
>> On 7/19/23 10:14 PM, Umang Jain wrote:
>>> The patch series added a new bus type vchiq_bus_type and registers
>>> child devices in order to move them away from using platform
>>> device/driver.
>>>
>>> Patch 1/5 and 2/5 adds a new bus_type and registers them to vchiq
>>> interface
>>>
>>> Patch 3/5 and 4/5 moves the bcm2835-camera and bcm2835-audio
>>> to the new bus respectively
>>>
>>> Patch 5/5 removes a platform registeration helper which is no
>>> longer required.
>>>
>>> Changes in v9:
>>> - Fix module autoloading
>>
>> While the autoloading of bcm2835-audio, bcm2835-camera is fixed as 
>> part of this series, there is one WARN coming in when bcm2835-audio 
>> is loaded regarding dma_alloc_attr
>>
>> dmesg output: https://paste.debian.net/plain/1286359
>
> is it possible that after your patch series no DMA mask like 
> DMA_BIT_MASK(32) is provided?

I am trying to set DMA_BIT_MASK(32) via  dma_set_mask_and_coherent() but 
it fails with -EIO
>
>>
>> I am investigating further...
>>> - Implement bus_type's probe() callback to load drivers
>>> - Implement bus_type's uevent() to make sure appropriate drivers are
>>>    loaded when device are registed from vchiq.
>>>
>>> Changes in v8:
>>> - Drop dual licensing. Instead use GPL-2.0 only for patch 1/5
>>>
>>> Changes in v7:
>>> (5 out of 6 patches from v6 merged)
>>> - Split the main patch (6/6) as requested.
>>> - Use struct vchiq_device * instead of struct device * in
>>>    all bus functions.
>>> - Drop additional name attribute displayed in sysfs (redundant info)
>>> - Document vchiq_interface doesn't enumerate device discovery
>>> - remove EXPORT_SYMBOL_GPL(vchiq_bus_type)
>>>
>>> Changes in v6:
>>> - Split struct device and struct driver wrappers in vchiq_device.[ch]
>>> - Move vchiq_bus_type definition to vchiq_device.[ch] as well
>>> - return error on bus_register() failure
>>> - drop dma_set_mask_and_coherent
>>> - trivial variable name change
>>>
>>> Changes in v5:
>>> - Fixup missing "staging: " in commits' subject line
>>> - No code changes from v4
>>>
>>> Changes in v4:
>>> - Introduce patches to drop include directives from Makefile
>>>
>>> Changes in v3:
>>> - Rework entirely to replace platform devices/driver model
>>>
>>> -v2:
>>> https://lore.kernel.org/all/20221222191500.515795-1-umang.jain@ideasonboard.com/ 
>>>
>>>
>>> -v1:
>>> https://lore.kernel.org/all/20221220084404.19280-1-umang.jain@ideasonboard.com/ 
>>>
>>>
>>> Umang Jain (5):
>>>    staging: vc04_services: vchiq_arm: Add new bus type and device type
>>>    staging: vc04_services: vchiq_arm: Register vchiq_bus_type
>>>    staging: bcm2835-camera: Register bcm2835-camera with vchiq_bus_type
>>>    staging: bcm2835-audio: Register bcm2835-audio with vchiq_bus_type
>>>    staging: vc04_services: vchiq_arm: Remove vchiq_register_child()
>>>
>>>   drivers/staging/vc04_services/Makefile        |   1 +
>>>   .../vc04_services/bcm2835-audio/bcm2835.c     |  20 ++--
>>>   .../bcm2835-camera/bcm2835-camera.c           |  17 +--
>>>   .../interface/vchiq_arm/vchiq_arm.c           |  48 ++++-----
>>>   .../interface/vchiq_arm/vchiq_device.c        | 102 
>>> ++++++++++++++++++
>>>   .../interface/vchiq_arm/vchiq_device.h        |  54 ++++++++++
>>>   6 files changed, 196 insertions(+), 46 deletions(-)
>>>   create mode 100644 
>>> drivers/staging/vc04_services/interface/vchiq_arm/vchiq_device.c
>>>   create mode 100644 
>>> drivers/staging/vc04_services/interface/vchiq_arm/vchiq_device.h
>>>
>>
  
Stefan Wahren July 20, 2023, 4:16 p.m. UTC | #3
Hi Umang,

Am 20.07.23 um 14:08 schrieb Umang Jain:
> Hi Stefan ,
> 
> 
> On 7/19/23 11:05 PM, Stefan Wahren wrote:
>> Hi Umang,
>>
>> Am 19.07.23 um 18:54 schrieb Umang Jain:
>>> Hi,
>>>
>>> One comment,
>>>
>>> On 7/19/23 10:14 PM, Umang Jain wrote:
>>>> The patch series added a new bus type vchiq_bus_type and registers
>>>> child devices in order to move them away from using platform
>>>> device/driver.
>>>>
>>>> Patch 1/5 and 2/5 adds a new bus_type and registers them to vchiq
>>>> interface
>>>>
>>>> Patch 3/5 and 4/5 moves the bcm2835-camera and bcm2835-audio
>>>> to the new bus respectively
>>>>
>>>> Patch 5/5 removes a platform registeration helper which is no
>>>> longer required.
>>>>
>>>> Changes in v9:
>>>> - Fix module autoloading
>>>
>>> While the autoloading of bcm2835-audio, bcm2835-camera is fixed as 
>>> part of this series, there is one WARN coming in when bcm2835-audio 
>>> is loaded regarding dma_alloc_attr
>>>
>>> dmesg output: https://paste.debian.net/plain/1286359
>>
>> is it possible that after your patch series no DMA mask like 
>> DMA_BIT_MASK(32) is provided?
> 
> I am trying to set DMA_BIT_MASK(32) via  dma_set_mask_and_coherent() but 
> it fails with -EIO

what happens if you assign DMA_BIT_MASK(32) to device->dev.dma_mask 
within vchiq_device_register()?

>>
>>>
>>> I am investigating further...
>>>> - Implement bus_type's probe() callback to load drivers
>>>> - Implement bus_type's uevent() to make sure appropriate drivers are
>>>>    loaded when device are registed from vchiq.
>>>>
>>>> Changes in v8:
>>>> - Drop dual licensing. Instead use GPL-2.0 only for patch 1/5
>>>>
>>>> Changes in v7:
>>>> (5 out of 6 patches from v6 merged)
>>>> - Split the main patch (6/6) as requested.
>>>> - Use struct vchiq_device * instead of struct device * in
>>>>    all bus functions.
>>>> - Drop additional name attribute displayed in sysfs (redundant info)
>>>> - Document vchiq_interface doesn't enumerate device discovery
>>>> - remove EXPORT_SYMBOL_GPL(vchiq_bus_type)
>>>>
>>>> Changes in v6:
>>>> - Split struct device and struct driver wrappers in vchiq_device.[ch]
>>>> - Move vchiq_bus_type definition to vchiq_device.[ch] as well
>>>> - return error on bus_register() failure
>>>> - drop dma_set_mask_and_coherent
>>>> - trivial variable name change
>>>>
>>>> Changes in v5:
>>>> - Fixup missing "staging: " in commits' subject line
>>>> - No code changes from v4
>>>>
>>>> Changes in v4:
>>>> - Introduce patches to drop include directives from Makefile
>>>>
>>>> Changes in v3:
>>>> - Rework entirely to replace platform devices/driver model
>>>>
>>>> -v2:
>>>> https://lore.kernel.org/all/20221222191500.515795-1-umang.jain@ideasonboard.com/
>>>>
>>>> -v1:
>>>> https://lore.kernel.org/all/20221220084404.19280-1-umang.jain@ideasonboard.com/
>>>>
>>>> Umang Jain (5):
>>>>    staging: vc04_services: vchiq_arm: Add new bus type and device type
>>>>    staging: vc04_services: vchiq_arm: Register vchiq_bus_type
>>>>    staging: bcm2835-camera: Register bcm2835-camera with vchiq_bus_type
>>>>    staging: bcm2835-audio: Register bcm2835-audio with vchiq_bus_type
>>>>    staging: vc04_services: vchiq_arm: Remove vchiq_register_child()
>>>>
>>>>   drivers/staging/vc04_services/Makefile        |   1 +
>>>>   .../vc04_services/bcm2835-audio/bcm2835.c     |  20 ++--
>>>>   .../bcm2835-camera/bcm2835-camera.c           |  17 +--
>>>>   .../interface/vchiq_arm/vchiq_arm.c           |  48 ++++-----
>>>>   .../interface/vchiq_arm/vchiq_device.c        | 102 
>>>> ++++++++++++++++++
>>>>   .../interface/vchiq_arm/vchiq_device.h        |  54 ++++++++++
>>>>   6 files changed, 196 insertions(+), 46 deletions(-)
>>>>   create mode 100644 
>>>> drivers/staging/vc04_services/interface/vchiq_arm/vchiq_device.c
>>>>   create mode 100644 
>>>> drivers/staging/vc04_services/interface/vchiq_arm/vchiq_device.h
>>>>
>>>
> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel