1// SPDX-License-Identifier: GPL-2.0+
2/*
3 * Copyright 2018-2020 NXP.
4 *
5 */
6
7#include <common.h>
8#include <command.h>
9#include <i2c.h>
10#include <asm/global_data.h>
11#include <asm/io.h>
12
13#include "emc2305.h"
14
15DECLARE_GLOBAL_DATA_PTR;
16
17void set_fan_speed(u8 data, int chip_addr)
18{
19	u8 index;
20	u8 Fan[NUM_OF_FANS] = {I2C_EMC2305_FAN1,
21			       I2C_EMC2305_FAN2,
22			       I2C_EMC2305_FAN3,
23			       I2C_EMC2305_FAN4,
24			       I2C_EMC2305_FAN5};
25
26	for (index = 0; index < NUM_OF_FANS; index++) {
27#if !CONFIG_IS_ENABLED(DM_I2C)
28		if (i2c_write(chip_addr, Fan[index], 1, &data, 1) != 0) {
29			printf("Error: failed to change fan speed @%x\n",
30			       Fan[index]);
31		}
32#else
33		struct udevice *dev;
34
35		if (i2c_get_chip_for_busnum(0, chip_addr, 1, &dev))
36			continue;
37
38		if (dm_i2c_write(dev, Fan[index], &data, 1) != 0) {
39			printf("Error: failed to change fan speed @%x\n",
40			       Fan[index]);
41		}
42#endif
43	}
44}
45
46void emc2305_init(int chip_addr)
47{
48	u8 data;
49
50	data = I2C_EMC2305_CMD;
51#if !CONFIG_IS_ENABLED(DM_I2C)
52	if (i2c_write(chip_addr, I2C_EMC2305_CONF, 1, &data, 1) != 0)
53		printf("Error: failed to configure EMC2305\n");
54#else
55	struct udevice *dev;
56
57	if (!i2c_get_chip_for_busnum(0, chip_addr, 1, &dev))
58		if (dm_i2c_write(dev, I2C_EMC2305_CONF, &data, 1))
59			printf("Error: failed to configure EMC2305\n");
60#endif
61
62}
63