-
Notifications
You must be signed in to change notification settings - Fork 5.3k
Adds a driver for the new series of Studio DAC8x soundcards #7197
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
base: rpi-6.12.y
Are you sure you want to change the base?
Conversation
This adds a new driver for complex, multi-channel soundcards. The cards have their own management using an onboard MCU for clock generation and controls of various DACs or ADCs. Data provided by the MCU's register via I2C allows flexible configuration of a number of DAC and ADC channels, volumes, gain settings and other functions like mute and filter settings. Signed-off-by: j-schambacher <[email protected]>
Adds two overlays for clock consumer and provider mode. Only compatible with Pi 5 (bcm2712). Signed-off-by: j-schambacher <[email protected]>
Adding the Studio DAC8x to the Pi 5 defconfig. Signed-off-by: j-schambacher <[email protected]>
|
I'll wait for further feedback before I'll add the forgotten README .... |
| "gpio24", "gpio25", "gpio26", | ||
| "gpio27"; | ||
| bias-disable; | ||
| status = "okay"; |
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.
This line is always unnecessary (no status means enabled), except where it overwrites a status = "disabled";, but for gpio/pin declarations like this it is meaningless.
| "gpio24", "gpio25", "gpio26", | ||
| "gpio27"; | ||
| bias-disable; | ||
| status = "okay"; |
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.
Ditto
|
|
||
| static int hb_controller_probe(struct platform_device *pdev) | ||
| { | ||
| struct i2c_adapter *adap = i2c_get_adapter(1); |
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.
This was a surprise - embedding what is effectively the codec driver. How do you arrange the I2C1 is enabled, since the overlays aren't doing so?
| __overlay__ { | ||
| compatible = "hifiberry,hifiberry-studio-dac8x"; | ||
| i2s-controller = <&i2s_clk_consumer>; | ||
| clk-provider; |
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.
This would not be necessary if the Pro had a different compatible string, but you may have reasons to prefer doing it like this - I'm not really bothered either way.
With this PR we are trying a implement a new driver concept for more complex, multi-channel soundcards.
All cards have their own firmware on a MCU managing controls of various DACs or ADCs. During the initial setup the driver
reads some basic configuration like UUID, number of DAC and ADC channels etc. Based on this fundamental data volume and gain controls are generated and applied. Later, we may implement more specific controls based on UUID and/or other register settings. That's also the reason why there are already more definitions than the current driver uses.
We hope this approach could ease maintenance on HW and SW side.
Joerg