Changes between Initial Version and Version 1 of ventana/DigitalIO

10/22/2017 05:28:45 AM (2 years ago)



  • ventana/DigitalIO

    v1 v1  
     2          <div id="wikipage" class="trac-content"><p>
     3</p><div class="wiki-toc">
     5  <li>
     6    <a href="#VentanaDigitalIOandI2C">Ventana Digital IO and I2C</a>
     7  </li>
     8  <li>
     9    <a href="#DIOandI2CMapping">DIO and I2C Mapping</a>
     10  </li>
     11  <li>
     12    <a href="#SoftwareGPIOConfiguration">Software GPIO Configuration</a>
     13  </li>
     14  <li>
     15    <a href="#ConfiguringGPIOHardware">Configuring GPIO Hardware</a>
     16  </li>
     17  <li>
     18    <a href="#ConfiguringPWMHardware">Configuring PWM Hardware</a>
     19  </li>
     20  <li>
     21    <a href="#Externaloroff-boardI2Csupport">External or off-board I2C support</a>
     22    <ol>
     23      <li>
     24        <a href="#AccessingI2Contheboard">Accessing I2C on the board</a>
     25        <ol>
     26          <li>
     27            <a href="#I2CattheDIOconnector">I2C at the DIO connector</a>
     28          </li>
     29          <li>
     30            <a href="#I2ConHDMIoutput">I2C on HDMI output</a>
     31          </li>
     32        </ol>
     33      </li>
     34    </ol>
     35  </li>
     36  <li>
     37    <a href="#AccessingI2CFromCCode">Accessing I2C From C Code</a>
     38  </li>
     39  <li>
     40    <a href="#Usefullinks">Useful links</a>
     41  </li>
     45<h1 id="VentanaDigitalIOandI2C">Ventana Digital IO and I2C</h1>
     47The intent of this page is to provide information about Ventana single board computers off-board digital IO signals including I2C
     50<span class="wikianchor" id="mapping"></span>
     52<h1 id="DIOandI2CMapping">DIO and I2C Mapping</h1>
     54Ventana baseboards provide 4 digital IO signals to a connector.  The IMX6 has 7 GPIO blocks having 32 GPIO's each which get mapped to gpio0 - through gpio 223.  The various ventana product hardware manuals contain a table of what pins on the Digital IO connector routes to what IMX6 GPIO.  In some cases these signals can be pinmux'd internally to one of four IMX6 PWM's.
     57Ventana GPIO Mapping:
     59<table class="wiki">
     60<tr><th> <strong>Board</strong>  </th><th> <strong>DIO</strong><sub>(1)</sub>  </th><th> <strong>Connector</strong><sub>(2)</sub> </th><th> <strong>IMX6_PAD</strong><sub>(3)</sub> </th><th> <strong>IMX6 GPIO</strong><sub>(4)</sub> </th><th>  </th><th> <strong>linux gpio</strong><sub>(5)</sub> </th><th> <strong>linux PWM</strong><sub>(6)</sub> </th><th> <strong>I2C</strong><sub>(7)</sub>
     61</th></tr><tr><td> GW51xx         </td><td> DIO0 </td><td> J11.5     </td><td> PAD_SD1_DATA0 </td><td> GPIO1_IO16 </td><td> </td><td> gpio-16       </td><td> -         </td><td> -
     62</td></tr><tr><td> GW51xx         </td><td> DIO1 </td><td> J11.7     </td><td> PAD_SD1_DATA2 </td><td> GPIO1_IO19 </td><td> </td><td> gpio-19       </td><td> PWM2      </td><td> -
     63</td></tr><tr><td> GW51xx         </td><td> DIO2 </td><td> J11.6     </td><td> PAD_SD1_DATA1 </td><td> GPIO1_IO17 </td><td> </td><td> gpio-17       </td><td> PWM3      </td><td> -
     64</td></tr><tr><td> GW51xx         </td><td> DIO3 </td><td> J11.8     </td><td> PAD_SD1_CMD   </td><td> GPIO1_IO18 </td><td> </td><td> gpio-18       </td><td> PWM4      </td><td> -
     66</td></tr><tr><td> GW52xx         </td><td> DIO0 </td><td> J4.1      </td><td> PAD_SD1_DATA0 </td><td> GPIO1_IO16 </td><td> </td><td> gpio-16       </td><td> -         </td><td> i2c-2 SDA <sub>(9)</sub>
     67</td></tr><tr><td> GW52xx         </td><td> DIO1 </td><td> J4.2      </td><td> PAD_SD1_DATA2 </td><td> GPIO1_IO19 </td><td> </td><td> gpio-19       </td><td> PWM2      </td><td> i2c-2 SCL <sub>(9)</sub>
     68</td></tr><tr><td> GW52xx         </td><td> DIO2 </td><td> J4.3      </td><td> PAD_SD1_DATA1 </td><td> GPIO1_IO17 </td><td> </td><td> gpio-17       </td><td> PWM3      </td><td> -
     69</td></tr><tr><td> GW52xx         </td><td> DIO3 </td><td> J4.4      </td><td> PAD_SD1_CLK   </td><td> GPIO1_IO20 </td><td> </td><td> gpio-20       </td><td> -         </td><td> -
     71</td></tr><tr><td> GW53xx         </td><td> DIO0 </td><td> J4.1      </td><td> PAD_SD1_DATA0 </td><td> GPIO1_IO16 </td><td> </td><td> gpio-16       </td><td> -         </td><td> i2c-2 SDA
     72</td></tr><tr><td> GW53xx         </td><td> DIO1 </td><td> J4.2      </td><td> PAD_SD1_DATA2 </td><td> GPIO1_IO19 </td><td> </td><td> gpio-19       </td><td> PWM2      </td><td> i2c-2 SCL
     73</td></tr><tr><td> GW53xx         </td><td> DIO2 </td><td> J4.3      </td><td> PAD_SD1_DATA1 </td><td> GPIO1_IO17 </td><td> </td><td> gpio-17       </td><td> PWM3      </td><td> -
     74</td></tr><tr><td> GW53xx         </td><td> DIO3 </td><td> J4.4      </td><td> PAD_SD1_CLK   </td><td> GPIO1_IO20 </td><td> </td><td> gpio-20       </td><td> -         </td><td> -
     76</td></tr><tr><td> GW54xx         </td><td> DIO0 </td><td> J16.1     </td><td> PAD_GPIO_9    </td><td> GPIO1_IO09 </td><td> </td><td> gpio-9        </td><td> PWM1      </td><td> i2c-2 SDA
     77</td></tr><tr><td> GW54xx         </td><td> DIO1 </td><td> J16.2     </td><td> PAD_SD1_DATA2 </td><td> GPIO1_IO19 </td><td> </td><td> gpio-19       </td><td> PWM2      </td><td> i2c-2 SCL
     78</td></tr><tr><td> GW54xx         </td><td> DIO2 </td><td> J16.3     </td><td> PAD_SD4_DATA1 </td><td> GPIO2_IO09 </td><td> </td><td> gpio-41       </td><td> PWM3      </td><td> -
     79</td></tr><tr><td> GW54xx         </td><td> DIO3<sub>(10)</sub> </td><td> J16.4     </td><td> PAD_SD4_DATA2 </td><td> GPIO2_IO10 </td><td> </td><td> gpio-42       </td><td> PWM4      </td><td> -
     81</td></tr><tr><td> GW551x         </td><td> DIO1 </td><td> J3.19     </td><td> PAD_SD1_DATA2 </td><td> GPIO1_IO19 </td><td> </td><td> gpio-19       </td><td> PWM2      </td><td> -
     82</td></tr><tr><td> GW551x         </td><td> DIO2 </td><td> J3.20     </td><td> PAD_SD1_DATA1 </td><td> GPIO2_IO17 </td><td> </td><td> gpio-17       </td><td> PWM3      </td><td> -
     84</tr><tr><td> GW551x         </td><td>  </td><td> J3.7     </td><td>  </td><td>  </td><td> </td><td style="text-align: center">        </td><td style="text-align: center">       </td><td> I2C SDA
     85</td></tr><tr><td> GW551x         </td><td>  </td><td> J3.8     </td><td>  </td><td>  </td><td> </td><td style="text-align: center">        </td><td style="text-align: center">       </td><td> I2C SCL
     88</td></tr><tr><td> GW552x         </td><td> DIO0 </td><td> J8.9      </td><td> PAD_SD1_DATA0   </td><td> GPIO1_IO16 </td><td> </td><td> gpio-16       </td><td> -         </td><td> -
     89</td></tr><tr><td> GW552x         </td><td> DIO1 </td><td> J8.11     </td><td> PAD_SD1_DATA2   </td><td> GPIO1_IO19 </td><td> </td><td> gpio-19       </td><td> PWM2      </td><td> -
     90</td></tr><tr><td> GW552x         </td><td> DIO2 </td><td> J8.10     </td><td> PAD_SD1_DATA1   </td><td> GPIO1_IO17 </td><td> </td><td> gpio-17       </td><td> PWM3      </td><td> -
     91</td></tr><tr><td> GW552x         </td><td> DIO3 </td><td> J8.12     </td><td> PAD_SD1_CLK     </td><td> GPIO1_IO20 </td><td> </td><td> gpio-20       </td><td> -         </td><td> -
     92</td></tr><tr><td> GW552x         </td><td> DIO4 </td><td> J8.15     </td><td> PAD_CSI0_PIXCLK </td><td> GPIO5_IO18 </td><td> </td><td> gpio-146    </td><td> -         </td><td> -
     93</td></tr><tr><td> GW552x         </td><td> DIO5 </td><td> J8.17     </td><td style="text-align: right"> PAD_CSI0_DATA_EN</td><td> GPIO5_IO20 </td><td> </td><td> gpio-148    </td><td> -         </td><td> -
     94</td></tr><tr><td> GW552x         </td><td> DIO6 </td><td> J8.16     </td><td> PAD_CSI0_VSYNC  </td><td> GPIO5_IO21 </td><td> </td><td> gpio-149    </td><td> -         </td><td> -
     95</td></tr><tr><td> GW552x         </td><td> DIO7 </td><td> J8.18     </td><td> PAD_CSI0_DAT4   </td><td> GPIO5_IO22 </td><td> </td><td> gpio-150    </td><td> -         </td><td> -
     96</td></tr><tr><td> GW552x         </td><td> DIO8 </td><td> J8.1      </td><td> PAD_CSI0_DAT5   </td><td> GPIO5_IO23 </td><td> </td><td> gpio-151    </td><td> -         </td><td> -
     97</td></tr><tr><td> GW552x         </td><td> DIO9 </td><td> J8.2      </td><td> PAD_CSI0_DAT7   </td><td> GPIO5_IO25 </td><td> </td><td> gpio-153    </td><td> -         </td><td> -
     99</td></tr><tr><td> GW553x         </td><td> DIO0 </td><td> J10.5     </td><td> PAD_SD1_DATA0 </td><td> GPIO1_IO16 </td><td> </td><td> gpio-16       </td><td> -         </td><td> -
     100</td></tr><tr><td> GW553x         </td><td> DIO1 </td><td> J10.7     </td><td> PAD_SD1_DATA2 </td><td> GPIO1_IO19 </td><td> </td><td> gpio-19       </td><td> PWM2      </td><td> -
     101</td></tr><tr><td> GW553x         </td><td> DIO2 </td><td> J10.6     </td><td> PAD_SD1_DATA1 </td><td> GPIO1_IO17 </td><td> </td><td> gpio-17       </td><td> PWM3      </td><td> -
     102</td></tr><tr><td> GW553x         </td><td> DIO3 </td><td> J10.8     </td><td> PAD_SD1_CMD   </td><td> GPIO1_IO18 </td><td> </td><td> gpio-18       </td><td> PWM4         </td><td>
     103</td></tr><tr><td> -
     104</td></tr><tr><td> GW16111<sub>(8)</sub> </td><td> P0.0 </td><td> J12.1 (IO0) </td><td> -             </td><td> -          </td><td> </td><td> gpio-224       </td><td> -         </td><td> -
     105</td></tr><tr><td> GW16111<sub>(8)</sub> </td><td> P0.1 </td><td> J12.2 (IO1) </td><td> -             </td><td> -          </td><td> </td><td> gpio-225       </td><td> -         </td><td> -
     106</td></tr><tr><td> GW16111<sub>(8)</sub> </td><td> P0.2 </td><td> J12.3 (IO2) </td><td> -             </td><td> -          </td><td> </td><td> gpio-226       </td><td> -         </td><td> -
     107</td></tr><tr><td> GW16111<sub>(8)</sub> </td><td> P0.3 </td><td> J12.4 (IO3) </td><td> -             </td><td> -          </td><td> </td><td> gpio-227       </td><td> -         </td><td> -
     108</td></tr><tr><td> GW16111<sub>(8)</sub> </td><td> P0.4 </td><td> J13.1 (IO4)    </td><td> -             </td><td> -          </td><td> </td><td> gpio-228       </td><td> -         </td><td> -
     109</td></tr><tr><td> GW16111<sub>(8)</sub> </td><td> P0.5 </td><td> J13.2 (IO5)     </td><td> -             </td><td> -          </td><td> </td><td> gpio-229       </td><td> -         </td><td> -
     110</td></tr><tr><td> GW16111<sub>(8)</sub> </td><td> P0.6 </td><td> J13.3 (IO6)    </td><td> -             </td><td> -          </td><td> </td><td> gpio-230       </td><td> -         </td><td> -
     111</td></tr><tr><td> GW16111<sub>(8)</sub> </td><td> P0.7 </td><td> J13.4 (IO7)    </td><td> -             </td><td> -          </td><td> </td><td> gpio-231       </td><td> -         </td><td> -
     112</td></tr><tr><td> GW16111<sub>(8)</sub> </td><td> P1.0 </td><td> J14.1 (IO8)    </td><td> -             </td><td> -          </td><td> </td><td> gpio-232       </td><td> -         </td><td> -
     113</td></tr><tr><td> GW16111<sub>(8)</sub> </td><td> P1.1 </td><td> J14.2 (IO9)    </td><td> -             </td><td> -          </td><td> </td><td> gpio-233       </td><td> -         </td><td> -
     114</td></tr><tr><td> GW16111<sub>(8)</sub> </td><td> P1.2 </td><td> J14.3 (IO10)    </td><td> -             </td><td> -          </td><td> </td><td> gpio-234       </td><td> -         </td><td> -
     115</td></tr><tr><td> GW16111<sub>(8)</sub> </td><td> P1.3 </td><td> J14.4 (IO11)    </td><td> -             </td><td> -          </td><td> </td><td> gpio-235       </td><td> -         </td><td> -
     116</td></tr><tr><td> GW16111<sub>(8)</sub> </td><td> P1.4 </td><td> J15.1 (IO12)    </td><td> -             </td><td> -          </td><td> </td><td> gpio-236       </td><td> -         </td><td> -
     117</td></tr><tr><td> GW16111<sub>(8)</sub> </td><td> P1.5 </td><td> J15.2 (IO13)    </td><td> -             </td><td> -          </td><td> </td><td> gpio-237       </td><td> -         </td><td> -
     118</td></tr><tr><td> GW16111<sub>(8)</sub> </td><td> P1.6 </td><td> J15.3 (IO14)    </td><td> -             </td><td> -          </td><td> </td><td> gpio-238       </td><td> -         </td><td> -
     119</td></tr><tr><td> GW16111<sub>(8)</sub> </td><td> P1.7 </td><td> J15.4 (IO15)    </td><td> -             </td><td> -          </td><td> </td><td> gpio-239       </td><td> -         </td><td> -
     122<ol><li>This is the signal name from the <a class="ext-link" href=""><span class="icon">​</span>Ventana hardware manuals</a>
     123</li><li>This is the connector pinout.  The 5th pin on 5-pin connectors is GND
     124</li><li>Consult the IMX6 Reference manuals for PAD info: <a class="ext-link" href=""><span class="icon">​</span>IMX6DQRM</a> <a class="ext-link" href=""><span class="icon">​</span>IMX6SDLRM</a>
     125</li><li>This is the GPIO block and IO the PAD is pinmux'd to when hwconfig is configured for GPIO
     126</li><li>This is the gpio mapped in linux accessible via /sys/class/gpio.  Note that the pinmux and IO configuration are done by the <a class="wiki" href="/wiki/ventana/bootloader#DIOconfiguration">bootloader</a>, but you will need to manually export the GPIO to use it (see <a class="wiki" href="/wiki/gpio">here</a> for details)
     127</li><li>This is the PWM that the PAD is pinmux'd to by the bootloader with hwconfig is conifgured for PWM. <a class="wiki" href="/wiki/ventana/bootloader#DIOconfiguration">u-boot hwconfig to configure DIO pinmux/config</a>
     128</li><li>GW54xx and GW53xx (revision B and above) can extend the 2nd CPU I2C bus (I2C3 available as /dev/i2c-2) out the DIO connector if gpio-101 is driven high.  see below
     129</li><li>The GW16111 is an expansion board for the GW551x family. It has a (PCA9555) digital io expansion chip that gives it 16 GPIO's. There are 2 8 bit ports for 16 bits total (P0 &amp; P1). Each IO has a series current limiting resistor of 332 Ohms.
     130</li><li>GW52xx does not have an i2c buffer for protection
     131</li><li>The GW5400 PWM4 can be routed to two different pads/connectors. By default the Ventana kernel device-tree's map PWM4 to the J6.5 backlight connector. If you want to use PWM4 as DIO3 on J16.4 you need to change the kernel device-tree and should contact ​support@… for details.
     133The pinmux and IO configuration is done by the bootloader depending on the hwconfig env variable.  For information on how to configure that see <a class="wiki" href="/wiki/ventana/bootloader#DIOconfiguration">hwconfig</a>
     135<h1 id="SoftwareGPIOConfiguration">Software GPIO Configuration</h1>
     137Please visit this link to find out more information about using GPIO's in Linux
     139<ul><li><a class="wiki" href="/wiki/gpio">GPIO basics and Linux configuraiton</a>
     140</li></ul><h1 id="ConfiguringGPIOHardware">Configuring GPIO Hardware</h1>
     142<strong>Typically not needed as defaults should work</strong>
     143Please visit this link to find out how to configure the pin function and IO driver details (pull-up, drive str, etc) of the Digital IO pins:
     145<ul><li><a class="wiki" href="/wiki/ventana/bootloader#DIOconfiguration">u-boot hwconfig to configure DIO pinmux/config</a>
     146</li></ul><h1 id="ConfiguringPWMHardware">Configuring PWM Hardware</h1>
     148See <a class="wiki" href="/wiki/linux/pwm">linux/pwm</a>
     151<span class="wikianchor" id="external-i2c"></span>
     153<h1 id="Externaloroff-boardI2Csupport">External or off-board I2C support</h1>
     155<strong>Please consult the <a class="ext-link" href=""><span class="icon">​</span>Hardware Manuals</a> for pint output and support]
     157<table class="wiki">
     158<tr><th> Model   </th><th> external I2C Support            </th><th> Notes                   
     159</th></tr><tr><td> GW551x    </td><td> Yes                               </td><td> Does not have I2C buffer 
     160</td></tr><tr><td> GW51xx    </td><td> No                                </td><td> Can add via GW16113       
     161</td></tr><tr><td> GW52xx    </td><td> Yes (Requires resistor loading)   </td><td> Does not have I2C buffer 
     162</td></tr><tr><td> GW53xx-B+ </td><td> Yes                               </td><td> Has software controlled I2C buffer
     163</td></tr><tr><td> GW54xx-B+ </td><td> Yes                               </td><td> Has software controlled I2C buffer
     164</td></tr><tr><td> GW552x    </td><td> No                                </td><td> Can add via GW16113
     167Ventana boards rely heavily on the I2C bus for on-board devices. The IMX6 supports 4 i2c controllers and Ventana uses the first three as:
     169<table class="wiki">
     170<tr><th> I2C Bus       </th><th> Linux Device       </th><th> Description
     171</th></tr><tr><td> 1               </td><td> /dev/i2c-0           </td><td> GSC                 
     172</td></tr><tr><td> 2               </td><td> /dev/i2c-1           </td><td> PMIC, System items 
     173</td></tr><tr><td> 3               </td><td> /dev/i2c-2           </td><td> Multimedia, HDMI, LVDS, Audio, User bus
     175<h2 id="AccessingI2Contheboard">Accessing I2C on the board</h2>
     177Note that depending on the board model, there may be some i2c device addresses already in use.  Please refer to this table:
     179<table class="wiki">
     180<tr><th> Device </th><th> 7bit Address </th><th> Present On                </th><th> Notes
     181</th></tr><tr><td> FXOS8700 </td><td> 0x1E           </td><td> GW5400/GW5410/GW5300/GW5310 </td><td> Accelerometer / Magnetometer, Bus 3
     182</td></tr><tr><td> SGTL5000 </td><td> 0x0A           </td><td> GW5400/GW5300               </td><td> Analog Audio Codec           
     183</td></tr><tr><td> ADV7180  </td><td> 0x20           </td><td> GW5400/GW5300               </td><td> Analog Video Decoder Bus 3       
     184</td></tr><tr><td> ADV7393  </td><td> 0x2A           </td><td> GW5400                      </td><td> Analog Video Encoder         
     185</td></tr><tr><td> TDF19771 </td><td> 0x34           </td><td> GW5400                      </td><td> HDMI Receiver               
     186</td></tr><tr><td> TDF19771 </td><td> 0x48           </td><td> GW5400                      </td><td> HDMI Receiver CEC           
     187</td></tr><tr><td style="text-align: right"> HDMI EDID</td><td> 0x50           </td><td> GW5xxx                      </td><td> HDMI Monitor EDID device (If HDMI monitor plugged in)
     189<ul><li>Also note that this i2c bus goes to the LVDS Display connector which if used, may have i2c devices there as well (such as touchscreen controllers)
     190</li><li>The models listed are catalog parts only - components on Gateworks specials may vary (contact Sales for more info)
     192Many Ventana boards provide the I2C3 (/dev/i2c-2) bus via an off-board connection:
     194<ul><li>used for HDMI DDC channel to support EDID for boards supporting HDMI output
     195</li><li>routed to DIO connector via softwtare configuration on most Ventana models.
     196</li></ul><h3 id="I2CattheDIOconnector">I2C at the DIO connector</h3>
     198Several Ventana boards can optionally configure the CPU I2C3 bus (/dev/i2c-2) SDA/SCL to route out to the Digital IO connector pins 1 (DIO0) and 2 (DIO1) respectively (see <a class="wiki" href="/wiki/ventana/DigitalIO#external-i2c">above</a>)
     201Note that on these boards that have i2c-2 off-board via DIO0/DIO1 capability, there are 4.7kohm pull-up's to <strong>3.3V</strong> on DIO0/DIO1 (SCL/SDA).
     204For those boards that have a software controlled I2C buffer, the buffer is disabled by default and to enable it you must:
     206<ol><li>Confirm in the <strong>bootloader</strong> that DIO0 and DIO1 are set to GPIO in the hwconfig variable. These is the default configuration, so most likely no changes are needed:
     207<pre class="wiki">Ventana &gt; print hwconfig
     209</pre><ul><li>Note above how dio0 and dio1 are set to gpio mode and not pwm mode
     210</li></ul></li></ol><ol start="2"><li>Set the I2C_EN signal (gpio-101) high to enable the I2C buffer by appending <tt>gpio set 101</tt> to the bootloader bootcmd:
     211<pre class="wiki">Ventana &gt; setenv bootcmd "gpio set 101; ${bootcmd}"
     212Ventana &gt; saveenv
     213</pre><ul><li>We do this in the bootloader so that the i2c buffer is enabled by the time i2c kernel drivers are probing the bus.
     214</li><li>This is not necessary on the GW52xx as it does not have an i2c buffer for protection.
     215</li></ul></li></ol><ol start="3"><li>Ensure you are not 'exporting' DIO0 and DIO1 gpios in Linux userspace as they will conflict with SDA/SCL if made to be outputs.
     217You can test by using a oscilloscope and probing the lines and issuing a command like shown below.  You will see activity.
     220Usage: i2cget [-f] [-y] I2CBUS CHIP-ADDRESS [DATA-ADDRESS [MODE]]
     223Example shown is on bus 3 (0 based, thus 2 is shown, address 0x20 and Data Address of 0)
     226<strong>Please adjust below example for actual bus and I2C address.</strong>
     228<pre class="wiki">i2cget -f -y 2 0x20 0
     230A quick script to do the above commands for a GW5400:
     232<pre class="wiki">#!/bin/sh
     234# make DIO0 and DIO1 inputs to not conflict with I2C-2 SCL/SDA
     235echo 9 &gt; /sys/class/gpio/export
     236echo 19 &gt; /sys/class/gpio/export
     237echo in &gt; /sys/class/gpio/gpio9/direction
     238echo in &gt; /sys/class/gpio/gpio19/direction
     240# enable I2C_EN
     241echo 101 &gt; /sys/class/gpio/export
     242echo out &gt; /sys/class/gpio/gpio101/direction
     243echo 1 &gt; /sys/class/gpio/gpio101/value
     245Note that on these boards that have i2c-2 off-board via DIO0/DIO1 capability, there are 4.7kohm pull-up's to 3.3V on DIO0/DIO1.
     247<h3 id="I2ConHDMIoutput">I2C on HDMI output</h3>
     249All boards that have HDMI output, route I2C3 to the HDMI connector. For pinout details see the HDMI specification for the specific connector type. Note that Type-A (standard HDMI) and Type-D (micro HDMI) have different pinouts.
     254<ul><li><a class="ext-link" href=""><span class="icon">​</span></a>
     255</li></ul><h1 id="AccessingI2CFromCCode">Accessing I2C From C Code</h1>
     257The best reference is looking at the source code for the standard I2C tools available on the Linux command line.
     260See links below:
     262<ul><li><a class="ext-link" href=""><span class="icon">​</span></a>
     263</li><li><a class="ext-link" href=""><span class="icon">​</span></a>
     264</li></ul><h1 id="Usefullinks">Useful links</h1>
     265<ul><li><a class="wiki" href="/wiki/gpio">Linux GPIO and GPIO basics</a>
     266</li><li><a class="wiki" href="/wiki/linux/pwm">Linux PWM and PWM basics</a>
     267</li><li><a class="wiki" href="/wiki/ventana/bootloader#DIOconfiguration">u-boot hwconfig to configure DIO pinmux/config</a>
     268</li><li><a class="ext-link" href=""><span class="icon">​</span>IMX6DQRM (IMX6D/IMX6Q Reference manual)</a>
     269</li><li><a class="ext-link" href=""><span class="icon">​</span>IMX6SDLRM (IMX6S/IMX6DL Reference manual)</a>