PCI: rockchip: dw_ep: Update pcie ep status.

Add the rkep device mode definition and sync with SPL.

Signed-off-by: Xiao Ya peng <yp.xiao@rock-chips.com>
Change-Id: I60e4809119cf60ddcafe45f6b5ccb11a19aa56e6
Signed-off-by: Kever Yang <kever.yang@rock-chips.com>
This commit is contained in:
Xiao Ya peng
2023-05-19 11:56:06 +08:00
committed by Tao Huang
parent e22729f2fa
commit cabfbcfe75
2 changed files with 30 additions and 1 deletions

View File

@ -149,6 +149,12 @@ static const struct of_device_id rockchip_pcie_ep_of_match[] = {
MODULE_DEVICE_TABLE(of, rockchip_pcie_ep_of_match);
static void rockchip_pcie_devmode_update(struct rockchip_pcie *rockchip, int mode, int submode)
{
rockchip->obj_info->devmode.mode = mode;
rockchip->obj_info->devmode.submode = submode;
}
static int rockchip_pcie_readl_apb(struct rockchip_pcie *rockchip, u32 reg)
{
return readl(rockchip->apb_base + reg);
@ -298,6 +304,7 @@ static int rockchip_pcie_resource_get(struct platform_device *pdev,
memset_io(rockchip->obj_info, 0, sizeof(struct pcie_ep_obj_info));
rockchip->obj_info->magic = PCIE_EP_OBJ_INFO_MAGIC;
rockchip->obj_info->version = PCIE_EP_OBJ_INFO_DRV_VERSION;
rockchip_pcie_devmode_update(rockchip, RKEP_MODE_KERNEL, RKEP_SMODE_INIT);
} else {
dev_err(dev, "missing bar0 memory region\n");
return -ENODEV;
@ -1177,6 +1184,7 @@ static int rockchip_pcie_ep_probe(struct platform_device *pdev)
rockchip_pcie_fast_link_setup(rockchip);
rockchip_pcie_start_link(&rockchip->pci);
rockchip_pcie_devmode_update(rockchip, RKEP_MODE_KERNEL, RKEP_SMODE_LNKRDY);
for (retry = 0; retry < 10000; retry++) {
if (dw_pcie_link_up(&rockchip->pci)) {
@ -1204,6 +1212,7 @@ static int rockchip_pcie_ep_probe(struct platform_device *pdev)
}
already_linkup:
rockchip_pcie_devmode_update(rockchip, RKEP_MODE_KERNEL, RKEP_SMODE_LNKUP);
rockchip->pci.iatu_unroll_enabled = rockchip_pcie_iatu_unroll_enabled(&rockchip->pci);
for (i = 0; i < PCIE_BAR_MAX_NUM; i++)
if (rockchip->ib_target_size[i])

View File

@ -8,6 +8,22 @@
#include <linux/types.h>
/* rkep device mode status definition */
#define RKEP_MODE_BOOTROM 1
#define RKEP_MODE_LOADER 2
#define RKEP_MODE_KERNEL 3
#define RKEP_MODE_FUN0 4
/* Common status */
#define RKEP_SMODE_INIT 0
#define RKEP_SMODE_LNKRDY 1
#define RKEP_SMODE_LNKUP 2
#define RKEP_SMODE_ERR 0xff
/* Firmware download status */
#define RKEP_SMODE_FWDLRDY 0x10
#define RKEP_SMODE_FWDLDONE 0x11
/* Application status*/
#define RKEP_SMODE_APPRDY 0x20
/*
* rockchip pcie driver elbi ioctrl output data
*/
@ -52,7 +68,11 @@ enum pcie_ep_mmap_resource {
struct pcie_ep_obj_info {
__u32 magic;
__u32 version;
__u8 reserved[0x1F8];
struct {
__u16 mode;
__u16 submode;
} devmode;
__u8 reserved[0x1F4];
__u32 irq_type_rc; /* Generate in ep isr, valid only for rc, clear in rc */
struct pcie_ep_obj_irq_dma_status dma_status_rc; /* Generate in ep isr, valid only for rc, clear in rc */