kernel: ws2812b: use devm for mutex_init

Allows removal of _remove function.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/16587
Signed-off-by: Robert Marko <robimarko@gmail.com>
This commit is contained in:
Rosen Penev 2024-10-03 13:20:30 -07:00 committed by Robert Marko
parent e15aab2a17
commit 5ee75b6bb2
1 changed files with 7 additions and 16 deletions

View File

@ -124,7 +124,10 @@ static int ws2812b_probe(struct spi_device *spi)
for (i = 0; i < num_leds * WS2812B_NUM_COLORS; i++) for (i = 0; i < num_leds * WS2812B_NUM_COLORS; i++)
ws2812b_set_byte(priv, i, 0); ws2812b_set_byte(priv, i, 0);
mutex_init(&priv->mutex); ret = devm_mutex_init(dev, &priv->mutex);
if (ret)
return ret;
priv->num_leds = num_leds; priv->num_leds = num_leds;
priv->spi = spi; priv->spi = spi;
@ -144,13 +147,12 @@ static int ws2812b_probe(struct spi_device *spi)
if (ret) { if (ret) {
dev_err(dev, "failed to obtain numerical LED index for %s", dev_err(dev, "failed to obtain numerical LED index for %s",
fwnode_get_name(led_node)); fwnode_get_name(led_node));
goto ERR_UNREG_LEDS; return ret;
} }
if (cascade >= num_leds) { if (cascade >= num_leds) {
dev_err(dev, "LED index of %s is larger than the number of LEDs.", dev_err(dev, "LED index of %s is larger than the number of LEDs.",
fwnode_get_name(led_node)); fwnode_get_name(led_node));
ret = -EINVAL; return -EINVAL;
goto ERR_UNREG_LEDS;
} }
cnt = fwnode_property_count_u32(led_node, "color-index"); cnt = fwnode_property_count_u32(led_node, "color-index");
@ -176,7 +178,7 @@ static int ws2812b_probe(struct spi_device *spi)
if (ret) { if (ret) {
dev_err(dev, "registration of %s failed.", dev_err(dev, "registration of %s failed.",
fwnode_get_name(led_node)); fwnode_get_name(led_node));
goto ERR_UNREG_LEDS; return ret;
} }
cur_led++; cur_led++;
} }
@ -184,16 +186,6 @@ static int ws2812b_probe(struct spi_device *spi)
spi_set_drvdata(spi, priv); spi_set_drvdata(spi, priv);
return 0; return 0;
ERR_UNREG_LEDS:
mutex_destroy(&priv->mutex);
return ret;
}
static void ws2812b_remove(struct spi_device *spi)
{
struct ws2812b_priv *priv = spi_get_drvdata(spi);
mutex_destroy(&priv->mutex);
} }
static const struct spi_device_id ws2812b_spi_ids[] = { static const struct spi_device_id ws2812b_spi_ids[] = {
@ -210,7 +202,6 @@ MODULE_DEVICE_TABLE(of, ws2812b_dt_ids);
static struct spi_driver ws2812b_driver = { static struct spi_driver ws2812b_driver = {
.probe = ws2812b_probe, .probe = ws2812b_probe,
.remove = ws2812b_remove,
.id_table = ws2812b_spi_ids, .id_table = ws2812b_spi_ids,
.driver = { .driver = {
.name = KBUILD_MODNAME, .name = KBUILD_MODNAME,