coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
funitcfg.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #ifndef __SOC_NVIDIA_TEGRA210_FUNIT_CFG_H
4 #define __SOC_NVIDIA_TEGRA210_FUNIT_CFG_H
5 
6 #include <soc/clock.h>
7 #include <soc/padconfig.h>
8 #include <soc/pinmux.h>
9 #include <stdint.h>
10 
11 #define FUNIT_INDEX(_name) FUNIT_##_name
12 
13 enum {
19  FUNIT_INDEX(SDMMC1),
20  FUNIT_INDEX(SDMMC4),
21  FUNIT_INDEX(USBD),
22  FUNIT_INDEX(USB2),
23  FUNIT_INDEX(QSPI),
24  FUNIT_INDEX(I2S1),
26 };
27 
28 /*
29  * Note: these bus numbers are dependent on the driver implementations, and
30  * currently the I2C is 0-based and SPI is 1-based in its indexing.
31  */
32 enum {
33 
34  I2C1_BUS = 0,
35  I2C2_BUS = 1,
36  I2C3_BUS = 2,
37  I2C5_BUS = 4,
39  I2C6_BUS = 5,
40  QSPI_BUS = 7,
41 
42  SPI1_BUS = 1,
43  SPI4_BUS = 4,
44 };
45 
46 struct funit_cfg {
51  struct pad_config const* pad_cfg;
52  size_t pad_cfg_size;
53 };
54 
55 #define FUNIT_CFG(_funit,_clk_src,_clk_freq,_cfg,_cfg_size) \
56  { \
57  .funit_index = FUNIT_INDEX(_funit), \
58  .clk_src_id = CLK_SRC_DEV_ID(_funit, _clk_src), \
59  .clk_src_freq_id = CLK_SRC_FREQ_ID(_funit, _clk_src), \
60  .clk_dev_freq_khz = _clk_freq, \
61  .pad_cfg = _cfg, \
62  .pad_cfg_size = _cfg_size, \
63  }
64 
65 #define FUNIT_CFG_USB(_funit) \
66  { \
67  .funit_index = FUNIT_INDEX(_funit), \
68  .pad_cfg = NULL, \
69  .pad_cfg_size = 0, \
70  }
71 
72 /*
73  * Configure the funits associated with entry according to the configuration.
74  */
75 void soc_configure_funits(const struct funit_cfg * const entries, size_t num);
76 
77 #endif /* __SOC_NVIDIA_TEGRA210_FUNIT_CFG_H */
void soc_configure_funits(const struct funit_cfg *const entries, size_t num)
Definition: funitcfg.c:132
@ FUNIT_INDEX_MAX
Definition: funitcfg.h:25
#define FUNIT_INDEX(_name)
Definition: funitcfg.h:11
@ QSPI_BUS
Definition: funitcfg.h:40
@ I2C1_BUS
Definition: funitcfg.h:34
@ SPI1_BUS
Definition: funitcfg.h:42
@ I2C3_BUS
Definition: funitcfg.h:36
@ SPI4_BUS
Definition: funitcfg.h:43
@ I2C5_BUS
Definition: funitcfg.h:37
@ I2C6_BUS
Definition: funitcfg.h:39
@ I2CPWR_BUS
Definition: funitcfg.h:38
@ I2C2_BUS
Definition: funitcfg.h:35
@ I2C5
Definition: i2c.h:55
@ I2C3
Definition: i2c.h:53
@ I2C2
Definition: i2c.h:52
@ I2C1
Definition: i2c.h:51
@ I2C6
Definition: i2c.h:56
unsigned int uint32_t
Definition: stdint.h:14
uint32_t funit_index
Definition: funitcfg.h:47
uint32_t clk_src_id
Definition: funitcfg.h:48
uint32_t clk_dev_freq_khz
Definition: funitcfg.h:50
uint32_t clk_src_freq_id
Definition: funitcfg.h:49
struct pad_config const * pad_cfg
Definition: funitcfg.h:51
size_t pad_cfg_size
Definition: funitcfg.h:52