ma respeaker: init
This commit is contained in:
parent
c0c9a93295
commit
c82c590f19
122
makefu/2configs/audio/respeaker.nix
Normal file
122
makefu/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 New Issue
Block a user