Blame view

include/pwm.h 2.35 KB
83d290c56   Tom Rini   SPDX: Convert all...
1
  /* SPDX-License-Identifier: GPL-2.0+ */
3f129280b   Donghwa Lee   ARM: S5P: pwm dri...
2
3
4
  /*
   * header file for pwm driver.
   *
fc760cb8c   Simon Glass   dm: pwm: Add a PW...
5
   * Copyright 2016 Google Inc.
3f129280b   Donghwa Lee   ARM: S5P: pwm dri...
6
7
   * Copyright (c) 2011 samsung electronics
   * Donghwa Lee <dh09.lee@samsung.com>
3f129280b   Donghwa Lee   ARM: S5P: pwm dri...
8
9
10
11
   */
  
  #ifndef _pwm_h_
  #define _pwm_h_
fc760cb8c   Simon Glass   dm: pwm: Add a PW...
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
  /* struct pwm_ops: Operations for the PWM uclass */
  struct pwm_ops {
  	/**
  	 * set_config() - Set the PWM configuration
  	 *
  	 * @dev:	PWM device to update
  	 * @channel:	PWM channel to update
  	 * @period_ns:	PWM period in nanoseconds
  	 * @duty_ns:	PWM duty period in nanoseconds
  	 * @return 0 if OK, -ve on error
  	 */
  	int (*set_config)(struct udevice *dev, uint channel, uint period_ns,
  			  uint duty_ns);
  
  	/**
  	 * set_enable() - Enable or disable the PWM
  	 *
  	 * @dev:	PWM device to update
  	 * @channel:	PWM channel to update
  	 * @enable:	true to enable, false to disable
  	 * @return 0 if OK, -ve on error
  	 */
  	int (*set_enable)(struct udevice *dev, uint channel, bool enable);
0b60111aa   Kever Yang   power: regulator:...
35
36
37
38
39
40
41
42
43
  	/**
  	 * set_invert() - Set the PWM invert
  	 *
  	 * @dev:        PWM device to update
  	 * @channel:    PWM channel to update
  	 * @polarity:   true to invert, false to keep normal polarity
  	 * @return 0 if OK, -ve on error
  	 */
  	int (*set_invert)(struct udevice *dev, uint channel, bool polarity);
fc760cb8c   Simon Glass   dm: pwm: Add a PW...
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
  };
  
  #define pwm_get_ops(dev)	((struct pwm_ops *)(dev)->driver->ops)
  
  /**
   * pwm_set_config() - Set the PWM configuration
   *
   * @dev:	PWM device to update
   * @channel:	PWM channel to update
   * @period_ns:	PWM period in nanoseconds
   * @duty_ns:	PWM duty period in nanoseconds
   * @return 0 if OK, -ve on error
   */
  int pwm_set_config(struct udevice *dev, uint channel, uint period_ns,
  		   uint duty_ns);
  
  /**
   * pwm_set_enable() - Enable or disable the PWM
   *
   * @dev:	PWM device to update
   * @channel:	PWM channel to update
   * @enable:	true to enable, false to disable
   * @return 0 if OK, -ve on error
   */
  int pwm_set_enable(struct udevice *dev, uint channel, bool enable);
0b60111aa   Kever Yang   power: regulator:...
69
70
71
72
73
74
75
76
77
  /**
   * pwm_set_invert() - Set pwm default polarity
   *
   * @dev:	PWM device to update
   * @channel:	PWM channel to update
   * @polarity:	true to invert, false to keep normal polarity
   * @return 0 if OK, -ve on error
   */
  int pwm_set_invert(struct udevice *dev, uint channel, bool polarity);
fc760cb8c   Simon Glass   dm: pwm: Add a PW...
78
79
  /* Legacy interface */
  #ifndef CONFIG_DM_PWM
3f129280b   Donghwa Lee   ARM: S5P: pwm dri...
80
81
82
83
  int	pwm_init		(int pwm_id, int div, int invert);
  int	pwm_config		(int pwm_id, int duty_ns, int period_ns);
  int	pwm_enable		(int pwm_id);
  void	pwm_disable		(int pwm_id);
fc760cb8c   Simon Glass   dm: pwm: Add a PW...
84
  #endif
3f129280b   Donghwa Lee   ARM: S5P: pwm dri...
85
86
  
  #endif /* _pwm_h_ */