Commit a00b7910 authored by Lorenzo Bianconi's avatar Lorenzo Bianconi Committed by Felix Fietkau

wifi: mt76: move leds field in leds struct

This is a preliminary patch to support per-phy leds.
Tested-by: default avatarFrank Wunderlich <frank-w@public-files.de>
Signed-off-by: default avatarLorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: default avatarFelix Fietkau <nbd@nbd.name>
parent 0ffcb2a6
......@@ -112,7 +112,7 @@ mt76_register_debugfs_fops(struct mt76_phy *phy,
if (!dir)
return NULL;
debugfs_create_u8("led_pin", 0600, dir, &dev->led_pin);
debugfs_create_u8("led_pin", 0600, dir, &dev->leds.pin);
debugfs_create_u32("regidx", 0600, dir, &dev->debugfs_reg);
debugfs_create_file_unsafe("regval", 0600, dir, dev, fops);
debugfs_create_file_unsafe("napi_threaded", 0600, dir, dev,
......
......@@ -198,14 +198,14 @@ static int mt76_led_init(struct mt76_dev *dev)
struct ieee80211_hw *hw = dev->hw;
int led_pin;
if (!dev->led_cdev.brightness_set && !dev->led_cdev.blink_set)
if (!dev->leds.cdev.brightness_set && !dev->leds.cdev.blink_set)
return 0;
snprintf(dev->led_name, sizeof(dev->led_name),
snprintf(dev->leds.name, sizeof(dev->leds.name),
"mt76-%s", wiphy_name(hw->wiphy));
dev->led_cdev.name = dev->led_name;
dev->led_cdev.default_trigger =
dev->leds.cdev.name = dev->leds.name;
dev->leds.cdev.default_trigger =
ieee80211_create_tpt_led_trigger(hw,
IEEE80211_TPT_LEDTRIG_FL_RADIO,
mt76_tpt_blink,
......@@ -214,20 +214,20 @@ static int mt76_led_init(struct mt76_dev *dev)
np = of_get_child_by_name(np, "led");
if (np) {
if (!of_property_read_u32(np, "led-sources", &led_pin))
dev->led_pin = led_pin;
dev->led_al = of_property_read_bool(np, "led-active-low");
dev->leds.pin = led_pin;
dev->leds.al = of_property_read_bool(np, "led-active-low");
of_node_put(np);
}
return led_classdev_register(dev->dev, &dev->led_cdev);
return led_classdev_register(dev->dev, &dev->leds.cdev);
}
static void mt76_led_cleanup(struct mt76_dev *dev)
{
if (!dev->led_cdev.brightness_set && !dev->led_cdev.blink_set)
if (!dev->leds.cdev.brightness_set && !dev->leds.cdev.blink_set)
return;
led_classdev_unregister(&dev->led_cdev);
led_classdev_unregister(&dev->leds.cdev);
}
static void mt76_init_stream_cap(struct mt76_phy *phy,
......
......@@ -812,11 +812,6 @@ struct mt76_dev {
u32 debugfs_reg;
struct led_classdev led_cdev;
char led_name[32];
bool led_al;
u8 led_pin;
u8 csa_complete;
u32 rxfilter;
......@@ -835,6 +830,13 @@ struct mt76_dev {
struct mt76_usb usb;
struct mt76_sdio sdio;
};
struct {
struct led_classdev cdev;
char name[32];
bool al;
u8 pin;
} leds;
};
struct mt76_power_limits {
......
......@@ -341,15 +341,15 @@ static void mt7603_led_set_config(struct mt76_dev *mt76, u8 delay_on,
FIELD_PREP(MT_LED_STATUS_OFF, delay_off) |
FIELD_PREP(MT_LED_STATUS_ON, delay_on);
addr = mt7603_reg_map(dev, MT_LED_STATUS_0(mt76->led_pin));
addr = mt7603_reg_map(dev, MT_LED_STATUS_0(mt76->leds.pin));
mt76_wr(dev, addr, val);
addr = mt7603_reg_map(dev, MT_LED_STATUS_1(mt76->led_pin));
addr = mt7603_reg_map(dev, MT_LED_STATUS_1(mt76->leds.pin));
mt76_wr(dev, addr, val);
val = MT_LED_CTRL_REPLAY(mt76->led_pin) |
MT_LED_CTRL_KICK(mt76->led_pin);
if (mt76->led_al)
val |= MT_LED_CTRL_POLARITY(mt76->led_pin);
val = MT_LED_CTRL_REPLAY(mt76->leds.pin) |
MT_LED_CTRL_KICK(mt76->leds.pin);
if (mt76->leds.al)
val |= MT_LED_CTRL_POLARITY(mt76->leds.pin);
addr = mt7603_reg_map(dev, MT_LED_CTRL);
mt76_wr(dev, addr, val);
}
......@@ -359,7 +359,7 @@ static int mt7603_led_set_blink(struct led_classdev *led_cdev,
unsigned long *delay_off)
{
struct mt76_dev *mt76 = container_of(led_cdev, struct mt76_dev,
led_cdev);
leds.cdev);
u8 delta_on, delta_off;
delta_off = max_t(u8, *delay_off / 10, 1);
......@@ -373,7 +373,7 @@ static void mt7603_led_set_brightness(struct led_classdev *led_cdev,
enum led_brightness brightness)
{
struct mt76_dev *mt76 = container_of(led_cdev, struct mt76_dev,
led_cdev);
leds.cdev);
if (!brightness)
mt7603_led_set_config(mt76, 0, 0xff);
......@@ -535,8 +535,8 @@ int mt7603_register_device(struct mt7603_dev *dev)
/* init led callbacks */
if (IS_ENABLED(CONFIG_MT76_LEDS)) {
dev->mt76.led_cdev.brightness_set = mt7603_led_set_brightness;
dev->mt76.led_cdev.blink_set = mt7603_led_set_blink;
dev->mt76.leds.cdev.brightness_set = mt7603_led_set_brightness;
dev->mt76.leds.cdev.blink_set = mt7603_led_set_blink;
}
wiphy->reg_notifier = mt7603_regd_notifier;
......
......@@ -74,7 +74,7 @@ mt7615_led_set_config(struct led_classdev *led_cdev,
struct mt76_dev *mt76;
u32 val, addr;
mt76 = container_of(led_cdev, struct mt76_dev, led_cdev);
mt76 = container_of(led_cdev, struct mt76_dev, leds.cdev);
dev = container_of(mt76, struct mt7615_dev, mt76);
if (!mt76_connac_pm_ref(&dev->mphy, &dev->pm))
......@@ -84,15 +84,15 @@ mt7615_led_set_config(struct led_classdev *led_cdev,
FIELD_PREP(MT_LED_STATUS_OFF, delay_off) |
FIELD_PREP(MT_LED_STATUS_ON, delay_on);
addr = mt7615_reg_map(dev, MT_LED_STATUS_0(mt76->led_pin));
addr = mt7615_reg_map(dev, MT_LED_STATUS_0(mt76->leds.pin));
mt76_wr(dev, addr, val);
addr = mt7615_reg_map(dev, MT_LED_STATUS_1(mt76->led_pin));
addr = mt7615_reg_map(dev, MT_LED_STATUS_1(mt76->leds.pin));
mt76_wr(dev, addr, val);
val = MT_LED_CTRL_REPLAY(mt76->led_pin) |
MT_LED_CTRL_KICK(mt76->led_pin);
if (mt76->led_al)
val |= MT_LED_CTRL_POLARITY(mt76->led_pin);
val = MT_LED_CTRL_REPLAY(mt76->leds.pin) |
MT_LED_CTRL_KICK(mt76->leds.pin);
if (mt76->leds.al)
val |= MT_LED_CTRL_POLARITY(mt76->leds.pin);
addr = mt7615_reg_map(dev, MT_LED_CTRL);
mt76_wr(dev, addr, val);
......@@ -133,8 +133,8 @@ int mt7615_register_device(struct mt7615_dev *dev)
/* init led callbacks */
if (IS_ENABLED(CONFIG_MT76_LEDS)) {
dev->mt76.led_cdev.brightness_set = mt7615_led_set_brightness;
dev->mt76.led_cdev.blink_set = mt7615_led_set_blink;
dev->mt76.leds.cdev.brightness_set = mt7615_led_set_brightness;
dev->mt76.leds.cdev.blink_set = mt7615_led_set_blink;
}
ret = mt7622_wmac_init(dev);
......
......@@ -98,13 +98,13 @@ mt76x02_led_set_config(struct mt76_dev *mdev, u8 delay_on,
FIELD_PREP(MT_LED_STATUS_OFF, delay_off) |
FIELD_PREP(MT_LED_STATUS_ON, delay_on);
mt76_wr(dev, MT_LED_S0(mdev->led_pin), val);
mt76_wr(dev, MT_LED_S1(mdev->led_pin), val);
mt76_wr(dev, MT_LED_S0(mdev->leds.pin), val);
mt76_wr(dev, MT_LED_S1(mdev->leds.pin), val);
val = MT_LED_CTRL_REPLAY(mdev->led_pin) |
MT_LED_CTRL_KICK(mdev->led_pin);
if (mdev->led_al)
val |= MT_LED_CTRL_POLARITY(mdev->led_pin);
val = MT_LED_CTRL_REPLAY(mdev->leds.pin) |
MT_LED_CTRL_KICK(mdev->leds.pin);
if (mdev->leds.al)
val |= MT_LED_CTRL_POLARITY(mdev->leds.pin);
mt76_wr(dev, MT_LED_CTRL, val);
}
......@@ -114,7 +114,7 @@ mt76x02_led_set_blink(struct led_classdev *led_cdev,
unsigned long *delay_off)
{
struct mt76_dev *mdev = container_of(led_cdev, struct mt76_dev,
led_cdev);
leds.cdev);
u8 delta_on, delta_off;
delta_off = max_t(u8, *delay_off / 10, 1);
......@@ -130,7 +130,7 @@ mt76x02_led_set_brightness(struct led_classdev *led_cdev,
enum led_brightness brightness)
{
struct mt76_dev *mdev = container_of(led_cdev, struct mt76_dev,
led_cdev);
leds.cdev);
if (!brightness)
mt76x02_led_set_config(mdev, 0, 0xff);
......@@ -167,9 +167,9 @@ int mt76x02_init_device(struct mt76x02_dev *dev)
/* init led callbacks */
if (IS_ENABLED(CONFIG_MT76_LEDS)) {
dev->mt76.led_cdev.brightness_set =
dev->mt76.leds.cdev.brightness_set =
mt76x02_led_set_brightness;
dev->mt76.led_cdev.blink_set = mt76x02_led_set_blink;
dev->mt76.leds.cdev.blink_set = mt76x02_led_set_blink;
}
}
......
......@@ -212,7 +212,7 @@ static void mt7915_led_set_config(struct led_classdev *led_cdev,
struct mt76_dev *mt76;
u32 val;
mt76 = container_of(led_cdev, struct mt76_dev, led_cdev);
mt76 = container_of(led_cdev, struct mt76_dev, leds.cdev);
dev = container_of(mt76, struct mt7915_dev, mt76);
/* select TX blink mode, 2: only data frames */
......@@ -228,7 +228,7 @@ static void mt7915_led_set_config(struct led_classdev *led_cdev,
/* control LED */
val = MT_LED_CTRL_BLINK_MODE | MT_LED_CTRL_KICK;
if (dev->mt76.led_al)
if (dev->mt76.leds.al)
val |= MT_LED_CTRL_POLARITY;
mt76_wr(dev, MT_LED_CTRL(0), val);
......@@ -498,7 +498,7 @@ void mt7915_mac_init(struct mt7915_dev *dev)
mt7915_mac_init_band(dev, i);
if (IS_ENABLED(CONFIG_MT76_LEDS)) {
i = dev->mt76.led_pin ? MT_LED_GPIO_MUX3 : MT_LED_GPIO_MUX2;
i = dev->mt76.leds.pin ? MT_LED_GPIO_MUX3 : MT_LED_GPIO_MUX2;
mt76_rmw_field(dev, i, MT_LED_GPIO_SEL_MASK, 4);
}
}
......@@ -1141,8 +1141,8 @@ int mt7915_register_device(struct mt7915_dev *dev)
/* init led callbacks */
if (IS_ENABLED(CONFIG_MT76_LEDS)) {
dev->mt76.led_cdev.brightness_set = mt7915_led_set_brightness;
dev->mt76.led_cdev.blink_set = mt7915_led_set_blink;
dev->mt76.leds.cdev.brightness_set = mt7915_led_set_brightness;
dev->mt76.leds.cdev.blink_set = mt7915_led_set_blink;
}
ret = mt76_register_device(&dev->mt76, true, mt76_rates,
......
......@@ -49,7 +49,7 @@ static void mt7996_led_set_config(struct led_classdev *led_cdev,
struct mt76_dev *mt76;
u32 val;
mt76 = container_of(led_cdev, struct mt76_dev, led_cdev);
mt76 = container_of(led_cdev, struct mt76_dev, leds.cdev);
dev = container_of(mt76, struct mt7996_dev, mt76);
/* select TX blink mode, 2: only data frames */
......@@ -65,7 +65,7 @@ static void mt7996_led_set_config(struct led_classdev *led_cdev,
/* control LED */
val = MT_LED_CTRL_BLINK_MODE | MT_LED_CTRL_KICK;
if (dev->mt76.led_al)
if (dev->mt76.leds.al)
val |= MT_LED_CTRL_POLARITY;
mt76_wr(dev, MT_LED_CTRL(0), val);
......@@ -261,7 +261,7 @@ static void mt7996_mac_init(struct mt7996_dev *dev)
MT_WTBL_UPDATE_ADM_COUNT_CLEAR);
if (IS_ENABLED(CONFIG_MT76_LEDS)) {
i = dev->mt76.led_pin ? MT_LED_GPIO_MUX3 : MT_LED_GPIO_MUX2;
i = dev->mt76.leds.pin ? MT_LED_GPIO_MUX3 : MT_LED_GPIO_MUX2;
mt76_rmw_field(dev, i, MT_LED_GPIO_SEL_MASK, 4);
}
......@@ -787,8 +787,8 @@ int mt7996_register_device(struct mt7996_dev *dev)
/* init led callbacks */
if (IS_ENABLED(CONFIG_MT76_LEDS)) {
dev->mt76.led_cdev.brightness_set = mt7996_led_set_brightness;
dev->mt76.led_cdev.blink_set = mt7996_led_set_blink;
dev->mt76.leds.cdev.brightness_set = mt7996_led_set_brightness;
dev->mt76.leds.cdev.blink_set = mt7996_led_set_blink;
}
ret = mt76_register_device(&dev->mt76, true, mt76_rates,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment