mirror of
https://xff.cz/git/u-boot/
synced 2025-08-31 16:22:36 +02:00
- Add basic Marvell/Cavium OcteonTX/TX2 support (Suneel) - Infrastructure changes to PCI uclass to support these SoC's (Suneel) - Add PCI, MMC & watchdog driver drivers for OcteonTX/TX2 (Suneel) - Increase CONFIG_SYS_MALLOC_F_LEN for qemu-x86 (Stefan)
This commit is contained in:
71
include/configs/octeontx2_common.h
Normal file
71
include/configs/octeontx2_common.h
Normal file
@@ -0,0 +1,71 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0
|
||||
* Copyright (C) 2018 Marvell International Ltd.
|
||||
*
|
||||
* https://spdx.org/licenses
|
||||
*/
|
||||
|
||||
#ifndef __OCTEONTX2_COMMON_H__
|
||||
#define __OCTEONTX2_COMMON_H__
|
||||
|
||||
#define CONFIG_SUPPORT_RAW_INITRD
|
||||
|
||||
/** Maximum size of image supported for bootm (and bootable FIT images) */
|
||||
#define CONFIG_SYS_BOOTM_LEN (256 << 20)
|
||||
|
||||
/** Memory base address */
|
||||
#define CONFIG_SYS_SDRAM_BASE CONFIG_SYS_TEXT_BASE
|
||||
|
||||
/** Stack starting address */
|
||||
#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_SDRAM_BASE + 0xffff0)
|
||||
|
||||
/** Heap size for U-Boot */
|
||||
#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + 64 * 1024 * 1024)
|
||||
|
||||
#define CONFIG_SYS_LOAD_ADDR CONFIG_SYS_SDRAM_BASE
|
||||
|
||||
#define CONFIG_LAST_STAGE_INIT
|
||||
|
||||
/* Allow environment variable to be overwritten */
|
||||
#define CONFIG_ENV_OVERWRITE
|
||||
|
||||
/** Reduce hashes printed out */
|
||||
#define CONFIG_TFTP_TSIZE
|
||||
|
||||
/* Autoboot options */
|
||||
#define CONFIG_RESET_TO_RETRY
|
||||
#define CONFIG_BOOT_RETRY_TIME -1
|
||||
#define CONFIG_BOOT_RETRY_MIN 30
|
||||
|
||||
/* BOOTP options */
|
||||
#define CONFIG_BOOTP_BOOTFILESIZE
|
||||
|
||||
/** Extra environment settings */
|
||||
#define CONFIG_EXTRA_ENV_SETTINGS \
|
||||
"loadaddr=20080000\0" \
|
||||
"ethrotate=yes\0" \
|
||||
"autoload=0\0"
|
||||
|
||||
/** Environment defines */
|
||||
#if defined(CONFIG_ENV_IS_IN_MMC)
|
||||
#define CONFIG_SYS_MMC_ENV_DEV 0
|
||||
#endif
|
||||
|
||||
/* Monitor Command Prompt */
|
||||
#define CONFIG_SYS_CBSIZE 1024 /** Console I/O Buffer Size */
|
||||
#define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE
|
||||
|
||||
#define CONFIG_SYS_MAXARGS 64 /** max command args */
|
||||
|
||||
#define CONFIG_SYS_MMC_MAX_BLK_COUNT 8192
|
||||
|
||||
#undef CONFIG_SYS_PROMPT
|
||||
#define CONFIG_SYS_PROMPT env_get("prompt")
|
||||
|
||||
#if defined(CONFIG_MMC_OCTEONTX)
|
||||
#define MMC_SUPPORTS_TUNING
|
||||
/** EMMC specific defines */
|
||||
#define CONFIG_SUPPORT_EMMC_BOOT
|
||||
#define CONFIG_SUPPORT_EMMC_RPMB
|
||||
#endif
|
||||
|
||||
#endif /* __OCTEONTX2_COMMON_H__ */
|
88
include/configs/octeontx_common.h
Normal file
88
include/configs/octeontx_common.h
Normal file
@@ -0,0 +1,88 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0
|
||||
*
|
||||
* Copyright (C) 2018 Marvell International Ltd.
|
||||
*
|
||||
* https://spdx.org/licenses
|
||||
*/
|
||||
|
||||
#ifndef __OCTEONTX_COMMON_H__
|
||||
#define __OCTEONTX_COMMON_H__
|
||||
|
||||
#define CONFIG_SUPPORT_RAW_INITRD
|
||||
|
||||
/** Maximum size of image supported for bootm (and bootable FIT images) */
|
||||
#define CONFIG_SYS_BOOTM_LEN (256 << 20)
|
||||
|
||||
/** Memory base address */
|
||||
#define CONFIG_SYS_SDRAM_BASE CONFIG_SYS_TEXT_BASE
|
||||
|
||||
/** Stack starting address */
|
||||
#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_SDRAM_BASE + 0xffff0)
|
||||
|
||||
/** Heap size for U-Boot */
|
||||
#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + 64 * 1024 * 1024)
|
||||
|
||||
#define CONFIG_SYS_LOAD_ADDR CONFIG_SYS_SDRAM_BASE
|
||||
|
||||
/* Allow environment variable to be overwritten */
|
||||
#define CONFIG_ENV_OVERWRITE
|
||||
|
||||
/** Reduce hashes printed out */
|
||||
#define CONFIG_TFTP_TSIZE
|
||||
|
||||
/* Autoboot options */
|
||||
#define CONFIG_RESET_TO_RETRY
|
||||
#define CONFIG_BOOT_RETRY_TIME -1
|
||||
#define CONFIG_BOOT_RETRY_MIN 30
|
||||
|
||||
/* BOOTP options */
|
||||
#define CONFIG_BOOTP_BOOTFILESIZE
|
||||
|
||||
/* AHCI support Definitions */
|
||||
#ifdef CONFIG_DM_SCSI
|
||||
/** Enable 48-bit SATA addressing */
|
||||
# define CONFIG_LBA48
|
||||
/** Enable 64-bit addressing */
|
||||
# define CONFIG_SYS_64BIT_LBA
|
||||
#endif
|
||||
|
||||
/***** SPI Defines *********/
|
||||
#ifdef CONFIG_DM_SPI_FLASH
|
||||
# define CONFIG_SF_DEFAULT_BUS 0
|
||||
# define CONFIG_SF_DEFAULT_CS 0
|
||||
#endif
|
||||
|
||||
/** Extra environment settings */
|
||||
#define CONFIG_EXTRA_ENV_SETTINGS \
|
||||
"loadaddr=20080000\0" \
|
||||
"autoload=0\0"
|
||||
|
||||
/** Environment defines */
|
||||
#if defined(CONFIG_ENV_IS_IN_MMC)
|
||||
#define CONFIG_SYS_MMC_ENV_DEV 0
|
||||
#endif
|
||||
|
||||
/* Monitor Command Prompt */
|
||||
#define CONFIG_SYS_CBSIZE 1024 /** Console I/O Buffer Size */
|
||||
#define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE
|
||||
|
||||
#define CONFIG_SYS_MAXARGS 64 /** max command args */
|
||||
|
||||
#define CONFIG_SYS_MMC_MAX_BLK_COUNT 8192
|
||||
|
||||
#undef CONFIG_SYS_PROMPT
|
||||
#define CONFIG_SYS_PROMPT env_get("prompt")
|
||||
|
||||
/** EMMC specific defines */
|
||||
#if defined(CONFIG_MMC_OCTEONTX)
|
||||
#define CONFIG_SUPPORT_EMMC_BOOT
|
||||
#define CONFIG_SUPPORT_EMMC_RPMB
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_NAND_OCTEONTX)
|
||||
/*#define CONFIG_MTD_CONCAT */
|
||||
#define CONFIG_SYS_MAX_NAND_DEVICE 8
|
||||
#define CONFIG_SYS_NAND_ONFI_DETECTION
|
||||
#endif
|
||||
|
||||
#endif /* __OCTEONTX_COMMON_H__ */
|
@@ -680,6 +680,18 @@ int dev_read_alias_highest_id(const char *stem);
|
||||
*/
|
||||
int dev_get_child_count(const struct udevice *dev);
|
||||
|
||||
/**
|
||||
* dev_read_pci_bus_range - Read PCI bus-range resource
|
||||
*
|
||||
* Look at the bus range property of a device node and return the pci bus
|
||||
* range for this node.
|
||||
*
|
||||
* @dev: device to examine
|
||||
* @res returns the resource
|
||||
* @return 0 if ok, negative on error
|
||||
*/
|
||||
int dev_read_pci_bus_range(const struct udevice *dev, struct resource *res);
|
||||
|
||||
#else /* CONFIG_DM_DEV_READ_INLINE is enabled */
|
||||
|
||||
static inline int dev_read_u32(const struct udevice *dev,
|
||||
|
@@ -444,6 +444,19 @@ int fdtdec_get_pci_vendev(const void *blob, int node,
|
||||
int fdtdec_get_pci_bar32(const struct udevice *dev, struct fdt_pci_addr *addr,
|
||||
u32 *bar);
|
||||
|
||||
/**
|
||||
* Look at the bus range property of a device node and return the pci bus
|
||||
* range for this node.
|
||||
* The property must hold one fdt_pci_addr with a length.
|
||||
* @param blob FDT blob
|
||||
* @param node node to examine
|
||||
* @param res the resource structure to return the bus range
|
||||
* @return 0 if ok, negative on error
|
||||
*/
|
||||
|
||||
int fdtdec_get_pci_bus_range(const void *blob, int node,
|
||||
struct fdt_resource *res);
|
||||
|
||||
/**
|
||||
* Look up a 32-bit integer property in a node and return it. The property
|
||||
* must have at least 4 bytes of data. The value of the first cell is
|
||||
|
@@ -465,6 +465,9 @@
|
||||
#define PCI_EA_FIRST_ENT 4 /* First EA Entry in List */
|
||||
#define PCI_EA_ES 0x00000007 /* Entry Size */
|
||||
#define PCI_EA_BEI 0x000000f0 /* BAR Equivalent Indicator */
|
||||
/* 9-14 map to VF BARs 0-5 respectively */
|
||||
#define PCI_EA_BEI_VF_BAR0 9
|
||||
#define PCI_EA_BEI_VF_BAR5 14
|
||||
/* Base, MaxOffset registers */
|
||||
/* bit 0 is reserved */
|
||||
#define PCI_EA_IS_64 0x00000002 /* 64-bit field flag */
|
||||
@@ -493,6 +496,17 @@
|
||||
#define PCI_EXP_SLTCAP 20 /* Slot Capabilities */
|
||||
#define PCI_EXP_SLTCAP_PSN 0xfff80000 /* Physical Slot Number */
|
||||
#define PCI_EXP_LNKCTL2 48 /* Link Control 2 */
|
||||
/* Single Root I/O Virtualization Registers */
|
||||
#define PCI_SRIOV_CAP 0x04 /* SR-IOV Capabilities */
|
||||
#define PCI_SRIOV_CTRL 0x08 /* SR-IOV Control */
|
||||
#define PCI_SRIOV_CTRL_VFE 0x01 /* VF Enable */
|
||||
#define PCI_SRIOV_CTRL_MSE 0x08 /* VF Memory Space Enable */
|
||||
#define PCI_SRIOV_INITIAL_VF 0x0c /* Initial VFs */
|
||||
#define PCI_SRIOV_TOTAL_VF 0x0e /* Total VFs */
|
||||
#define PCI_SRIOV_NUM_VF 0x10 /* Number of VFs */
|
||||
#define PCI_SRIOV_VF_OFFSET 0x14 /* First VF Offset */
|
||||
#define PCI_SRIOV_VF_STRIDE 0x16 /* Following VF Stride */
|
||||
#define PCI_SRIOV_VF_DID 0x1a /* VF Device ID */
|
||||
|
||||
/* Include the ID list */
|
||||
|
||||
@@ -590,8 +604,6 @@ extern void pci_cfgfunc_do_nothing(struct pci_controller* hose, pci_dev_t dev,
|
||||
extern void pci_cfgfunc_config_device(struct pci_controller* hose, pci_dev_t dev,
|
||||
struct pci_config_table *);
|
||||
|
||||
#define MAX_PCI_REGIONS 7
|
||||
|
||||
#define INDIRECT_TYPE_NO_PCIE_LINK 1
|
||||
|
||||
/**
|
||||
@@ -632,7 +644,7 @@ struct pci_controller {
|
||||
* for PCI controllers and a separate UCLASS (or perhaps
|
||||
* UCLASS_PCI_GENERIC) is used for bridges.
|
||||
*/
|
||||
struct pci_region regions[MAX_PCI_REGIONS];
|
||||
struct pci_region *regions;
|
||||
int region_count;
|
||||
|
||||
struct pci_config_table *config_table;
|
||||
@@ -892,12 +904,20 @@ struct udevice;
|
||||
* @vendor: PCI vendor ID (see pci_ids.h)
|
||||
* @device: PCI device ID (see pci_ids.h)
|
||||
* @class: PCI class, 3 bytes: (base, sub, prog-if)
|
||||
* @is_virtfn: True for Virtual Function device
|
||||
* @pfdev: Handle to Physical Function device
|
||||
* @virtid: Virtual Function Index
|
||||
*/
|
||||
struct pci_child_platdata {
|
||||
int devfn;
|
||||
unsigned short vendor;
|
||||
unsigned short device;
|
||||
unsigned int class;
|
||||
|
||||
/* Variables for CONFIG_PCI_SRIOV */
|
||||
bool is_virtfn;
|
||||
struct udevice *pfdev;
|
||||
int virtid;
|
||||
};
|
||||
|
||||
/* PCI bus operations */
|
||||
@@ -1210,6 +1230,25 @@ int pci_generic_mmap_read_config(
|
||||
ulong *valuep,
|
||||
enum pci_size_t size);
|
||||
|
||||
#if defined(CONFIG_PCI_SRIOV)
|
||||
/**
|
||||
* pci_sriov_init() - Scan Virtual Function devices
|
||||
*
|
||||
* @pdev: Physical Function udevice handle
|
||||
* @vf_en: Number of Virtual Function devices to enable
|
||||
* @return 0 on success, -ve on error
|
||||
*/
|
||||
int pci_sriov_init(struct udevice *pdev, int vf_en);
|
||||
|
||||
/**
|
||||
* pci_sriov_get_totalvfs() - Get total available Virtual Function devices
|
||||
*
|
||||
* @pdev: Physical Function udevice handle
|
||||
* @return count on success, -ve on error
|
||||
*/
|
||||
int pci_sriov_get_totalvfs(struct udevice *pdev);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_DM_PCI_COMPAT
|
||||
/* Compatibility with old naming */
|
||||
static inline int pci_write_config_dword(pci_dev_t pcidev, int offset,
|
||||
|
Reference in New Issue
Block a user