mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2026-05-05 12:46:14 +02:00
Merge patch series "Add support for Ethernet Boot on SK-AM62"
Chintan Vankar <c-vankar@ti.com> says: This series enables Ethernet Boot on SK-AM62 device. This series is based on commit 'f4f845b85926' of origin/next branch of U-Boot. Logs for Ethernet Boot for AM625-SK: https://gist.github.com/chintanv133/464782796a9a60b9f5a49e674c5fc31a
This commit is contained in:
commit
f0ec3e6089
@ -83,3 +83,8 @@
|
||||
reg = <0x00 0x0fc40000 0x00 0x100>,
|
||||
<0x00 0x60000000 0x00 0x08000000>;
|
||||
};
|
||||
|
||||
&main_pktdma {
|
||||
ti,sci = <&dm_tifs>;
|
||||
bootph-all;
|
||||
};
|
||||
|
||||
@ -282,6 +282,15 @@ void board_init_f(ulong dummy)
|
||||
}
|
||||
spl_enable_cache();
|
||||
|
||||
if (IS_ENABLED(CONFIG_SPL_ETH) && IS_ENABLED(CONFIG_TI_AM65_CPSW_NUSS) &&
|
||||
spl_boot_device() == BOOT_DEVICE_ETHERNET) {
|
||||
struct udevice *cpswdev;
|
||||
|
||||
if (uclass_get_device_by_driver(UCLASS_MISC, DM_DRIVER_GET(am65_cpsw_nuss),
|
||||
&cpswdev))
|
||||
printf("Failed to probe am65_cpsw_nuss driver\n");
|
||||
}
|
||||
|
||||
fixup_a53_cpu_freq_by_speed_grade();
|
||||
}
|
||||
|
||||
|
||||
@ -6,5 +6,7 @@ F: board/ti/am62x/
|
||||
F: include/configs/am62x_evm.h
|
||||
F: configs/am62x_evm_r5_defconfig
|
||||
F: configs/am62x_evm_a53_defconfig
|
||||
F: configs/am62x_evm_r5_ethboot_defconfig
|
||||
F: configs/am62x_evm_a53_ethboot_defconfig
|
||||
F: configs/am62x_lpsk_r5_defconfig
|
||||
F: configs/am62x_lpsk_a53_defconfig
|
||||
|
||||
@ -718,7 +718,7 @@ void board_init_r(gd_t *dummy1, ulong dummy2)
|
||||
initr_watchdog();
|
||||
|
||||
if (IS_ENABLED(CONFIG_SPL_OS_BOOT) || CONFIG_IS_ENABLED(HANDOFF) ||
|
||||
IS_ENABLED(CONFIG_SPL_ATF))
|
||||
IS_ENABLED(CONFIG_SPL_ATF) || IS_ENABLED(CONFIG_SPL_NET))
|
||||
dram_init_banksize();
|
||||
|
||||
if (CONFIG_IS_ENABLED(PCI) && !(gd->flags & GD_FLG_DM_DEAD)) {
|
||||
|
||||
17
configs/am62x_evm_a53_ethboot_defconfig
Normal file
17
configs/am62x_evm_a53_ethboot_defconfig
Normal file
@ -0,0 +1,17 @@
|
||||
#include <configs/am62x_evm_a53_defconfig>
|
||||
|
||||
CONFIG_ARM=y
|
||||
CONFIG_ARCH_K3=y
|
||||
CONFIG_SOC_K3_AM625=y
|
||||
CONFIG_TARGET_AM625_A53_EVM=y
|
||||
CONFIG_DEFAULT_DEVICE_TREE="ti/k3-am625-sk"
|
||||
CONFIG_SPL_STACK_R_ADDR=0x83000000
|
||||
CONFIG_SPL_SIZE_LIMIT=0x80000
|
||||
CONFIG_SPL_DRIVERS_MISC=y
|
||||
CONFIG_SPL_BOARD_INIT=y
|
||||
CONFIG_SPL_DMA=y
|
||||
CONFIG_SPL_ENV_SUPPORT=y
|
||||
CONFIG_SPL_ETH=y
|
||||
CONFIG_SPL_NET=y
|
||||
CONFIG_SPL_NET_VCI_STRING="AM62X U-Boot A53 SPL"
|
||||
CONFIG_SPL_SYSCON=y
|
||||
25
configs/am62x_evm_r5_ethboot_defconfig
Normal file
25
configs/am62x_evm_r5_ethboot_defconfig
Normal file
@ -0,0 +1,25 @@
|
||||
#include<configs/am62x_evm_r5_defconfig>
|
||||
|
||||
CONFIG_ARM=y
|
||||
CONFIG_ARCH_K3=y
|
||||
CONFIG_SOC_K3_AM625=y
|
||||
CONFIG_TARGET_AM625_R5_EVM=y
|
||||
CONFIG_DEFAULT_DEVICEC_TREE="k3-am625-r5-sk"
|
||||
CONFIG_SPL_GPIO=y
|
||||
CONFIG_SPL_MMC=n
|
||||
CONFIG_SPL_BOARD_INIT=y
|
||||
CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x200000
|
||||
CONFIG_SPL_BSS_MAX_SIZE=0X3100
|
||||
CONFIG_SPL_DMA=y
|
||||
CONFIG_SPL_ENV_SUPPORT=y
|
||||
CONFIG_SPL_ETH=y
|
||||
CONFIG_SPL_I2C=y
|
||||
CONFIG_SPL_NET=y
|
||||
CONFIG_SPL_NET_VCI_STRING="AM62X U-Boot R5 SPL"
|
||||
CONFIG_CMD_DHCP=y
|
||||
CONFIG_SPL_SYSCON=y
|
||||
CONFIG_DMA_CHANNELS=y
|
||||
CONFIG_TI_K3_NAVSS_UDMA=y
|
||||
CONFIG_DM_I2C=y
|
||||
CONFIG_PHY_TI_DP83867=y
|
||||
CONFIG_TI_AM65_CPSW_NUSS=y
|
||||
@ -2118,6 +2118,9 @@ static int bcdma_tisci_tx_channel_config(struct udma_chan *uc)
|
||||
if (ret)
|
||||
dev_err(ud->dev, "tchan%d cfg failed %d\n", tchan->id, ret);
|
||||
|
||||
if (IS_ENABLED(CONFIG_K3_DM_FW))
|
||||
udma_alloc_tchan_raw(uc);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -2166,6 +2169,9 @@ static int pktdma_tisci_rx_channel_config(struct udma_chan *uc)
|
||||
dev_err(ud->dev, "flow%d config failed: %d\n", uc->rflow->id,
|
||||
ret);
|
||||
|
||||
if (IS_ENABLED(CONFIG_K3_DM_FW))
|
||||
udma_alloc_rchan_raw(uc);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
@ -2450,6 +2450,12 @@ fail:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int ti_sci_cmd_rm_udmap_rx_flow_cfg_noop(const struct ti_sci_handle *handle,
|
||||
const struct ti_sci_msg_rm_udmap_flow_cfg *params)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* ti_sci_cmd_set_fwl_region() - Request for configuring a firewall region
|
||||
* @handle: pointer to TI SCI handle
|
||||
@ -2895,7 +2901,7 @@ static __maybe_unused int ti_sci_dm_probe(struct udevice *dev)
|
||||
udmap_ops = &ops->rm_udmap_ops;
|
||||
udmap_ops->tx_ch_cfg = ti_sci_cmd_rm_udmap_tx_ch_cfg;
|
||||
udmap_ops->rx_ch_cfg = ti_sci_cmd_rm_udmap_rx_ch_cfg;
|
||||
udmap_ops->rx_flow_cfg = ti_sci_cmd_rm_udmap_rx_flow_cfg;
|
||||
udmap_ops->rx_flow_cfg = ti_sci_cmd_rm_udmap_rx_flow_cfg_noop;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -25,9 +25,16 @@ struct k3_nav_ring_cfg_regs {
|
||||
#define KNAV_RINGACC_CFG_RING_SIZE_ELSIZE_MASK GENMASK(26, 24)
|
||||
#define KNAV_RINGACC_CFG_RING_SIZE_ELSIZE_SHIFT (24)
|
||||
|
||||
#define KNAV_RINGACC_CFG_RING_SIZE_MASK GENMASK(19, 0)
|
||||
|
||||
static void k3_ringacc_ring_reset_raw(struct k3_nav_ring *ring)
|
||||
{
|
||||
writel(0, &ring->cfg->size);
|
||||
u32 reg;
|
||||
|
||||
reg = readl(&ring->cfg->size);
|
||||
reg &= ~KNAV_RINGACC_CFG_RING_SIZE_MASK;
|
||||
reg |= ring->size;
|
||||
writel(reg, &ring->cfg->size);
|
||||
}
|
||||
|
||||
static void k3_ringacc_ring_reconfig_qmode_raw(struct k3_nav_ring *ring, enum k3_nav_ring_mode mode)
|
||||
@ -35,7 +42,7 @@ static void k3_ringacc_ring_reconfig_qmode_raw(struct k3_nav_ring *ring, enum k3
|
||||
u32 val;
|
||||
|
||||
val = readl(&ring->cfg->size);
|
||||
val &= KNAV_RINGACC_CFG_RING_SIZE_QMODE_MASK;
|
||||
val &= ~KNAV_RINGACC_CFG_RING_SIZE_QMODE_MASK;
|
||||
val |= mode << KNAV_RINGACC_CFG_RING_SIZE_QMODE_SHIFT;
|
||||
writel(val, &ring->cfg->size);
|
||||
}
|
||||
|
||||
@ -1028,8 +1028,8 @@ static int k3_nav_ringacc_init(struct udevice *dev, struct k3_nav_ringacc *ringa
|
||||
struct k3_nav_ringacc *k3_ringacc_dmarings_init(struct udevice *dev,
|
||||
struct k3_ringacc_init_data *data)
|
||||
{
|
||||
void __iomem *base_rt, *base_cfg;
|
||||
struct k3_nav_ringacc *ringacc;
|
||||
void __iomem *base_rt;
|
||||
int i;
|
||||
|
||||
ringacc = devm_kzalloc(dev, sizeof(*ringacc), GFP_KERNEL);
|
||||
@ -1047,6 +1047,20 @@ struct k3_nav_ringacc *k3_ringacc_dmarings_init(struct udevice *dev,
|
||||
if (!base_rt)
|
||||
return ERR_PTR(-EINVAL);
|
||||
|
||||
/*
|
||||
* Since register property is defined as "ring" for PKTDMA and
|
||||
* "cfg" for UDMA, configure base address of ring configuration
|
||||
* register accordingly.
|
||||
*/
|
||||
base_cfg = dev_remap_addr_name(dev, "ring");
|
||||
pr_debug("ring %p\n", base_cfg);
|
||||
if (!base_cfg) {
|
||||
base_cfg = dev_remap_addr_name(dev, "cfg");
|
||||
pr_debug("cfg %p\n", base_cfg);
|
||||
if (!base_cfg)
|
||||
return ERR_PTR(-EINVAL);
|
||||
}
|
||||
|
||||
ringacc->rings = devm_kzalloc(dev,
|
||||
sizeof(*ringacc->rings) *
|
||||
ringacc->num_rings * 2,
|
||||
@ -1061,6 +1075,7 @@ struct k3_nav_ringacc *k3_ringacc_dmarings_init(struct udevice *dev,
|
||||
for (i = 0; i < ringacc->num_rings; i++) {
|
||||
struct k3_nav_ring *ring = &ringacc->rings[i];
|
||||
|
||||
ring->cfg = base_cfg + KNAV_RINGACC_CFG_REGS_STEP * i;
|
||||
ring->rt = base_rt + K3_DMARING_RING_RT_REGS_STEP * i;
|
||||
ring->parent = ringacc;
|
||||
ring->ring_id = i;
|
||||
|
||||
@ -128,6 +128,10 @@
|
||||
};
|
||||
};
|
||||
|
||||
&phy_gmii_sel {
|
||||
bootph-all;
|
||||
};
|
||||
|
||||
&main_pmx0 {
|
||||
/* First pad number is ALW package and second is AMC package */
|
||||
main_uart0_pins_default: main-uart0-default-pins {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user