Enable LTC1695 fan from bootloader/spl

Bug: 119668696
Test: test fan running from bootloader stage
Change-Id: Ia8c692f3a2fa21568742e1041f8a6b4e8a8e8afb
diff --git a/board/freescale/imx8mq_phanbell/spl.c b/board/freescale/imx8mq_phanbell/spl.c
index 1e22b00..c821169 100644
--- a/board/freescale/imx8mq_phanbell/spl.c
+++ b/board/freescale/imx8mq_phanbell/spl.c
@@ -25,6 +25,8 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
+#define ENABLE_LTC1695_FAN
+
 void spl_dram_init(void)
 {
 	const int board_id = get_board_id();
@@ -57,6 +59,19 @@
 	},
 };
 
+struct i2c_pads_info i2c_pad_info2 = {
+	.scl = {
+		.i2c_mode = IMX8MQ_PAD_I2C2_SCL__I2C2_SCL | PC,
+		.gpio_mode = IMX8MQ_PAD_I2C2_SCL__GPIO5_IO16 | PC,
+		.gp = IMX_GPIO_NR(5, 16),
+	},
+	.sda = {
+		.i2c_mode = IMX8MQ_PAD_I2C2_SDA__I2C2_SDA | PC,
+		.gpio_mode = IMX8MQ_PAD_I2C2_SDA__GPIO5_IO17 | PC,
+		.gp = IMX_GPIO_NR(5, 17),
+	},
+};
+
 #define USDHC2_CD_GPIO	IMX_GPIO_NR(2, 12)
 #define USDHC1_PWR_GPIO IMX_GPIO_NR(2, 10)
 #define USDHC2_PWR_GPIO IMX_GPIO_NR(2, 19)
@@ -197,6 +212,23 @@
 }
 #endif
 
+#ifdef ENABLE_LTC1695_FAN
+#define I2C2_BUS 1
+void enable_ltc1695_fan()
+{
+	i2c_set_bus_num(I2C2_BUS);
+	uint8_t on = 0xff;
+	int r = i2c_write(0x74, 0, 0, &on, 1);
+	if (r == 0) {
+		printf("ltc1695 fan on\n");
+	} else {
+		printf("write to ltc1695 failed:%d\n", r);
+	}
+	i2c_set_bus_num(0);
+}
+
+#endif
+
 #define ASRC_SBMR1 0x30390058
 #define ASRC_SBMR2 0x30390070
 
@@ -213,6 +245,11 @@
 		*(volatile uint32_t*)ASRC_SBMR1,
 		*(volatile uint32_t*)ASRC_SBMR2);
 
+#ifdef ENABLE_LTC1695_FAN
+	setup_i2c(I2C2_BUS, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info2);
+	enable_ltc1695_fan();
+#endif
+
 	/* DDR initialization */
 	spl_dram_init();