1
0
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:
Tom Rini
2020-08-25 10:24:40 -04:00
77 changed files with 34981 additions and 94 deletions

View 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__ */

View 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__ */

View File

@@ -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,

View File

@@ -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

View File

@@ -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,