summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/firmware.h4
-rw-r--r--include/linux/hw_random.h2
-rw-r--r--include/soc/fsl/fsl_udc.h11
-rw-r--r--include/soc/imx8m/ddr.h22
4 files changed, 36 insertions, 3 deletions
diff --git a/include/firmware.h b/include/firmware.h
index 0ffea52840..2583342230 100644
--- a/include/firmware.h
+++ b/include/firmware.h
@@ -31,7 +31,7 @@ struct firmware_mgr *firmwaremgr_find(const char *);
#ifdef CONFIG_FIRMWARE
struct firmware_mgr *firmwaremgr_find_by_node(struct device_node *np);
int firmwaremgr_load_file(struct firmware_mgr *, const char *path);
-const char *firmware_get_searchpath(void);
+char *firmware_get_searchpath(void);
void firmware_set_searchpath(const char *path);
#else
static inline struct firmware_mgr *firmwaremgr_find_by_node(struct device_node *np)
@@ -44,7 +44,7 @@ static inline int firmwaremgr_load_file(struct firmware_mgr *mgr, const char *pa
return -ENOSYS;
}
-static inline const char *firmware_get_searchpath(void)
+static inline char *firmware_get_searchpath(void)
{
return NULL;
}
diff --git a/include/linux/hw_random.h b/include/linux/hw_random.h
index bae442166c..116afd9721 100644
--- a/include/linux/hw_random.h
+++ b/include/linux/hw_random.h
@@ -44,4 +44,6 @@ struct hwrng *hwrng_get_first(void);
static inline struct hwrng *hwrng_get_first(void) { return ERR_PTR(-ENODEV); };
#endif
+void hwrng_unregister(struct hwrng *rng);
+
#endif /* LINUX_HWRANDOM_H_ */
diff --git a/include/soc/fsl/fsl_udc.h b/include/soc/fsl/fsl_udc.h
index b983f714c5..0b409a9f6b 100644
--- a/include/soc/fsl/fsl_udc.h
+++ b/include/soc/fsl/fsl_udc.h
@@ -1,6 +1,9 @@
#ifndef __FSL_UDC_H
#define __FSL_UDC_H
+#include <linux/types.h>
+#include <io.h>
+
/* USB DR device mode registers (Little Endian) */
struct usb_dr_device {
/* Capability register */
@@ -380,4 +383,12 @@ int imx_barebox_start_usb(void __iomem *dr, void *dest);
int imx8mm_barebox_load_usb(void *dest);
int imx8mm_barebox_start_usb(void *dest);
+static inline bool is_chipidea_udc_running(void __iomem *dr)
+{
+ struct usb_dr_device __iomem *dr_regs = dr;
+
+ return (readl(&dr_regs->usbmode) & USB_MODE_CTRL_MODE_DEVICE)
+ && (readl(&dr_regs->usbcmd) & USB_CMD_RUN_STOP);
+}
+
#endif /* __FSL_UDC_H */
diff --git a/include/soc/imx8m/ddr.h b/include/soc/imx8m/ddr.h
index 78b15f1d46..9ae7cb8776 100644
--- a/include/soc/imx8m/ddr.h
+++ b/include/soc/imx8m/ddr.h
@@ -329,6 +329,11 @@ enum fw_type {
FW_2D_IMAGE,
};
+enum dram_type {
+ DRAM_TYPE_LPDDR4,
+ DRAM_TYPE_DDR4,
+};
+
struct dram_cfg_param {
unsigned int reg;
unsigned int val;
@@ -342,6 +347,7 @@ struct dram_fsp_msg {
};
struct dram_timing_info {
+ enum dram_type dram_type;
/* umctl2 config */
struct dram_cfg_param *ddrc_cfg;
unsigned int ddrc_cfg_num;
@@ -365,11 +371,13 @@ extern struct dram_timing_info dram_timing;
enum ddrc_type {
DDRC_TYPE_MM,
+ DDRC_TYPE_MN,
DDRC_TYPE_MQ,
DDRC_TYPE_MP,
};
int imx8mm_ddr_init(struct dram_timing_info *timing_info);
+int imx8mn_ddr_init(struct dram_timing_info *timing_info);
int imx8mq_ddr_init(struct dram_timing_info *timing_info);
int imx8mp_ddr_init(struct dram_timing_info *timing_info);
int ddr_cfg_phy(struct dram_timing_info *timing_info, enum ddrc_type type);
@@ -407,12 +415,24 @@ enum ddrc_phy_firmware_offset {
DDRC_PHY_DMEM = 0x00054000U,
};
-void ddr_load_train_code(enum fw_type type);
+void ddr_load_train_code(enum dram_type dram_type, enum fw_type type);
void ddrc_phy_load_firmware(void __iomem *,
enum ddrc_phy_firmware_offset,
const u16 *, size_t);
+static inline bool dram_is_lpddr4(enum dram_type type)
+{
+ return IS_ENABLED(CONFIG_FIRMWARE_IMX_LPDDR4_PMU_TRAIN) &&
+ type == DRAM_TYPE_LPDDR4;
+}
+
+static inline bool dram_is_ddr4(enum dram_type type)
+{
+ return IS_ENABLED(CONFIG_FIRMWARE_IMX_DDR4_PMU_TRAIN) &&
+ type == DRAM_TYPE_DDR4;
+}
+
#define DDRC_PHY_REG(x) ((x) * 4)
#endif