xref: /OK3568_Linux_fs/u-boot/include/pch.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun  * Copyright (c) 2015 Google, Inc
3*4882a593Smuzhiyun  * Written by Simon Glass <sjg@chromium.org>
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * SPDX-License-Identifier:	GPL-2.0+
6*4882a593Smuzhiyun  */
7*4882a593Smuzhiyun 
8*4882a593Smuzhiyun #ifndef __pch_h
9*4882a593Smuzhiyun #define __pch_h
10*4882a593Smuzhiyun 
11*4882a593Smuzhiyun #define PCH_RCBA		0xf0
12*4882a593Smuzhiyun 
13*4882a593Smuzhiyun #define BIOS_CTRL_BIOSWE	BIT(0)
14*4882a593Smuzhiyun 
15*4882a593Smuzhiyun /* Operations for the Platform Controller Hub */
16*4882a593Smuzhiyun struct pch_ops {
17*4882a593Smuzhiyun 	/**
18*4882a593Smuzhiyun 	 * get_spi_base() - get the address of SPI base
19*4882a593Smuzhiyun 	 *
20*4882a593Smuzhiyun 	 * @dev:	PCH device to check
21*4882a593Smuzhiyun 	 * @sbasep:	Returns address of SPI base if available, else 0
22*4882a593Smuzhiyun 	 * @return 0 if OK, -ve on error (e.g. there is no SPI base)
23*4882a593Smuzhiyun 	 */
24*4882a593Smuzhiyun 	int (*get_spi_base)(struct udevice *dev, ulong *sbasep);
25*4882a593Smuzhiyun 
26*4882a593Smuzhiyun 	/**
27*4882a593Smuzhiyun 	 * set_spi_protect() - set whether SPI flash is protected or not
28*4882a593Smuzhiyun 	 *
29*4882a593Smuzhiyun 	 * @dev:	PCH device to adjust
30*4882a593Smuzhiyun 	 * @protect:	true to protect, false to unprotect
31*4882a593Smuzhiyun 	 *
32*4882a593Smuzhiyun 	 * @return 0 on success, -ENOSYS if not implemented
33*4882a593Smuzhiyun 	 */
34*4882a593Smuzhiyun 	int (*set_spi_protect)(struct udevice *dev, bool protect);
35*4882a593Smuzhiyun 
36*4882a593Smuzhiyun 	/**
37*4882a593Smuzhiyun 	 * get_gpio_base() - get the address of GPIO base
38*4882a593Smuzhiyun 	 *
39*4882a593Smuzhiyun 	 * @dev:	PCH device to check
40*4882a593Smuzhiyun 	 * @gbasep:	Returns address of GPIO base if available, else 0
41*4882a593Smuzhiyun 	 * @return 0 if OK, -ve on error (e.g. there is no GPIO base)
42*4882a593Smuzhiyun 	 */
43*4882a593Smuzhiyun 	int (*get_gpio_base)(struct udevice *dev, u32 *gbasep);
44*4882a593Smuzhiyun 
45*4882a593Smuzhiyun 	/**
46*4882a593Smuzhiyun 	 * get_io_base() - get the address of IO base
47*4882a593Smuzhiyun 	 *
48*4882a593Smuzhiyun 	 * @dev:	PCH device to check
49*4882a593Smuzhiyun 	 * @iobasep:	Returns address of IO base if available, else 0
50*4882a593Smuzhiyun 	 * @return 0 if OK, -ve on error (e.g. there is no IO base)
51*4882a593Smuzhiyun 	 */
52*4882a593Smuzhiyun 	int (*get_io_base)(struct udevice *dev, u32 *iobasep);
53*4882a593Smuzhiyun };
54*4882a593Smuzhiyun 
55*4882a593Smuzhiyun #define pch_get_ops(dev)        ((struct pch_ops *)(dev)->driver->ops)
56*4882a593Smuzhiyun 
57*4882a593Smuzhiyun /**
58*4882a593Smuzhiyun  * pch_get_spi_base() - get the address of SPI base
59*4882a593Smuzhiyun  *
60*4882a593Smuzhiyun  * @dev:	PCH device to check
61*4882a593Smuzhiyun  * @sbasep:	Returns address of SPI base if available, else 0
62*4882a593Smuzhiyun  * @return 0 if OK, -ve on error (e.g. there is no SPI base)
63*4882a593Smuzhiyun  */
64*4882a593Smuzhiyun int pch_get_spi_base(struct udevice *dev, ulong *sbasep);
65*4882a593Smuzhiyun 
66*4882a593Smuzhiyun /**
67*4882a593Smuzhiyun  * set_spi_protect() - set whether SPI flash is protected or not
68*4882a593Smuzhiyun  *
69*4882a593Smuzhiyun  * @dev:	PCH device to adjust
70*4882a593Smuzhiyun  * @protect:	true to protect, false to unprotect
71*4882a593Smuzhiyun  *
72*4882a593Smuzhiyun  * @return 0 on success, -ENOSYS if not implemented
73*4882a593Smuzhiyun  */
74*4882a593Smuzhiyun int pch_set_spi_protect(struct udevice *dev, bool protect);
75*4882a593Smuzhiyun 
76*4882a593Smuzhiyun /**
77*4882a593Smuzhiyun  * pch_get_gpio_base() - get the address of GPIO base
78*4882a593Smuzhiyun  *
79*4882a593Smuzhiyun  * @dev:	PCH device to check
80*4882a593Smuzhiyun  * @gbasep:	Returns address of GPIO base if available, else 0
81*4882a593Smuzhiyun  * @return 0 if OK, -ve on error (e.g. there is no GPIO base)
82*4882a593Smuzhiyun  */
83*4882a593Smuzhiyun int pch_get_gpio_base(struct udevice *dev, u32 *gbasep);
84*4882a593Smuzhiyun 
85*4882a593Smuzhiyun /**
86*4882a593Smuzhiyun  * pch_get_io_base() - get the address of IO base
87*4882a593Smuzhiyun  *
88*4882a593Smuzhiyun  * @dev:	PCH device to check
89*4882a593Smuzhiyun  * @iobasep:	Returns address of IO base if available, else 0
90*4882a593Smuzhiyun  * @return 0 if OK, -ve on error (e.g. there is no IO base)
91*4882a593Smuzhiyun  */
92*4882a593Smuzhiyun int pch_get_io_base(struct udevice *dev, u32 *iobasep);
93*4882a593Smuzhiyun 
94*4882a593Smuzhiyun #endif
95