15c3b6dc1SDirk Eibach /* 25c3b6dc1SDirk Eibach * (C) Copyright 2015 3*d38826a3SMario Six * Dirk Eibach, Guntermann & Drunck GmbH, dirk.eibach@gdsys.cc 45c3b6dc1SDirk Eibach * 55c3b6dc1SDirk Eibach * SPDX-License-Identifier: GPL-2.0+ 65c3b6dc1SDirk Eibach */ 75c3b6dc1SDirk Eibach 85c3b6dc1SDirk Eibach #include <common.h> 95c3b6dc1SDirk Eibach #include <i2c.h> 105c3b6dc1SDirk Eibach 115c3b6dc1SDirk Eibach enum { 125c3b6dc1SDirk Eibach FAN_CONFIG = 0x03, 135c3b6dc1SDirk Eibach FAN_TACHLIM_LSB = 0x48, 145c3b6dc1SDirk Eibach FAN_TACHLIM_MSB = 0x49, 155c3b6dc1SDirk Eibach FAN_PWM_FREQ = 0x4D, 165c3b6dc1SDirk Eibach }; 175c3b6dc1SDirk Eibach 185c3b6dc1SDirk Eibach void init_fan_controller(u8 addr) 195c3b6dc1SDirk Eibach { 205c3b6dc1SDirk Eibach int val; 215c3b6dc1SDirk Eibach 225c3b6dc1SDirk Eibach /* set PWM Frequency to 2.5% resolution */ 235c3b6dc1SDirk Eibach i2c_reg_write(addr, FAN_PWM_FREQ, 20); 245c3b6dc1SDirk Eibach 255c3b6dc1SDirk Eibach /* set Tachometer Limit */ 265c3b6dc1SDirk Eibach i2c_reg_write(addr, FAN_TACHLIM_LSB, 0x10); 275c3b6dc1SDirk Eibach i2c_reg_write(addr, FAN_TACHLIM_MSB, 0x0a); 285c3b6dc1SDirk Eibach 295c3b6dc1SDirk Eibach /* enable Tach input */ 305c3b6dc1SDirk Eibach val = i2c_reg_read(addr, FAN_CONFIG) | 0x04; 315c3b6dc1SDirk Eibach i2c_reg_write(addr, FAN_CONFIG, val); 325c3b6dc1SDirk Eibach } 33