<p>Iru Cai has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/23430">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">ectool: Add an option to get and use EC ports from /proc/ioports<br><br>There are boards that don't use ports 0x62 and 0x66 for EC, e.g. Dell<br>Latitude E6230 uses 0x930 and 0x934.<br><br>Change-Id: Ie3005f5cd6e37206ef187267b0542efdeb26b3af<br>Signed-off-by: Iru Cai <mytbk920423@gmail.com><br>---<br>M util/ectool/ec.c<br>M util/ectool/ec.h<br>M util/ectool/ectool.c<br>3 files changed, 39 insertions(+), 3 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://review.coreboot.org:29418/coreboot refs/changes/30/23430/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/util/ectool/ec.c b/util/ectool/ec.c</span><br><span>index 53a5360..f162911 100644</span><br><span>--- a/util/ectool/ec.c</span><br><span>+++ b/util/ectool/ec.c</span><br><span>@@ -16,12 +16,16 @@</span><br><span> #include <stdio.h></span><br><span> #include <stdint.h></span><br><span> #include <stdlib.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <string.h></span><br><span> #include <unistd.h></span><br><span> #if !(defined __NetBSD__ || defined __OpenBSD__)</span><br><span> #include <sys/io.h></span><br><span> #endif</span><br><span> #include "ec.h"</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+int EC_DATA = 0x62;</span><br><span style="color: hsl(120, 100%, 40%);">+int EC_SC = 0x66;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> #if defined __NetBSD__ || defined __OpenBSD__</span><br><span> #include <machine/sysarch.h></span><br><span> static uint8_t inb(unsigned port)</span><br><span>@@ -165,3 +169,29 @@</span><br><span>  send_ec_command(QR_EC);</span><br><span>      return recv_ec_data();</span><br><span> }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+void get_ec_ports(void)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+     FILE *fp = fopen("/proc/ioports", "r");</span><br><span style="color: hsl(120, 100%, 40%);">+   int ec_data = 0, ec_cmd = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+  char line[100];</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     while (!feof(fp) && (ec_data == 0 || ec_cmd == 0)) {</span><br><span style="color: hsl(120, 100%, 40%);">+          fgets(line, sizeof(line), fp);</span><br><span style="color: hsl(120, 100%, 40%);">+                if (strstr(line, "EC data") != NULL)</span><br><span style="color: hsl(120, 100%, 40%);">+                        ec_data = strtol(line, NULL, 16);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+           if (strstr(line, "EC cmd") != NULL)</span><br><span style="color: hsl(120, 100%, 40%);">+                 ec_cmd = strtol(line, NULL, 16);</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%);">+   fclose(fp);</span><br><span style="color: hsl(120, 100%, 40%);">+   if (ec_data != 0 && ec_cmd != 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+            printf("EC data = 0x%x, EC cmd = 0x%x\n", ec_data, ec_cmd);</span><br><span style="color: hsl(120, 100%, 40%);">+         EC_DATA = ec_data;</span><br><span style="color: hsl(120, 100%, 40%);">+            EC_SC = ec_cmd;</span><br><span style="color: hsl(120, 100%, 40%);">+       } else {</span><br><span style="color: hsl(120, 100%, 40%);">+              puts("No EC ports found!");</span><br><span style="color: hsl(120, 100%, 40%);">+         exit(1);</span><br><span style="color: hsl(120, 100%, 40%);">+      }</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span>diff --git a/util/ectool/ec.h b/util/ectool/ec.h</span><br><span>index 4f65f60..5e32233 100644</span><br><span>--- a/util/ectool/ec.h</span><br><span>+++ b/util/ectool/ec.h</span><br><span>@@ -16,8 +16,8 @@</span><br><span> #ifndef _EC_H</span><br><span> #define _EC_H</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-#define EC_DATA              0x62</span><br><span style="color: hsl(0, 100%, 40%);">-#define EC_SC               0x66</span><br><span style="color: hsl(120, 100%, 40%);">+extern int EC_DATA;</span><br><span style="color: hsl(120, 100%, 40%);">+extern int EC_SC;</span><br><span> </span><br><span> /* EC_SC input */</span><br><span> #define   EC_SMI_EVT   (1 << 6)  // 1: SMI event pending</span><br><span>@@ -47,4 +47,5 @@</span><br><span> int ec_ext_write(uint16_t addr, uint8_t data);</span><br><span> uint8_t ec_idx_read(uint16_t addr);</span><br><span> uint8_t ec_query(void);</span><br><span style="color: hsl(120, 100%, 40%);">+void get_ec_ports(void);</span><br><span> #endif</span><br><span>diff --git a/util/ectool/ectool.c b/util/ectool/ectool.c</span><br><span>index dcf1728..3a5cd89 100644</span><br><span>--- a/util/ectool/ectool.c</span><br><span>+++ b/util/ectool/ectool.c</span><br><span>@@ -62,6 +62,7 @@</span><br><span>                "   -v | --version:                   print the version\n"</span><br><span>         "   -h | --help:                      print this help\n\n"</span><br><span>         "   -V | --verbose:                   print debug information\n"</span><br><span style="color: hsl(120, 100%, 40%);">+            "   -p | --getports:                  print and use EC data and cmd ports from /proc/ioports\n"</span><br><span>            "   -d | --dump:                      print RAM\n"</span><br><span>         "   -i | --idx:                       print IDX RAM & RAM\n"</span><br><span>           "   -q | --query:                     print query byte\n"</span><br><span>@@ -85,10 +86,11 @@</span><br><span>             {"verbose", 0, 0, 'V'},</span><br><span>            {"idx", 0, 0, 'i'},</span><br><span>                {"query", 0, 0, 'q'},</span><br><span style="color: hsl(120, 100%, 40%);">+               {"getports", 0, 0, 'p'},</span><br><span>           {0, 0, 0, 0}</span><br><span>         };</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  while ((opt = getopt_long(argc, argv, "vh?Vidqw:z:",</span><br><span style="color: hsl(120, 100%, 40%);">+        while ((opt = getopt_long(argc, argv, "vh?Vidqpw:z:",</span><br><span>                                long_options, &option_index)) != EOF) {</span><br><span>                switch (opt) {</span><br><span>               case 'v':</span><br><span>@@ -114,6 +116,9 @@</span><br><span>              case 'q':</span><br><span>                    dump_query = 1;</span><br><span>                      break;</span><br><span style="color: hsl(120, 100%, 40%);">+                case 'p':</span><br><span style="color: hsl(120, 100%, 40%);">+                     get_ec_ports();</span><br><span style="color: hsl(120, 100%, 40%);">+                       break;</span><br><span>               case 'h':</span><br><span>            case '?':</span><br><span>            default:</span><br><span></span><br></pre><p>To view, visit <a href="https://review.coreboot.org/23430">change 23430</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://review.coreboot.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://review.coreboot.org/23430"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: coreboot </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: Ie3005f5cd6e37206ef187267b0542efdeb26b3af </div>
<div style="display:none"> Gerrit-Change-Number: 23430 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Iru Cai <mytbk920423@gmail.com> </div>