diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/firmware.h | 4 | ||||
-rw-r--r-- | include/linux/hw_random.h | 2 | ||||
-rw-r--r-- | include/soc/fsl/fsl_udc.h | 11 | ||||
-rw-r--r-- | include/soc/imx8m/ddr.h | 22 |
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 |