[net-next PATCH v2 02/14] net: dsa: qca8k: add LEDs basic support

Andrew Lunn andrew at lunn.ch
Thu Mar 9 16:12:03 PST 2023


> +config NET_DSA_QCA8K_LEDS_SUPPORT
> +	tristate "Qualcomm Atheros QCA8K Ethernet switch family LEDs support"

Is tristate correct here? That means the code can either be built in,
a module, or not built at all. Is that what you want?

It seems more normal to use a bool, not a tristate.

> +static enum led_brightness
> +qca8k_led_brightness_get(struct qca8k_led *led)
> +{
> +	struct qca8k_led_pattern_en reg_info;
> +	struct qca8k_priv *priv = led->priv;
> +	u32 val;
> +	int ret;
> +
> +	qca8k_get_enable_led_reg(led->port_num, led->led_num, &reg_info);
> +
> +	ret = regmap_read(priv->regmap, reg_info.reg, &val);
> +	if (ret)
> +		return 0;
> +
> +	val >>= reg_info.shift;
> +
> +	if (led->port_num == 0 || led->port_num == 4) {
> +		val &= QCA8K_LED_PATTERN_EN_MASK;
> +		val >>= QCA8K_LED_PATTERN_EN_SHIFT;
> +	} else {
> +		val &= QCA8K_LED_PHY123_PATTERN_EN_MASK;
> +	}
> +
> +	return val > 0 ? 1 : 0;
> +}

What will this return when in the future you add hardware offload, and
the LED is actually blinking because of frames being sent etc?

Is it better to not implement _get() when it is unclear what it should
return when offload is in operation?

       Andrew



More information about the linux-arm-kernel mailing list