mirror of
https://github.com/outbackdingo/mt76.git
synced 2026-10-24 21:36:52 +00:00
mt7603: init: add ma80211 led callbacks
Signed-off-by: Lorenzo Bianconi <[email protected]>
This commit is contained in:
committed by
Felix Fietkau
parent
58e9138323
commit
8ea8da3a23
@@ -349,6 +349,57 @@ static const struct ieee80211_iface_combination if_comb[] = {
|
||||
}
|
||||
};
|
||||
|
||||
static void mt7603_led_set_config(struct mt76_dev *mt76, u8 delay_on,
|
||||
u8 delay_off)
|
||||
{
|
||||
struct mt7603_dev *dev = container_of(mt76, struct mt7603_dev,
|
||||
mt76);
|
||||
u32 val, addr;
|
||||
|
||||
val = MT_LED_STATUS_DURATION(0xffff) |
|
||||
MT_LED_STATUS_OFF(delay_off) |
|
||||
MT_LED_STATUS_ON(delay_on);
|
||||
|
||||
addr = mt7603_reg_map(dev, MT_LED_STATUS_0(mt76->led_pin));
|
||||
mt76_wr(dev, addr, val);
|
||||
addr = mt7603_reg_map(dev, MT_LED_STATUS_1(mt76->led_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);
|
||||
addr = mt7603_reg_map(dev, MT_LED_CTRL);
|
||||
mt76_wr(dev, addr, val);
|
||||
}
|
||||
|
||||
static int mt7603_led_set_blink(struct led_classdev *led_cdev,
|
||||
unsigned long *delay_on,
|
||||
unsigned long *delay_off)
|
||||
{
|
||||
struct mt76_dev *mt76 = container_of(led_cdev, struct mt76_dev,
|
||||
led_cdev);
|
||||
u8 delta_on, delta_off;
|
||||
|
||||
delta_off = max_t(u8, *delay_off / 10, 1);
|
||||
delta_on = max_t(u8, *delay_on / 10, 1);
|
||||
|
||||
mt7603_led_set_config(mt76, delta_on, delta_off);
|
||||
return 0;
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
if (!brightness)
|
||||
mt7603_led_set_config(mt76, 0, 0xff);
|
||||
else
|
||||
mt7603_led_set_config(mt76, 0xff, 0);
|
||||
}
|
||||
|
||||
int mt7603_register_device(struct mt7603_dev *dev)
|
||||
{
|
||||
struct ieee80211_hw *hw = mt76_hw(dev);
|
||||
@@ -383,6 +434,10 @@ int mt7603_register_device(struct mt7603_dev *dev)
|
||||
|
||||
ieee80211_hw_set(hw, REPORTS_TX_ACK_STATUS);
|
||||
|
||||
/* init led callbacks */
|
||||
dev->mt76.led_cdev.brightness_set = mt7603_led_set_brightness;
|
||||
dev->mt76.led_cdev.blink_set = mt7603_led_set_blink;
|
||||
|
||||
ret = mt76_register_device(&dev->mt76, true, mt7603_rates,
|
||||
ARRAY_SIZE(mt7603_rates));
|
||||
if (ret)
|
||||
|
||||
+9
-3
@@ -499,9 +499,15 @@ enum {
|
||||
|
||||
#define MT_LED_STATUS_0(_n) MT_LED_PHYS(0x10 + ((_n) * 8))
|
||||
#define MT_LED_STATUS_1(_n) MT_LED_PHYS(0x14 + ((_n) * 8))
|
||||
#define MT_LED_STATUS_OFF GENMASK(31, 24)
|
||||
#define MT_LED_STATUS_ON GENMASK(23, 16)
|
||||
#define MT_LED_STATUS_DURATION GENMASK(15, 0)
|
||||
#define MT_LED_STATUS_OFF_MASK GENMASK(31, 24)
|
||||
#define MT_LED_STATUS_OFF(_v) (((_v) << __ffs(MT_LED_STATUS_OFF_MASK)) & \
|
||||
MT_LED_STATUS_OFF_MASK)
|
||||
#define MT_LED_STATUS_ON_MASK GENMASK(23, 16)
|
||||
#define MT_LED_STATUS_ON(_v) (((_v) << __ffs(MT_LED_STATUS_ON_MASK)) & \
|
||||
MT_LED_STATUS_ON_MASK)
|
||||
#define MT_LED_STATUS_DURATION_MASK GENMASK(15, 0)
|
||||
#define MT_LED_STATUS_DURATION(_v) (((_v) << __ffs(MT_LED_STATUS_DURATION_MASK)) & \
|
||||
MT_LED_STATUS_DURATION_MASK)
|
||||
|
||||
#define MT_CLIENT_BASE_PHYS_ADDR 0x800c0000
|
||||
|
||||
|
||||
Reference in New Issue
Block a user