<div dir="ltr"><div>Hi Team,</div><div><br></div><div>Could you please provide your suggestions on the above design for LED.</div><div><br></div><div>Thanks,</div><div>Jayashree<br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, May 27, 2022 at 12:42 PM Jayashree D <<a href="mailto:srid.11486@gmail.com">srid.11486@gmail.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"><div>Hi Team,</div><div><br></div><div>Problem Description :<br><br>In the existing phosphor-led-sysfs design, it exposes one service per LED. Therefore, multiple services will be created for multiple GPIO pins configured for LED. To abstract this method and also to create LEDs under a single service, a new implementation is proposed.</div><div><br></div><div>Existing Implementation :<br> <br>1. Physical Leds are defined in the device tree under "leds" section.<br>2. Corresponding GPIO pin are defined for the physical LEDs.<br>3. "udev rules" are used to monitor the physical LEDs.<br>4. Once the LED in initialized in device tree, udev event will be created and it will trigger a systemd service for that LED.<br>5. Therefore, if multiple GPIO pins are configured for LEDs, then it will create a multiple systemd services (xyz.openbmc_project.led.controller@.service) for phosphor-led-sysfs based on the LED name.<br><br>Example :<br><br>busctl tree xyz.openbmc_project.LED.Controller.led1<br>`-/xyz<br>  `-/xyz/openbmc_project<br>    `-/xyz/openbmc_project/led<br>      `-/xyz/openbmc_project/led/physical<br>        `-/xyz/openbmc_project/led/physical/led1<br><br>busctl tree xyz.openbmc_project.LED.Controller.led2<br>`-/xyz<br>  `-/xyz/openbmc_project<br>    `-/xyz/openbmc_project/led<br>      `-/xyz/openbmc_project/led/physical<br>        `-/xyz/openbmc_project/led/physical/led2        <br><br><br><br>New Implementation :<br><br>1. Physical Leds are defined in the device tree under "leds" section.<br>2. Corresponding GPIO pin are defined for the physical LEDs.<br>3. "udev rules" are used to monitor the physical LEDs.<br>4. Once the udev event is initialized for the LED, it will store those LED name using the script in udev instead of triggering systemd   service.<br>5. Phosphor-led-sysfs will have a single systemd service (xyz.openbmc_project.led.controller.service) running by default at system startup.<br>6. A dbus method call will be exposed from the service. udev will notify the LEDs detected in the driver.<br><br>Example :<br><br>busctl tree xyz.openbmc_project.LED.Controller<br>`-/xyz<br>  `-/xyz/openbmc_project<br>    `-/xyz/openbmc_project/led<br>      `-/xyz/openbmc_project/led/physical<br>        `-/xyz/openbmc_project/led/physical/led1<br>        `-/xyz/openbmc_project/led/physical/led2<br>        <br>        <br>This was already discussed in the previous mail thread. Please refer to the below link.<br><a href="https://lists.ozlabs.org/pipermail/openbmc/2022-April/030272.html" target="_blank">https://lists.ozlabs.org/pipermail/openbmc/2022-April/030272.html</a><br><br>Please provide your suggestions on this new proposal.<br><br><br></div><div>Thanks</div><div>Jayashree<br></div></div>
</blockquote></div>