Hi,
I have a Waveshare WM8960 1 Watt amp HAT and speakers that I would like to get working with piCorePlayer. Seems pretty clear to me that it is not supported at present; I can see one other post here where someone has mentioned a WM8960 based card and given up. I know I there's a lot of alternative known good options for not much money but:
Here's the Waveshare support info https://www.waveshare.com/wiki/WM8960_Audio_HAT
The driver code is here: https://github.com/waveshare/WM8960-Audio-HAT
The build process is designed for Raspbian, apt, dpkg etc. but I figure I'll massage the script to get the driver to build on piCore.
I grabbed the kernel source V5.4.83 to match the piCore 7 kernel version, linked it to the right place, did a couple of other tweaks and eventually convinced make to begin to compile the kernel module.
Compilation fails with various errors but lets start with the first one and see if the fix for that informs the subsequent errors. The error message clearly states that a function (snd_soc_component_read()) is given 2 arguments but expects 3. Digging around in https://elixir.bootlin.com I gather that function has changed at some point after my current kernel V5.4.83.
I've stopped short of posting the fine details of the errors for now. I'd like to establish if my general approach is correct first. What to do when you have driver code written for a later kernel?
So many questions:
Thanks in advance
Tom
I have a Waveshare WM8960 1 Watt amp HAT and speakers that I would like to get working with piCorePlayer. Seems pretty clear to me that it is not supported at present; I can see one other post here where someone has mentioned a WM8960 based card and given up. I know I there's a lot of alternative known good options for not much money but:
- the whole package, which includes headphone output, stereo speakers and a handy button, is quite neat
- I've bought it now (all be it on the cheap)
- it would be a interesting to learn the TinyCore way
- if it works I can give something back to the piCorePlayer community
Here's the Waveshare support info https://www.waveshare.com/wiki/WM8960_Audio_HAT
The driver code is here: https://github.com/waveshare/WM8960-Audio-HAT
The build process is designed for Raspbian, apt, dpkg etc. but I figure I'll massage the script to get the driver to build on piCore.
I grabbed the kernel source V5.4.83 to match the piCore 7 kernel version, linked it to the right place, did a couple of other tweaks and eventually convinced make to begin to compile the kernel module.
Compilation fails with various errors but lets start with the first one and see if the fix for that informs the subsequent errors. The error message clearly states that a function (snd_soc_component_read()) is given 2 arguments but expects 3. Digging around in https://elixir.bootlin.com I gather that function has changed at some point after my current kernel V5.4.83.
I've stopped short of posting the fine details of the errors for now. I'd like to establish if my general approach is correct first. What to do when you have driver code written for a later kernel?
So many questions:
- Do we have a feel for when the kernel will be upgraded next in piCorePlayer? TinyCore 13 is kernel 5.10.16 which has the newer version of the function. Am I best to wait till that time?
- Do I go ahead and hack at the c code? Not only does the function take different arguments, it returns differently too but its function is still basically the same.
- Might there be a trick where I compile against later kernel source and it still work?
- Am I going about this completely wrong?
Thanks in advance
Tom