1/* 2 * header file for pwm driver. 3 * 4 * Copyright 2016 Google Inc. 5 * Copyright (c) 2011 samsung electronics 6 * Donghwa Lee <dh09.lee@samsung.com> 7 * 8 * SPDX-License-Identifier: GPL-2.0+ 9 */ 10 11#ifndef _pwm_h_ 12#define _pwm_h_ 13 14/* struct pwm_ops: Operations for the PWM uclass */ 15struct pwm_ops { 16 /** 17 * set_config() - Set the PWM configuration 18 * 19 * @dev: PWM device to update 20 * @channel: PWM channel to update 21 * @period_ns: PWM period in nanoseconds 22 * @duty_ns: PWM duty period in nanoseconds 23 * @return 0 if OK, -ve on error 24 */ 25 int (*set_config)(struct udevice *dev, uint channel, uint period_ns, 26 uint duty_ns); 27 28 /** 29 * set_enable() - Enable or disable the PWM 30 * 31 * @dev: PWM device to update 32 * @channel: PWM channel to update 33 * @enable: true to enable, false to disable 34 * @return 0 if OK, -ve on error 35 */ 36 int (*set_enable)(struct udevice *dev, uint channel, bool enable); 37}; 38 39#define pwm_get_ops(dev) ((struct pwm_ops *)(dev)->driver->ops) 40 41/** 42 * pwm_set_config() - Set the PWM configuration 43 * 44 * @dev: PWM device to update 45 * @channel: PWM channel to update 46 * @period_ns: PWM period in nanoseconds 47 * @duty_ns: PWM duty period in nanoseconds 48 * @return 0 if OK, -ve on error 49 */ 50int pwm_set_config(struct udevice *dev, uint channel, uint period_ns, 51 uint duty_ns); 52 53/** 54 * pwm_set_enable() - Enable or disable the PWM 55 * 56 * @dev: PWM device to update 57 * @channel: PWM channel to update 58 * @enable: true to enable, false to disable 59 * @return 0 if OK, -ve on error 60 */ 61int pwm_set_enable(struct udevice *dev, uint channel, bool enable); 62 63/* Legacy interface */ 64#ifndef CONFIG_DM_PWM 65int pwm_init (int pwm_id, int div, int invert); 66int pwm_config (int pwm_id, int duty_ns, int period_ns); 67int pwm_enable (int pwm_id); 68void pwm_disable (int pwm_id); 69#endif 70 71#endif /* _pwm_h_ */ 72