Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5faf7cbb authored by Pawel Moll's avatar Pawel Moll Committed by Olof Johansson
Browse files

mfd: vexpress-sysreg: Remove LEDs code



As the current LEDs code breaks other platform, remove it.

It shall be replaced by a generic "MMIO LEDs" driver.

Reported-by: default avatarStephen Warren <swarren@wwwdotorg.org>
Signed-off-by: default avatarPawel Moll <pawel.moll@arm.com>
Tested-by: default avatarStephen Warren <swarren@nvidia.com>
Signed-off-by: default avatarOlof Johansson <olof@lixom.net>
parent a5559a33
Loading
Loading
Loading
Loading
+0 −77
Original line number Diff line number Diff line
@@ -473,80 +473,3 @@ static int __init vexpress_sysreg_init(void)
	return platform_driver_register(&vexpress_sysreg_driver);
}
core_initcall(vexpress_sysreg_init);


#if defined(CONFIG_LEDS_CLASS)

struct vexpress_sysreg_led {
	u32 mask;
	struct led_classdev cdev;
} vexpress_sysreg_leds[] = {
	{ .mask = 1 << 0, .cdev.name = "v2m:green:user1",
			.cdev.default_trigger = "heartbeat", },
	{ .mask = 1 << 1, .cdev.name = "v2m:green:user2",
			.cdev.default_trigger = "mmc0", },
	{ .mask = 1 << 2, .cdev.name = "v2m:green:user3",
			.cdev.default_trigger = "cpu0", },
	{ .mask = 1 << 3, .cdev.name = "v2m:green:user4",
			.cdev.default_trigger = "cpu1", },
	{ .mask = 1 << 4, .cdev.name = "v2m:green:user5",
			.cdev.default_trigger = "cpu2", },
	{ .mask = 1 << 5, .cdev.name = "v2m:green:user6",
			.cdev.default_trigger = "cpu3", },
	{ .mask = 1 << 6, .cdev.name = "v2m:green:user7",
			.cdev.default_trigger = "cpu4", },
	{ .mask = 1 << 7, .cdev.name = "v2m:green:user8",
			.cdev.default_trigger = "cpu5", },
};

static DEFINE_SPINLOCK(vexpress_sysreg_leds_lock);

static void vexpress_sysreg_led_brightness_set(struct led_classdev *cdev,
		enum led_brightness brightness)
{
	struct vexpress_sysreg_led *led = container_of(cdev,
			struct vexpress_sysreg_led, cdev);
	unsigned long flags;
	u32 val;

	spin_lock_irqsave(&vexpress_sysreg_leds_lock, flags);

	val = readl(vexpress_sysreg_base + SYS_LED);
	if (brightness == LED_OFF)
		val &= ~led->mask;
	else
		val |= led->mask;
	writel(val, vexpress_sysreg_base + SYS_LED);

	spin_unlock_irqrestore(&vexpress_sysreg_leds_lock, flags);
}

static int __init vexpress_sysreg_init_leds(void)
{
	struct vexpress_sysreg_led *led;
	int i;

	/* Clear all user LEDs */
	writel(0, vexpress_sysreg_base + SYS_LED);

	for (i = 0, led = vexpress_sysreg_leds;
			i < ARRAY_SIZE(vexpress_sysreg_leds); i++, led++) {
		int err;

		led->cdev.brightness_set = vexpress_sysreg_led_brightness_set;
		err = led_classdev_register(vexpress_sysreg_dev, &led->cdev);
		if (err) {
			dev_err(vexpress_sysreg_dev,
					"Failed to register LED %d! (%d)\n",
					i, err);
			while (led--, i--)
				led_classdev_unregister(&led->cdev);
			return err;
		}
	}

	return 0;
}
device_initcall(vexpress_sysreg_init_leds);

#endif