#include #include #include / { host1x { vi_base: vi { num-channels = <1>; // Change 4->2 ports { #address-cells = <1>; #size-cells = <0>; vi_port0: port@0 { status = "okay"; reg = <0>; tc358743_vi_in1: endpoint { status = "okay"; port-index = <0>; /* CSI-B */ bus-width = <4>; /* Use CSI-B only */ remote-endpoint = <&tc358743_csi_out0>; }; }; }; }; csi_base: nvcsi { num-channels = <1>; #address-cells = <1>; #size-cells = <0>; channel@0 { reg = <0>; ports { #address-cells = <1>; #size-cells = <0>; port@0 { status = "okay"; reg = <0>; tc358743_csi_in0: endpoint@0 { status = "okay"; port-index = <0>; bus-width = <4>; remote-endpoint = <&tc358743_out1>; }; }; port@1 { reg = <1>; status = "okay"; tc358743_csi_out0: endpoint@1 { status = "okay"; remote-endpoint = <&tc358743_vi_in1>; }; }; }; }; }; i2c7: i2c@546c0000 { /* I2C_PM, "adapter" 6 */ status = "okay"; #address-cells = <1>; #size-cells = <0>; tc358840@0f { status = "okay"; compatible = "toshiba,tc358840"; reg = <0x0f>; /* shifted by 2 */ clocks = <&tegra_car TEGRA210_CLK_EXTERN3>; #clock-cells = <0>; clock-names = "extperiph1"; vif-supply = <&en_vdd_cam>; reset-gpios = <&gpio 149 0>; refclk_hz = <48000000>; /* 40 - 50 MHz */ interrupt-parent = <&gpio>; interrupts = ; /* Physical dimensions of sensor */ physical_w = "4.713"; physical_h = "3.494"; /* Sensor Model */ sensor_model ="tc358840"; ddc5v_delay = <1>; enable_hdcp = "false"; csi_port = <1>; lineinitcnt = <0x00000FA0>; lptxtimecnt = <0x00000004>; tclk_headercnt = <0x00180203>; tclk_trailcnt = <0x00040005>; ths_headercnt = <0x000D0004>; twakeup = <0x00003E80>; tclk_postcnt = <0x0000000A>; ths_trailcnt = <0x00080006>; hstxvregcnt = <0x00000020>; btacnt = <0>; /* PLL */ /* Bps per lane is (refclk_hz / pll_prd) * pll_fbd */ pll_prd = <10>; pll_fbd = <125>; pll_frs = <0>; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; tc358743_out1: endpoint { port-index = <0>; /* CSI A */ bus-width = <8>; phy_mode = "DPHY"; data-lanes = <1 2>; clock-lanes = <0>; clock-ncontinuous; link-frequencies = /bits/ 64 <594000000>;//297000000///594000000 remote-endpoint = <&tc358743_csi_in0>; }; }; }; }; }; }; regulators { /* Enable power supply for HDMI extension board */ /* VDD_SYS_EN */ en_vdd_cam: regulator@5 { regulator-boot-on; regulator-always-on; }; /* CAM_VDD_1V8_EN */ en_vdd_cam_1v8: regulator@211 { regulator-boot-on; regulator-always-on; }; /* CAM_VDD_1V2_EN */ en_vdd_cam_1v2: regulator@209 { regulator-boot-on; regulator-always-on; }; }; tegra-camera-platform { status = "okay"; compatible = "nvidia, tegra-camera-platform"; num_csi_lanes = <4>; max_lane_speed = <1500000>; min_bits_per_pixel = <10>; vi_peak_byte_per_pixel = <2>; vi_bw_margin_pct = <25>; max_pixel_rate = <750000>; isp_peak_byte_per_pixel = <5>; isp_bw_margin_pct = <25>; /** * The general guideline for naming badge_info contains 3 parts, and is as follows, * The first part is the camera_board_id for the module; if the module is in a FFD * platform, then use the platform name for this part. * The second part contains the position of the module, ex. “rear” or “front”. * The third part contains the last 6 characters of a part number which is found * in the module's specsheet from the vender. */ modules { module1 { status = "okay"; badge = "tc358840_top_i2c6_b"; position = "front"; orientation = "1"; drivernode0 { status = "okay"; /* Declare PCL support driver (classically known as guid) */ pcl_id = "v4l2_sensor"; /* Driver's v4l2 device name */ devname = "tc358840 6-000f"; /* Declare the device-tree hierarchy to driver instance */ proc-device-tree = "/proc/device-tree/host1x/i2c@546c0000/tc358840@0f"; }; }; }; }; };