Received: by 2002:ac0:950c:0:0:0:0:0 with SMTP id f12csp3709343imc; Thu, 14 Mar 2019 03:34:38 -0700 (PDT) X-Google-Smtp-Source: APXvYqy1iMpAxi7S7vzVDQi8A6cG1trBF+6N/nuGgK5tvk5VfKKv5vJmbItQo87BiMjSAPT4kpKN X-Received: by 2002:a63:1c02:: with SMTP id c2mr1608644pgc.351.1552559678532; Thu, 14 Mar 2019 03:34:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1552559678; cv=none; d=google.com; s=arc-20160816; b=EJpkQsrpdnTpYGds4IUGPxVTnBwiYqzhWHHxnmSzJsBl/yg+75RS/WPFHWseB8Ge9T Wz5ktbddpnxwQIBx6TUmQdQwdvPoJ7lM+RVDNAArF9aCB/c24wraFNNEF45HLofnk7gi NW5yj5TnWvJ8iz6rQv/gzpUiiRFgbTBhzltlXNmpYSZ8TfkAEGMpcG3cOYPDbZ8XdzRD 7hbXCQs71DVyObH5DYtzoaOPCQosG0vYvWKRfjfYbA0fGKh4csATXcp/VneMdfqyRTjL HLzrqmp9cMpm0le2RYpDnJuynnprrAH87wm0fYF5VupQMbbQpHmP9VqaDxd2xnIgTk1h qUTg== 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 :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject:dkim-signature; bh=7O+dLdFq/mvb4A56YlPPGJkeVTKEdQbk9vN9uHyNE4Q=; b=wT3lRmKuzHSL42aWDQp+YcS6e48MAL03VPMd9e1gObnJTJIJp6+ry4fYTazsbMnj59 mW/2nXx9/dfS7nPiP2dBmU/dAJTf1gy8fvVZ5s26hLXaD7U4rKlfeMTs0KR56hBzdF2r TAe0pvBjh8auGSDenmiDDtKxOvzNAg8EvdvCf/IuPC3GiVxRWHkh1UD3CkgqYrl2vSO1 PyiLLOyTVxQzeGbxRxssfrgxpf7dho6AI4bmjFLwtnXLnwWEXthWF05daPgA7uqmQ+KB NCuepM8+7Pt8c03ySL4SQ3mDsFaP5DMqZtddIW+pmKC7AETUdmjwSzC774lVEK+aKMY4 mLxA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=pjJCru1a; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id r192si12030346pgr.331.2019.03.14.03.34.23; Thu, 14 Mar 2019 03:34:38 -0700 (PDT) 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=@gmail.com header.s=20161025 header.b=pjJCru1a; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727297AbfCNKcY (ORCPT + 99 others); Thu, 14 Mar 2019 06:32:24 -0400 Received: from mail-lj1-f195.google.com ([209.85.208.195]:36612 "EHLO mail-lj1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726629AbfCNKcY (ORCPT ); Thu, 14 Mar 2019 06:32:24 -0400 Received: by mail-lj1-f195.google.com with SMTP id v10so4327449lji.3; Thu, 14 Mar 2019 03:32:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=7O+dLdFq/mvb4A56YlPPGJkeVTKEdQbk9vN9uHyNE4Q=; b=pjJCru1auQChh1wGkQiSQg6dT++kvXxYKecbIcOv8yOmzJOiB4PUix/ryRPkMCkucZ 4Uywde7C6tihMsreOivvr5tNs3/UHzEblH8RfRz4jdklVNp47ETHySNEXIFQV+LpZXzK wd5H4KhfA57oo5Ei0xhzHqU5wv6GjWrn+vaLjyBv7BiJuWi//BoErZjtrfIA1I7rBLAV ldCBdGINorrtLfl+uTFncVBlKXsRxInAd7i2UQR6Sz56caw5tgQEwrrNS8uxnObtsxCU pLK07a4/FpZOaoTRCNtgdxE3p6lmQgC16/0g9UNeBp7ObvuTX+N2TV52HtTBsw47geL9 3zOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=7O+dLdFq/mvb4A56YlPPGJkeVTKEdQbk9vN9uHyNE4Q=; b=UywaLjs+hBhoL/MgwuC3Fwnt1jJ6Vc3iquS+Ocp3UhkyfIrwclH70SWdEZiHy8H0xF QMhOkxNmIoHIpAbKWkcbTdst6AUMhHZN9Q2fdUqk3WM0WQngL6HRKpg2WDD75kb/I/lO pS9YfkhdA0nTwkYYC/r0a1hL9moXzYgNKv7rOkxLUyH3klVJjv29hutT0c4mGybaRhe0 xsR6PZT+3wav9FZHRu0cHpp/bciFTaAfSf8X/QBq8QVuspRL9KA7r2d5g3vj97ok8uhw mF3XPyVch5wpF4omwdfVZrurB0SCE7bLhqdJDskaQkv3IkEo3yGxwyfH9FsYPuZHjFr6 SK1g== X-Gm-Message-State: APjAAAXjjNgR0PUBa7YhXJiiScAruB3SwFOEDY+0paTiEv7NRIX6q6Ty ZnfQIvq2BcKSk1LT6TTaHUFKmM90 X-Received: by 2002:a2e:7817:: with SMTP id t23mr698044ljc.174.1552559540735; Thu, 14 Mar 2019 03:32:20 -0700 (PDT) Received: from [192.168.1.18] (ckl5.neoplus.adsl.tpnet.pl. [83.31.87.5]) by smtp.gmail.com with ESMTPSA id f1sm2342330ljf.40.2019.03.14.03.32.19 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 14 Mar 2019 03:32:20 -0700 (PDT) Subject: Re: [PATCH 4/4] leds: netdev trigger: allow setting initial values in device tree To: Rasmus Villemoes , Pavel Machek , =?UTF-8?Q?Uwe_Kleine-K=c3=b6nig?= Cc: LKML , linux-leds@vger.kernel.org, devicetree@vger.kernel.org, linux-can@vger.kernel.org, netdev@vger.kernel.org References: <20190311144227.GA4404@amd> <20190313202615.22883-1-linux@rasmusvillemoes.dk> <20190313202615.22883-5-linux@rasmusvillemoes.dk> From: Jacek Anaszewski Message-ID: <98fda0ee-555d-86a5-a4f1-1774271e4b6d@gmail.com> Date: Thu, 14 Mar 2019 11:32:17 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.5.1 MIME-Version: 1.0 In-Reply-To: <20190313202615.22883-5-linux@rasmusvillemoes.dk> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Rasmus, Thank you for the patch set. I have one comment below. On 3/13/19 9:26 PM, Rasmus Villemoes wrote: > It can be quite convenient to initialize a netdev-triggered LED with a > device name and setting the rx,tx,link properties from device tree, > instead of having to do that in an init script in userspace. > > My main motivation for this is to be able to switch away from the > deprecated CONFIG_CAN_LEDS, so add an example based on that and add a > pointer in the net/can/Kconfig file. > > Signed-off-by: Rasmus Villemoes > --- > .../devicetree/bindings/leds/common.txt | 17 ++++++++++ > drivers/leds/trigger/ledtrig-netdev.c | 31 +++++++++++++++++++ > drivers/net/can/Kconfig | 3 +- > 3 files changed, 50 insertions(+), 1 deletion(-) > > diff --git a/Documentation/devicetree/bindings/leds/common.txt b/Documentation/devicetree/bindings/leds/common.txt > index 7cb88460a47c..4f3a97e73417 100644 > --- a/Documentation/devicetree/bindings/leds/common.txt > +++ b/Documentation/devicetree/bindings/leds/common.txt > @@ -43,6 +43,23 @@ Optional properties for child nodes: > Documentation/ABI/testing/sysfs-class-led-trigger-netdev) > to reflect the state and activity of a net device. > > + The optional child node netdev can be used to > + configure initial values for the link, rx, tx and > + device_name properties. For example, setting > + linux,default-trigger = "netdev" and adding the child > + node > + > + netdev { > + rx; > + tx; > + link; > + device-name = "can0"; > + }; > + > + can be used to replace 'linux,default-trigger = > + "can0-rxtx"' that relies on the deprecated > + CONFIG_CAN_LEDS. > + > - led-pattern : Array of integers with default pattern for certain triggers. > Each trigger may parse this property differently: > - one-shot : two numbers specifying delay on and delay off (in ms), > diff --git a/drivers/leds/trigger/ledtrig-netdev.c b/drivers/leds/trigger/ledtrig-netdev.c > index 55153a7e8433..1f7c86df1e91 100644 > --- a/drivers/leds/trigger/ledtrig-netdev.c > +++ b/drivers/leds/trigger/ledtrig-netdev.c > @@ -20,6 +20,7 @@ > #include > #include > #include > +#include > #include > #include > #include "../leds.h" > @@ -395,6 +396,35 @@ static void netdev_trig_work(struct work_struct *work) > (atomic_read(&trigger_data->interval)*2)); > } > > +static void netdev_trig_of_init(struct led_classdev *led_cdev, > + struct led_netdev_data *trigger_data) > +{ > + struct device_node *np = led_cdev->dev->of_node; > + const char *device_name; > + > + if (!np) > + return; > + np = of_get_child_by_name(np, "netdev"); > + if (!np) > + return; > + > + if (of_property_read_bool(np, "link")) > + __set_bit(NETDEV_LED_LINK, &trigger_data->mode); > + if (of_property_read_bool(np, "tx")) > + __set_bit(NETDEV_LED_TX, &trigger_data->mode); > + if (of_property_read_bool(np, "rx")) > + __set_bit(NETDEV_LED_RX, &trigger_data->mode); > + if (!of_property_read_string(np, "device-name", &device_name)) { > + unsigned len = strlen(device_name); > + > + if (len < IFNAMSIZ) > + set_device(trigger_data, device_name, len); > + } > + set_baseline_state(trigger_data); > + > + of_node_put(np); > +} > + > static int netdev_trig_activate(struct led_classdev *led_cdev) > { > struct led_netdev_data *trigger_data; > @@ -418,6 +448,7 @@ static int netdev_trig_activate(struct led_classdev *led_cdev) > trigger_data->mode = 0; > atomic_set(&trigger_data->interval, msecs_to_jiffies(50)); > trigger_data->last_activity = 0; > + netdev_trig_of_init(led_cdev, trigger_data); You want to execute this only if recently introduced flag LED_INIT_DEFAULT_TRIGGER is set. Please compare how drivers/leds/trigger/ledtrig-pattern.c uses it. > > led_set_trigger_data(led_cdev, trigger_data); > > diff --git a/drivers/net/can/Kconfig b/drivers/net/can/Kconfig > index e0f0ad7a550a..91703a96b636 100644 > --- a/drivers/net/can/Kconfig > +++ b/drivers/net/can/Kconfig > @@ -77,7 +77,8 @@ config CAN_LEDS > # everything that this driver is doing. This is marked as broken > # because it uses stuff that is intended to be changed or removed. > # Please consider switching to the netdev trigger and confirm it > - # fulfills your needs instead of fixing this driver. > + # fulfills your needs instead of fixing this driver. See e.g. > + # Documentation/devicetree/bindings/leds/common.txt > depends on BROKEN > select LEDS_TRIGGERS > ---help--- > -- Best regards, Jacek Anaszewski