<p>laforge <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/simtrace2/+/15875">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;">add/fix mcp23017 i2c gpio expander functions and tests<br><br>Change-Id: Ia2e5a1bf3f97272931014e54e587109297556c03<br>---<br>M firmware/apps/gpio_test/gpio_test.c<br>M firmware/libboard/octsimtest/include/i2c.h<br>M firmware/libboard/octsimtest/include/mcp23017.h<br>M firmware/libboard/octsimtest/source/board_octsimtest.c<br>M firmware/libboard/octsimtest/source/i2c.c<br>M firmware/libboard/octsimtest/source/mcp23017.c<br>6 files changed, 52 insertions(+), 9 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/firmware/apps/gpio_test/gpio_test.c b/firmware/apps/gpio_test/gpio_test.c</span><br><span>index 2ab23e7..a6b0a00 100644</span><br><span>--- a/firmware/apps/gpio_test/gpio_test.c</span><br><span>+++ b/firmware/apps/gpio_test/gpio_test.c</span><br><span>@@ -2,9 +2,7 @@</span><br><span> #include "utils.h"</span><br><span> #include "chip.h"</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> void gpio_test_init(void)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">- printf("FIXME run tests here\n\n");</span><br><span style="color: hsl(120, 100%, 40%);">+ printf("FIXME run tests here\n\r");</span><br><span> }</span><br><span>diff --git a/firmware/libboard/octsimtest/include/i2c.h b/firmware/libboard/octsimtest/include/i2c.h</span><br><span>index 5a8c908..6c94d26 100644</span><br><span>--- a/firmware/libboard/octsimtest/include/i2c.h</span><br><span>+++ b/firmware/libboard/octsimtest/include/i2c.h</span><br><span>@@ -22,7 +22,7 @@</span><br><span> </span><br><span> bool i2c_write_byte(bool send_start, bool send_stop, uint8_t byte);</span><br><span> uint8_t i2c_read_byte(bool nack, bool send_stop);</span><br><span style="color: hsl(0, 100%, 40%);">-static void i2c_stop_cond(void);</span><br><span style="color: hsl(120, 100%, 40%);">+void i2c_stop_cond(void);</span><br><span> </span><br><span> int eeprom_write_byte(uint8_t slave, uint8_t addr, uint8_t byte);</span><br><span> int eeprom_read_byte(uint8_t slave, uint8_t addr);</span><br><span>diff --git a/firmware/libboard/octsimtest/include/mcp23017.h b/firmware/libboard/octsimtest/include/mcp23017.h</span><br><span>index dea6285..962a1d5 100644</span><br><span>--- a/firmware/libboard/octsimtest/include/mcp23017.h</span><br><span>+++ b/firmware/libboard/octsimtest/include/mcp23017.h</span><br><span>@@ -19,5 +19,7 @@</span><br><span> #define MCP23017_ADDRESS 0x20</span><br><span> </span><br><span> int mcp23017_init(uint8_t slave);</span><br><span style="color: hsl(120, 100%, 40%);">+int mcp23017_test(uint8_t slave);</span><br><span style="color: hsl(120, 100%, 40%);">+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> //int mcp23017_read_byte(uint8_t slave, uint8_t addr);</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 2772015..b7d7245 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>@@ -32,12 +32,20 @@</span><br><span> case '?':</span><br><span> printf("\t?\thelp\n\r");</span><br><span> printf("\tR\treset SAM3\n\r");</span><br><span style="color: hsl(120, 100%, 40%);">+ printf("\tm\trun mcp23017 test\n\r");</span><br><span style="color: hsl(120, 100%, 40%);">+ printf("\tR\ttoggle MSB of gpio on mcp23017\n\r");</span><br><span> break;</span><br><span> case 'R':</span><br><span> printf("Asking NVIC to reset us\n\r");</span><br><span> USBD_Disconnect();</span><br><span> NVIC_SystemReset();</span><br><span> break;</span><br><span style="color: hsl(120, 100%, 40%);">+ case 'm':</span><br><span style="color: hsl(120, 100%, 40%);">+ mcp23017_test(MCP23017_ADDRESS);</span><br><span style="color: hsl(120, 100%, 40%);">+ break;</span><br><span style="color: hsl(120, 100%, 40%);">+ case 't':</span><br><span style="color: hsl(120, 100%, 40%);">+ mcp23017_toggle(MCP23017_ADDRESS);</span><br><span style="color: hsl(120, 100%, 40%);">+ break;</span><br><span> default:</span><br><span> printf("Unknown command '%c'\n\r", ch);</span><br><span> break;</span><br><span>@@ -50,7 +58,8 @@</span><br><span> usb_buf_init();</span><br><span> </span><br><span> i2c_pin_init();</span><br><span style="color: hsl(0, 100%, 40%);">- mcp23017_init(MCP23017_ADDRESS);</span><br><span style="color: hsl(120, 100%, 40%);">+ if (!mcp23017_init(MCP23017_ADDRESS))</span><br><span style="color: hsl(120, 100%, 40%);">+ printf("mcp23017 not found!\n\r");</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/i2c.c b/firmware/libboard/octsimtest/source/i2c.c</span><br><span>index a708704..2cd8423 100644</span><br><span>--- a/firmware/libboard/octsimtest/source/i2c.c</span><br><span>+++ b/firmware/libboard/octsimtest/source/i2c.c</span><br><span>@@ -96,7 +96,7 @@</span><br><span> i2c_started = true;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static void i2c_stop_cond(void)</span><br><span style="color: hsl(120, 100%, 40%);">+void i2c_stop_cond(void)</span><br><span> {</span><br><span> clear_sda();</span><br><span> set_scl();</span><br><span>diff --git a/firmware/libboard/octsimtest/source/mcp23017.c b/firmware/libboard/octsimtest/source/mcp23017.c</span><br><span>index 63390b4..167bf34 100644</span><br><span>--- a/firmware/libboard/octsimtest/source/mcp23017.c</span><br><span>+++ b/firmware/libboard/octsimtest/source/mcp23017.c</span><br><span>@@ -94,13 +94,47 @@</span><br><span> </span><br><span> int mcp23017_init(uint8_t slave)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">- printf("mcp23017_init\n");</span><br><span style="color: hsl(120, 100%, 40%);">+ printf("mcp23017_init\n\r");</span><br><span> // all gpio input</span><br><span> if (mcp23017_write_byte(slave, MCP23017_IODIRA, 0xff))</span><br><span> return false;</span><br><span style="color: hsl(0, 100%, 40%);">- if (mcp23017_write_byte(slave, MCP23017_IODIRB, 0xff))</span><br><span style="color: hsl(120, 100%, 40%);">+ // msb of portb output, rest input</span><br><span style="color: hsl(120, 100%, 40%);">+ if (mcp23017_write_byte(slave, MCP23017_IODIRB, 0x7f))</span><br><span> return false;</span><br><span style="color: hsl(0, 100%, 40%);">- printf("mcp23017 found\n");</span><br><span style="color: hsl(120, 100%, 40%);">+ if (mcp23017_write_byte(slave, MCP23017_IOCONA, 0x20)) //disable SEQOP (autoinc addressing)</span><br><span style="color: hsl(120, 100%, 40%);">+ return false;</span><br><span style="color: hsl(120, 100%, 40%);">+ printf("mcp23017 found\n\r");</span><br><span> return true;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+int mcp23017_test(uint8_t slave)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ printf("mcp23017_test\n\r");</span><br><span style="color: hsl(120, 100%, 40%);">+ printf("GPIOA 0x%x\n\r", mcp23017_read_byte(slave,MCP23017_GPIOA));</span><br><span style="color: hsl(120, 100%, 40%);">+ printf("GPIOB 0x%x\n\r", mcp23017_read_byte(slave,MCP23017_GPIOB));</span><br><span style="color: hsl(120, 100%, 40%);">+ printf("IODIRA 0x%x\n\r", mcp23017_read_byte(slave,MCP23017_IODIRA));</span><br><span style="color: hsl(120, 100%, 40%);">+ printf("IODIRB 0x%x\n\r", mcp23017_read_byte(slave,MCP23017_IODIRB));</span><br><span style="color: hsl(120, 100%, 40%);">+ printf("IOCONA 0x%x\n\r", mcp23017_read_byte(slave,MCP23017_IOCONA));</span><br><span style="color: hsl(120, 100%, 40%);">+ printf("IOCONB 0x%x\n\r", mcp23017_read_byte(slave,MCP23017_IOCONB));</span><br><span style="color: hsl(120, 100%, 40%);">+</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%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+int mcp23017_toggle(uint8_t slave)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ // example writing MSB of gpio</span><br><span style="color: hsl(120, 100%, 40%);">+ static bool foo=false;</span><br><span style="color: hsl(120, 100%, 40%);">+ if (foo)</span><br><span style="color: hsl(120, 100%, 40%);">+ {</span><br><span style="color: hsl(120, 100%, 40%);">+ printf("+\n\r");</span><br><span style="color: hsl(120, 100%, 40%);">+ mcp23017_write_byte(slave, MCP23017_OLATB, 0x80);</span><br><span style="color: hsl(120, 100%, 40%);">+ foo=false;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+ else</span><br><span style="color: hsl(120, 100%, 40%);">+ {</span><br><span style="color: hsl(120, 100%, 40%);">+ printf("-\n\r");</span><br><span style="color: hsl(120, 100%, 40%);">+ mcp23017_write_byte(slave, MCP23017_OLATB, 0x00);</span><br><span style="color: hsl(120, 100%, 40%);">+ foo=true;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+ return 0;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/simtrace2/+/15875">change 15875</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/+/15875"/><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: Ia2e5a1bf3f97272931014e54e587109297556c03 </div>
<div style="display:none"> Gerrit-Change-Number: 15875 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: roh <jsteiger@sysmocom.de> </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>