[U-Boot] [PATCH 1/3] net2big_v2: initialize I2C fan at startup
Prafulla Wadaskar
prafulla at marvell.com
Tue Jun 18 08:48:33 CEST 2013
> -----Original Message-----
> From: Simon Guinot [mailto:simon.guinot at sequanux.org]
> Sent: 18 June 2013 02:28
> To: Prafulla Wadaskar
> Cc: Albert ARIBAUD; u-boot at lists.denx.de
> Subject: [PATCH 1/3] net2big_v2: initialize I2C fan at
> startup
>
> This patch ensures minimal cooling for the net2big_v2
> by automatically
> starting the I2C fan (GMT G762) at low speed (2800 RPM).
>
> Signed-off-by: Simon Guinot <simon.guinot at sequanux.org>
> ---
> board/LaCie/net2big_v2/net2big_v2.c | 54
> ++++++++++++++++++++++++++++++++++-
> board/LaCie/net2big_v2/net2big_v2.h | 5 ++++
> include/configs/lacie_kw.h | 9 +++++-
> 3 files changed, 66 insertions(+), 2 deletions(-)
>
> diff --git a/board/LaCie/net2big_v2/net2big_v2.c
> b/board/LaCie/net2big_v2/net2big_v2.c
> index e524f35..6cca4fb 100644
> --- a/board/LaCie/net2big_v2/net2big_v2.c
> +++ b/board/LaCie/net2big_v2/net2big_v2.c
> @@ -22,6 +22,7 @@
>
> #include <common.h>
> #include <command.h>
> +#include <i2c.h>
> #include <asm/arch/cpu.h>
> #include <asm/arch/kirkwood.h>
> #include <asm/arch/mpp.h>
> @@ -92,8 +93,59 @@ int board_init(void)
> }
>
> #if defined(CONFIG_MISC_INIT_R)
> +
> +#if defined(CONFIG_CMD_I2C) &&
> defined(CONFIG_SYS_I2C_G762_ADDR)
> +/*
> + * Start I2C fan (GMT G762 controller)
> + */
> +static void init_fan(void)
> +{
> + u8 data;
> +
> + i2c_set_bus_num(0);
> +
> + /* Enable open-loop and PWM modes */
> + data = 0x20;
> + if (i2c_write(CONFIG_SYS_I2C_G762_ADDR,
> + G762_REG_FAN_CMD1, 1, &data, 1) != 0)
> + goto err;
> + data = 0;
> + if (i2c_write(CONFIG_SYS_I2C_G762_ADDR,
> + G762_REG_SET_CNT, 1, &data, 1) != 0)
> + goto err;
> + /*
> + * RPM to PWM (set_out register) fan speed
> conversion array:
> + * 0 0x00
> + * 1500 0x04
> + * 2800 0x08
> + * 3400 0x0C
> + * 3700 0x10
> + * 4400 0x20
> + * 4700 0x30
> + * 4800 0x50
> + * 5200 0x80
> + * 5400 0xC0
> + * 5500 0xFF
> + *
> + * Start fan at low speed (2800 RPM):
> + */
> + data = 0x08;
> + if (i2c_write(CONFIG_SYS_I2C_G762_ADDR,
> + G762_REG_SET_OUT, 1, &data, 1) != 0)
> + goto err;
> +
> + return;
> +err:
> + printf("Error: failed to start I2C fan @%02x\n",
> + CONFIG_SYS_I2C_G762_ADDR);
> +}
> +#else
> +static void init_fan(void) {}
> +#endif /* CONFIG_CMD_I2C && CONFIG_SYS_I2C_G762_ADDR
> */
> +
> int misc_init_r(void)
> {
> + init_fan();
> #if defined(CONFIG_CMD_I2C) &&
> defined(CONFIG_SYS_I2C_EEPROM_ADDR)
> if (!getenv("ethaddr")) {
> uchar mac[6];
> @@ -103,7 +155,7 @@ int misc_init_r(void)
> #endif
> return 0;
> }
> -#endif
> +#endif /* CONFIG_MISC_INIT_R */
>
> #if defined(CONFIG_CMD_NET) &&
> defined(CONFIG_RESET_PHY_R)
> /* Configure and initialize PHY */
> diff --git a/board/LaCie/net2big_v2/net2big_v2.h
> b/board/LaCie/net2big_v2/net2big_v2.h
> index f9778f4..83537d6 100644
> --- a/board/LaCie/net2big_v2/net2big_v2.h
> +++ b/board/LaCie/net2big_v2/net2big_v2.h
> @@ -32,4 +32,9 @@
> /* Buttons */
> #define NET2BIG_V2_GPIO_PUSH_BUTTON 34
>
> +/* GMT G762 registers (I2C fan controller) */
> +#define G762_REG_SET_CNT 0x00
> +#define G762_REG_SET_OUT 0x03
> +#define G762_REG_FAN_CMD1 0x04
> +
> #endif /* NET2BIG_V2_H */
> diff --git a/include/configs/lacie_kw.h
> b/include/configs/lacie_kw.h
> index 09b5798..e2b3b21 100644
> --- a/include/configs/lacie_kw.h
> +++ b/include/configs/lacie_kw.h
> @@ -120,10 +120,14 @@
> #endif
>
> /*
> + * Enable platform initialisation via misc_init_r()
> function
> + */
> +#define CONFIG_MISC_INIT_R
> +
> +/*
> * Ethernet Driver configuration
> */
> #ifdef CONFIG_CMD_NET
> -#define CONFIG_MISC_INIT_R /* Call misc_init_r() to
> initialize MAC address */
> #define CONFIG_MVGBE_PORTS {1, 0} /* enable port
> 0 only */
> #define CONFIG_NETCONSOLE
> #endif
> @@ -153,6 +157,9 @@
> #define CONFIG_SYS_I2C_EEPROM_ADDR 0x50
> #define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 4 /* 16-
> byte page size */
> #define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1 /* 8-bit
> device address */
> +#if defined(CONFIG_NET2BIG_V2)
> +#define CONFIG_SYS_I2C_G762_ADDR 0x3e
> +#endif
> #endif /* CONFIG_CMD_I2C */
>
Acked-by: Prafulla Wadaskar <prafulla at marvell.com>
Regards...
Prafulla . . .
More information about the U-Boot
mailing list