Message ID | 20221112143411.517906-6-maccraft123mc@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Add more RK3326 gaming handhelds | expand |
On Sat, Nov 12, 2022 at 03:34:11PM +0100, Maya Matuszczyk wrote: > This device is a clone of Odroid Go Advance, with added PWM motor, internal > gamepad connected on USB instead of just having it be on GPIO + ADC, and > missing battery shunt resistor. I have concerns about using the rk817 battery driver with no shunt resistor. For the moment, that would result in wrong values being given for battery capacity and current. What could be done is to update the driver to only check voltage values when the shunt resistor is missing (since it's the current values and columb counter that gets affected with no resistor in place). For now though, I'd just remove the battery and charger since it's going to report the wrong data to users. > > There's also an LED on GPIO 77(I *guess* PB5 on &gpio2), that is controlled in a weird way: > > - It is set to red by setting output value to 1 > - Set to green by setting output value to 0 > - Set to yellow by setting gpio direction to input > > I have no idea how to describe that in DTS, without adding a custom > driver, for now it's just left out. Check out this document, it says you'd group them together under a multicolor led node: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/leds/leds-class-multicolor.yaml > > Signed-off-by: Maya Matuszczyk <maccraft123mc@gmail.com> > --- > arch/arm64/boot/dts/rockchip/Makefile | 1 + > .../dts/rockchip/rk3326-anbernic-rg351m.dts | 54 +++++++++++++++++++ > 2 files changed, 55 insertions(+) > create mode 100644 arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts > > diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile > index 142c83d2e5aa..b379516c15eb 100644 > --- a/arch/arm64/boot/dts/rockchip/Makefile > +++ b/arch/arm64/boot/dts/rockchip/Makefile > @@ -7,6 +7,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308-evb.dtb > dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308-roc-cc.dtb > dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308-rock-pi-s.dtb > dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3318-a95x-z2.dtb > +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-anbernic-rg351m.dtb > dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-odroid-go2.dtb > dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-odroid-go2-v11.dtb > dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-odroid-go3.dtb > diff --git a/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts b/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts > new file mode 100644 > index 000000000000..7f4726d4130e > --- /dev/null > +++ b/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts > @@ -0,0 +1,54 @@ > +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) > +/* > + * Copyright (c) 2019 Hardkernel Co., Ltd > + * Copyright (c) 2020 Theobroma Systems Design und Consulting GmbH > + * Copyright (c) 2022 Maya Matuszczyk <maccraft123mc@gmail.com> > + */ > + > +/dts-v1/; > +#include "rk3326-odroid-go.dtsi" > + > +/ { > + model = "Anbernic RG351M"; > + compatible = "anbernic,rg351m", "rockchip,rk3326"; > + > + battery: battery { > + compatible = "simple-battery"; > + charge-full-design-microamp-hours = <3450000>; > + charge-term-current-microamp = <300000>; > + constant-charge-current-max-microamp = <2000000>; > + constant-charge-voltage-max-microvolt = <4200000>; > + factory-internal-resistance-micro-ohms = <100000>; > + voltage-max-design-microvolt = <4100000>; > + voltage-min-design-microvolt = <3500000>; > + > + ocv-capacity-celsius = <20>; > + ocv-capacity-table-0 = <4046950 100>, <4001920 95>, <3967900 90>, <3919950 85>, > + <3888450 80>, <3861850 75>, <3831540 70>, <3799130 65>, > + <3768190 60>, <3745650 55>, <3726610 50>, <3711630 45>, > + <3696720 40>, <3685660 35>, <3674950 30>, <3663050 25>, > + <3649470 20>, <3635260 15>, <3616920 10>, <3592440 5>, > + <3574170 0>; > + }; > + > + vibrator { > + compatible = "pwm-vibrator"; > + pwms = <&pwm0 0 1000000 0>; > + pwm-names = "enable"; > + }; > +}; > + > +/delete-node/ &builtin_gamepad; > +/delete-node/ &vcc_host; /* conflicts with pwm vibration motor */ > + > +&internal_display { > + compatible = "elida,kd35t133"; > +}; > + > +&pwm0 { > + status = "okay"; > +}; > + > +&rk817_charger { > + monitored-battery = <&battery>; > +}; > -- > 2.38.1 >
pon., 14 lis 2022 o 15:23 Chris Morgan <macroalpha82@gmail.com> napisaĆ(a): > > On Sat, Nov 12, 2022 at 03:34:11PM +0100, Maya Matuszczyk wrote: > > This device is a clone of Odroid Go Advance, with added PWM motor, internal > > gamepad connected on USB instead of just having it be on GPIO + ADC, and > > missing battery shunt resistor. > > I have concerns about using the rk817 battery driver with no shunt > resistor. For the moment, that would result in wrong values being > given for battery capacity and current. What could be done is to > update the driver to only check voltage values when the shunt > resistor is missing (since it's the current values and columb counter > that gets affected with no resistor in place). For now though, I'd > just remove the battery and charger since it's going to report the > wrong data to users. I guess that's fair... the device literally has no shunt resistor and DT should reflect hardware. > > > > > There's also an LED on GPIO 77(I *guess* PB5 on &gpio2), that is controlled in a weird way: > > > > - It is set to red by setting output value to 1 > > - Set to green by setting output value to 0 > > - Set to yellow by setting gpio direction to input > > > > I have no idea how to describe that in DTS, without adding a custom > > driver, for now it's just left out. > > Check out this document, it says you'd group them together under a > multicolor led node: > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/leds/leds-class-multicolor.yaml As far as I know there is no support to controlling LED in a way that this device requires the LED to be controlled. It's just one GPIO, and setting it to outputting 0, outputting 1 or to input changes the color and there's no way to turn it off. Best Regards, Maya Matuszczyk > > > > > Signed-off-by: Maya Matuszczyk <maccraft123mc@gmail.com> > > --- > > arch/arm64/boot/dts/rockchip/Makefile | 1 + > > .../dts/rockchip/rk3326-anbernic-rg351m.dts | 54 +++++++++++++++++++ > > 2 files changed, 55 insertions(+) > > create mode 100644 arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts > > > > diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile > > index 142c83d2e5aa..b379516c15eb 100644 > > --- a/arch/arm64/boot/dts/rockchip/Makefile > > +++ b/arch/arm64/boot/dts/rockchip/Makefile > > @@ -7,6 +7,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308-evb.dtb > > dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308-roc-cc.dtb > > dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308-rock-pi-s.dtb > > dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3318-a95x-z2.dtb > > +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-anbernic-rg351m.dtb > > dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-odroid-go2.dtb > > dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-odroid-go2-v11.dtb > > dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-odroid-go3.dtb > > diff --git a/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts b/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts > > new file mode 100644 > > index 000000000000..7f4726d4130e > > --- /dev/null > > +++ b/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts > > @@ -0,0 +1,54 @@ > > +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) > > +/* > > + * Copyright (c) 2019 Hardkernel Co., Ltd > > + * Copyright (c) 2020 Theobroma Systems Design und Consulting GmbH > > + * Copyright (c) 2022 Maya Matuszczyk <maccraft123mc@gmail.com> > > + */ > > + > > +/dts-v1/; > > +#include "rk3326-odroid-go.dtsi" > > + > > +/ { > > + model = "Anbernic RG351M"; > > + compatible = "anbernic,rg351m", "rockchip,rk3326"; > > + > > + battery: battery { > > + compatible = "simple-battery"; > > + charge-full-design-microamp-hours = <3450000>; > > + charge-term-current-microamp = <300000>; > > + constant-charge-current-max-microamp = <2000000>; > > + constant-charge-voltage-max-microvolt = <4200000>; > > + factory-internal-resistance-micro-ohms = <100000>; > > + voltage-max-design-microvolt = <4100000>; > > + voltage-min-design-microvolt = <3500000>; > > + > > + ocv-capacity-celsius = <20>; > > + ocv-capacity-table-0 = <4046950 100>, <4001920 95>, <3967900 90>, <3919950 85>, > > + <3888450 80>, <3861850 75>, <3831540 70>, <3799130 65>, > > + <3768190 60>, <3745650 55>, <3726610 50>, <3711630 45>, > > + <3696720 40>, <3685660 35>, <3674950 30>, <3663050 25>, > > + <3649470 20>, <3635260 15>, <3616920 10>, <3592440 5>, > > + <3574170 0>; > > + }; > > + > > + vibrator { > > + compatible = "pwm-vibrator"; > > + pwms = <&pwm0 0 1000000 0>; > > + pwm-names = "enable"; > > + }; > > +}; > > + > > +/delete-node/ &builtin_gamepad; > > +/delete-node/ &vcc_host; /* conflicts with pwm vibration motor */ > > + > > +&internal_display { > > + compatible = "elida,kd35t133"; > > +}; > > + > > +&pwm0 { > > + status = "okay"; > > +}; > > + > > +&rk817_charger { > > + monitored-battery = <&battery>; > > +}; > > -- > > 2.38.1 > >
diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile index 142c83d2e5aa..b379516c15eb 100644 --- a/arch/arm64/boot/dts/rockchip/Makefile +++ b/arch/arm64/boot/dts/rockchip/Makefile @@ -7,6 +7,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308-evb.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308-roc-cc.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3308-rock-pi-s.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3318-a95x-z2.dtb +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-anbernic-rg351m.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-odroid-go2.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-odroid-go2-v11.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3326-odroid-go3.dtb diff --git a/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts b/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts new file mode 100644 index 000000000000..7f4726d4130e --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts @@ -0,0 +1,54 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Copyright (c) 2019 Hardkernel Co., Ltd + * Copyright (c) 2020 Theobroma Systems Design und Consulting GmbH + * Copyright (c) 2022 Maya Matuszczyk <maccraft123mc@gmail.com> + */ + +/dts-v1/; +#include "rk3326-odroid-go.dtsi" + +/ { + model = "Anbernic RG351M"; + compatible = "anbernic,rg351m", "rockchip,rk3326"; + + battery: battery { + compatible = "simple-battery"; + charge-full-design-microamp-hours = <3450000>; + charge-term-current-microamp = <300000>; + constant-charge-current-max-microamp = <2000000>; + constant-charge-voltage-max-microvolt = <4200000>; + factory-internal-resistance-micro-ohms = <100000>; + voltage-max-design-microvolt = <4100000>; + voltage-min-design-microvolt = <3500000>; + + ocv-capacity-celsius = <20>; + ocv-capacity-table-0 = <4046950 100>, <4001920 95>, <3967900 90>, <3919950 85>, + <3888450 80>, <3861850 75>, <3831540 70>, <3799130 65>, + <3768190 60>, <3745650 55>, <3726610 50>, <3711630 45>, + <3696720 40>, <3685660 35>, <3674950 30>, <3663050 25>, + <3649470 20>, <3635260 15>, <3616920 10>, <3592440 5>, + <3574170 0>; + }; + + vibrator { + compatible = "pwm-vibrator"; + pwms = <&pwm0 0 1000000 0>; + pwm-names = "enable"; + }; +}; + +/delete-node/ &builtin_gamepad; +/delete-node/ &vcc_host; /* conflicts with pwm vibration motor */ + +&internal_display { + compatible = "elida,kd35t133"; +}; + +&pwm0 { + status = "okay"; +}; + +&rk817_charger { + monitored-battery = <&battery>; +};
This device is a clone of Odroid Go Advance, with added PWM motor, internal gamepad connected on USB instead of just having it be on GPIO + ADC, and missing battery shunt resistor. There's also an LED on GPIO 77(I *guess* PB5 on &gpio2), that is controlled in a weird way: - It is set to red by setting output value to 1 - Set to green by setting output value to 0 - Set to yellow by setting gpio direction to input I have no idea how to describe that in DTS, without adding a custom driver, for now it's just left out. Signed-off-by: Maya Matuszczyk <maccraft123mc@gmail.com> --- arch/arm64/boot/dts/rockchip/Makefile | 1 + .../dts/rockchip/rk3326-anbernic-rg351m.dts | 54 +++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 arch/arm64/boot/dts/rockchip/rk3326-anbernic-rg351m.dts