From 46c40209db163a81474c6894ebbd90b5e238ce60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20F=C3=A4rber?= Date: Sat, 14 Dec 2019 10:50:38 +0100 Subject: [PATCH] WIP: leds: tm1628: Optimize dirty-byte tracking MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Andreas Färber --- drivers/leds/leds-tm1628.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/leds/leds-tm1628.c b/drivers/leds/leds-tm1628.c index 34b83264f27eab..035b5f571e6721 100644 --- a/drivers/leds/leds-tm1628.c +++ b/drivers/leds/leds-tm1628.c @@ -261,7 +261,7 @@ static int tm1628_get_led(struct tm1628 *s, } static int tm1628_set_led(struct tm1628 *s, - unsigned int grid, unsigned int seg, bool on) + unsigned int grid, unsigned int seg, bool on, int *poffset) { int offset, bit; int ret; @@ -275,6 +275,10 @@ static int tm1628_set_led(struct tm1628 *s, else s->data[offset] &= ~BIT(bit); + + if (poffset) + *poffset = offset; + return 0; } @@ -285,14 +289,10 @@ static int tm1628_led_set_brightness(struct led_classdev *led_cdev, struct tm1628 *s = led->ctrl; int ret, offset; - ret = tm1628_set_led(s, led->grid, led->seg, brightness != LED_OFF); + ret = tm1628_set_led(s, led->grid, led->seg, brightness != LED_OFF, &offset); if (ret) return ret; - ret = tm1628_get_led_offset(s, led->grid, led->seg, &offset, NULL); - if (unlikely(ret)) - return ret; - ret = tm1628_set_address(s->spi, offset); if (ret) return ret; @@ -371,7 +371,7 @@ static int tm1628_display_apply_map(struct tm1628 *s, for (i = 0; i < 8; i++) { segment = &display->segments[i]; - tm1628_set_led(s, segment->grid, segment->seg, map & BIT(i)); + tm1628_set_led(s, segment->grid, segment->seg, map & BIT(i), NULL); } return 0;