| /* Copyright (c) 2013 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. |
| */ |
| |
| /* STM32-specific PWM module for Chrome EC */ |
| |
| #ifndef __CROS_EC_PWM_CHIP_H |
| #define __CROS_EC_PWM_CHIP_H |
| |
| /* Data structure to define PWM channels. */ |
| struct pwm_t { |
| /* |
| * Timer powering the PWM channel. Must use STM32_TIM(x) to |
| * initialize |
| */ |
| struct { |
| int id; |
| uintptr_t base; |
| } tim; |
| /* Channel ID within the timer */ |
| int channel; |
| /* PWM channel flags. See include/pwm.h */ |
| uint32_t flags; |
| /* PWM frequency (Hz) */ |
| int frequency; |
| }; |
| |
| extern const struct pwm_t pwm_channels[]; |
| |
| /* Macro to fill in both timer ID and register base */ |
| #define STM32_TIM(x) {x, STM32_TIM_BASE(x)} |
| |
| /* Plain ID mapping for readability */ |
| #define STM32_TIM_CH(x) (x) |
| |
| #endif /* __CROS_EC_PWM_CHIP_H */ |