<div dir="ltr"><div>Hi folks,</div><div><br></div><div>Thanks for your responses! We managed to configure them by setting up the device tree, fixing the child buses to numbers related to the parent buses, so that we could address them using simple arithmetic operations in JSON config files.</div><br clear="all"><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">- Alex Qiu</div></div></div><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Jan 8, 2020 at 10:06 AM Alex Qiu <<a href="mailto:xqiu@google.com">xqiu@google.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Hi James,<div><br></div><div>I'll take a look at them. Thanks for pointing the related code out!</div><div><br clear="all"><div><div dir="ltr"><div dir="ltr">- Alex Qiu</div></div></div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Jan 8, 2020 at 10:02 AM James Feist <<a href="mailto:james.feist@linux.intel.com" target="_blank">james.feist@linux.intel.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 1/8/20 9:54 AM, Alex Qiu wrote:<br>
> Hi James,<br>
> <br>
> Yes, we have multiple devices sitting behind the mux, and they're <br>
> onboard devices instead of standalone FRUs. The parent bus is described <br>
> as the FRU for each PCIe card.<br>
> <br>
> After naming the mux channels, can these names be used somehow to config <br>
> I2C devices? For example, {"Bus": "$bus", "ChannelNames": <br>
> ["C0", "C1", "C2", "C3"]} for the mux, and {"Bus": "$bus.C1"} for <br>
> devices behind the mux on channel 1.<br>
<br>
This syntax doesn't exist today.. On all our systems things behind the <br>
mux are again detectable, so we haven't hit this problem. Right now the <br>
template replacement is purely based on the found device on d-bus. So <br>
$bus is the bus property from the xyz.openbmc_project.FruDevice <br>
interface, there's no way to trace that to a mux channel, as it's just a <br>
d-bus property.<br>
<br>
The code you're looking for is here: <br>
<a href="https://github.com/openbmc/entity-manager/blob/01542d2af1b1f45335cc8813fffcd3ed07f22989/src/Utils.cpp#L144" rel="noreferrer" target="_blank">https://github.com/openbmc/entity-manager/blob/01542d2af1b1f45335cc8813fffcd3ed07f22989/src/Utils.cpp#L144</a> <br>
<br>
<br>
Along with the channel identification logic here: <br>
<a href="https://github.com/openbmc/entity-manager/blob/01542d2af1b1f45335cc8813fffcd3ed07f22989/src/Overlay.cpp#L112" rel="noreferrer" target="_blank">https://github.com/openbmc/entity-manager/blob/01542d2af1b1f45335cc8813fffcd3ed07f22989/src/Overlay.cpp#L112</a><br>
<br>
You could probably add some special syntax to make this work. Luckily <br>
this is the one part of entity-manager that is unit-tested, so that <br>
should help you <br>
<a href="https://github.com/openbmc/entity-manager/blob/master/test/test_entity-manager.cpp" rel="noreferrer" target="_blank">https://github.com/openbmc/entity-manager/blob/master/test/test_entity-manager.cpp</a><br>
<br>
<br>
-James<br>
<br>
<br>
<br>
<br>
</blockquote></div>
</blockquote></div>