mirror of
				https://github.com/NixOS/nixos-hardware.git
				synced 2025-11-04 17:27:14 +08:00 
			
		
		
		
	raspberrypi."4": add DigiAMP+ overlay
This commit is contained in:
		
				
					committed by
					
						
						mergify[bot]
					
				
			
			
				
	
			
			
			
						parent
						
							71e0de7199
						
					
				
				
					commit
					11d50c5d52
				
			
							
								
								
									
										93
									
								
								raspberry-pi/4/digi-amp-plus.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										93
									
								
								raspberry-pi/4/digi-amp-plus.nix
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,93 @@
 | 
			
		||||
{ config, lib, ... }:
 | 
			
		||||
 | 
			
		||||
let
 | 
			
		||||
  cfg = config.hardware.raspberry-pi."4".digi-amp-plus;
 | 
			
		||||
in
 | 
			
		||||
{
 | 
			
		||||
  options.hardware = {
 | 
			
		||||
    raspberry-pi."4".digi-amp-plus = {
 | 
			
		||||
      enable = lib.mkEnableOption ''
 | 
			
		||||
        support for the IQaudIO DigiAMP+ Hat.
 | 
			
		||||
      '';
 | 
			
		||||
 | 
			
		||||
      unmuteAmp = lib.mkOption {
 | 
			
		||||
        type = lib.types.bool;
 | 
			
		||||
        default = false;
 | 
			
		||||
        description = lib.mdDoc ''
 | 
			
		||||
          "one-shot" unmute when kernel module first loads.
 | 
			
		||||
        '';
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      autoMuteAmp = lib.mkOption {
 | 
			
		||||
        type = lib.types.bool;
 | 
			
		||||
        default = true;
 | 
			
		||||
        description = lib.mdDoc ''
 | 
			
		||||
          Unmute the amp when an ALSA device is opened by a client. Mute, with a five-second delay when the ALSA device is closed.
 | 
			
		||||
          (Reopening the device within the five-second close window will cancel mute.)
 | 
			
		||||
        '';
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  config = lib.mkIf cfg.enable {
 | 
			
		||||
    hardware.raspberry-pi."4".apply-overlays-dtmerge.enable = lib.mkDefault true;
 | 
			
		||||
 | 
			
		||||
    hardware.deviceTree = {
 | 
			
		||||
      overlays = [
 | 
			
		||||
        # Adapted from to: https://github.com/raspberrypi/linux/blob/3ed6d34d53e94ecbebc64c8fa3d1b6d3c41db8fb/arch/arm/boot/dts/overlays/iqaudio-dacplus-overlay.dts
 | 
			
		||||
        # changes:
 | 
			
		||||
        # - modified top-level "compatible" field from bcm2835 to bcm2711
 | 
			
		||||
        # - s/i2s_clk_producer/i2s/ (name on bcm2711 platform)
 | 
			
		||||
        {
 | 
			
		||||
          name = "iqaudio-digiampplus-overlay";
 | 
			
		||||
          dtsText = ''
 | 
			
		||||
            /dts-v1/;
 | 
			
		||||
            /plugin/;
 | 
			
		||||
 | 
			
		||||
            / {
 | 
			
		||||
              compatible = "brcm,bcm2711";
 | 
			
		||||
 | 
			
		||||
              fragment@0 {
 | 
			
		||||
                target = <&i2s>;
 | 
			
		||||
                __overlay__ {
 | 
			
		||||
                  status = "okay";
 | 
			
		||||
                };
 | 
			
		||||
              };
 | 
			
		||||
 | 
			
		||||
              fragment@1 {
 | 
			
		||||
                target = <&i2c1>;
 | 
			
		||||
                __overlay__ {
 | 
			
		||||
                  #address-cells = <1>;
 | 
			
		||||
                  #size-cells = <0>;
 | 
			
		||||
                  status = "okay";
 | 
			
		||||
 | 
			
		||||
                  pcm5122@4c {
 | 
			
		||||
                    #sound-dai-cells = <0>;
 | 
			
		||||
                    compatible = "ti,pcm5122";
 | 
			
		||||
                    reg = <0x4c>;
 | 
			
		||||
                    AVDD-supply = <&vdd_3v3_reg>;
 | 
			
		||||
                    DVDD-supply = <&vdd_3v3_reg>;
 | 
			
		||||
                    CPVDD-supply = <&vdd_3v3_reg>;
 | 
			
		||||
                    status = "okay";
 | 
			
		||||
                  };
 | 
			
		||||
                };
 | 
			
		||||
              };
 | 
			
		||||
 | 
			
		||||
              fragment@2 {
 | 
			
		||||
                target = <&sound>;
 | 
			
		||||
                iqaudio_dac: __overlay__ {
 | 
			
		||||
                  compatible = "iqaudio,iqaudio-dac";
 | 
			
		||||
                  i2s-controller = <&i2s>;
 | 
			
		||||
                  mute-gpios = <&gpio 22 0>;
 | 
			
		||||
                  status = "okay";
 | 
			
		||||
                  ${lib.optionalString cfg.unmuteAmp "iqaudio-dac,unmute-amp;"}
 | 
			
		||||
                  ${lib.optionalString cfg.autoMuteAmp "iqaudio-dac,auto-mute-amp;"}
 | 
			
		||||
                };
 | 
			
		||||
              };
 | 
			
		||||
            };
 | 
			
		||||
          '';
 | 
			
		||||
        }
 | 
			
		||||
      ];
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user