> -----Original Message----- > From: Parthiban Veerasooran <Parthiban.Veerasooran@xxxxxxxxxxxxx> > Sent: Thursday, May 23, 2024 4:53 AM > To: steve.glendinning@xxxxxxxxxxx; UNGLinuxDriver > <UNGLinuxDriver@xxxxxxxxxxxxx>; davem@xxxxxxxxxxxxx; edumazet@xxxxxxxxxx; > kuba@xxxxxxxxxx; pabeni@xxxxxxxxxx > Cc: netdev@xxxxxxxxxxxxxxx; linux-usb@xxxxxxxxxxxxxxx; linux- > kernel@xxxxxxxxxxxxxxx; Parthiban Veerasooran - I17164 > <Parthiban.Veerasooran@xxxxxxxxxxxxx> > Subject: [PATCH] net: usb: smsc95xx: fix changing LED_SEL bit value updated > from EEPROM > > LED Select (LED_SEL) bit in the LED General Purpose IO Configuration > register is used to determine the functionality of external LED pins > (Speed Indicator, Link and Activity Indicator, Full Duplex Link > Indicator). The default value for this bit is 0 when no EEPROM is > present. If a EEPROM is present, the default value is the value of the > LED Select bit in the Configuration Flags of the EEPROM. A USB Reset or > Lite Reset (LRST) will cause this bit to be restored to the image value > last loaded from EEPROM, or to be set to 0 if no EEPROM is present. > > While configuring the dual purpose GPIO/LED pins to LED outputs in the > LED General Purpose IO Configuration register, the LED_SEL bit is changed > as 0 and resulting the configured value from the EEPROM is cleared. The > issue is fixed by using read-modify-write approach. > > Fixes: f293501c61c5 ("smsc95xx: configure LED outputs") > Signed-off-by: Parthiban Veerasooran <Parthiban.Veerasooran@xxxxxxxxxxxxx> > --- > drivers/net/usb/smsc95xx.c | 11 +++++++---- > 1 file changed, 7 insertions(+), 4 deletions(-) Reviewed-by: Woojung Huh <woojung.huh@xxxxxxxxxxxxx>