-
Notifications
You must be signed in to change notification settings - Fork 33
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
allwinner: Added support for allwinner H616 processor #58
base: main
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks a lot for the contribution!
I see a few failures unrelated to your change on the CI, I'll take a look to try to fix these. The PR will fail for the license header check at least, so you'll want to fix that.
A few changes requested, nothing significant.
I fixed the checks on origin/main, can you rebase and push again? Thanks! |
done |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Did you figure out why the checks still fail? Do you want help with diagnosing the problem?
Added support for the allwinner H616 processor. Apparently, this also works for H618 processor.
5da71bd
to
4abefc9
Compare
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #58 +/- ##
=======================================
+ Coverage 27.4% 28.2% +0.8%
=======================================
Files 89 91 +2
Lines 11011 8915 -2096
=======================================
- Hits 3014 2511 -503
+ Misses 7864 6263 -1601
- Partials 133 141 +8 ☔ View full report in Codecov by Sentry. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sounds good, thanks again!
There's a test failure to fix on Windows and then it's good to go.
@didiercrunch Thanks for this. I was working on creating an orange pi variation for H616, and I just found your PR. I'm working on an Orange Pi Zero 2W, and your work may help me (at least to figure what else I should fix) |
I am trying to get allwinner h64 h6 model b; should I use this as the basis for the addition? |
@irootyou probably. where is the documentation for this cpu? |
https://files.pine64.org/doc/datasheet/pine-h64/Allwinner_H6%20V200_User_Manual_V1.1.pdf I don't mind taking the JSON file, and implementing it in the exact format that the H5 and the other allwinner chips are implemented. Keeping everything completely consistent and ensuring it all builds. One issue I was having is that I have the dts file in my boot section, and I can obviously just directly use the host/periph library or even a more basic interaction with the gpio system; but when I do All of the lines show unnamed. I thought that had to do with the dts file that is definitely present and populated with information. It and the manual were my plan on how to build out the H6 functionality. I'd love to get experience doing this. So I would appreciate the opportunity to contribute in this way. Anyone have any idea on the unnamed lines of the gpiochip when trying to do Extra Resources https://files.pine64.org/doc/Pine%20H64/Pine%20H64%20model%20B%20Port%20Assignment%20rev2.0.pdf |
@gsexton FYI, he implemented the gpiochip support. |
Yes, of course, but its not quite implemented in a way that is consistent with the rest of the implemented chips. The alternative is sysfs which would already work. The biggest thing is to ensure all the specific details for the chips are provided in easy to use sub-libraries that build, test, and are completely consistent with existing design patterns. I have 2 other similar chips, I will guarantee they are all supported while I take a pass at this |
I tested the host/gpioioctl package using an OrangePi Zero 2. I used "gpio readall" to find the GPIO number. I then called:
and the library worked as expected. The LED blinked :) I also tested WaitForEdge by wiring GPIO73 to GPIO226 and it worked as expected. Examining the chips by using fmt.Println(gpioioctl.Chips[0]) showed that none of the lines had names assigned. Since I'm using the ioctl() to get the chip/line info, this is a kernel problem, and not a library problem. I'm running the Debian distribution with kernel 6.1.31. @maruel I see that the allwinner/gpio.go is using sysfs. allwinner should probably be updated in the same manner that the brcm283x package was. It would probably be best if someone who was more familiar with the architecture than me did it. |
the implementation models the kernel interface. A set of chips that have lines. It is compatible with the sysfs implementation.. I replaced the bcm283x use of sysfs in a couple of hours. The pr for that is here.
WaitForEdge does not work with Kernel 6.x with sysfs. That was the motivation for gpioioctl. I’ve tested with an H616 and the gpioioctl package works as expected. |
Added support for the allwinner H616 processor. Apparently, this also works for H618 processor.
Helps with #57 but doesn't not completely fix it.