Re: [PATCH v4 4/4] arm64: dts: allwinner: h616: Add BigTreeTech Pi support

Martin Botka
2023-08-24T20:49:32Z

On Mon, Aug 14 2023 at 12:47:59 PM +02:00:00, Martin Botka
<martin.botka@somainline.org> wrote:
>
>
> On Mon, Aug 14 2023 at 12:26:07 PM +02:00:00, Jernej Škrabec
> <jernej.skrabec@gmail.com> wrote:
>> Dne nedelja, 13. avgust 2023 ob 18:22:49 CEST je Martin Botka
>> \x7fnapisal(a):
>>> On Sun, Aug 13 2023 at 05:55:35 PM +02:00:00, Jernej Škrabec
>>>
>>> <jernej.skrabec@gmail.com> wrote:
>>> > Dne ponedeljek, 07. avgust 2023 ob 16:53:24 CEST je Martin Botka
>>> >
>>> > napisal(a):
>>> >> The BigTreeTech Pi is an H616 based board based on CB1.
>>> >> Just in Rpi format board.
>>> >>
>>> >> It features the same internals as BTT CB1 but adds:
>>> >> - Fan port
>>> >> - IR receiver
>>> >> - ADXL345 Accelerometer connector via SPI
>>> >> - 24V DC power supply via terminal plugs
>>> >> - USB to CAN module connector (The actual USB to CAN
>>> \x7f\x7fhappens on
>>> >>
>>> >> the
>>> >>
>>> >> external module)
>>> >>
>>> >> List of currently working things is same as BTT CB1 but also:
>>> >> - IR receiver
>>> >> - ADXL345 connector
>>> >>
>>> >> Signed-off-by: Martin Botka <martin@biqu3d.com>
>>> >> Reviewed-by: Andre Przywara <andre.przywara@arm.com>
>>> >> ---
>>> >>
>>> >> Changes in V2:
>>> >> - Add UART alongside aliases and chosen for it
>>> >> - Add model string
>>> >> - Enable IR receiver
>>> >> - Enable SPI0 for ADXL345 connector
>>> >>
>>> >> Changes in V3:
>>> >> - Add missing semicolons
>>> >> - Add pinctrl for SPI0
>>> >>
>>> >> arch/arm64/boot/dts/allwinner/Makefile | 1 +
>>> >> .../allwinner/sun50i-h616-bigtreetech-pi.dts | 70
>>> >>
>>> >> +++++++++++++++++++
>>> >>
>>> >> 2 files changed, 71 insertions(+)
>>> >> create mode 100644
>>> >>
>>> >> arch/arm64/boot/dts/allwinner/sun50i-h616-bigtreetech-pi.dts
>>> >>
>>> >> diff --git a/arch/arm64/boot/dts/allwinner/Makefile
>>> >> b/arch/arm64/boot/dts/allwinner/Makefile index
>>> >>
>>> >> 7b386428510b..0b6232a7f328
>>> >>
>>> >> 100644
>>> >> --- a/arch/arm64/boot/dts/allwinner/Makefile
>>> >> +++ b/arch/arm64/boot/dts/allwinner/Makefile
>>> >> @@ -39,5 +39,6 @@ dtb-$(CONFIG_ARCH_SUNXI) +=
>>> >>
>>> >> sun50i-h6-pine-h64-model-b.dtb
>>> >>
>>> >> dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-tanix-tx6.dtb
>>> >>
>>> >> dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-tanix-tx6-mini.dtb
>>> >> dtb-$(CONFIG_ARCH_SUNXI) +=
>>> \x7f\x7fsun50i-h616-bigtreetech-cb1-manta.dtb
>>> >>
>>> >> +dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h616-bigtreetech-pi.dtb
>>> >>
>>> >> dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h616-orangepi-zero2.dtb
>>> >> dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h616-x96-mate.dtb
>>> >>
>>> >> diff --git
>>> >>
>>> >> a/arch/arm64/boot/dts/allwinner/sun50i-h616-bigtreetech-pi.dts
>>> >>
>>> >> b/arch/arm64/boot/dts/allwinner/sun50i-h616-bigtreetech-pi.dts
>>> \x7f\x7fnew
>>> >>
>>> >> file
>>> >>
>>> >> mode 100644
>>> >> index 000000000000..b0d0386e8f13
>>> >> --- /dev/null
>>> >> +++
>>> \x7f\x7fb/arch/arm64/boot/dts/allwinner/sun50i-h616-bigtreetech-pi.dts
>>> >> @@ -0,0 +1,70 @@
>>> >> +// SPDX-License-Identifier: (GPL-2.0+ or MIT)
>>> >> +/*
>>> >> + * Copyright (C) 2023 Martin Botka <martin@biqu3d.com>.
>>> >> + */
>>> >> +
>>> >> +/dts-v1/;
>>> >> +
>>> >> +#include "sun50i-h616-bigtreetech-cb1.dtsi"
>>> >> +
>>> >> +/ {
>>> >> + model = "BigTreeTech Pi";
>>> >> + compatible = "bigtreetech,pi", "allwinner,sun50i-h616";
>>> >> +
>>> >> + aliases {
>>> >> + serial0 = &uart0;
>>> >> + };
>>> >> +
>>> >> + chosen {
>>> >> + stdout-path = "serial0:115200n8";
>>> >> + };
>>> >> +};
>>> >> +
>>> >> +&ehci0 {
>>> >> + status = "okay";
>>> >> +};
>>> >> +
>>> >> +&ehci1 {
>>> >> + status = "okay";
>>> >> +};
>>> >> +
>>> >> +&ehci2 {
>>> >> + status = "okay";
>>> >> +};
>>> >> +
>>> >> +&ehci3 {
>>> >> + status = "okay";
>>> >> +};
>>> >> +
>>> >> +&ir {
>>> >> + status = "okay";
>>> >> +};
>>> >> +
>>> >> +&ohci0 {
>>> >> + status = "okay";
>>> >> +};
>>> >> +
>>> >> +&ohci1 {
>>> >> + status = "okay";
>>> >> +};
>>> >> +
>>> >> +&ohci2 {
>>> >> + status = "okay";
>>> >> +};
>>> >> +
>>> >> +&ohci3 {
>>> >> + status = "okay";
>>> >> +};
>>> >> +
>>> >> +&spi0 {
>>> >> + /* SPI connection for onboard connector for ADXL345
>>> \x7f\x7faccelerometer
>>> >
>>> > */
>>> >
>>> >> + status = "okay";
>>> >> + pinctrl-names = "default";
>>> >> + pinctrl-0 = <&spi0_pins>, <&spi0_cs0_pin>;
>>> >
>>> > Driver and compatible for ADXL345 already exists, why don't you
>>> \x7f\x7fadd
>>> > child node
>>> > for it?
>>> >
>>> > Best regards,
>>> > Jernej
>>>
>>> Ah. So the ADXL345 actually wont be driven by kernel.
>>
>> DT is hardware description, it's not concerned what is done on
>> \x7fsoftware side,
>> either kernel or user space.
> Im aware. But this is not a device that is on the board. Its simply a
> connector for the device.
> Like Rpi has connectors for camera module :)
>>
>>> The SPI connection is enabled so that klipper (3d printer
>>> firmware) \x7f\x7fcan
>>> be told to look for ADXL345 at this SPI and use it on its own.
>>>
>>> Klipper will initialize and communicate with the ADXL on its own.
>>
>> What do you mean by firmware? User space app? In this case I suppose
>> \x7fyou'll use
>> direct SPI commands from user space? AFAIK that's less and less
>> \x7fsupported by
>> kernel (in contrast to I2C).
> Firmware as in 3d printer firmware. Klipper runs on the board (CB1 or
> BTT Pi) and is indeed an userspace app.
> And indeed uses direct SPI commands to the device.
>
> The reason for this is the flexibility.
> If Klipper read the values from kernel or well from the files the
> ADXL driver would create
> then it would be unable to communicate with ADXL that is on toolhead
> board. Or would have to have
> direct initialization either way for those. Thus it just controls the
> ADXL itself :)
>
> I understand that this may be bit confusing. If there is still
> something not clear im more then happy to explain in
> full detail how the userspace and 3D printer communicate :)
>
> Cheers,
> Martin.
Hello,
Jernej any comments on this ?
I would like to resolve this conversation :)
We do have a bunch of time before the new cycle but never hurts to get
it figured out ahead of time :)

Cheers,
Martin
>>
>> Best regards,
>> Jernej
>>
>>>
>>> >> +};
>>> >> +
>>> >> +&uart0 {
>>> >> + pinctrl-names = "default";
>>> >> + pinctrl-0 = <&uart0_ph_pins>;
>>> >> + status = "okay";
>>> >> +};
>>
>>
>>
>>
>