mirror of
				https://github.com/NixOS/nixos-hardware.git
				synced 2025-11-04 17:27:14 +08:00 
			
		
		
		
	raspberry-pi/4: Add tc358743 option
This commit is contained in:
		@@ -4,6 +4,7 @@
 | 
			
		||||
  imports = [
 | 
			
		||||
    ./dwc2.nix
 | 
			
		||||
    ./modesetting.nix
 | 
			
		||||
    ./tc358743.nix
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  boot = {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										211
									
								
								raspberry-pi/4/tc358743.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										211
									
								
								raspberry-pi/4/tc358743.nix
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,211 @@
 | 
			
		||||
{ config, lib, ... }:
 | 
			
		||||
 | 
			
		||||
let
 | 
			
		||||
  cfg = config.hardware.raspberry-pi."4".tc358743;
 | 
			
		||||
in
 | 
			
		||||
{
 | 
			
		||||
  options.hardware = {
 | 
			
		||||
    raspberry-pi."4".tc358743 = {
 | 
			
		||||
      enable = lib.mkEnableOption ''
 | 
			
		||||
        Enable support for the Toshiba TC358743 HDMI-to-CSI-2 converter.
 | 
			
		||||
 | 
			
		||||
        This can be tested with a plugged in converter device and for example
 | 
			
		||||
        running ustreamer (which starts webservice providing a camera stream):
 | 
			
		||||
        ''${pkgs.ustreamer}/bin/ustreamer --persistent --dv-timings
 | 
			
		||||
      '';
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  config = lib.mkIf cfg.enable {
 | 
			
		||||
    hardware.deviceTree.overlays = [
 | 
			
		||||
      {
 | 
			
		||||
        name = "tc358743-overlay";
 | 
			
		||||
        dtsText = ''
 | 
			
		||||
          /dts-v1/;
 | 
			
		||||
 | 
			
		||||
          / {
 | 
			
		||||
            compatible = "brcm,bcm2711";
 | 
			
		||||
 | 
			
		||||
            fragment@0 {
 | 
			
		||||
              target = <0xffffffff>;
 | 
			
		||||
 | 
			
		||||
              __overlay__ {
 | 
			
		||||
                #address-cells = <0x01>;
 | 
			
		||||
                #size-cells = <0x00>;
 | 
			
		||||
                status = "okay";
 | 
			
		||||
 | 
			
		||||
                tc358743@0f {
 | 
			
		||||
                  compatible = "toshiba,tc358743";
 | 
			
		||||
                  reg = <0x0f>;
 | 
			
		||||
                  status = "okay";
 | 
			
		||||
                  clocks = <0x01>;
 | 
			
		||||
                  clock-names = "refclk";
 | 
			
		||||
 | 
			
		||||
                  port {
 | 
			
		||||
 | 
			
		||||
                    endpoint {
 | 
			
		||||
                      remote-endpoint = <0x02>;
 | 
			
		||||
                      clock-lanes = <0x00>;
 | 
			
		||||
                      clock-noncontinuous;
 | 
			
		||||
                      link-frequencies = <0x00 0x1cf7c580>;
 | 
			
		||||
                      phandle = <0x03>;
 | 
			
		||||
                    };
 | 
			
		||||
                  };
 | 
			
		||||
                };
 | 
			
		||||
              };
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            fragment@1 {
 | 
			
		||||
              target = <0xffffffff>;
 | 
			
		||||
 | 
			
		||||
              __overlay__ {
 | 
			
		||||
                status = "okay";
 | 
			
		||||
 | 
			
		||||
                port {
 | 
			
		||||
 | 
			
		||||
                  endpoint {
 | 
			
		||||
                    remote-endpoint = <0x03>;
 | 
			
		||||
                    phandle = <0x02>;
 | 
			
		||||
                  };
 | 
			
		||||
                };
 | 
			
		||||
              };
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            fragment@2 {
 | 
			
		||||
              target = <0x03>;
 | 
			
		||||
 | 
			
		||||
              __overlay__ {
 | 
			
		||||
                data-lanes = <0x01 0x02>;
 | 
			
		||||
              };
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            fragment@3 {
 | 
			
		||||
              target = <0x03>;
 | 
			
		||||
 | 
			
		||||
              __dormant__ {
 | 
			
		||||
                data-lanes = <0x01 0x02 0x03 0x04>;
 | 
			
		||||
              };
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            fragment@4 {
 | 
			
		||||
              target = <0xffffffff>;
 | 
			
		||||
 | 
			
		||||
              __overlay__ {
 | 
			
		||||
                status = "okay";
 | 
			
		||||
              };
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            fragment@5 {
 | 
			
		||||
              target = <0xffffffff>;
 | 
			
		||||
 | 
			
		||||
              __overlay__ {
 | 
			
		||||
                status = "okay";
 | 
			
		||||
              };
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            fragment@6 {
 | 
			
		||||
              target-path = [2f 00];
 | 
			
		||||
 | 
			
		||||
              __overlay__ {
 | 
			
		||||
 | 
			
		||||
                bridge-clk {
 | 
			
		||||
                  compatible = "fixed-clock";
 | 
			
		||||
                  #clock-cells = <0x00>;
 | 
			
		||||
                  clock-frequency = <0x19bfcc0>;
 | 
			
		||||
                  phandle = <0x01>;
 | 
			
		||||
                };
 | 
			
		||||
              };
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            fragment@7 {
 | 
			
		||||
              target = <0x02>;
 | 
			
		||||
 | 
			
		||||
              __overlay__ {
 | 
			
		||||
                data-lanes = <0x01 0x02>;
 | 
			
		||||
              };
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            fragment@8 {
 | 
			
		||||
              target = <0x02>;
 | 
			
		||||
 | 
			
		||||
              __dormant__ {
 | 
			
		||||
                data-lanes = <0x01 0x02 0x03 0x04>;
 | 
			
		||||
              };
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            __overrides__ {
 | 
			
		||||
              4lane = "\0\0\0\0-2+3-7+8";
 | 
			
		||||
              link-frequency = [00 00 00 03 6c 69 6e 6b 2d 66 72 65 71 75 65 6e 63 69 65 73 23 30 00];
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            __symbols__ {
 | 
			
		||||
              tc358743 = "/fragment@0/__overlay__/tc358743@0f/port/endpoint";
 | 
			
		||||
              csi1_ep = "/fragment@1/__overlay__/port/endpoint";
 | 
			
		||||
              tc358743_clk = "/fragment@6/__overlay__/bridge-clk";
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            __fixups__ {
 | 
			
		||||
              i2c_csi_dsi = "/fragment@0:target:0";
 | 
			
		||||
              csi1 = "/fragment@1:target:0";
 | 
			
		||||
              i2c0if = "/fragment@4:target:0";
 | 
			
		||||
              i2c0mux = "/fragment@5:target:0";
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            __local_fixups__ {
 | 
			
		||||
 | 
			
		||||
              fragment@0 {
 | 
			
		||||
 | 
			
		||||
                __overlay__ {
 | 
			
		||||
 | 
			
		||||
                  tc358743@0f {
 | 
			
		||||
                    clocks = <0x00>;
 | 
			
		||||
 | 
			
		||||
                    port {
 | 
			
		||||
 | 
			
		||||
                      endpoint {
 | 
			
		||||
                        remote-endpoint = <0x00>;
 | 
			
		||||
                      };
 | 
			
		||||
                    };
 | 
			
		||||
                  };
 | 
			
		||||
                };
 | 
			
		||||
              };
 | 
			
		||||
 | 
			
		||||
              fragment@1 {
 | 
			
		||||
 | 
			
		||||
                __overlay__ {
 | 
			
		||||
 | 
			
		||||
                  port {
 | 
			
		||||
 | 
			
		||||
                    endpoint {
 | 
			
		||||
                      remote-endpoint = <0x00>;
 | 
			
		||||
                    };
 | 
			
		||||
                  };
 | 
			
		||||
                };
 | 
			
		||||
              };
 | 
			
		||||
 | 
			
		||||
              fragment@2 {
 | 
			
		||||
                target = <0x00>;
 | 
			
		||||
              };
 | 
			
		||||
 | 
			
		||||
              fragment@3 {
 | 
			
		||||
                target = <0x00>;
 | 
			
		||||
              };
 | 
			
		||||
 | 
			
		||||
              fragment@7 {
 | 
			
		||||
                target = <0x00>;
 | 
			
		||||
              };
 | 
			
		||||
 | 
			
		||||
              fragment@8 {
 | 
			
		||||
                target = <0x00>;
 | 
			
		||||
              };
 | 
			
		||||
 | 
			
		||||
              __overrides__ {
 | 
			
		||||
                link-frequency = <0x00>;
 | 
			
		||||
              };
 | 
			
		||||
            };
 | 
			
		||||
          };
 | 
			
		||||
        '';
 | 
			
		||||
      }
 | 
			
		||||
    ];
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user