Blame view

include/pch.h 4.06 KB
83d290c56   Tom Rini   SPDX: Convert all...
1
  /* SPDX-License-Identifier: GPL-2.0+ */
ca831f493   Simon Glass   dm: Expand the uc...
2
3
4
  /*
   * Copyright (c) 2015 Google, Inc
   * Written by Simon Glass <sjg@chromium.org>
ca831f493   Simon Glass   dm: Expand the uc...
5
6
7
8
   */
  
  #ifndef __pch_h
  #define __pch_h
1ff4f321b   Simon Glass   dm: x86: Add a dr...
9
10
11
  #define PCH_RCBA		0xf0
  
  #define BIOS_CTRL_BIOSWE	BIT(0)
1260f8c0e   Simon Glass   pch: Add ioctl su...
12
13
  /* All the supported PCH ioctls */
  enum pch_req_t {
67b0cda76   Simon Glass   x86: ivybridge: A...
14
15
  	/* Returns HDA config info if Azalia V1CTL enabled, -ENOENT if not */
  	PCH_REQ_HDA_CONFIG,
1260f8c0e   Simon Glass   pch: Add ioctl su...
16
17
18
19
20
21
22
23
24
25
26
27
  	PCH_REQ_TEST1,		/* Test requests for sandbox driver */
  	PCH_REQ_TEST2,
  	PCH_REQ_TEST3,
  
  	PCH_REQ_COUNT,		/* Number of ioctrls supported */
  };
  
  /**
   * struct pch_ops - Operations for the Platform Controller Hub
   *
   * Consider using ioctl() to add rarely used or driver-specific operations.
   */
ca831f493   Simon Glass   dm: Expand the uc...
28
29
  struct pch_ops {
  	/**
3e389d8ba   Bin Meng   dm: pch: Rename g...
30
  	 * get_spi_base() - get the address of SPI base
ca831f493   Simon Glass   dm: Expand the uc...
31
32
33
34
35
  	 *
  	 * @dev:	PCH device to check
  	 * @sbasep:	Returns address of SPI base if available, else 0
  	 * @return 0 if OK, -ve on error (e.g. there is no SPI base)
  	 */
3e389d8ba   Bin Meng   dm: pch: Rename g...
36
  	int (*get_spi_base)(struct udevice *dev, ulong *sbasep);
ca831f493   Simon Glass   dm: Expand the uc...
37
38
  
  	/**
ca831f493   Simon Glass   dm: Expand the uc...
39
40
41
42
43
44
45
46
  	 * set_spi_protect() - set whether SPI flash is protected or not
  	 *
  	 * @dev:	PCH device to adjust
  	 * @protect:	true to protect, false to unprotect
  	 *
  	 * @return 0 on success, -ENOSYS if not implemented
  	 */
  	int (*set_spi_protect)(struct udevice *dev, bool protect);
384980c68   Bin Meng   dm: pch: Add get_...
47
48
49
50
51
52
53
54
55
  
  	/**
  	 * get_gpio_base() - get the address of GPIO base
  	 *
  	 * @dev:	PCH device to check
  	 * @gbasep:	Returns address of GPIO base if available, else 0
  	 * @return 0 if OK, -ve on error (e.g. there is no GPIO base)
  	 */
  	int (*get_gpio_base)(struct udevice *dev, u32 *gbasep);
79d4eb627   Bin Meng   dm: pch: Add get_...
56
57
58
59
60
61
62
63
64
  
  	/**
  	 * get_io_base() - get the address of IO base
  	 *
  	 * @dev:	PCH device to check
  	 * @iobasep:	Returns address of IO base if available, else 0
  	 * @return 0 if OK, -ve on error (e.g. there is no IO base)
  	 */
  	int (*get_io_base)(struct udevice *dev, u32 *iobasep);
1260f8c0e   Simon Glass   pch: Add ioctl su...
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
  
  	/**
  	 * ioctl() - perform misc read/write operations
  	 *
  	 * This is a catch-all operation intended to avoid adding lots of
  	 * methods to this uclass, of which few are commonly used. Uncommon
  	 * operations that pertain only to a few devices in this uclass should
  	 * use this method instead of adding new methods.
  	 *
  	 * @dev:	PCH device to check
  	 * @req:	PCH request ID
  	 * @data:	Input/output data
  	 * @size:	Size of input data (and maximum size of output data)
  	 * @return size of output data on sucesss, -ve on error
  	 */
  	int (*ioctl)(struct udevice *dev, enum pch_req_t req, void *data,
  		     int size);
ca831f493   Simon Glass   dm: Expand the uc...
82
83
84
85
86
  };
  
  #define pch_get_ops(dev)        ((struct pch_ops *)(dev)->driver->ops)
  
  /**
3e389d8ba   Bin Meng   dm: pch: Rename g...
87
   * pch_get_spi_base() - get the address of SPI base
ca831f493   Simon Glass   dm: Expand the uc...
88
89
90
91
92
   *
   * @dev:	PCH device to check
   * @sbasep:	Returns address of SPI base if available, else 0
   * @return 0 if OK, -ve on error (e.g. there is no SPI base)
   */
3e389d8ba   Bin Meng   dm: pch: Rename g...
93
  int pch_get_spi_base(struct udevice *dev, ulong *sbasep);
ca831f493   Simon Glass   dm: Expand the uc...
94
95
  
  /**
ca831f493   Simon Glass   dm: Expand the uc...
96
97
98
99
100
101
102
103
   * set_spi_protect() - set whether SPI flash is protected or not
   *
   * @dev:	PCH device to adjust
   * @protect:	true to protect, false to unprotect
   *
   * @return 0 on success, -ENOSYS if not implemented
   */
  int pch_set_spi_protect(struct udevice *dev, bool protect);
384980c68   Bin Meng   dm: pch: Add get_...
104
105
106
107
108
109
110
111
  /**
   * pch_get_gpio_base() - get the address of GPIO base
   *
   * @dev:	PCH device to check
   * @gbasep:	Returns address of GPIO base if available, else 0
   * @return 0 if OK, -ve on error (e.g. there is no GPIO base)
   */
  int pch_get_gpio_base(struct udevice *dev, u32 *gbasep);
79d4eb627   Bin Meng   dm: pch: Add get_...
112
113
114
115
116
117
118
119
  /**
   * pch_get_io_base() - get the address of IO base
   *
   * @dev:	PCH device to check
   * @iobasep:	Returns address of IO base if available, else 0
   * @return 0 if OK, -ve on error (e.g. there is no IO base)
   */
  int pch_get_io_base(struct udevice *dev, u32 *iobasep);
1260f8c0e   Simon Glass   pch: Add ioctl su...
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
  /**
   * pch_ioctl() - perform misc read/write operations
   *
   * This is a catch-all operation intended to avoid adding lots of
   * methods to this uclass, of which few are commonly used. Uncommon
   * operations that pertain only to a few devices in this uclass should
   * use this method instead of adding new methods.
   *
   * @dev:	PCH device to check
   * @req:	PCH request ID
   * @data:	Input/output data
   * @size:	Size of input data (and maximum size of output data)
   * @return size of output data on sucesss, -ve on error
   */
  int pch_ioctl(struct udevice *dev, ulong req, void *data, int size);
ca831f493   Simon Glass   dm: Expand the uc...
135
  #endif