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

Commit 0ab83a7c authored by Simon Guinot's avatar Simon Guinot Committed by Guenter Roeck
Browse files

Kirkwood: add fan support for Network Space Max v2

parent d6fe1360
Loading
Loading
Loading
Loading
+43 −0
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@
#include <linux/gpio.h>
#include <linux/gpio_keys.h>
#include <linux/leds.h>
#include <linux/gpio-fan.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
#include <mach/kirkwood.h>
@@ -136,6 +137,46 @@ static struct platform_device netspace_v2_leds = {
	},
};

/*****************************************************************************
 * GPIO fan
 ****************************************************************************/

/* Designed for fan 40x40x16: ADDA AD0412LB-D50 6000rpm@12v */
static struct gpio_fan_speed netspace_max_v2_fan_speed[] = {
	{    0,  0 },
	{ 1500,	15 },
	{ 1700,	14 },
	{ 1800,	13 },
	{ 2100,	12 },
	{ 3100,	11 },
	{ 3300,	10 },
	{ 4300,	 9 },
	{ 5500,	 8 },
};

static unsigned netspace_max_v2_fan_ctrl[] = { 22, 7, 33, 23 };

static struct gpio_fan_alarm netspace_max_v2_fan_alarm = {
	.gpio		= 25,
	.active_low	= 1,
};

static struct gpio_fan_platform_data netspace_max_v2_fan_data = {
	.num_ctrl	= ARRAY_SIZE(netspace_max_v2_fan_ctrl),
	.ctrl		= netspace_max_v2_fan_ctrl,
	.alarm		= &netspace_max_v2_fan_alarm,
	.num_speed	= ARRAY_SIZE(netspace_max_v2_fan_speed),
	.speed		= netspace_max_v2_fan_speed,
};

static struct platform_device netspace_max_v2_gpio_fan = {
	.name	= "gpio-fan",
	.id	= -1,
	.dev	= {
		.platform_data	= &netspace_max_v2_fan_data,
	},
};

/*****************************************************************************
 * General Setup
 ****************************************************************************/
@@ -205,6 +246,8 @@ static void __init netspace_v2_init(void)
	platform_device_register(&netspace_v2_leds);
	platform_device_register(&netspace_v2_gpio_leds);
	platform_device_register(&netspace_v2_gpio_buttons);
	if (machine_is_netspace_max_v2())
		platform_device_register(&netspace_max_v2_gpio_fan);

	if (gpio_request(NETSPACE_V2_GPIO_POWER_OFF, "power-off") == 0 &&
	    gpio_direction_output(NETSPACE_V2_GPIO_POWER_OFF, 0) == 0)