mbox series

[v2,0/2] Add support for bcm2711 in vchiq_arm

Message ID 20220324172647.167617-1-athierry@redhat.com
Headers show
Series Add support for bcm2711 in vchiq_arm | expand

Message

Adrien Thierry March 24, 2022, 5:26 p.m. UTC
The goal of this patch series is to use the bcm2711 compatible string in
vchiq_arm for the Raspberry Pi 4. This allows using the downstream device
tree with the upstream kernel.

---
Changes since v1:
- Removed duplicate compatible string for bcm2711 in
  brcm,bcm2835-vchiq.yaml

Adrien Thierry (2):
  dt-bindings: soc: bcm: bcm2835-vchiq: Add support for bcm2711
  staging: vchiq_arm: Use bcm2711 compatible string for bcm2711-based
    RPi

 .../devicetree/bindings/soc/bcm/brcm,bcm2835-vchiq.yaml      | 5 +++++
 arch/arm/boot/dts/bcm2711-rpi.dtsi                           | 1 +
 .../staging/vc04_services/interface/vchiq_arm/vchiq_arm.c    | 5 +++++
 3 files changed, 11 insertions(+)


base-commit: ed4643521e6af8ab8ed1e467630a85884d2696cf

Comments

Krzysztof Kozlowski March 24, 2022, 6:49 p.m. UTC | #1
On 24/03/2022 18:26, Adrien Thierry wrote:
> Use bcm2711 compatible string in vchiq driver and device tree for
> bcm2711-based Raspberry Pi (Raspberry Pi 4). This is consistent with
> what the downstream device tree uses, and allows running the vchiq
> driver on the upstream kernel with the downstream device tree.
> 
> Signed-off-by: Adrien Thierry <athierry@redhat.com>
> ---
>  arch/arm/boot/dts/bcm2711-rpi.dtsi                           | 1 +

DTS is always separate, independent of device drivers. If you mix them,
it's usually a sign of ABI breakage or compatibility issues, so don't
mix them.

>  .../staging/vc04_services/interface/vchiq_arm/vchiq_arm.c    | 5 +++++
>  2 files changed, 6 insertions(+)
> 
> diff --git a/arch/arm/boot/dts/bcm2711-rpi.dtsi b/arch/arm/boot/dts/bcm2711-rpi.dtsi
> index ca266c5d9f9b..c868d1dcaba7 100644
> --- a/arch/arm/boot/dts/bcm2711-rpi.dtsi
> +++ b/arch/arm/boot/dts/bcm2711-rpi.dtsi
> @@ -70,5 +70,6 @@ blconfig: nvram@0 {
>  };
>  
>  &vchiq {
> +	compatible = "brcm,bcm2711-vchiq";

This looks weird. Is BCM2711 on Raspberry Pi 4 different than other
BCM2711? Commit msg also does not explain this.


>  	interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
>  };
> diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
> index 3a2e4582db8e..136c664132f4 100644
> --- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
> +++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
> @@ -81,6 +81,10 @@ static struct vchiq_drvdata bcm2836_drvdata = {
>  	.cache_line_size = 64,
>  };
>  
> +static struct vchiq_drvdata bcm2711_drvdata = {
> +	.cache_line_size = 64,
> +};
> +
>  struct vchiq_arm_state {
>  	/* Keepalive-related data */
>  	struct task_struct *ka_thread;
> @@ -1748,6 +1752,7 @@ void vchiq_platform_conn_state_changed(struct vchiq_state *state,
>  static const struct of_device_id vchiq_of_match[] = {
>  	{ .compatible = "brcm,bcm2835-vchiq", .data = &bcm2835_drvdata },
>  	{ .compatible = "brcm,bcm2836-vchiq", .data = &bcm2836_drvdata },
> +	{ .compatible = "brcm,bcm2711-vchiq", .data = &bcm2711_drvdata },

Just re-use bcm2836_drvdata instead of duplicating it.

>  	{},
>  };
>  MODULE_DEVICE_TABLE(of, vchiq_of_match);


Best regards,
Krzysztof
Stefan Wahren March 26, 2022, 9:04 a.m. UTC | #2
Hi Adrien,

Am 24.03.22 um 18:26 schrieb Adrien Thierry:
> The goal of this patch series is to use the bcm2711 compatible string in
> vchiq_arm for the Raspberry Pi 4.

there was already a patch series to enable VCHIQ on BCM2711, which 
wasn't accepted:

https://lore.kernel.org/linux-arm-kernel/20211014223230.451659-1-mguma@redhat.com/T/

Could you please explain your approach, especially leaving out 36 bit 
DMA support?

>   This allows using the downstream device
> tree with the upstream kernel.

This is a really bad idea and caused a lot of trouble in the past. A lot 
of the issues in the Fedora or Arch Linux forums or mailing lists 
results from this idea. It wastes the time of the kernel developer since 
these DT files has never been reviewed by the devicetree maintainers.

Best regards

>
> ---
> Changes since v1:
> - Removed duplicate compatible string for bcm2711 in
>    brcm,bcm2835-vchiq.yaml
>
> Adrien Thierry (2):
>    dt-bindings: soc: bcm: bcm2835-vchiq: Add support for bcm2711
>    staging: vchiq_arm: Use bcm2711 compatible string for bcm2711-based
>      RPi
>
>   .../devicetree/bindings/soc/bcm/brcm,bcm2835-vchiq.yaml      | 5 +++++
>   arch/arm/boot/dts/bcm2711-rpi.dtsi                           | 1 +
>   .../staging/vc04_services/interface/vchiq_arm/vchiq_arm.c    | 5 +++++
>   3 files changed, 11 insertions(+)
>
>
> base-commit: ed4643521e6af8ab8ed1e467630a85884d2696cf
Adrien Thierry April 7, 2022, 2:03 p.m. UTC | #3
Hi Stefan,

Thanks for your feedback.

> Could you please explain your approach, especially leaving out 36 bit
> DMA support?

I realize I overlooked this 36 bit DMA support issue, I need to think it
through a little bit more.

> This is a really bad idea and caused a lot of trouble in the past. A lot
> of the issues in the Fedora or Arch Linux forums or mailing lists
> results from this idea. It wastes the time of the kernel developer since
> these DT files has never been reviewed by the devicetree maintainers.

I understand, thanks! I find the downstream dtbs convenient because of the
overlay system that allows you to easily enable certain drivers, but I get
your point.

Best regards,

Adrien