diff options
-rw-r--r-- | arch/arm/boot/dts/ls1021a.dtsi | 1 | ||||
-rw-r--r-- | drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_ioctls_fm.c | 88 | ||||
-rw-r--r-- | drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_ioctls_fm_compat.c | 16 | ||||
-rw-r--r-- | drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_ioctls_fm_compat.h | 11 | ||||
-rw-r--r-- | drivers/usb/dwc3/core.c | 9 | ||||
-rw-r--r-- | drivers/usb/dwc3/host.c | 1 | ||||
-rw-r--r-- | include/uapi/linux/fmd/Peripherals/fm_pcd_ioctls.h | 26 |
7 files changed, 152 insertions, 0 deletions
diff --git a/arch/arm/boot/dts/ls1021a.dtsi b/arch/arm/boot/dts/ls1021a.dtsi index c44f0de..96a7dd2 100644 --- a/arch/arm/boot/dts/ls1021a.dtsi +++ b/arch/arm/boot/dts/ls1021a.dtsi @@ -801,6 +801,7 @@ interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>; dr_mode = "host"; configure-gfladj; + dma-coherent; }; pcie@3400000 { diff --git a/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_ioctls_fm.c b/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_ioctls_fm.c index 781fd25..b25ff3d 100644 --- a/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_ioctls_fm.c +++ b/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_ioctls_fm.c @@ -1024,6 +1024,94 @@ Status: feature not supported } #if defined(CONFIG_COMPAT) + case FM_PCD_IOC_KG_SCHEME_GET_CNTR_COMPAT: +#endif + case FM_PCD_IOC_KG_SCHEME_GET_CNTR: + { + ioc_fm_pcd_kg_scheme_spc_t *param; + + param = (ioc_fm_pcd_kg_scheme_spc_t *) XX_Malloc(sizeof(ioc_fm_pcd_kg_scheme_spc_t)); + if (!param) + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + + memset(param, 0, sizeof(ioc_fm_pcd_kg_scheme_spc_t)); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_pcd_kg_scheme_spc_t *compat_param = NULL; + + compat_param = (ioc_compat_fm_pcd_kg_scheme_spc_t *) XX_Malloc( + sizeof(ioc_compat_fm_pcd_kg_scheme_spc_t)); + if (!compat_param) + { + XX_Free(param); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + } + + memset(compat_param, 0, sizeof(ioc_compat_fm_pcd_kg_scheme_spc_t)); + + if (copy_from_user(compat_param, (ioc_compat_fm_pcd_kg_scheme_spc_t *) compat_ptr(arg), + sizeof(ioc_compat_fm_pcd_kg_scheme_spc_t))) + { + XX_Free(compat_param); + XX_Free(param); + RETURN_ERROR(MINOR, E_WRITE_FAILED, NO_MSG); + } + + compat_copy_fm_pcd_kg_scheme_spc(compat_param, param, COMPAT_US_TO_K); + + XX_Free(compat_param); + } + else +#endif + { + if (copy_from_user(param, (ioc_fm_pcd_kg_scheme_spc_t *)arg, + sizeof(ioc_fm_pcd_kg_scheme_spc_t))) + { + XX_Free(param); + RETURN_ERROR(MINOR, E_WRITE_FAILED, NO_MSG); + } + } + + param->val = FM_PCD_KgSchemeGetCounter((t_Handle)param->id); + +#if defined(CONFIG_COMPAT) + if (compat) + { + ioc_compat_fm_pcd_kg_scheme_spc_t *compat_param; + + compat_param = (ioc_compat_fm_pcd_kg_scheme_spc_t *) XX_Malloc( + sizeof(ioc_compat_fm_pcd_kg_scheme_spc_t)); + if (!compat_param) + { + XX_Free(param); + RETURN_ERROR(MINOR, E_NO_MEMORY, ("IOCTL FM PCD")); + } + + memset(compat_param, 0, sizeof(ioc_compat_fm_pcd_kg_scheme_spc_t)); + compat_copy_fm_pcd_kg_scheme_spc(compat_param, param, COMPAT_K_TO_US); + if (copy_to_user((ioc_compat_fm_pcd_kg_scheme_spc_t *)compat_ptr(arg), + compat_param, + sizeof(ioc_compat_fm_pcd_kg_scheme_spc_t))) + err = E_READ_FAILED; + + XX_Free(compat_param); + } + else +#endif + { + if (copy_to_user((ioc_fm_pcd_kg_scheme_spc_t *)arg, + param, + sizeof(ioc_fm_pcd_kg_scheme_spc_t))) + err = E_READ_FAILED; + } + + XX_Free(param); + break; + } + +#if defined(CONFIG_COMPAT) case FM_PCD_IOC_KG_SCHEME_DELETE_COMPAT: #endif case FM_PCD_IOC_KG_SCHEME_DELETE: diff --git a/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_ioctls_fm_compat.c b/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_ioctls_fm_compat.c index 4f428a9..5d2d306 100644 --- a/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_ioctls_fm_compat.c +++ b/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_ioctls_fm_compat.c @@ -735,6 +735,22 @@ void compat_copy_fm_pcd_kg_scheme( _fm_cpt_dbg(compat," ...->}\n"); } +void compat_copy_fm_pcd_kg_scheme_spc( + ioc_compat_fm_pcd_kg_scheme_spc_t *compat_param, + ioc_fm_pcd_kg_scheme_spc_t *param, + uint8_t compat) +{ + if (compat == COMPAT_US_TO_K) + { + param->id = compat_pcd_id2ptr(compat_param->id); + param->val = compat_param->val; + } else { + compat_param->id = compat_pcd_ptr2id(param->id); + compat_param->val = param->val; + } +} + + void compat_copy_fm_pcd_kg_scheme_select( ioc_compat_fm_pcd_kg_scheme_select_t *compat_param, ioc_fm_pcd_kg_scheme_select_t *param, diff --git a/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_ioctls_fm_compat.h b/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_ioctls_fm_compat.h index b052984..3b6fb59 100644 --- a/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_ioctls_fm_compat.h +++ b/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_ioctls_fm_compat.h @@ -543,6 +543,12 @@ typedef struct ioc_compat_fm_vsp_prs_result_params_t { compat_uptr_t p_fm_vsp; compat_uptr_t p_data; } ioc_compat_fm_vsp_prs_result_params_t; + +typedef struct ioc_compat_fm_pcd_kg_scheme_spc_t { + uint32_t val; + compat_uptr_t id; +} ioc_compat_fm_pcd_kg_scheme_spc_t; + #endif /* (DPAA_VERSION >= 11) */ typedef struct ioc_compat_fm_ctrl_mon_counters_params_t { @@ -721,6 +727,11 @@ void compat_copy_fm_vsp_prs_result_params( ioc_compat_fm_vsp_prs_result_params_t *compat_param, ioc_fm_vsp_prs_result_params_t *param, uint8_t compat); + +void compat_copy_fm_pcd_kg_scheme_spc( + ioc_compat_fm_pcd_kg_scheme_spc_t *compat_param, + ioc_fm_pcd_kg_scheme_spc_t *param, + uint8_t compat); #endif /* (DPAA_VERSION >= 11) */ /* } pcd compat functions */ #endif diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c index 4787d66..736f79a 100644 --- a/drivers/usb/dwc3/core.c +++ b/drivers/usb/dwc3/core.c @@ -495,6 +495,15 @@ static int dwc3_probe(struct platform_device *pdev) dwc3_writel(dwc->regs, DWC3_GFLADJ, GFLADJ_30MHZ_REG_SEL | GFLADJ_30MHZ(GFLADJ_30MHZ_DEFAULT)); + dwc3_writel(dwc->regs, DWC3_GSBUSCFG0, + (dwc3_readl(dwc->regs, DWC3_GSBUSCFG0) & ~0xff) | 0xf); + dwc3_writel(dwc->regs, DWC3_GSBUSCFG1, + dwc3_readl(dwc->regs, DWC3_GSBUSCFG1) | 0xf00); + + /* Enable Snooping */ + dwc3_writel(dwc->regs, DWC3_GSBUSCFG0, + dwc3_readl(dwc->regs, DWC3_GSBUSCFG0) | 0x22220000); + if (IS_ENABLED(CONFIG_USB_DWC3_HOST)) dwc->dr_mode = USB_DR_MODE_HOST; else if (IS_ENABLED(CONFIG_USB_DWC3_GADGET)) diff --git a/drivers/usb/dwc3/host.c b/drivers/usb/dwc3/host.c index 32db328..98015ce 100644 --- a/drivers/usb/dwc3/host.c +++ b/drivers/usb/dwc3/host.c @@ -36,6 +36,7 @@ int dwc3_host_init(struct dwc3 *dwc) xhci->dev.parent = dwc->dev; xhci->dev.dma_mask = dwc->dev->dma_mask; xhci->dev.dma_parms = dwc->dev->dma_parms; + set_dma_ops(&xhci->dev, dwc->dev->archdata.dma_ops); dwc->xhci = xhci; diff --git a/include/uapi/linux/fmd/Peripherals/fm_pcd_ioctls.h b/include/uapi/linux/fmd/Peripherals/fm_pcd_ioctls.h index 2786666..ad655cc 100644 --- a/include/uapi/linux/fmd/Peripherals/fm_pcd_ioctls.h +++ b/include/uapi/linux/fmd/Peripherals/fm_pcd_ioctls.h @@ -375,6 +375,23 @@ typedef struct ioc_fm_pcd_kg_dflt_value_params_t { *//***************************************************************************/ #define FM_PCD_IOC_GET_COUNTER _IOWR(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(9), ioc_fm_pcd_counters_params_t) +/**************************************************************************//** + + @Function FM_PCD_KgSchemeGetCounter + + @Description Reads scheme packet counter. + + @Param[in] h_Scheme scheme handle as returned by FM_PCD_KgSchemeSet(). + + @Return Counter's current value. + + @Cautions Allowed only following FM_PCD_Init() & FM_PCD_KgSchemeSet(). +*//***************************************************************************/ +#if defined(CONFIG_COMPAT) +#define FM_PCD_IOC_KG_SCHEME_GET_CNTR_COMPAT _IOR(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(4), ioc_compat_fm_pcd_kg_scheme_spc_t) +#endif +#define FM_PCD_IOC_KG_SCHEME_GET_CNTR _IOR(FM_IOC_TYPE_BASE, FM_PCD_IOC_NUM(4), ioc_fm_pcd_kg_scheme_spc_t) + #if 0 TODO: unused IOCTL /**************************************************************************//** @@ -1126,6 +1143,15 @@ typedef struct ioc_fm_pcd_kg_scheme_counter_t { counter; clear this field to reset the counter. */ } ioc_fm_pcd_kg_scheme_counter_t; + +/**************************************************************************//** + @Description A structure for retrieving FMKG_SE_SPC +*//***************************************************************************/ +typedef struct ioc_fm_pcd_kg_scheme_spc_t { + uint32_t val; /**< return value */ + void *id; /**< scheme handle */ +} ioc_fm_pcd_kg_scheme_spc_t; + /**************************************************************************//** @Description A structure for defining policer profile parameters as required by keygen (when policer is the next engine after this scheme). |