<p>Jens Drenhaus has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/28975">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">dynamic UART initialization for cavium cn8100<br><br>Change-Id: I145c224148f0cc078bb1c76f588f603e73121a62<br>Signed-off-by: Jens Drenhaus <jens.drenhaus@9elements.com><br>---<br>M src/mainboard/cavium/cn8100_sff_evb/mainboard.c<br>M src/mainboard/opencellular/elgon/mainboard.c<br>M src/soc/cavium/cn81xx/soc.c<br>3 files changed, 27 insertions(+), 12 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://review.coreboot.org:29418/coreboot refs/changes/75/28975/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/mainboard/cavium/cn8100_sff_evb/mainboard.c b/src/mainboard/cavium/cn8100_sff_evb/mainboard.c</span><br><span>index 28a3ee3..ce896f2 100644</span><br><span>--- a/src/mainboard/cavium/cn8100_sff_evb/mainboard.c</span><br><span>+++ b/src/mainboard/cavium/cn8100_sff_evb/mainboard.c</span><br><span>@@ -83,12 +83,6 @@</span><br><span> {</span><br><span>  size_t i;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   /* Init UARTs */</span><br><span style="color: hsl(0, 100%, 40%);">-        for (i = 0; i < 4; i++) {</span><br><span style="color: hsl(0, 100%, 40%);">-            if (!uart_is_enabled(i))</span><br><span style="color: hsl(0, 100%, 40%);">-                        uart_setup(i, 0);</span><br><span style="color: hsl(0, 100%, 40%);">-       }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>    /* Init timer */</span><br><span>     soc_timer_init();</span><br><span> </span><br><span>diff --git a/src/mainboard/opencellular/elgon/mainboard.c b/src/mainboard/opencellular/elgon/mainboard.c</span><br><span>index dc06bdc..45a7155 100644</span><br><span>--- a/src/mainboard/opencellular/elgon/mainboard.c</span><br><span>+++ b/src/mainboard/opencellular/elgon/mainboard.c</span><br><span>@@ -101,12 +101,6 @@</span><br><span> {</span><br><span>       size_t i;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   /* Init UARTs */</span><br><span style="color: hsl(0, 100%, 40%);">-        for (i = 0; i < 4; i++) {</span><br><span style="color: hsl(0, 100%, 40%);">-            if (!uart_is_enabled(i))</span><br><span style="color: hsl(0, 100%, 40%);">-                        uart_setup(i, 0);</span><br><span style="color: hsl(0, 100%, 40%);">-       }</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>    /* Init timer */</span><br><span>     soc_timer_init();</span><br><span> </span><br><span>diff --git a/src/soc/cavium/cn81xx/soc.c b/src/soc/cavium/cn81xx/soc.c</span><br><span>index d9eb052..2e9d837 100644</span><br><span>--- a/src/soc/cavium/cn81xx/soc.c</span><br><span>+++ b/src/soc/cavium/cn81xx/soc.c</span><br><span>@@ -24,6 +24,7 @@</span><br><span> #include <soc/clock.h></span><br><span> #include <soc/sdram.h></span><br><span> #include <soc/timer.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <soc/uart.h></span><br><span> #include <stddef.h></span><br><span> #include <stdlib.h></span><br><span> #include <string.h></span><br><span>@@ -207,6 +208,21 @@</span><br><span>                printk(BIOS_ERR, "%s: Node not found. OS might miss-behave !\n",</span><br><span>                  __func__);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ /* Remove unused UART entries */</span><br><span style="color: hsl(120, 100%, 40%);">+      for (i = 0; i < 4; i++) {</span><br><span style="color: hsl(120, 100%, 40%);">+          char path[32];</span><br><span style="color: hsl(120, 100%, 40%);">+                const uint64_t addr = UAAx_PF_BAR0(i);</span><br><span style="color: hsl(120, 100%, 40%);">+                /* Remove the node */</span><br><span style="color: hsl(120, 100%, 40%);">+         snprintf(path, sizeof(path), "soc@0/serial@%llx", addr);</span><br><span style="color: hsl(120, 100%, 40%);">+            dt_node = dt_find_node_by_path(tree->root, path, NULL, NULL, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+           if (!dt_node || uart_is_enabled(i)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                 printk(BIOS_INFO, "%s: ignoring %s\n", __func__, path);</span><br><span style="color: hsl(120, 100%, 40%);">+                     continue;</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+             printk(BIOS_INFO, "%s: Removing node %s\n", __func__, path);</span><br><span style="color: hsl(120, 100%, 40%);">+                list_remove(&dt_node->list_node);</span><br><span style="color: hsl(120, 100%, 40%);">+      }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>  /* Remove unused PEM entries */</span><br><span>      for (i = 0; i < 8; i++) {</span><br><span>                 char path[32];</span><br><span>@@ -374,6 +390,17 @@</span><br><span>                }</span><br><span>    }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ /* Init UARTs */</span><br><span style="color: hsl(120, 100%, 40%);">+      size_t i;</span><br><span style="color: hsl(120, 100%, 40%);">+     struct device *child;</span><br><span style="color: hsl(120, 100%, 40%);">+ for (i = 0; i <= 3; i++) {</span><br><span style="color: hsl(120, 100%, 40%);">+         child = dev_find_slot(1, PCI_DEVFN(8, i));</span><br><span style="color: hsl(120, 100%, 40%);">+            if (child && child->enabled) {</span><br><span style="color: hsl(120, 100%, 40%);">+                     if (!uart_is_enabled(i))</span><br><span style="color: hsl(120, 100%, 40%);">+                              uart_setup(i, 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%);">+</span><br><span>  if (IS_ENABLED(CONFIG_ARM64_USE_ARM_TRUSTED_FIRMWARE))</span><br><span>               soc_init_atf();</span><br><span> }</span><br><span></span><br></pre><p>To view, visit <a href="https://review.coreboot.org/28975">change 28975</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/28975"/><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: I145c224148f0cc078bb1c76f588f603e73121a62 </div>
<div style="display:none"> Gerrit-Change-Number: 28975 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Jens Drenhaus <jens.drenhaus@9elements.com> </div>