ma respeaker: init
This commit is contained in:
parent
4cb18d5b6f
commit
3737832183
122
2configs/audio/respeaker.nix
Normal file
122
2configs/audio/respeaker.nix
Normal file
|
@ -0,0 +1,122 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
let
|
||||
seeed-voicecard = (pkgs.callPackage ../../5pkgs/seeed-voicecard { kernel = config.boot.kernelPackages.kernel; });
|
||||
in
|
||||
{
|
||||
hardware.raspberry-pi."4".i2c1.enable = true;
|
||||
hardware.raspberry-pi."4".audio.enable = true;
|
||||
hardware.raspberry-pi."4".apply-overlays-dtmerge.enable = true;
|
||||
hardware.deviceTree.filter = lib.mkForce "bcm2711-rpi-4-b.dtb";
|
||||
|
||||
security.rtkit.enable = true;
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
alsaUtils
|
||||
i2c-tools
|
||||
ponymix
|
||||
];
|
||||
|
||||
sound.enable = true;
|
||||
hardware.pulseaudio.enable = lib.mkForce false;
|
||||
services.pipewire = {
|
||||
enable = true;
|
||||
systemWide = true;
|
||||
alsa.enable = true;
|
||||
alsa.support32Bit = true;
|
||||
pulse.enable = true;
|
||||
};
|
||||
|
||||
services.pipewire.config.pipewire-pulse = {
|
||||
"pulse.properties"."server.address" = [ "unix:native" "tcp:4713" ];
|
||||
};
|
||||
|
||||
sound.extraConfig = ''
|
||||
pcm.!default {
|
||||
type asym
|
||||
playback.pcm "playback"
|
||||
capture.pcm "ac108"
|
||||
}
|
||||
|
||||
pcm.ac108 {
|
||||
type plug
|
||||
slave.pcm "hw:seeed4micvoicec"
|
||||
}
|
||||
'' ;
|
||||
|
||||
|
||||
boot.extraModulePackages = [
|
||||
seeed-voicecard
|
||||
];
|
||||
boot.initrd.kernelModules = [
|
||||
"snd-soc-seeed-voicecard"
|
||||
"snd-soc-ac108"
|
||||
"i2c-dev"
|
||||
#"i2c-bcm2708"
|
||||
#"snd-soc-wm8960"
|
||||
];
|
||||
|
||||
boot.loader.raspberryPi.firmwareConfig = [
|
||||
"dtparam=i2c_arm=on"
|
||||
"dtparam=i2s=on"
|
||||
"dtparam=spi=on"
|
||||
"dtparam=i2c1=on"
|
||||
# dtoverlay=seeeed-8mic-voicecard not required because we use hardware.deviceTree
|
||||
];
|
||||
hardware.deviceTree = {
|
||||
enable = true;
|
||||
overlays = [
|
||||
{ name = "respeaker-4mic"; dtsFile = "${seeed-voicecard}/lib/dts/seeed-4mic-voicecard-overlay.dts";}
|
||||
{ name = "spi"; dtsText = ''
|
||||
/dts-v1/;
|
||||
/plugin/;
|
||||
|
||||
/ {
|
||||
compatible = "raspberrypi";
|
||||
fragment@0 {
|
||||
target = <&spi>;
|
||||
__overlay__ {
|
||||
cs-gpios = <&gpio 8 1>, <&gpio 7 1>;
|
||||
status = "okay";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
spidev@0 {
|
||||
reg = <0>; // CE0
|
||||
spi-max-frequency = <500000>;
|
||||
compatible = "spidev";
|
||||
};
|
||||
|
||||
spidev@1 {
|
||||
reg = <1>; // CE1
|
||||
spi-max-frequency = <500000>;
|
||||
compatible = "spidev";
|
||||
};
|
||||
};
|
||||
};
|
||||
fragment@1 {
|
||||
target = <&alt0>;
|
||||
__overlay__ {
|
||||
// Drop GPIO 7, SPI 8-11
|
||||
brcm,pins = <4 5>;
|
||||
};
|
||||
};
|
||||
|
||||
fragment@2 {
|
||||
target = <&gpio>;
|
||||
__overlay__ {
|
||||
spi0_pins: spi0_pins {
|
||||
brcm,pins = <9 10 11>;
|
||||
brcm,function = <4>; // alt0
|
||||
};
|
||||
spi0_cs_pins: spi0_cs_pins {
|
||||
brcm,pins = <8 7>;
|
||||
brcm,function = <1>; // out
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
'';}
|
||||
];
|
||||
};
|
||||
}
|
Loading…
Reference in a new issue