<p>laforge <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/simtrace2/+/24534">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  laforge: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">firmware: octsimtest: mcp23017 initializaiton<br><br>* driver should not have hard-coded understanding about I/O directions<br>* board code should pass the I/O direction to driver<br>* board code should use the correct I/O directions (A0..7, B0: output)<br><br>Change-Id: Id4a8e012a33cee01bb489e612e17920760b9be59<br>---<br>M firmware/libboard/octsimtest/include/mcp23017.h<br>M firmware/libboard/octsimtest/source/board_octsimtest.c<br>M firmware/libboard/octsimtest/source/mcp23017.c<br>3 files changed, 20 insertions(+), 10 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/firmware/libboard/octsimtest/include/mcp23017.h b/firmware/libboard/octsimtest/include/mcp23017.h</span><br><span>index 962a1d5..c0f4b13 100644</span><br><span>--- a/firmware/libboard/octsimtest/include/mcp23017.h</span><br><span>+++ b/firmware/libboard/octsimtest/include/mcp23017.h</span><br><span>@@ -18,7 +18,7 @@</span><br><span> </span><br><span> #define MCP23017_ADDRESS 0x20</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-int mcp23017_init(uint8_t slave);</span><br><span style="color: hsl(120, 100%, 40%);">+int mcp23017_init(uint8_t slave, uint8_t iodira, uint8_t iodirb);</span><br><span> int mcp23017_test(uint8_t slave);</span><br><span> int mcp23017_toggle(uint8_t slave);</span><br><span> //int mcp23017_write_byte(uint8_t slave, uint8_t addr, uint8_t byte);</span><br><span>diff --git a/firmware/libboard/octsimtest/source/board_octsimtest.c b/firmware/libboard/octsimtest/source/board_octsimtest.c</span><br><span>index 85d8aab..404bef6 100644</span><br><span>--- a/firmware/libboard/octsimtest/source/board_octsimtest.c</span><br><span>+++ b/firmware/libboard/octsimtest/source/board_octsimtest.c</span><br><span>@@ -17,6 +17,7 @@</span><br><span>  * along with this program; if not, write to the Free Software</span><br><span>  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307, USA</span><br><span>  */</span><br><span style="color: hsl(120, 100%, 40%);">+#include <stdbool.h></span><br><span> #include "board.h"</span><br><span> #include "simtrace.h"</span><br><span> #include "utils.h"</span><br><span>@@ -27,6 +28,8 @@</span><br><span> #include "mcp23017.h"</span><br><span> #include "mux.h"</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+static bool mcp2317_present = false;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> void board_exec_dbg_cmd(int ch)</span><br><span> {</span><br><span>      switch (ch) {</span><br><span>@@ -69,8 +72,9 @@</span><br><span> </span><br><span>        mux_init();</span><br><span>  i2c_pin_init();</span><br><span style="color: hsl(0, 100%, 40%);">- if (!mcp23017_init(MCP23017_ADDRESS))</span><br><span style="color: hsl(0, 100%, 40%);">-           printf("mcp23017 not found!\n\r");</span><br><span style="color: hsl(120, 100%, 40%);">+  /* PORT A: all outputs, Port B0 output, B1..B7 unused */</span><br><span style="color: hsl(120, 100%, 40%);">+      if (mcp23017_init(MCP23017_ADDRESS, 0x00, 0xfe) == 0)</span><br><span style="color: hsl(120, 100%, 40%);">+         mcp2317_present = true;</span><br><span>      /* Initialize checking for card insert/remove events */</span><br><span>      //card_present_init();</span><br><span> #endif</span><br><span>diff --git a/firmware/libboard/octsimtest/source/mcp23017.c b/firmware/libboard/octsimtest/source/mcp23017.c</span><br><span>index 167bf34..a4d055f 100644</span><br><span>--- a/firmware/libboard/octsimtest/source/mcp23017.c</span><br><span>+++ b/firmware/libboard/octsimtest/source/mcp23017.c</span><br><span>@@ -92,19 +92,25 @@</span><br><span>          return 0;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-int mcp23017_init(uint8_t slave)</span><br><span style="color: hsl(120, 100%, 40%);">+int mcp23017_init(uint8_t slave, uint8_t iodira, uint8_t iodirb)</span><br><span> {</span><br><span>    printf("mcp23017_init\n\r");</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>     // all gpio input</span><br><span style="color: hsl(0, 100%, 40%);">-       if (mcp23017_write_byte(slave, MCP23017_IODIRA, 0xff))</span><br><span style="color: hsl(0, 100%, 40%);">-          return false;</span><br><span style="color: hsl(120, 100%, 40%);">+ if (mcp23017_write_byte(slave, MCP23017_IODIRA, iodira))</span><br><span style="color: hsl(120, 100%, 40%);">+              goto out_err;</span><br><span>        // msb of portb output, rest input</span><br><span style="color: hsl(0, 100%, 40%);">-      if (mcp23017_write_byte(slave, MCP23017_IODIRB, 0x7f))</span><br><span style="color: hsl(0, 100%, 40%);">-          return false;</span><br><span style="color: hsl(120, 100%, 40%);">+ if (mcp23017_write_byte(slave, MCP23017_IODIRB, iodirb))</span><br><span style="color: hsl(120, 100%, 40%);">+              goto out_err;</span><br><span>        if (mcp23017_write_byte(slave, MCP23017_IOCONA, 0x20)) //disable SEQOP (autoinc addressing)</span><br><span style="color: hsl(0, 100%, 40%);">-             return false;</span><br><span style="color: hsl(120, 100%, 40%);">+         goto out_err;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>      printf("mcp23017 found\n\r");</span><br><span style="color: hsl(0, 100%, 40%);">- return true;</span><br><span style="color: hsl(120, 100%, 40%);">+  return 0;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+out_err:</span><br><span style="color: hsl(120, 100%, 40%);">+ printf("mcp23017 NOT found!\n\r");</span><br><span style="color: hsl(120, 100%, 40%);">+  return -1;</span><br><span> }</span><br><span> </span><br><span> int mcp23017_test(uint8_t slave)</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/simtrace2/+/24534">change 24534</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/simtrace2/+/24534"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: simtrace2 </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Id4a8e012a33cee01bb489e612e17920760b9be59 </div>
<div style="display:none"> Gerrit-Change-Number: 24534 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>