Received: by 2002:a25:c205:0:0:0:0:0 with SMTP id s5csp3252960ybf; Tue, 3 Mar 2020 02:31:23 -0800 (PST) X-Google-Smtp-Source: ADFU+vvK5linVe7hCs3dKAIfMPauad6zAC7ubONnSou2Dt9OHDXWdhl8sHffj13byxNNxniZXoxN X-Received: by 2002:a54:4006:: with SMTP id x6mr1971633oie.145.1583231483729; Tue, 03 Mar 2020 02:31:23 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1583231483; cv=none; d=google.com; s=arc-20160816; b=kwVjLufZps0VrlFUB95Gv4ZhtOovUcoIKswRzHouqVTk3OGc1cHlZVVKVtz+W5XuLY JqXA6fT/z4aqFalpm3e6oHvTyEpvRS+K8DRlvgaYfzepfXF7vod6jNA2pLAYJwbOOwfc 91W1IVvjQgujs0WndV1my3CDMsYTT7BsJmNcCw8wLvtXHHFVmSRejGb6q/0XMXSEoV/v 3GIJAMnDFFHmN6QkHog5fkhZ3DwFNPWMnAfgMgPtMLFZy+y1gzibBm+6ns5qbykgp2sX 1Gp6kddbA3+pGMF9m3op1c13+TKFLVM1A3H+oXNcx6opaRfP5gfcpSbzMeIdWysK3AtM LKyQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=rcEtCWKyY4PJ5b6fVubScAwepmUAP7J4BWcDeedIssM=; b=EUSdRcLkgrOWW7nBI7oniWa/IylF72gm6cyoEwsGJd50aEQHSHhfBsakHM+sI7qUB9 nKP1E6bhuTVBZ95c9bR5bJrJAHkBl8No27wU+cgVq1/N2ROrpa4lq32aVn0qRDN7YgBw P9WNcnusebXnJWjzP5dBXBETLjDbRcoTZ8atQAqPsuHnOTukohnJ0ZreXRqvluXRi1bt fC0QRlbYbzMoKV/7riyiYkhulkcAZLUXk2b7g8m+OkHUg/+LWRHeus5Jt0veZi34k6OW M+tHFJc9kuBnlSMknqLHDWuWAEly9KMlLH6CJV957nmmfg74k7cVABWnfV8ghEN0395j oKXQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@baylibre-com.20150623.gappssmtp.com header.s=20150623 header.b=jzn3p0gi; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id s15si6439047otq.216.2020.03.03.02.31.11; Tue, 03 Mar 2020 02:31:23 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@baylibre-com.20150623.gappssmtp.com header.s=20150623 header.b=jzn3p0gi; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728533AbgCCKa5 (ORCPT + 99 others); Tue, 3 Mar 2020 05:30:57 -0500 Received: from mail-io1-f66.google.com ([209.85.166.66]:44417 "EHLO mail-io1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728102AbgCCKa4 (ORCPT ); Tue, 3 Mar 2020 05:30:56 -0500 Received: by mail-io1-f66.google.com with SMTP id u17so2933918iog.11 for ; Tue, 03 Mar 2020 02:30:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=rcEtCWKyY4PJ5b6fVubScAwepmUAP7J4BWcDeedIssM=; b=jzn3p0giF74SiOTaPBBqqwDI1b0SOsC+P1EyQ68f0CbyR7bE9oYIbB+0a6w6cfEYrJ oOtgh0b/CBrALw3Q455v/s8fp+IZB3q1rztlabfaJxxrERqw9t1k711MRMmoZpgC9+w6 zq0cUxoA8/TpF5j/xaBuAcvWlYMMvIbGcE96RSB4e2nI0qt+eRRAvntl4R8+9+58ugwJ 1kzV/4Md7+Iq4J52YfoPSjWx9T1XTDxsOe9nOqwhf6k7+kwFI9xZ+LyzWuWwYxB68AC8 PWXghlepTFKWHKMihlXM8ZAAUOFIc9vO9bIAL1kAW3cxxsN+leusc3D69V35udeAzLvL 6VgA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=rcEtCWKyY4PJ5b6fVubScAwepmUAP7J4BWcDeedIssM=; b=tqNR+1DA97otxYUo0DjaNZV1RzHzzF6kKv45LFOUt75selBT5SYoYOo7OVLYqNSSI8 8m0rFu2oyActADwrGZDy3e2olRYO7VLhvB9BZCkZoYEZyoJYR8uho2LfnpgEKitWm7I6 R1jVc720zjCgguNNTgeWtO5NstWH1vY9U3iNEONWhaD9LLfL/DxC3sXxWKrpq5A9f3Sp 2hKfAwneh5Xw0y9J6HbhlPqUIeuXdyPArlQ0zrJwEEjH2Kl/KZrZ8hAl5+wZb10RGk3f Vk4iyHJtxfj6A7ea9Vw55eRijtcno3xCd3ZULnOBJUNwM97fLpk2BrTrapRCNFp2qzh7 uilw== X-Gm-Message-State: ANhLgQ34zpWsUSgRCfRzweT6ASBpFzNOF0djqVxoTtAcbDm3x5VVatV7 +qYpJ32Gt3tY30h71S0iZwjIUem2gJgGQvauRmZ6vg== X-Received: by 2002:a6b:f209:: with SMTP id q9mr3506518ioh.197.1583231455856; Tue, 03 Mar 2020 02:30:55 -0800 (PST) MIME-Version: 1.0 References: <1582727592-4510-1-git-send-email-nbelin@baylibre.com> <1582727592-4510-4-git-send-email-nbelin@baylibre.com> <85f536f0-0078-08a5-5eeb-e401d1ed8782@gmail.com> In-Reply-To: <85f536f0-0078-08a5-5eeb-e401d1ed8782@gmail.com> From: Nicolas Belin Date: Tue, 3 Mar 2020 11:30:45 +0100 Message-ID: Subject: Re: [PATCH RFC v2 3/3] drivers: leds: add support for apa102c leds To: Jacek Anaszewski Cc: linux-kernel@vger.kernel.org, linux-leds@vger.kernel.org, Pavel Machek , Dan Murphy , devicetree@vger.kernel.org, baylibre-upstreaming@groups.io Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Jacek, That's a shame that it is not going to be upstreamed soon as it making my led driver much nicer :) So what's the plan with the multicolor framework? I am happy to send a new version to fix your remark and then adapt my driver to the future changes in the Framework. Let me know what you think. Thanks, Regards, Nicolas Le mer. 26 f=C3=A9vr. 2020 =C3=A0 21:14, Jacek Anaszewski a =C3=A9crit : > > Hi Nicolas, > > Regardless of the fact that LED mc framework in current shape > will probably not materialize in mainline, I have single > remark regarding LED initialization. Please take a look below. > > On 2/26/20 3:33 PM, Nicolas Belin wrote: > > Initilial commit in order to support the apa102c RGB leds. This > > is based on the Multicolor Framework. > > > > Reviewed-by: Corentin Labbe > > Signed-off-by: Nicolas Belin > > --- > > drivers/leds/Kconfig | 7 ++ > > drivers/leds/Makefile | 1 + > > drivers/leds/leds-apa102c.c | 291 ++++++++++++++++++++++++++++++++++++= ++++++++ > > 3 files changed, 299 insertions(+) > > create mode 100644 drivers/leds/leds-apa102c.c > > > > diff --git a/drivers/leds/Kconfig b/drivers/leds/Kconfig > > index 5dc6535a88ef..71e29727c6ec 100644 > > --- a/drivers/leds/Kconfig > > +++ b/drivers/leds/Kconfig > > @@ -79,6 +79,13 @@ config LEDS_AN30259A > > To compile this driver as a module, choose M here: the module > > will be called leds-an30259a. > > > > +config LEDS_APA102C > > + tristate "LED Support for Shiji APA102C" > > + depends on SPI > > + depends on LEDS_CLASS_MULTI_COLOR > > + help > > + This option enables support for APA102C LEDs. > > + > > config LEDS_APU > > tristate "Front panel LED support for PC Engines APU/APU2/APU3 bo= ards" > > depends on LEDS_CLASS > > diff --git a/drivers/leds/Makefile b/drivers/leds/Makefile > > index b5305b7d43fb..8334cb6dc7e8 100644 > [...] > > + > > + led->priv =3D priv; > > + led->ldev.max_brightness =3D MAX_BRIGHTNESS; > > + fwnode_property_read_string(child, "linux,default-trigger= ", > > + &led->ldev.default_trigger); > > + > > + init_data.fwnode =3D child; > > + init_data.devicename =3D APA_DEV_NAME; > > + init_data.default_label =3D ":"; > > devicename property should be filled in new drivers only in case > devname_mandatory is set to true. > default_label property is for legacy drivers, for backward compatibility > with old LED naming convention. > > For more information please refer to: > - Documentation/leds/leds-class.rst, "LED Device Naming" section > - struct led_init_data documention in linux/leds.h > > In effect you need only fwnode here, > > > + > > + num_colors =3D 0; > > + fwnode_for_each_child_node(child, grandchild) { > > + ret =3D fwnode_property_read_u32(grandchild, "col= or", > > + &color_id); > > + if (ret) { > > + dev_err(priv->dev, "Cannot read color\n")= ; > > + goto child_out; > > + } > > + > > + set_bit(color_id, &led->mc_cdev.available_colors)= ; > > + num_colors++; > > + } > > + > > + if (num_colors !=3D 3) { > > + ret =3D -EINVAL; > > + dev_err(priv->dev, "There should be 3 colors\n"); > > + goto child_out; > > + } > > + > > + if (led->mc_cdev.available_colors !=3D IS_RGB) { > > + ret =3D -EINVAL; > > + dev_err(priv->dev, "The led is expected to be RGB= \n"); > > + goto child_out; > > + } > > + > > + led->mc_cdev.num_leds =3D num_colors; > > + led->mc_cdev.led_cdev =3D &led->ldev; > > + led->ldev.brightness_set_blocking =3D apa102c_brightness_= set; > > + ret =3D devm_led_classdev_multicolor_register_ext(priv->d= ev, > > -- > Best regards, > Jacek Anaszewski --=20 Nicolas Belin Software design engineer BayLibre www.baylibre.com