uboot/include/pwm.h
<<
>>
Prefs
   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         * set_invert() - Set the PWM invert
  39         *
  40         * @dev:        PWM device to update
  41         * @channel:    PWM channel to update
  42         * @polarity:   true to invert, false to keep normal polarity
  43         * @return 0 if OK, -ve on error
  44         */
  45        int (*set_invert)(struct udevice *dev, uint channel, bool polarity);
  46};
  47
  48#define pwm_get_ops(dev)        ((struct pwm_ops *)(dev)->driver->ops)
  49
  50/**
  51 * pwm_set_config() - Set the PWM configuration
  52 *
  53 * @dev:        PWM device to update
  54 * @channel:    PWM channel to update
  55 * @period_ns:  PWM period in nanoseconds
  56 * @duty_ns:    PWM duty period in nanoseconds
  57 * @return 0 if OK, -ve on error
  58 */
  59int pwm_set_config(struct udevice *dev, uint channel, uint period_ns,
  60                   uint duty_ns);
  61
  62/**
  63 * pwm_set_enable() - Enable or disable the PWM
  64 *
  65 * @dev:        PWM device to update
  66 * @channel:    PWM channel to update
  67 * @enable:     true to enable, false to disable
  68 * @return 0 if OK, -ve on error
  69 */
  70int pwm_set_enable(struct udevice *dev, uint channel, bool enable);
  71
  72/**
  73 * pwm_set_invert() - Set pwm default polarity
  74 *
  75 * @dev:        PWM device to update
  76 * @channel:    PWM channel to update
  77 * @polarity:   true to invert, false to keep normal polarity
  78 * @return 0 if OK, -ve on error
  79 */
  80int pwm_set_invert(struct udevice *dev, uint channel, bool polarity);
  81
  82/* Legacy interface */
  83#ifndef CONFIG_DM_PWM
  84int     pwm_init                (int pwm_id, int div, int invert);
  85int     pwm_config              (int pwm_id, int duty_ns, int period_ns);
  86int     pwm_enable              (int pwm_id);
  87void    pwm_disable             (int pwm_id);
  88#endif
  89
  90#endif /* _pwm_h_ */
  91