mirror of
https://github.com/NixOS/nixos-hardware
synced 2024-12-27 20:19:45 +01:00
Merge pull request #269 from tfc/master
raspberry-pi/4: Add tc358743 option
This commit is contained in:
commit
35b2bfdce7
2 changed files with 212 additions and 0 deletions
|
@ -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>;
|
||||
};
|
||||
};
|
||||
};
|
||||
'';
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
Loading…
Reference in a new issue