mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2026-01-04 14:01:54 +00:00
GPIO alternate functions used to be configured throughout the code,
which made it hard to tell which ones you needed to configure yourself
in board.c. It also sometimes (chip/lm4/i2c.c) led to GPIOs being
configured as alternate functions even if they weren't used on a given
board.
With this change, every board has a table in board.c which lists ALL
GPIOs which have alternate functions. This is now the only place
where alternate functions are configured. Each module then calls
gpio_init_module() to set up its GPIOs.
This also fixes a bug where gpio_set_flags() ignored most of the flags
passed to it (only direction and level were actually used).
On stm32f, gpio_set_alternate() does not exist, and pins are
configured via direct register writes from board.c. Rather than
attempt to change that in the same CL, I've stubbed out
gpio_set_alternate() for stm32f, and will fix the register writes in a
follow-up CL.
BUG=chrome-os-partner:21618
BRANCH=peppy (fixes I2C1 being initialized even though those pins are used
for other things)
TEST=boot link, falco, pit, spring
Change-Id: I40f47025d8f767e0723c6b40c80413af9ba8deba
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/64400
71 lines
1.5 KiB
C
71 lines
1.5 KiB
C
/* Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
|
|
* Use of this source code is governed by a BSD-style license that can be
|
|
* found in the LICENSE file.
|
|
*/
|
|
|
|
/* PWM module for Chrome EC */
|
|
|
|
#ifndef __CROS_EC_PWM_H
|
|
#define __CROS_EC_PWM_H
|
|
|
|
#include "common.h"
|
|
|
|
/**
|
|
* Enable/disable the fan.
|
|
*
|
|
* Should be called by whatever function enables the power supply to the fan.
|
|
*/
|
|
void pwm_enable_fan(int enable);
|
|
|
|
/**
|
|
* Enable/disable fan RPM control logic.
|
|
*
|
|
* @param rpm_mode Enable (1) or disable (0) RPM control loop; when
|
|
* disabled, fan duty cycle will be used.
|
|
*/
|
|
void pwm_set_fan_rpm_mode(int enable);
|
|
|
|
/**
|
|
* Get the current fan RPM.
|
|
*/
|
|
int pwm_get_fan_rpm(void);
|
|
|
|
/**
|
|
* Get the target fan RPM.
|
|
*/
|
|
int pwm_get_fan_target_rpm(void);
|
|
|
|
/**
|
|
* Set the target fan RPM.
|
|
*
|
|
* @param rpm Target RPM; pass -1 to set fan to maximum.
|
|
*/
|
|
void pwm_set_fan_target_rpm(int rpm);
|
|
|
|
/**
|
|
* Set the fan PWM duty cycle (0-100), disabling the automatic control.
|
|
*/
|
|
void pwm_set_fan_duty(int percent);
|
|
|
|
/**
|
|
* Enable/disable the keyboard backlight.
|
|
*/
|
|
void pwm_enable_keyboard_backlight(int enable);
|
|
|
|
/**
|
|
* Get the keyboard backlight enable/disable status (1=enabled, 0=disabled).
|
|
*/
|
|
int pwm_get_keyboard_backlight_enabled(void);
|
|
|
|
/**
|
|
* Get the keyboard backlight percentage (0=off, 100=max).
|
|
*/
|
|
int pwm_get_keyboard_backlight(void);
|
|
|
|
/**
|
|
* Set the keyboard backlight percentage (0=off, 100=max).
|
|
*/
|
|
void pwm_set_keyboard_backlight(int percent);
|
|
|
|
#endif /* __CROS_EC_PWM_H */
|