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:
@ -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])
|
||||
|
||||
@ -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 */
|
||||
|
||||
Reference in New Issue
Block a user