Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752219AbbKONeq (ORCPT ); Sun, 15 Nov 2015 08:34:46 -0500 Received: from proxima.lp0.eu ([81.2.80.65]:49501 "EHLO proxima.lp0.eu" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751449AbbKONeo (ORCPT ); Sun, 15 Nov 2015 08:34:44 -0500 Subject: [PATCH 2/2] leds-bcm6328: Swap LED ON and OFF definitions To: Jacek Anaszewski , =?UTF-8?Q?=c3=81lvaro_Fern=c3=a1ndez_Rojas?= References: <562BB799.7000708@simon.arlott.org.uk> <562DE832.6070903@samsung.com> <5630A9C1.5060907@samsung.com> <56327821.8020508@simon.arlott.org.uk> <563A2731.40204@samsung.com> <563A2850.5000506@gmail.com> <563B3240.9010804@samsung.com> <56488968.3070103@simon.arlott.org.uk> Cc: Jonas Gorski , Richard Purdie , linux-leds@vger.kernel.org, Linux Kernel Mailing List From: Simon Arlott Message-ID: <564889ED.4070204@simon.arlott.org.uk> Date: Sun, 15 Nov 2015 13:34:37 +0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 MIME-Version: 1.0 In-Reply-To: <56488968.3070103@simon.arlott.org.uk> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2847 Lines: 75 The values of BCM6328_LED_MODE_ON and BCM6328_LED_MODE_OFF were named for active low LEDs. These should be swapped so that they are named for the default case of active high LEDs. Signed-off-by: Simon Arlott --- On 05/11/15 10:41, Jacek Anaszewski wrote: > On 11/04/2015 04:46 PM, Álvaro Fernández Rojas wrote: >> BCM6328_LED_MODE_ON and BCM6328_LED_MODE_OFF values were extracted from >> Broadcom's GPL code, in which they assume leds are active low by default. >> I can confirm the code is correct as it is right now, since those values >> match the active high / low values of the LEDs managed by GPIO instead >> of by using this driver. > > BCM6328_LED_MODE_ON and BCM6328_LED_MODE_OFF should represent the values > that actually set the LED state according to the current logic. > Otherwise it will confuse people who will be analyzing this code. > We are interested in the logic as it is seen from this driver's > perspective and not GPIO perspective. > > IMO the values should be swapped. drivers/leds/leds-bcm6328.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/leds/leds-bcm6328.c b/drivers/leds/leds-bcm6328.c index 95d0cf9..0329dee 100644 --- a/drivers/leds/leds-bcm6328.c +++ b/drivers/leds/leds-bcm6328.c @@ -48,10 +48,10 @@ BCM6328_SERIAL_LED_SHIFT_DIR) #define BCM6328_LED_MODE_MASK 3 -#define BCM6328_LED_MODE_OFF 0 +#define BCM6328_LED_MODE_ON 0 #define BCM6328_LED_MODE_FAST 1 #define BCM6328_LED_MODE_BLINK 2 -#define BCM6328_LED_MODE_ON 3 +#define BCM6328_LED_MODE_OFF 3 #define BCM6328_LED_SHIFT(X) ((X) << 1) /** @@ -126,9 +126,9 @@ static void bcm6328_led_set(struct led_classdev *led_cdev, *(led->blink_leds) &= ~BIT(led->pin); if ((led->active_low && value == LED_OFF) || (!led->active_low && value != LED_OFF)) - bcm6328_led_mode(led, BCM6328_LED_MODE_OFF); - else bcm6328_led_mode(led, BCM6328_LED_MODE_ON); + else + bcm6328_led_mode(led, BCM6328_LED_MODE_OFF); spin_unlock_irqrestore(led->lock, flags); } @@ -303,8 +303,8 @@ static int bcm6328_led(struct device *dev, struct device_node *nc, u32 reg, val = bcm6328_led_read(mode) >> BCM6328_LED_SHIFT(shift % 16); val &= BCM6328_LED_MODE_MASK; - if ((led->active_low && val == BCM6328_LED_MODE_ON) || - (!led->active_low && val == BCM6328_LED_MODE_OFF)) + if ((led->active_low && val == BCM6328_LED_MODE_OFF) || + (!led->active_low && val == BCM6328_LED_MODE_ON)) led->cdev.brightness = LED_FULL; else led->cdev.brightness = LED_OFF; -- 2.1.4 -- Simon Arlott -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/