1 /* SPDX-License-Identifier: GPL-2.0+ */
2 /*
3  * Copyright 2019 NXP
4  */
5 
6 #ifndef __MODULE_FUSE_H__
7 #define __MODULE_FUSE_H__
8 
9 enum fuse_module_type {
10 	MODULE_TSC,
11 	MODULE_ADC1,
12 	MODULE_ADC2,
13 	MODULE_SIM1,
14 	MODULE_SIM2,
15 	MODULE_FLEXCAN1,
16 	MODULE_FLEXCAN2,
17 	MODULE_SPDIF,
18 	MODULE_EIM,
19 	MODULE_SD1,
20 	MODULE_SD2,
21 	MODULE_SD3,
22 	MODULE_SD4,
23 	MODULE_QSPI1,
24 	MODULE_QSPI2,
25 	MODULE_GPMI,
26 	MODULE_APBHDMA,
27 	MODULE_LCDIF,
28 	MODULE_PXP,
29 	MODULE_CSI,
30 	MODULE_ENET1,
31 	MODULE_ENET2,
32 	MODULE_CAAM,
33 	MODULE_USB_OTG1,
34 	MODULE_USB_OTG2,
35 	MODULE_SAI2,
36 	MODULE_SAI3,
37 	MODULE_BEE,
38 	MODULE_UART1,
39 	MODULE_UART2,
40 	MODULE_UART3,
41 	MODULE_UART4,
42 	MODULE_UART5,
43 	MODULE_UART6,
44 	MODULE_UART7,
45 	MODULE_UART8,
46 	MODULE_PWM5,
47 	MODULE_PWM6,
48 	MODULE_PWM7,
49 	MODULE_PWM8,
50 	MODULE_ECSPI1,
51 	MODULE_ECSPI2,
52 	MODULE_ECSPI3,
53 	MODULE_ECSPI4,
54 	MODULE_ECSPI5,
55 	MODULE_I2C1,
56 	MODULE_I2C2,
57 	MODULE_I2C3,
58 	MODULE_I2C4,
59 	MODULE_GPT1,
60 	MODULE_GPT2,
61 	MODULE_EPIT1,
62 	MODULE_EPIT2,
63 	MODULE_EPDC,
64 	MODULE_ESAI,
65 	MODULE_DCP,
66 	MODULE_DCP_CRYPTO,
67 };
68 
69 struct fuse_entry_desc {
70 	enum fuse_module_type module;
71 	const char *node_path;
72 	u32 fuse_word_offset;
73 	u32 fuse_bit_offset;
74 	u32 status;
75 };
76 
77 #if !CONFIG_IS_ENABLED(IMX_MODULE_FUSE)
check_module_fused(enum fuse_module_type module)78 static inline u32 check_module_fused(enum fuse_module_type module)
79 {
80 	return 0;
81 };
82 
esdhc_fused(ulong base_addr)83 static inline u32 esdhc_fused(ulong base_addr)
84 {
85 	return 0;
86 };
87 
ecspi_fused(ulong base_addr)88 static inline u32 ecspi_fused(ulong base_addr)
89 {
90 	return 0;
91 };
92 
uart_fused(ulong base_addr)93 static inline u32 uart_fused(ulong base_addr)
94 {
95 	return 0;
96 };
97 
usb_fused(ulong base_addr)98 static inline u32 usb_fused(ulong base_addr)
99 {
100 	return 0;
101 };
102 
qspi_fused(ulong base_addr)103 static inline u32 qspi_fused(ulong base_addr)
104 {
105 	return 0;
106 };
107 
i2c_fused(ulong base_addr)108 static inline u32 i2c_fused(ulong base_addr)
109 {
110 	return 0;
111 };
112 
enet_fused(ulong base_addr)113 static inline u32 enet_fused(ulong base_addr)
114 {
115 	return 0;
116 };
117 #else
118 u32 check_module_fused(enum fuse_module_type module);
119 u32 esdhc_fused(ulong base_addr);
120 u32 ecspi_fused(ulong base_addr);
121 u32 uart_fused(ulong base_addr);
122 u32 usb_fused(ulong base_addr);
123 u32 qspi_fused(ulong base_addr);
124 u32 i2c_fused(ulong base_addr);
125 u32 enet_fused(ulong base_addr);
126 #endif
127 #endif /* __MODULE_FUSE_H__ */
128