All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Lunn <andrew@lunn.ch>
To: Ansuel Smith <ansuelsmth@gmail.com>
Cc: "Vivien Didelot" <vivien.didelot@gmail.com>,
	"Florian Fainelli" <f.fainelli@gmail.com>,
	"Vladimir Oltean" <olteanv@gmail.com>,
	"David S. Miller" <davem@davemloft.net>,
	"Jakub Kicinski" <kuba@kernel.org>,
	"Rob Herring" <robh+dt@kernel.org>,
	"Jonathan Corbet" <corbet@lwn.net>, "Pavel Machek" <pavel@ucw.cz>,
	"John Crispin" <john@phrozen.org>,
	netdev@vger.kernel.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org,
	linux-leds@vger.kernel.org, "Marek Behún" <kabel@kernel.org>
Subject: Re: [RFC PATCH v3 6/8] leds: trigger: add hardware-phy-activity trigger
Date: Tue, 9 Nov 2021 22:17:53 +0100	[thread overview]
Message-ID: <YYrlgVT7Okw1c6pB@lunn.ch> (raw)
In-Reply-To: <20211109022608.11109-7-ansuelsmth@gmail.com>

> +#define DEFINE_OFFLOAD_TRIGGER(trigger_name, trigger) \
> +	static ssize_t trigger_name##_show(struct device *dev, \
> +				struct device_attribute *attr, char *buf) \
> +	{ \
> +		struct led_classdev *led_cdev = led_trigger_get_led(dev); \
> +		int val; \
> +		val = led_cdev->hw_control_configure(led_cdev, trigger, BLINK_MODE_READ); \
> +		return sprintf(buf, "%d\n", val ? 1 : 0); \
> +	} \
> +	static ssize_t trigger_name##_store(struct device *dev, \
> +					struct device_attribute *attr, \
> +					const char *buf, size_t size) \
> +	{ \
> +		struct led_classdev *led_cdev = led_trigger_get_led(dev); \
> +		unsigned long state; \
> +		int cmd, ret; \
> +		ret = kstrtoul(buf, 0, &state); \
> +		if (ret) \
> +			return ret; \
> +		cmd = !!state ? BLINK_MODE_ENABLE : BLINK_MODE_DISABLE; \
> +		/* Update the configuration with every change */ \
> +		led_cdev->hw_control_configure(led_cdev, trigger, cmd); \
> +		return size; \
> +	} \
> +	DEVICE_ATTR_RW(trigger_name)

These are pretty big macro magic functions. And there is little actual
macro in them. So make them simple functions which call helpers

	static ssize_t trigger_name##_show(struct device *dev, \
				struct device_attribute *attr, char *buf) \
	{ \
		return trigger_generic_store(dev, attr, buf, size, trigger); \
	} \
	static ssize_t trigger_name##_store(struct device *dev, \
					struct device_attribute *attr, \
					const char *buf, size_t size) \
	{ \
		return trigger_generic_store(dev, attr, buf, size, trigger); \
	} \

> +/* The attrs will be placed dynamically based on the supported triggers */
> +static struct attribute *phy_activity_attrs[PHY_ACTIVITY_MAX_TRIGGERS + 1];
> +
> +static int offload_phy_activity_activate(struct led_classdev *led_cdev)
> +{
> +	u32 checked_list = 0;
> +	int i, trigger, ret;
> +
> +	/* Scan the supported offload triggers and expose them in sysfs if supported */
> +	for (trigger = 0, i = 0; trigger < PHY_ACTIVITY_MAX_TRIGGERS; trigger++) {
> +		if (!(checked_list & BLINK_TX) &&
> +		    led_trigger_blink_mode_is_supported(led_cdev, BLINK_TX)) {
> +			phy_activity_attrs[i++] = &dev_attr_blink_tx.attr;
> +			checked_list |= BLINK_TX;
> +		}

Please re-write this using tables, rather than all this repeated code.

       Andrew

  parent reply	other threads:[~2021-11-09 21:18 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-09  2:26 [RFC PATCH v3 0/8] Adds support for PHY LEDs with offload triggers Ansuel Smith
2021-11-09  2:26 ` [RFC PATCH v3 1/8] leds: add support for hardware driven LEDs Ansuel Smith
2021-11-09  6:16   ` Randy Dunlap
2021-11-09 20:25   ` kernel test robot
2021-11-09 20:34   ` Andrew Lunn
2021-11-09 20:40     ` Ansuel Smith
2021-11-09  2:26 ` [RFC PATCH v3 2/8] leds: add function to configure hardware controlled LED Ansuel Smith
2021-11-09  3:01   ` Marek Behún
2021-11-09 14:22     ` Ansuel Smith
2021-11-09 20:49       ` Andrew Lunn
2021-11-10 19:51         ` Ansuel Smith
2021-11-10 22:24           ` Andrew Lunn
2021-11-09 22:18       ` Marek Behún
2021-11-09  6:12   ` Randy Dunlap
2021-11-09  2:26 ` [RFC PATCH v3 3/8] leds: trigger: netdev: drop NETDEV_LED_MODE_LINKUP from mode Ansuel Smith
2021-11-09  3:02   ` Marek Behún
2021-11-09 14:24     ` Ansuel Smith
2021-11-09 20:53     ` Andrew Lunn
2021-11-09  2:26 ` [RFC PATCH v3 4/8] leds: trigger: netdev: rename and expose NETDEV trigger enum modes Ansuel Smith
2021-11-09 20:58   ` Andrew Lunn
2021-11-10 19:57     ` Ansuel Smith
2021-11-10 22:29       ` Andrew Lunn
2021-11-09  2:26 ` [RFC PATCH v3 5/8] leds: trigger: netdev: add hardware control support Ansuel Smith
2021-11-09  3:12   ` Marek Behún
2021-11-09 15:02     ` Ansuel Smith
2021-11-09  2:26 ` [RFC PATCH v3 6/8] leds: trigger: add hardware-phy-activity trigger Ansuel Smith
2021-11-09  3:25   ` Marek Behún
2021-11-09 21:09     ` Andrew Lunn
2021-11-10 20:04       ` Ansuel Smith
2021-11-10 22:32         ` Andrew Lunn
2021-11-09  6:02   ` Randy Dunlap
2021-11-09 15:06     ` Ansuel Smith
2021-11-09 21:17   ` Andrew Lunn [this message]
2021-11-09 21:28   ` Andrew Lunn
2021-11-09  2:26 ` [RFC PATCH v3 7/8] net: dsa: qca8k: add LEDs support Ansuel Smith
2021-11-09  6:03   ` Randy Dunlap
2021-11-09 21:22   ` Andrew Lunn
2021-11-09  2:26 ` [RFC PATCH v3 8/8] dt-bindings: net: dsa: qca8k: add LEDs definition example Ansuel Smith

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=YYrlgVT7Okw1c6pB@lunn.ch \
    --to=andrew@lunn.ch \
    --cc=ansuelsmth@gmail.com \
    --cc=corbet@lwn.net \
    --cc=davem@davemloft.net \
    --cc=devicetree@vger.kernel.org \
    --cc=f.fainelli@gmail.com \
    --cc=john@phrozen.org \
    --cc=kabel@kernel.org \
    --cc=kuba@kernel.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-leds@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=olteanv@gmail.com \
    --cc=pavel@ucw.cz \
    --cc=robh+dt@kernel.org \
    --cc=vivien.didelot@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.