mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2025-12-29 18:11:05 +00:00
The current PWM interface allows for a pwm duty setting ranging from 0 to 100, resulting in a very coarse adjustment. To alleviate the problem, the interface now allows for a pwm duty setting in the range of 0 to 65535. BUG=chromium:615109 BRANCH=None TEST=Manual on chell. `ectool pwmsetduty 1 65535` - Verify LCD backlight goes to 100% `ectool pwmgetduty 1` - Prints 65535 `ectool pwmsetduty 1 0` - Verify LCD backlight goes to 0% `ectool pwmgetduty 1` - Prints 0 terminal pwmduty tests: >pwmduty PWM channels: 0: 100% 1: 62% 2: 100% 3: 80% > pwmduty 1 50 Setting channel 1 to 50% 1: 50% > pwmduty 1 0 Setting channel 1 to 0% 1: disabled > pwmduty 1 100 Setting channel 1 to 100% 1: 100% > pwmduty 1 raw 0 Setting channel 1 to raw 0% 1: disabled > pwmduty 1 raw 65535 Setting channel 1 to raw 65535% 1: 65535 > pwmduty PWM channels: 0: 100% 1: 100% 2: 100% 3: 80% > pwmduty 1 raw 30000 Setting channel 1 to raw 30000% 1: 30000 > pwmduty PWM channels: 0: 100% 1: 46% 2: 100% 3: 80% Change-Id: I299b77585f3988e72d9ac918bdde7dc5fa3df6de Reviewed-on: https://chromium-review.googlesource.com/374481 Commit-Ready: Shawn N <shawnn@chromium.org> Tested-by: Sam Hurst <shurst@google.com> Reviewed-by: Shawn N <shawnn@chromium.org>
69 lines
1.6 KiB
C
69 lines
1.6 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.
|
|
*/
|
|
|
|
#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 (1 << 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 (1 << 1)
|
|
/**
|
|
* PWM clock select alternate source. The actual clock and alternate
|
|
* source are chip dependent.
|
|
*/
|
|
#define PWM_CONFIG_ALT_CLOCK (1 << 2)
|
|
/**
|
|
* PWM channel has a complementary output signal which should be enabled in
|
|
* addition to the primary output.
|
|
*/
|
|
#define PWM_CONFIG_COMPLEMENTARY_OUTPUT (1 << 3)
|
|
/**
|
|
* PWM channel must stay active in low-power idle, if enabled.
|
|
*/
|
|
#define PWM_CONFIG_DSLEEP (1 << 4)
|
|
#endif /* __CROS_EC_PWM_H */
|