]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
leds: turris-omnia: Use global header for MCU command definitions
authorMarek BehĂșn <kabel@kernel.org>
Mon, 11 Nov 2024 10:03:48 +0000 (11:03 +0100)
committerLee Jones <lee@kernel.org>
Thu, 12 Dec 2024 18:37:36 +0000 (18:37 +0000)
The global turris-omnia-mcu-interface.h header file contains the
definitions for MCU commands. Drop the driver-internal definitions and
use the global ones.

Signed-off-by: Marek BehĂșn <kabel@kernel.org>
Link: https://lore.kernel.org/r/20241111100355.6978-5-kabel@kernel.org
Signed-off-by: Lee Jones <lee@kernel.org>
drivers/leds/leds-turris-omnia.c

index 2c36e9ed683524fad6fe13d1139e731be341eccb..1212df8315ab5fbc56d289620ed9af7abf8b1581 100644 (file)
 #define OMNIA_BOARD_LEDS       12
 #define OMNIA_LED_NUM_CHANNELS 3
 
-/* MCU controller commands at I2C address 0x2a */
-#define OMNIA_MCU_I2C_ADDR             0x2a
-
-#define CMD_GET_STATUS_WORD            0x01
-#define STS_FEATURES_SUPPORTED         BIT(2)
-
-#define CMD_GET_FEATURES               0x10
-#define FEAT_LED_GAMMA_CORRECTION      BIT(5)
-
-/* LED controller commands at I2C address 0x2b */
-#define CMD_LED_MODE                   0x03
-#define CMD_LED_MODE_LED(l)            ((l) & 0x0f)
-#define CMD_LED_MODE_USER              0x10
-
-#define CMD_LED_STATE                  0x04
-#define CMD_LED_STATE_LED(l)           ((l) & 0x0f)
-#define CMD_LED_STATE_ON               0x10
-
-#define CMD_LED_COLOR                  0x05
-#define CMD_LED_SET_BRIGHTNESS         0x07
-#define CMD_LED_GET_BRIGHTNESS         0x08
-
-#define CMD_SET_GAMMA_CORRECTION       0x30
-#define CMD_GET_GAMMA_CORRECTION       0x31
+/* MCU controller I2C address 0x2a, needed for detecting MCU features */
+#define OMNIA_MCU_I2C_ADDR     0x2a
 
 struct omnia_led {
        struct led_classdev_mc mc_cdev;
@@ -59,7 +37,7 @@ struct omnia_leds {
 
 static int omnia_cmd_set_color(const struct i2c_client *client, u8 led, u8 r, u8 g, u8 b)
 {
-       u8 buf[5] = { CMD_LED_COLOR, led, r, g, b };
+       u8 buf[5] = { OMNIA_CMD_LED_COLOR, led, r, g, b };
 
        return omnia_cmd_write(client, buf, sizeof(buf));
 }
@@ -126,12 +104,12 @@ static int omnia_led_brightness_set_blocking(struct led_classdev *cdev,
         * is not being blinked by HW.
         */
        if (!err && !led->hwtrig && !brightness != !led->on) {
-               u8 state = CMD_LED_STATE_LED(led->reg);
+               u8 state = OMNIA_CMD_LED_STATE_LED(led->reg);
 
                if (brightness)
-                       state |= CMD_LED_STATE_ON;
+                       state |= OMNIA_CMD_LED_STATE_ON;
 
-               err = omnia_cmd_write_u8(leds->client, CMD_LED_STATE, state);
+               err = omnia_cmd_write_u8(leds->client, OMNIA_CMD_LED_STATE, state);
                if (!err)
                        led->on = !!brightness;
        }
@@ -166,8 +144,8 @@ static int omnia_hwtrig_activate(struct led_classdev *cdev)
 
        if (!err) {
                /* Put the LED into MCU controlled mode */
-               err = omnia_cmd_write_u8(leds->client, CMD_LED_MODE,
-                                        CMD_LED_MODE_LED(led->reg));
+               err = omnia_cmd_write_u8(leds->client, OMNIA_CMD_LED_MODE,
+                                        OMNIA_CMD_LED_MODE_LED(led->reg));
                if (!err)
                        led->hwtrig = true;
        }
@@ -188,9 +166,8 @@ static void omnia_hwtrig_deactivate(struct led_classdev *cdev)
        led->hwtrig = false;
 
        /* Put the LED into software mode */
-       err = omnia_cmd_write_u8(leds->client, CMD_LED_MODE,
-                                CMD_LED_MODE_LED(led->reg) |
-                                CMD_LED_MODE_USER);
+       err = omnia_cmd_write_u8(leds->client, OMNIA_CMD_LED_MODE,
+                                OMNIA_CMD_LED_MODE_LED(led->reg) | OMNIA_CMD_LED_MODE_USER);
 
        mutex_unlock(&leds->lock);
 
@@ -257,9 +234,8 @@ static int omnia_led_register(struct i2c_client *client, struct omnia_led *led,
        cdev->default_trigger = omnia_hw_trigger.name;
 
        /* put the LED into software mode */
-       ret = omnia_cmd_write_u8(client, CMD_LED_MODE,
-                                CMD_LED_MODE_LED(led->reg) |
-                                CMD_LED_MODE_USER);
+       ret = omnia_cmd_write_u8(client, OMNIA_CMD_LED_MODE, OMNIA_CMD_LED_MODE_LED(led->reg) |
+                                                            OMNIA_CMD_LED_MODE_USER);
        if (ret) {
                dev_err(dev, "Cannot set LED %pOF to software mode: %i\n", np,
                        ret);
@@ -267,8 +243,7 @@ static int omnia_led_register(struct i2c_client *client, struct omnia_led *led,
        }
 
        /* disable the LED */
-       ret = omnia_cmd_write_u8(client, CMD_LED_STATE,
-                                CMD_LED_STATE_LED(led->reg));
+       ret = omnia_cmd_write_u8(client, OMNIA_CMD_LED_STATE, OMNIA_CMD_LED_STATE_LED(led->reg));
        if (ret) {
                dev_err(dev, "Cannot set LED %pOF brightness: %i\n", np, ret);
                return ret;
@@ -310,7 +285,7 @@ static ssize_t brightness_show(struct device *dev, struct device_attribute *a,
        u8 reply;
        int err;
 
-       err = omnia_cmd_read_u8(client, CMD_LED_GET_BRIGHTNESS, &reply);
+       err = omnia_cmd_read_u8(client, OMNIA_CMD_GET_BRIGHTNESS, &reply);
        if (err < 0)
                return err;
 
@@ -330,7 +305,7 @@ static ssize_t brightness_store(struct device *dev, struct device_attribute *a,
        if (brightness > 100)
                return -EINVAL;
 
-       err = omnia_cmd_write_u8(client, CMD_LED_SET_BRIGHTNESS, brightness);
+       err = omnia_cmd_write_u8(client, OMNIA_CMD_SET_BRIGHTNESS, brightness);
 
        return err ?: count;
 }
@@ -345,7 +320,7 @@ static ssize_t gamma_correction_show(struct device *dev,
        int err;
 
        if (leds->has_gamma_correction) {
-               err = omnia_cmd_read_u8(client, CMD_GET_GAMMA_CORRECTION, &reply);
+               err = omnia_cmd_read_u8(client, OMNIA_CMD_GET_GAMMA_CORRECTION, &reply);
                if (err < 0)
                        return err;
        }
@@ -368,7 +343,7 @@ static ssize_t gamma_correction_store(struct device *dev,
        if (kstrtobool(buf, &val) < 0)
                return -EINVAL;
 
-       err = omnia_cmd_write_u8(client, CMD_SET_GAMMA_CORRECTION, val);
+       err = omnia_cmd_write_u8(client, OMNIA_CMD_SET_GAMMA_CORRECTION, val);
 
        return err ?: count;
 }
@@ -386,15 +361,15 @@ static int omnia_mcu_get_features(const struct i2c_client *mcu_client)
        u16 reply;
        int err;
 
-       err = omnia_cmd_read_u16(mcu_client, CMD_GET_STATUS_WORD, &reply);
+       err = omnia_cmd_read_u16(mcu_client, OMNIA_CMD_GET_STATUS_WORD, &reply);
        if (err)
                return err;
 
-       /* Check whether MCU firmware supports the CMD_GET_FEAUTRES command */
-       if (!(reply & STS_FEATURES_SUPPORTED))
+       /* Check whether MCU firmware supports the OMNIA_CMD_GET_FEAUTRES command */
+       if (!(reply & OMNIA_STS_FEATURES_SUPPORTED))
                return 0;
 
-       err = omnia_cmd_read_u16(mcu_client, CMD_GET_FEATURES, &reply);
+       err = omnia_cmd_read_u16(mcu_client, OMNIA_CMD_GET_FEATURES, &reply);
        if (err)
                return err;
 
@@ -459,7 +434,7 @@ static int omnia_leds_probe(struct i2c_client *client)
                return ret;
        }
 
-       leds->has_gamma_correction = ret & FEAT_LED_GAMMA_CORRECTION;
+       leds->has_gamma_correction = ret & OMNIA_FEAT_LED_GAMMA_CORRECTION;
        if (!leds->has_gamma_correction) {
                dev_info(dev,
                         "Your board's MCU firmware does not support the LED gamma correction feature.\n");
@@ -490,7 +465,7 @@ static int omnia_leds_probe(struct i2c_client *client)
 static void omnia_leds_remove(struct i2c_client *client)
 {
        /* put all LEDs into default (HW triggered) mode */
-       omnia_cmd_write_u8(client, CMD_LED_MODE, CMD_LED_MODE_LED(OMNIA_BOARD_LEDS));
+       omnia_cmd_write_u8(client, OMNIA_CMD_LED_MODE, OMNIA_CMD_LED_MODE_LED(OMNIA_BOARD_LEDS));
 
        /* set all LEDs color to [255, 255, 255] */
        omnia_cmd_set_color(client, OMNIA_BOARD_LEDS, 255, 255, 255);