| /* Copyright 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. |
| */ |
| |
| #ifndef __CROS_EC_PWM_H |
| #define __CROS_EC_PWM_H |
| |
| /* The values are defined in board.h */ |
| enum pwm_channel; |
| |
| /** |
| * Enable/disable a PWM channel. |
| */ |
| void pwm_enable(enum pwm_channel ch, int enabled); |
| |
| /** |
| * Get PWM channel enabled status. |
| */ |
| int pwm_get_enabled(enum pwm_channel ch); |
| |
| /** |
| * Set PWM channel duty cycle (0-65535). |
| */ |
| void pwm_set_raw_duty(enum pwm_channel ch, uint16_t duty); |
| |
| /** |
| * Get PWM channel duty cycle. |
| */ |
| uint16_t pwm_get_raw_duty(enum pwm_channel ch); |
| |
| /** |
| * Set PWM channel duty cycle (0-100). |
| */ |
| void pwm_set_duty(enum pwm_channel ch, int percent); |
| |
| /** |
| * Get PWM channel duty cycle. |
| */ |
| int pwm_get_duty(enum pwm_channel ch); |
| |
| |
| /* Flags for PWM config table */ |
| |
| /** |
| * PWM output signal is inverted, so 100% duty means always low |
| */ |
| #define PWM_CONFIG_ACTIVE_LOW BIT(0) |
| /** |
| * PWM channel has a fan controller with a tach input and can auto-adjust |
| * its duty cycle to produce a given fan RPM. |
| */ |
| #define PWM_CONFIG_HAS_RPM_MODE BIT(1) |
| /** |
| * PWM clock select alternate source. The actual clock and alternate |
| * source are chip dependent. |
| */ |
| #define PWM_CONFIG_ALT_CLOCK BIT(2) |
| /** |
| * PWM channel has a complementary output signal which should be enabled in |
| * addition to the primary output. |
| */ |
| #define PWM_CONFIG_COMPLEMENTARY_OUTPUT BIT(3) |
| /** |
| * PWM channel must stay active in low-power idle, if enabled. |
| */ |
| #define PWM_CONFIG_DSLEEP BIT(4) |
| /** |
| * PWM channel's IO type is open-drain, if enabled. (default IO is push-pull.) |
| */ |
| #define PWM_CONFIG_OPEN_DRAIN BIT(5) |
| #endif /* __CROS_EC_PWM_H */ |