diff options
Diffstat (limited to 'target/linux/layerscape/patches-4.9/201-config-support-layerscape.patch')
-rw-r--r-- | target/linux/layerscape/patches-4.9/201-config-support-layerscape.patch | 532 |
1 files changed, 532 insertions, 0 deletions
diff --git a/target/linux/layerscape/patches-4.9/201-config-support-layerscape.patch b/target/linux/layerscape/patches-4.9/201-config-support-layerscape.patch new file mode 100644 index 0000000000..0105f5930b --- /dev/null +++ b/target/linux/layerscape/patches-4.9/201-config-support-layerscape.patch @@ -0,0 +1,532 @@ +From 11edf9c88acea13d1a02901289060263b4027a77 Mon Sep 17 00:00:00 2001 +From: Yangbo Lu <yangbo.lu@nxp.com> +Date: Mon, 25 Sep 2017 09:52:26 +0800 +Subject: [PATCH] config: support layerscape +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This is a integrated patch for layerscape config/makefile support. + +Signed-off-by: Yuantian Tang <andy.tang@nxp.com> +Signed-off-by: Zhang Ying-22455 <ying.zhang22455@nxp.com> +Signed-off-by: Zhao Qiang <qiang.zhao@nxp.com> +Signed-off-by: Bogdan Purcareata <bogdan.purcareata@nxp.com> +Signed-off-by: Zhao Qiang <qiang.zhao@nxp.com> +Signed-off-by: Horia Geantă <horia.geanta@nxp.com> +Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com> +--- + drivers/base/Kconfig | 1 + + drivers/crypto/Makefile | 2 +- + drivers/net/ethernet/freescale/Kconfig | 4 +- + drivers/net/ethernet/freescale/Makefile | 2 + + drivers/ptp/Kconfig | 29 ++++++ + drivers/rtc/Kconfig | 8 ++ + drivers/rtc/Makefile | 1 + + drivers/soc/Kconfig | 3 +- + drivers/soc/fsl/Kconfig | 22 +++++ + drivers/soc/fsl/Kconfig.arm | 16 ++++ + drivers/soc/fsl/Makefile | 4 + + drivers/soc/fsl/layerscape/Kconfig | 10 +++ + drivers/soc/fsl/layerscape/Makefile | 1 + + drivers/soc/fsl/rcpm.c | 154 ++++++++++++++++++++++++++++++++ + drivers/staging/Kconfig | 4 + + drivers/staging/Makefile | 2 + + drivers/staging/fsl-dpaa2/Kconfig | 41 +++++++++ + drivers/staging/fsl-dpaa2/Makefile | 9 ++ + 18 files changed, 309 insertions(+), 4 deletions(-) + create mode 100644 drivers/soc/fsl/Kconfig + create mode 100644 drivers/soc/fsl/Kconfig.arm + create mode 100644 drivers/soc/fsl/layerscape/Kconfig + create mode 100644 drivers/soc/fsl/layerscape/Makefile + create mode 100644 drivers/soc/fsl/rcpm.c + create mode 100644 drivers/staging/fsl-dpaa2/Kconfig + create mode 100644 drivers/staging/fsl-dpaa2/Makefile + +diff --git a/drivers/base/Kconfig b/drivers/base/Kconfig +index e1c0e2e0..4211a7fd 100644 +--- a/drivers/base/Kconfig ++++ b/drivers/base/Kconfig +@@ -237,6 +237,7 @@ config GENERIC_CPU_AUTOPROBE + + config SOC_BUS + bool ++ select GLOB + + source "drivers/base/regmap/Kconfig" + +diff --git a/drivers/crypto/Makefile b/drivers/crypto/Makefile +index ad7250fa..6d788fd7 100644 +--- a/drivers/crypto/Makefile ++++ b/drivers/crypto/Makefile +@@ -3,7 +3,7 @@ obj-$(CONFIG_CRYPTO_DEV_ATMEL_SHA) += atmel-sha.o + obj-$(CONFIG_CRYPTO_DEV_ATMEL_TDES) += atmel-tdes.o + obj-$(CONFIG_CRYPTO_DEV_BFIN_CRC) += bfin_crc.o + obj-$(CONFIG_CRYPTO_DEV_CCP) += ccp/ +-obj-$(CONFIG_CRYPTO_DEV_FSL_CAAM) += caam/ ++obj-$(CONFIG_CRYPTO_DEV_FSL_CAAM_COMMON) += caam/ + obj-$(CONFIG_CRYPTO_DEV_GEODE) += geode-aes.o + obj-$(CONFIG_CRYPTO_DEV_HIFN_795X) += hifn_795x.o + obj-$(CONFIG_CRYPTO_DEV_IMGTEC_HASH) += img-hash.o +diff --git a/drivers/net/ethernet/freescale/Kconfig b/drivers/net/ethernet/freescale/Kconfig +index d1ca45fb..74a2864e 100644 +--- a/drivers/net/ethernet/freescale/Kconfig ++++ b/drivers/net/ethernet/freescale/Kconfig +@@ -5,7 +5,7 @@ + config NET_VENDOR_FREESCALE + bool "Freescale devices" + default y +- depends on FSL_SOC || QUICC_ENGINE || CPM1 || CPM2 || PPC_MPC512x || \ ++ depends on FSL_SOC || (QUICC_ENGINE && PPC32) || CPM1 || CPM2 || PPC_MPC512x || \ + M523x || M527x || M5272 || M528x || M520x || M532x || \ + ARCH_MXC || ARCH_MXS || (PPC_MPC52xx && PPC_BESTCOMM) || \ + ARCH_LAYERSCAPE +@@ -93,4 +93,6 @@ config GIANFAR + and MPC86xx family of chips, the eTSEC on LS1021A and the FEC + on the 8540. + ++source "drivers/net/ethernet/freescale/sdk_fman/Kconfig" ++source "drivers/net/ethernet/freescale/sdk_dpaa/Kconfig" + endif # NET_VENDOR_FREESCALE +diff --git a/drivers/net/ethernet/freescale/Makefile b/drivers/net/ethernet/freescale/Makefile +index cbe21dc7..a5d4405f 100644 +--- a/drivers/net/ethernet/freescale/Makefile ++++ b/drivers/net/ethernet/freescale/Makefile +@@ -21,4 +21,6 @@ gianfar_driver-objs := gianfar.o \ + obj-$(CONFIG_UCC_GETH) += ucc_geth_driver.o + ucc_geth_driver-objs := ucc_geth.o ucc_geth_ethtool.o + ++obj-$(if $(CONFIG_FSL_SDK_FMAN),y) += sdk_fman/ ++obj-$(if $(CONFIG_FSL_SDK_DPAA_ETH),y) += sdk_dpaa/ + obj-$(CONFIG_FSL_FMAN) += fman/ +diff --git a/drivers/ptp/Kconfig b/drivers/ptp/Kconfig +index ee3de342..4c45beda 100644 +--- a/drivers/ptp/Kconfig ++++ b/drivers/ptp/Kconfig +@@ -39,6 +39,35 @@ config PTP_1588_CLOCK_GIANFAR + To compile this driver as a module, choose M here: the module + will be called gianfar_ptp. + ++config PTP_1588_CLOCK_DPAA ++ tristate "Freescale DPAA as PTP clock" ++ depends on FSL_SDK_DPAA_ETH ++ select PTP_1588_CLOCK ++ select FSL_DPAA_TS ++ default n ++ help ++ This driver adds support for using the DPAA 1588 timer module ++ as a PTP clock. This clock is only useful if your PTP programs are ++ getting hardware time stamps on the PTP Ethernet packets ++ using the SO_TIMESTAMPING API. ++ ++ To compile this driver as a module, choose M here: the module ++ will be called dpaa_ptp. ++ ++config PTP_1588_CLOCK_DPAA2 ++ tristate "Freescale DPAA2 as PTP clock" ++ depends on FSL_DPAA2_ETH ++ select PTP_1588_CLOCK ++ default y ++ help ++ This driver adds support for using the DPAA2 1588 timer module ++ as a PTP clock. This clock is only useful if your PTP programs are ++ getting hardware time stamps on the PTP Ethernet packets ++ using the SO_TIMESTAMPING API. ++ ++ To compile this driver as a module, choose M here: the module ++ will be called dpaa2-rtc. ++ + config PTP_1588_CLOCK_IXP46X + tristate "Intel IXP46x as PTP clock" + depends on IXP4XX_ETH +diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig +index 0723c97e..df610dcd 100644 +--- a/drivers/rtc/Kconfig ++++ b/drivers/rtc/Kconfig +@@ -414,6 +414,14 @@ config RTC_DRV_PCF85063 + This driver can also be built as a module. If so, the module + will be called rtc-pcf85063. + ++config RTC_DRV_PCF85263 ++ tristate "NXP PCF85263" ++ help ++ If you say yes here you get support for the PCF85263 RTC chip ++ ++ This driver can also be built as a module. If so, the module ++ will be called rtc-pcf85263. ++ + config RTC_DRV_PCF8563 + tristate "Philips PCF8563/Epson RTC8564" + help +diff --git a/drivers/rtc/Makefile b/drivers/rtc/Makefile +index 1ac694a3..7675b8a7 100644 +--- a/drivers/rtc/Makefile ++++ b/drivers/rtc/Makefile +@@ -111,6 +111,7 @@ obj-$(CONFIG_RTC_DRV_PCF2127) += rtc-pcf2127.o + obj-$(CONFIG_RTC_DRV_PCF50633) += rtc-pcf50633.o + obj-$(CONFIG_RTC_DRV_PCF85063) += rtc-pcf85063.o + obj-$(CONFIG_RTC_DRV_PCF8523) += rtc-pcf8523.o ++obj-$(CONFIG_RTC_DRV_PCF85263) += rtc-pcf85263.o + obj-$(CONFIG_RTC_DRV_PCF8563) += rtc-pcf8563.o + obj-$(CONFIG_RTC_DRV_PCF8583) += rtc-pcf8583.o + obj-$(CONFIG_RTC_DRV_PIC32) += rtc-pic32.o +diff --git a/drivers/soc/Kconfig b/drivers/soc/Kconfig +index e6e90e80..f31bceb6 100644 +--- a/drivers/soc/Kconfig ++++ b/drivers/soc/Kconfig +@@ -1,8 +1,7 @@ + menu "SOC (System On Chip) specific Drivers" + + source "drivers/soc/bcm/Kconfig" +-source "drivers/soc/fsl/qbman/Kconfig" +-source "drivers/soc/fsl/qe/Kconfig" ++source "drivers/soc/fsl/Kconfig" + source "drivers/soc/mediatek/Kconfig" + source "drivers/soc/qcom/Kconfig" + source "drivers/soc/rockchip/Kconfig" +diff --git a/drivers/soc/fsl/Kconfig b/drivers/soc/fsl/Kconfig +new file mode 100644 +index 00000000..d4cd25f1 +--- /dev/null ++++ b/drivers/soc/fsl/Kconfig +@@ -0,0 +1,22 @@ ++# ++# Freescale SOC drivers ++# ++ ++source "drivers/soc/fsl/qbman/Kconfig" ++source "drivers/soc/fsl/qe/Kconfig" ++source "drivers/soc/fsl/ls2-console/Kconfig" ++ ++config FSL_GUTS ++ bool ++ select SOC_BUS ++ help ++ The global utilities block controls power management, I/O device ++ enabling, power-onreset(POR) configuration monitoring, alternate ++ function selection for multiplexed signals,and clock control. ++ This driver is to manage and access global utilities block. ++ Initially only reading SVR and registering soc device are supported. ++ Other guts accesses, such as reading RCW, should eventually be moved ++ into this driver as well. ++if ARM || ARM64 ++source "drivers/soc/fsl/Kconfig.arm" ++endif +diff --git a/drivers/soc/fsl/Kconfig.arm b/drivers/soc/fsl/Kconfig.arm +new file mode 100644 +index 00000000..106c9b98 +--- /dev/null ++++ b/drivers/soc/fsl/Kconfig.arm +@@ -0,0 +1,16 @@ ++# ++# Freescale ARM SOC Drivers ++# ++ ++config LS_SOC_DRIVERS ++ bool "Layerscape Soc Drivers" ++ depends on ARCH_LAYERSCAPE || SOC_LS1021A ++ default n ++ help ++ Say y here to enable Freescale Layerscape Soc Device Drivers support. ++ The Soc Drivers provides the device driver that is a specific block ++ or feature on Layerscape platform. ++ ++if LS_SOC_DRIVERS ++ source "drivers/soc/fsl/layerscape/Kconfig" ++endif +diff --git a/drivers/soc/fsl/Makefile b/drivers/soc/fsl/Makefile +index 75e1f533..b8708569 100644 +--- a/drivers/soc/fsl/Makefile ++++ b/drivers/soc/fsl/Makefile +@@ -5,3 +5,7 @@ + obj-$(CONFIG_FSL_DPAA) += qbman/ + obj-$(CONFIG_QUICC_ENGINE) += qe/ + obj-$(CONFIG_CPM) += qe/ ++obj-$(CONFIG_FSL_GUTS) += guts.o ++obj-$(CONFIG_FSL_LS2_CONSOLE) += ls2-console/ ++obj-$(CONFIG_SUSPEND) += rcpm.o ++obj-$(CONFIG_LS_SOC_DRIVERS) += layerscape/ +diff --git a/drivers/soc/fsl/layerscape/Kconfig b/drivers/soc/fsl/layerscape/Kconfig +new file mode 100644 +index 00000000..e1373aa1 +--- /dev/null ++++ b/drivers/soc/fsl/layerscape/Kconfig +@@ -0,0 +1,10 @@ ++# ++# Layerscape Soc drivers ++# ++config FTM_ALARM ++ bool "FTM alarm driver" ++ default n ++ help ++ Say y here to enable FTM alarm support. The FTM alarm provides ++ alarm functions for wakeup system from deep sleep. There is only ++ one FTM can be used in ALARM(FTM 0). +diff --git a/drivers/soc/fsl/layerscape/Makefile b/drivers/soc/fsl/layerscape/Makefile +new file mode 100644 +index 00000000..6299aa1d +--- /dev/null ++++ b/drivers/soc/fsl/layerscape/Makefile +@@ -0,0 +1 @@ ++obj-$(CONFIG_FTM_ALARM) += ftm_alarm.o +diff --git a/drivers/soc/fsl/rcpm.c b/drivers/soc/fsl/rcpm.c +new file mode 100644 +index 00000000..a6a31c87 +--- /dev/null ++++ b/drivers/soc/fsl/rcpm.c +@@ -0,0 +1,154 @@ ++/* ++ * Run Control and Power Management (RCPM) driver ++ * ++ * Copyright 2016 NXP ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ */ ++#define pr_fmt(fmt) "RCPM: %s: " fmt, __func__ ++ ++#include <linux/kernel.h> ++#include <linux/io.h> ++#include <linux/of_platform.h> ++#include <linux/of_address.h> ++#include <linux/suspend.h> ++ ++/* RCPM register offset */ ++#define RCPM_IPPDEXPCR0 0x140 ++ ++#define RCPM_WAKEUP_CELL_SIZE 2 ++ ++struct rcpm_config { ++ int ipp_num; ++ int ippdexpcr_offset; ++ u32 ippdexpcr[2]; ++ void *rcpm_reg_base; ++}; ++ ++static struct rcpm_config *rcpm; ++ ++static inline void rcpm_reg_write(u32 offset, u32 value) ++{ ++ iowrite32be(value, rcpm->rcpm_reg_base + offset); ++} ++ ++static inline u32 rcpm_reg_read(u32 offset) ++{ ++ return ioread32be(rcpm->rcpm_reg_base + offset); ++} ++ ++static void rcpm_wakeup_fixup(struct device *dev, void *data) ++{ ++ struct device_node *node = dev ? dev->of_node : NULL; ++ u32 value[RCPM_WAKEUP_CELL_SIZE]; ++ int ret, i; ++ ++ if (!dev || !node || !device_may_wakeup(dev)) ++ return; ++ ++ /* ++ * Get the values in the "rcpm-wakeup" property. ++ * Three values are: ++ * The first is a pointer to the RCPM node. ++ * The second is the value of the ippdexpcr0 register. ++ * The third is the value of the ippdexpcr1 register. ++ */ ++ ret = of_property_read_u32_array(node, "fsl,rcpm-wakeup", ++ value, RCPM_WAKEUP_CELL_SIZE); ++ if (ret) ++ return; ++ ++ pr_debug("wakeup source: the device %s\n", node->full_name); ++ ++ for (i = 0; i < rcpm->ipp_num; i++) ++ rcpm->ippdexpcr[i] |= value[i + 1]; ++} ++ ++static int rcpm_suspend_prepare(void) ++{ ++ int i; ++ ++ BUG_ON(!rcpm); ++ ++ for (i = 0; i < rcpm->ipp_num; i++) ++ rcpm->ippdexpcr[i] = 0; ++ ++ dpm_for_each_dev(NULL, rcpm_wakeup_fixup); ++ ++ for (i = 0; i < rcpm->ipp_num; i++) { ++ rcpm_reg_write(rcpm->ippdexpcr_offset + 4 * i, ++ rcpm->ippdexpcr[i]); ++ pr_debug("ippdexpcr%d = 0x%x\n", i, rcpm->ippdexpcr[i]); ++ } ++ ++ return 0; ++} ++ ++static int rcpm_suspend_notifier_call(struct notifier_block *bl, ++ unsigned long state, ++ void *unused) ++{ ++ switch (state) { ++ case PM_SUSPEND_PREPARE: ++ rcpm_suspend_prepare(); ++ break; ++ } ++ ++ return NOTIFY_DONE; ++} ++ ++static struct rcpm_config rcpm_default_config = { ++ .ipp_num = 1, ++ .ippdexpcr_offset = RCPM_IPPDEXPCR0, ++}; ++ ++static const struct of_device_id rcpm_matches[] = { ++ { ++ .compatible = "fsl,qoriq-rcpm-2.1", ++ .data = &rcpm_default_config, ++ }, ++ {} ++}; ++ ++static struct notifier_block rcpm_suspend_notifier = { ++ .notifier_call = rcpm_suspend_notifier_call, ++}; ++ ++static int __init layerscape_rcpm_init(void) ++{ ++ const struct of_device_id *match; ++ struct device_node *np; ++ ++ np = of_find_matching_node_and_match(NULL, rcpm_matches, &match); ++ if (!np) { ++ pr_err("Can't find the RCPM node.\n"); ++ return -EINVAL; ++ } ++ ++ if (match->data) ++ rcpm = (struct rcpm_config *)match->data; ++ else ++ return -EINVAL; ++ ++ rcpm->rcpm_reg_base = of_iomap(np, 0); ++ of_node_put(np); ++ if (!rcpm->rcpm_reg_base) ++ return -ENOMEM; ++ ++ register_pm_notifier(&rcpm_suspend_notifier); ++ ++ pr_info("The RCPM driver initialized.\n"); ++ ++ return 0; ++} ++ ++subsys_initcall(layerscape_rcpm_init); +diff --git a/drivers/staging/Kconfig b/drivers/staging/Kconfig +index 58a7b350..f8e54860 100644 +--- a/drivers/staging/Kconfig ++++ b/drivers/staging/Kconfig +@@ -94,6 +94,8 @@ source "drivers/staging/fbtft/Kconfig" + + source "drivers/staging/fsl-mc/Kconfig" + ++source "drivers/staging/fsl-dpaa2/Kconfig" ++ + source "drivers/staging/wilc1000/Kconfig" + + source "drivers/staging/most/Kconfig" +@@ -106,4 +108,6 @@ source "drivers/staging/greybus/Kconfig" + + source "drivers/staging/vc04_services/Kconfig" + ++source "drivers/staging/fsl_qbman/Kconfig" ++ + endif # STAGING +diff --git a/drivers/staging/Makefile b/drivers/staging/Makefile +index 2fa9745d..cbd7b089 100644 +--- a/drivers/staging/Makefile ++++ b/drivers/staging/Makefile +@@ -36,9 +36,11 @@ obj-$(CONFIG_UNISYSSPAR) += unisys/ + obj-$(CONFIG_COMMON_CLK_XLNX_CLKWZRD) += clocking-wizard/ + obj-$(CONFIG_FB_TFT) += fbtft/ + obj-$(CONFIG_FSL_MC_BUS) += fsl-mc/ ++obj-$(CONFIG_FSL_DPAA2) += fsl-dpaa2/ + obj-$(CONFIG_WILC1000) += wilc1000/ + obj-$(CONFIG_MOST) += most/ + obj-$(CONFIG_ISDN_I4L) += i4l/ + obj-$(CONFIG_KS7010) += ks7010/ + obj-$(CONFIG_GREYBUS) += greybus/ + obj-$(CONFIG_BCM2708_VCHIQ) += vc04_services/ ++obj-$(CONFIG_FSL_SDK_DPA) += fsl_qbman/ +diff --git a/drivers/staging/fsl-dpaa2/Kconfig b/drivers/staging/fsl-dpaa2/Kconfig +new file mode 100644 +index 00000000..8042d9cc +--- /dev/null ++++ b/drivers/staging/fsl-dpaa2/Kconfig +@@ -0,0 +1,41 @@ ++# ++# Freescale DataPath Acceleration Architecture Gen2 (DPAA2) drivers ++# ++ ++config FSL_DPAA2 ++ bool "Freescale DPAA2 devices" ++ depends on FSL_MC_BUS ++ ---help--- ++ Build drivers for Freescale DataPath Acceleration ++ Architecture (DPAA2) family of SoCs. ++ ++config FSL_DPAA2_ETH ++ tristate "Freescale DPAA2 Ethernet" ++ depends on FSL_DPAA2 && FSL_MC_DPIO ++ ---help--- ++ Ethernet driver for Freescale DPAA2 SoCs, using the ++ Freescale MC bus driver ++ ++if FSL_DPAA2_ETH ++config FSL_DPAA2_ETH_USE_ERR_QUEUE ++ bool "Enable Rx error queue" ++ default n ++ ---help--- ++ Allow Rx error frames to be enqueued on an error queue ++ and processed by the driver (by default they are dropped ++ in hardware). ++ This may impact performance, recommended for debugging ++ purposes only. ++ ++# QBMAN_DEBUG requires some additional DPIO APIs ++config FSL_DPAA2_ETH_DEBUGFS ++ depends on DEBUG_FS && FSL_QBMAN_DEBUG ++ bool "Enable debugfs support" ++ default n ++ ---help--- ++ Enable advanced statistics through debugfs interface. ++endif ++ ++source "drivers/staging/fsl-dpaa2/mac/Kconfig" ++source "drivers/staging/fsl-dpaa2/evb/Kconfig" ++source "drivers/staging/fsl-dpaa2/ethsw/Kconfig" +diff --git a/drivers/staging/fsl-dpaa2/Makefile b/drivers/staging/fsl-dpaa2/Makefile +new file mode 100644 +index 00000000..cbaa8c20 +--- /dev/null ++++ b/drivers/staging/fsl-dpaa2/Makefile +@@ -0,0 +1,9 @@ ++# ++# Freescale DataPath Acceleration Architecture Gen2 (DPAA2) drivers ++# ++ ++obj-$(CONFIG_FSL_DPAA2_ETH) += ethernet/ ++obj-$(CONFIG_FSL_DPAA2_MAC) += mac/ ++obj-$(CONFIG_FSL_DPAA2_EVB) += evb/ ++obj-$(CONFIG_FSL_DPAA2_ETHSW) += ethsw/ ++obj-$(CONFIG_PTP_1588_CLOCK_DPAA2) += rtc/ +-- +2.14.1 + |