Mainline kernel for Odroid Go Advance

Talking about OS and emulation core development
Post Reply
pehnen
Posts: 1
Joined: Sun Feb 23, 2020 9:12 pm
languages_spoken: english
ODROIDs: Odroid Go Advance
Has thanked: 0
Been thanked: 0
Contact:

Mainline kernel for Odroid Go Advance

Post by pehnen »

I am wondering if anyone is doing any efforts to make a mainline kernel run on the Odroid. Given that MALI G31 is supported in the Panfrost driver, and the Panfrost driver have been upstreamed I think the effort would be worth our while. Potentially we could get Vulkan support on the Go Advance, and unlock the full potential of the RK3326.

I'm thinking about extending the community maintained meta-odroid for yocto, is anybody else working on that?

cheers
Pehnen

hzulla
Posts: 12
Joined: Tue Feb 25, 2020 6:06 pm
languages_spoken: english, german
ODROIDs: Odroid Go Advance
Has thanked: 0
Been thanked: 0
Contact:

Re: Mainline kernel for Odroid Go Advance

Post by hzulla »

I'm also interested in making the mainline kernel run on the device. If there's any effort on making this possible, I'd love to hear about it.

hzulla
Posts: 12
Joined: Tue Feb 25, 2020 6:06 pm
languages_spoken: english, german
ODROIDs: Odroid Go Advance
Has thanked: 0
Been thanked: 0
Contact:

Re: Mainline kernel for Odroid Go Advance

Post by hzulla »

I see that there's code for some Odroid/Hardkernel products in the mainline kernel, so just wondering - what's Hardkernel's policy on this? Does Hardkernel try to upstream drivers and kernel code to the mainline kernel or is this done by community efforts?

crashoverride
Posts: 5487
Joined: Tue Dec 30, 2014 8:42 pm
languages_spoken: english
ODROIDs: C1
Has thanked: 0
Been thanked: 486 times
Contact:

Re: Mainline kernel for Odroid Go Advance

Post by crashoverride »

Upstreaming is typically done by the SoC manufacturer: Rockchip in this case.

As far as I am aware, Panfrost does not offer any support for Mali G31 (bifrost). In addition to a GPU driver, the GO Advance software (reference image) also requires a driver for the hardware "blit" engine (RGA2).

joy
Posts: 1584
Joined: Fri Oct 02, 2015 1:44 pm
languages_spoken: english
ODROIDs: .
Has thanked: 179 times
Been thanked: 210 times

Re: Mainline kernel for Odroid Go Advance

Post by joy »

I'm tracking upstreaming status of RK3326 because I need upstreaming u-boot to implement some further functions on OGA.

As I checked, there is no trace of RK3326 defconfig or dts on mainline 5.x kernel or u-boot so far.
http://opensource.rock-chips.com/wiki_Upstream_Kernel (4 Sep, 2019 updated)

But, recently, there seems to be progresses of PX30 that is similar to RK3326.
https://en.wikipedia.org/wiki/List_of_Rockchip_products

Slaminger
Posts: 303
Joined: Tue Jul 16, 2019 12:30 am
languages_spoken: English, French
ODROIDs: XU4, N2, N2+, C2, C4, OGA, OGA-BE, H2+, OGS, OGST
Location: Canada
Has thanked: 27 times
Been thanked: 87 times
Contact:

Re: Mainline kernel for Odroid Go Advance

Post by Slaminger »

any updates on this topic?

macromorgan
Posts: 116
Joined: Mon Dec 30, 2019 10:35 am
languages_spoken: english
ODROIDs: Odroid-GO
Has thanked: 6 times
Been thanked: 45 times
Contact:

Re: Mainline kernel for Odroid Go Advance

Post by macromorgan »

Slaminger wrote:
Fri Feb 19, 2021 2:19 am
any updates on this topic?
Yes, both U-boot and the mainline kernel support the Odroid Go Advance (1st edition only, though with a bit of jiggery-pokery you can get all versions working).

Details for u-boot: viewtopic.php?f=194&t=41777

Several other people are also working on the kernel. Note that on the mainline kernel the following doesn't work: Sound, WiFi (OGA BE), USB Suspend, Joystick (OGS only), Screen (OGS only), video encoder, crypto engine, battery details, charger details.

macc24
Posts: 46
Joined: Sun Sep 20, 2020 11:31 pm
languages_spoken: english polish
ODROIDs: GoA-BE, GoS
Has thanked: 6 times
Been thanked: 18 times
Contact:

Re: Mainline kernel for Odroid Go Advance

Post by macc24 »

crashoverride wrote:
Wed Feb 26, 2020 1:23 am
Upstreaming is typically done by the SoC manufacturer: Rockchip in this case.

As far as I am aware, Panfrost does not offer any support for Mali G31 (bifrost). In addition to a GPU driver, the GO Advance software (reference image) also requires a driver for the hardware "blit" engine (RGA2).
It does. https://gitlab.freedesktop.org/mesa/mes ... een.c#L826
Do I have to make a picture of glxgears on panfrost?

And there's already topic for this.
viewtopic.php?f=194&t=40455
macromorgan wrote:
Fri Feb 19, 2021 2:39 am
Several other people are also working on the kernel. Note that on the mainline kernel the following doesn't work: Sound, WiFi (OGA BE), USB Suspend, Joystick (OGS only), Screen (OGS only), video encoder, crypto engine, battery details, charger details.
Now what's broken is only Sound, WiFi (OGA BE), USB Suspend, Joystick (OGS only), video encoder, crypto engine :D

crashoverride
Posts: 5487
Joined: Tue Dec 30, 2014 8:42 pm
languages_spoken: english
ODROIDs: C1
Has thanked: 0
Been thanked: 486 times
Contact:

Re: Mainline kernel for Odroid Go Advance

Post by crashoverride »

macc24 wrote:
Sun Feb 21, 2021 4:25 pm
It does. https://gitlab.freedesktop.org/mesa/mes ... een.c#L826
Do I have to make a picture of glxgears on panfrost?
My post was made "Tue Feb 25, 2020 10:23 am ".

Support for G31/G52 was not introduced until May 29, 2020 (3 months later).
https://gitlab.freedesktop.org/mesa/mes ... d298ff8361

macc24
Posts: 46
Joined: Sun Sep 20, 2020 11:31 pm
languages_spoken: english polish
ODROIDs: GoA-BE, GoS
Has thanked: 6 times
Been thanked: 18 times
Contact:

Re: Mainline kernel for Odroid Go Advance

Post by macc24 »

crashoverride wrote:
Mon Feb 22, 2021 10:24 am
macc24 wrote:
Sun Feb 21, 2021 4:25 pm
It does. https://gitlab.freedesktop.org/mesa/mes ... een.c#L826
Do I have to make a picture of glxgears on panfrost?
My post was made "Tue Feb 25, 2020 10:23 am ".

Support for G31/G52 was not introduced until May 29, 2020 (3 months later).
https://gitlab.freedesktop.org/mesa/mes ... d298ff8361
Oh, it was in 2020 and not in 2021, oops, my bad

Slaminger
Posts: 303
Joined: Tue Jul 16, 2019 12:30 am
languages_spoken: English, French
ODROIDs: XU4, N2, N2+, C2, C4, OGA, OGA-BE, H2+, OGS, OGST
Location: Canada
Has thanked: 27 times
Been thanked: 87 times
Contact:

Re: Mainline kernel for Odroid Go Advance

Post by Slaminger »

macc24 wrote:
Sun Feb 21, 2021 4:25 pm
crashoverride wrote:
Wed Feb 26, 2020 1:23 am
Upstreaming is typically done by the SoC manufacturer: Rockchip in this case.

As far as I am aware, Panfrost does not offer any support for Mali G31 (bifrost). In addition to a GPU driver, the GO Advance software (reference image) also requires a driver for the hardware "blit" engine (RGA2).
It does. https://gitlab.freedesktop.org/mesa/mes ... een.c#L826
Do I have to make a picture of glxgears on panfrost?

And there's already topic for this.
viewtopic.php?f=194&t=40455
macromorgan wrote:
Fri Feb 19, 2021 2:39 am
Several other people are also working on the kernel. Note that on the mainline kernel the following doesn't work: Sound, WiFi (OGA BE), USB Suspend, Joystick (OGS only), Screen (OGS only), video encoder, crypto engine, battery details, charger details.
Now what's broken is only Sound, WiFi (OGA BE), USB Suspend, Joystick (OGS only), video encoder, crypto engine :D
those mostly sound like its not so much broken as the drivers are missing from the kernel, especially where the wifi and joystick are concerned, probably the sound too. Does it work via the headphone jack?

To elaborate, the OGA/OGA-BE/OGS have different joystick configs, so if your kernel is only has OGA/OGA-BE the OGS wont work for that reason, its in the updated kernel tho.

The OGA-BE will have a specific wifi driver it needs, which you can also take from the current kernel git

what type of video encoding are you attempting to use currently?

macc24
Posts: 46
Joined: Sun Sep 20, 2020 11:31 pm
languages_spoken: english polish
ODROIDs: GoA-BE, GoS
Has thanked: 6 times
Been thanked: 18 times
Contact:

Re: Mainline kernel for Odroid Go Advance

Post by macc24 »

Slaminger wrote:
Tue Mar 09, 2021 1:36 pm
those mostly sound like its not so much broken as the drivers are missing from the kernel, especially where the wifi and joystick are concerned, probably the sound too. Does it work via the headphone jack?

To elaborate, the OGA/OGA-BE/OGS have different joystick configs, so if your kernel is only has OGA/OGA-BE the OGS wont work for that reason, its in the updated kernel tho.

The OGA-BE will have a specific wifi driver it needs, which you can also take from the current kernel git

what type of video encoding are you attempting to use currently?
Driver for joystick is in mainline kernel, and it can be made to work with both go advance and go super, due to iio mux driver existing and it fails in the exact same place where go advance fails.
There is an issue where saradc driver doesn't setup trigger, and it has to be done manually via configfs.

>what type of video encoding are you attempting to use currently?
Did you mean decoding? It's all software for now

BTW, sound now works

macromorgan
Posts: 116
Joined: Mon Dec 30, 2019 10:35 am
languages_spoken: english
ODROIDs: Odroid-GO
Has thanked: 6 times
Been thanked: 45 times
Contact:

Re: Mainline kernel for Odroid Go Advance

Post by macromorgan »

Slaminger wrote:
Tue Mar 09, 2021 1:36 pm
macc24 wrote:
Sun Feb 21, 2021 4:25 pm
crashoverride wrote:
Wed Feb 26, 2020 1:23 am
Upstreaming is typically done by the SoC manufacturer: Rockchip in this case.

As far as I am aware, Panfrost does not offer any support for Mali G31 (bifrost). In addition to a GPU driver, the GO Advance software (reference image) also requires a driver for the hardware "blit" engine (RGA2).
It does. https://gitlab.freedesktop.org/mesa/mes ... een.c#L826
Do I have to make a picture of glxgears on panfrost?

And there's already topic for this.
viewtopic.php?f=194&t=40455
macromorgan wrote:
Fri Feb 19, 2021 2:39 am
Several other people are also working on the kernel. Note that on the mainline kernel the following doesn't work: Sound, WiFi (OGA BE), USB Suspend, Joystick (OGS only), Screen (OGS only), video encoder, crypto engine, battery details, charger details.
Now what's broken is only Sound, WiFi (OGA BE), USB Suspend, Joystick (OGS only), video encoder, crypto engine :D
those mostly sound like its not so much broken as the drivers are missing from the kernel, especially where the wifi and joystick are concerned, probably the sound too. Does it work via the headphone jack?

To elaborate, the OGA/OGA-BE/OGS have different joystick configs, so if your kernel is only has OGA/OGA-BE the OGS wont work for that reason, its in the updated kernel tho.

The OGA-BE will have a specific wifi driver it needs, which you can also take from the current kernel git

what type of video encoding are you attempting to use currently?
They are all missing drivers or functionality missing from existing drivers (the decoders, for example).

The sound driver is not upstream yet, but in the process of doing so I think I found a few bugs the Hardkernel folks might be interested in*. I'm kind of at an impasse currently as I still can't get the GPIO detect to work with the proper subsystems, but I suspect it's because I'm not getting my audio paths set up correctly. Here is my post to the ALSA list to see if I can solicit some experts: https://mailman.alsa-project.org/piperm ... 81865.html

WiFi will likely never be upstreamed, at least I have no desire to do so. That existing driver is a mess. Yes you can port that driver to a recent kernel, but you're going to have issues. Note for example that the resume from suspend is basically just a return 0, so in order to suspend properly you'll need to unload it and reload it before/after suspend.

For right now the only video codec hardware that's working is the VP8/MPEG2 decoders and the JPEG encoder; everything else isn't enabled/ported to mainline just yet. Also the RGA "works", but it's an M2M device in mainline rather than a full 2D accelerator, not that I really care about that.

The joystick works just fine on the OGA/OGA BE in mainline, but you have to set up a trigger manually to periodically poll the saradc for input. Set it up with a script on boot and you're in business with mainline. For the OGS we have to figure out how to get the mux to work with the adc-joystick driver.

*bugs include not resetting the path properly when you switch from speaker to headphones and back. As a result the R channel outputs the R but the L channel outputs the R+L. This is because right here the bits to change the output to class D mode get set which basically sends both L and R to a single channel. To fix it you need to make sure you set the bits back when you enable the headphone path here. Setting that register to 0x00 ought to fix it. Also if you don't add mic-in-differential to the devicetree the microphone won't work...
These users thanked the author macromorgan for the post:
glebm (Fri Mar 12, 2021 11:27 pm)

Slaminger
Posts: 303
Joined: Tue Jul 16, 2019 12:30 am
languages_spoken: English, French
ODROIDs: XU4, N2, N2+, C2, C4, OGA, OGA-BE, H2+, OGS, OGST
Location: Canada
Has thanked: 27 times
Been thanked: 87 times
Contact:

Re: Mainline kernel for Odroid Go Advance

Post by Slaminger »

macromorgan wrote:
Wed Mar 10, 2021 9:16 am
Slaminger wrote:
Tue Mar 09, 2021 1:36 pm
macc24 wrote:
Sun Feb 21, 2021 4:25 pm
crashoverride wrote:
Wed Feb 26, 2020 1:23 am
Upstreaming is typically done by the SoC manufacturer: Rockchip in this case.

As far as I am aware, Panfrost does not offer any support for Mali G31 (bifrost). In addition to a GPU driver, the GO Advance software (reference image) also requires a driver for the hardware "blit" engine (RGA2).
It does. https://gitlab.freedesktop.org/mesa/mes ... een.c#L826
Do I have to make a picture of glxgears on panfrost?

And there's already topic for this.
viewtopic.php?f=194&t=40455
macromorgan wrote:
Fri Feb 19, 2021 2:39 am
Several other people are also working on the kernel. Note that on the mainline kernel the following doesn't work: Sound, WiFi (OGA BE), USB Suspend, Joystick (OGS only), Screen (OGS only), video encoder, crypto engine, battery details, charger details.
Now what's broken is only Sound, WiFi (OGA BE), USB Suspend, Joystick (OGS only), video encoder, crypto engine :D
those mostly sound like its not so much broken as the drivers are missing from the kernel, especially where the wifi and joystick are concerned, probably the sound too. Does it work via the headphone jack?

To elaborate, the OGA/OGA-BE/OGS have different joystick configs, so if your kernel is only has OGA/OGA-BE the OGS wont work for that reason, its in the updated kernel tho.

The OGA-BE will have a specific wifi driver it needs, which you can also take from the current kernel git

what type of video encoding are you attempting to use currently?
They are all missing drivers or functionality missing from existing drivers (the decoders, for example).

The sound driver is not upstream yet, but in the process of doing so I think I found a few bugs the Hardkernel folks might be interested in*. I'm kind of at an impasse currently as I still can't get the GPIO detect to work with the proper subsystems, but I suspect it's because I'm not getting my audio paths set up correctly. Here is my post to the ALSA list to see if I can solicit some experts: https://mailman.alsa-project.org/piperm ... 81865.html

WiFi will likely never be upstreamed, at least I have no desire to do so. That existing driver is a mess. Yes you can port that driver to a recent kernel, but you're going to have issues. Note for example that the resume from suspend is basically just a return 0, so in order to suspend properly you'll need to unload it and reload it before/after suspend.

For right now the only video codec hardware that's working is the VP8/MPEG2 decoders and the JPEG encoder; everything else isn't enabled/ported to mainline just yet. Also the RGA "works", but it's an M2M device in mainline rather than a full 2D accelerator, not that I really care about that.

The joystick works just fine on the OGA/OGA BE in mainline, but you have to set up a trigger manually to periodically poll the saradc for input. Set it up with a script on boot and you're in business with mainline. For the OGS we have to figure out how to get the mux to work with the adc-joystick driver.

*bugs include not resetting the path properly when you switch from speaker to headphones and back. As a result the R channel outputs the R but the L channel outputs the R+L. This is because right here the bits to change the output to class D mode get set which basically sends both L and R to a single channel. To fix it you need to make sure you set the bits back when you enable the headphone path here. Setting that register to 0x00 ought to fix it. Also if you don't add mic-in-differential to the devicetree the microphone won't work...
makes sense, thanks for the answer, the progress its making is great. i'll check it out shortly

macc24
Posts: 46
Joined: Sun Sep 20, 2020 11:31 pm
languages_spoken: english polish
ODROIDs: GoA-BE, GoS
Has thanked: 6 times
Been thanked: 18 times
Contact:

Re: Mainline kernel for Odroid Go Advance

Post by macc24 »

Slaminger wrote:
Sun Mar 21, 2021 8:30 am
makes sense, thanks for the answer, the progress its making is great. i'll check it out shortly
BTW now input works perfectly on both GO-A and GO-S

Slaminger
Posts: 303
Joined: Tue Jul 16, 2019 12:30 am
languages_spoken: English, French
ODROIDs: XU4, N2, N2+, C2, C4, OGA, OGA-BE, H2+, OGS, OGST
Location: Canada
Has thanked: 27 times
Been thanked: 87 times
Contact:

Re: Mainline kernel for Odroid Go Advance

Post by Slaminger »

macc24 wrote:
Sun Mar 21, 2021 8:33 am
Slaminger wrote:
Sun Mar 21, 2021 8:30 am
makes sense, thanks for the answer, the progress its making is great. i'll check it out shortly
BTW now input works perfectly on both GO-A and GO-S
thats awesome! i cant wait to check it out

Slaminger
Posts: 303
Joined: Tue Jul 16, 2019 12:30 am
languages_spoken: English, French
ODROIDs: XU4, N2, N2+, C2, C4, OGA, OGA-BE, H2+, OGS, OGST
Location: Canada
Has thanked: 27 times
Been thanked: 87 times
Contact:

Re: Mainline kernel for Odroid Go Advance

Post by Slaminger »

Update??

macc24
Posts: 46
Joined: Sun Sep 20, 2020 11:31 pm
languages_spoken: english polish
ODROIDs: GoA-BE, GoS
Has thanked: 6 times
Been thanked: 18 times
Contact:

Re: Mainline kernel for Odroid Go Advance

Post by macc24 »

Ragnarok will use the mainline kernel

Post Reply

Return to “Platform development”

Who is online

Users browsing this forum: No registered users and 2 guests