1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- From 82985725e071f2a5735052f18e109a32aeac3a0b Mon Sep 17 00:00:00 2001
- From: David Bauer <mail@david-bauer.net>
- Date: Sun, 26 Jul 2020 02:38:31 +0200
- Subject: [PATCH] net: usb: r8152: add LED configuration from OF
- This adds the ability to configure the LED configuration register using
- OF. This way, the correct value for board specific LED configuration can
- be determined.
- Signed-off-by: David Bauer <mail@david-bauer.net>
- ---
- drivers/net/usb/r8152.c | 23 +++++++++++++++++++++++
- 1 file changed, 23 insertions(+)
- --- a/drivers/net/usb/r8152.c
- +++ b/drivers/net/usb/r8152.c
- @@ -15,6 +15,7 @@
- #include <linux/mii.h>
- #include <linux/ethtool.h>
- #include <linux/usb.h>
- +#include <linux/of.h>
- #include <linux/crc32.h>
- #include <linux/if_vlan.h>
- #include <linux/uaccess.h>
- @@ -3974,6 +3975,22 @@ static void rtl_tally_reset(struct r8152
- ocp_write_word(tp, MCU_TYPE_PLA, PLA_RSTTALLY, ocp_data);
- }
-
- +static int r8152_led_configuration(struct r8152 *tp)
- +{
- + u32 led_data;
- + int ret;
- +
- + ret = of_property_read_u32(tp->udev->dev.of_node, "realtek,led-data",
- + &led_data);
- +
- + if (ret)
- + return ret;
- +
- + ocp_write_word(tp, MCU_TYPE_PLA, PLA_LEDSEL, led_data);
- +
- + return 0;
- +}
- +
- static void r8152b_init(struct r8152 *tp)
- {
- u32 ocp_data;
- @@ -4015,6 +4032,8 @@ static void r8152b_init(struct r8152 *tp
- ocp_data = ocp_read_word(tp, MCU_TYPE_USB, USB_USB_CTRL);
- ocp_data &= ~(RX_AGG_DISABLE | RX_ZERO_EN);
- ocp_write_word(tp, MCU_TYPE_USB, USB_USB_CTRL, ocp_data);
- +
- + r8152_led_configuration(tp);
- }
-
- static void r8153_init(struct r8152 *tp)
- @@ -4138,6 +4157,8 @@ static void r8153_init(struct r8152 *tp)
- tp->coalesce = COALESCE_SLOW;
- break;
- }
- +
- + r8152_led_configuration(tp);
- }
-
- static void r8153b_init(struct r8152 *tp)
- @@ -4201,6 +4222,8 @@ static void r8153b_init(struct r8152 *tp
- rtl_tally_reset(tp);
-
- tp->coalesce = 15000; /* 15 us */
- +
- + r8152_led_configuration(tp);
- }
-
- static int rtl8152_pre_reset(struct usb_interface *intf)
|