cddd459140
Add patches for linux-5.4. The patches are from NXP LSDK-20.04 release which was tagged LSDK-20.04-V5.4. https://source.codeaurora.org/external/qoriq/qoriq-components/linux/ For boards LS1021A-IOT, and Traverse-LS1043 which are not involved in LSDK, port the dts patches from 4.14. The patches are sorted into the following categories: 301-arch-xxxx 302-dts-xxxx 303-core-xxxx 701-net-xxxx 801-audio-xxxx 802-can-xxxx 803-clock-xxxx 804-crypto-xxxx 805-display-xxxx 806-dma-xxxx 807-gpio-xxxx 808-i2c-xxxx 809-jailhouse-xxxx 810-keys-xxxx 811-kvm-xxxx 812-pcie-xxxx 813-pm-xxxx 814-qe-xxxx 815-sata-xxxx 816-sdhc-xxxx 817-spi-xxxx 818-thermal-xxxx 819-uart-xxxx 820-usb-xxxx 821-vfio-xxxx Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
159 lines
5.0 KiB
Diff
159 lines
5.0 KiB
Diff
From 97308e74e2ae781d37437137686965395b94327b Mon Sep 17 00:00:00 2001
|
|
From: Bogdan Purcareata <bogdan.purcareata@nxp.com>
|
|
Date: Mon, 16 Oct 2017 15:27:55 +0000
|
|
Subject: [PATCH] dpaa2-eth: Add dpni_set_tx_priorities API
|
|
|
|
Signed-off-by: Bogdan Purcareata <bogdan.purcareata@nxp.com>
|
|
---
|
|
drivers/net/ethernet/freescale/dpaa2/dpni-cmd.h | 19 ++++++++++
|
|
drivers/net/ethernet/freescale/dpaa2/dpni.c | 49 +++++++++++++++++++++++++
|
|
drivers/net/ethernet/freescale/dpaa2/dpni.h | 44 ++++++++++++++++++++++
|
|
3 files changed, 112 insertions(+)
|
|
|
|
--- a/drivers/net/ethernet/freescale/dpaa2/dpni-cmd.h
|
|
+++ b/drivers/net/ethernet/freescale/dpaa2/dpni-cmd.h
|
|
@@ -69,6 +69,7 @@
|
|
#define DPNI_CMDID_REMOVE_FS_ENT DPNI_CMD(0x245)
|
|
#define DPNI_CMDID_CLR_FS_ENT DPNI_CMD(0x246)
|
|
|
|
+#define DPNI_CMDID_SET_TX_PRIORITIES DPNI_CMD_V2(0x250)
|
|
#define DPNI_CMDID_GET_STATISTICS DPNI_CMD(0x25D)
|
|
#define DPNI_CMDID_RESET_STATISTICS DPNI_CMD(0x25E)
|
|
#define DPNI_CMDID_GET_QUEUE DPNI_CMD(0x25F)
|
|
@@ -393,6 +394,24 @@ struct dpni_cmd_clear_mac_filters {
|
|
u8 flags;
|
|
};
|
|
|
|
+#define DPNI_SEPARATE_GRP_SHIFT 0
|
|
+#define DPNI_SEPARATE_GRP_SIZE 1
|
|
+#define DPNI_MODE_1_SHIFT 0
|
|
+#define DPNI_MODE_1_SIZE 4
|
|
+#define DPNI_MODE_2_SHIFT 4
|
|
+#define DPNI_MODE_2_SIZE 4
|
|
+
|
|
+struct dpni_cmd_set_tx_priorities {
|
|
+ __le16 flags;
|
|
+ u8 prio_group_A;
|
|
+ u8 prio_group_B;
|
|
+ __le32 pad0;
|
|
+ u8 modes[4];
|
|
+ __le32 pad1;
|
|
+ __le64 pad2;
|
|
+ __le16 delta_bandwidth[8];
|
|
+};
|
|
+
|
|
#define DPNI_DIST_MODE_SHIFT 0
|
|
#define DPNI_DIST_MODE_SIZE 4
|
|
#define DPNI_MISS_ACTION_SHIFT 4
|
|
--- a/drivers/net/ethernet/freescale/dpaa2/dpni.c
|
|
+++ b/drivers/net/ethernet/freescale/dpaa2/dpni.c
|
|
@@ -1355,6 +1355,55 @@ int dpni_clear_mac_filters(struct fsl_mc
|
|
}
|
|
|
|
/**
|
|
+ * dpni_set_tx_priorities() - Set transmission TC priority configuration
|
|
+ * @mc_io: Pointer to MC portal's I/O object
|
|
+ * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_'
|
|
+ * @token: Token of DPNI object
|
|
+ * @cfg: Transmission selection configuration
|
|
+ *
|
|
+ * warning: Allowed only when DPNI is disabled
|
|
+ *
|
|
+ * Return: '0' on Success; Error code otherwise.
|
|
+ */
|
|
+int dpni_set_tx_priorities(struct fsl_mc_io *mc_io,
|
|
+ u32 cmd_flags,
|
|
+ u16 token,
|
|
+ const struct dpni_tx_priorities_cfg *cfg)
|
|
+{
|
|
+ struct dpni_cmd_set_tx_priorities *cmd_params;
|
|
+ struct fsl_mc_command cmd = { 0 };
|
|
+ int i;
|
|
+
|
|
+ /* prepare command */
|
|
+ cmd.header = mc_encode_cmd_header(DPNI_CMDID_SET_TX_PRIORITIES,
|
|
+ cmd_flags,
|
|
+ token);
|
|
+ cmd_params = (struct dpni_cmd_set_tx_priorities *)cmd.params;
|
|
+ dpni_set_field(cmd_params->flags,
|
|
+ SEPARATE_GRP,
|
|
+ cfg->separate_groups);
|
|
+ cmd_params->prio_group_A = cfg->prio_group_A;
|
|
+ cmd_params->prio_group_B = cfg->prio_group_B;
|
|
+
|
|
+ for (i = 0; i + 1 < DPNI_MAX_TC; i += 2) {
|
|
+ dpni_set_field(cmd_params->modes[i / 2],
|
|
+ MODE_1,
|
|
+ cfg->tc_sched[i].mode);
|
|
+ dpni_set_field(cmd_params->modes[i / 2],
|
|
+ MODE_2,
|
|
+ cfg->tc_sched[i + 1].mode);
|
|
+ }
|
|
+
|
|
+ for (i = 0; i < DPNI_MAX_TC; i++) {
|
|
+ cmd_params->delta_bandwidth[i] =
|
|
+ cpu_to_le16(cfg->tc_sched[i].delta_bandwidth);
|
|
+ }
|
|
+
|
|
+ /* send command to mc*/
|
|
+ return mc_send_command(mc_io, &cmd);
|
|
+}
|
|
+
|
|
+/**
|
|
* dpni_set_rx_tc_dist() - Set Rx traffic class distribution configuration
|
|
* @mc_io: Pointer to MC portal's I/O object
|
|
* @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_'
|
|
--- a/drivers/net/ethernet/freescale/dpaa2/dpni.h
|
|
+++ b/drivers/net/ethernet/freescale/dpaa2/dpni.h
|
|
@@ -677,6 +677,50 @@ int dpni_prepare_key_cfg(const struct dp
|
|
u8 *key_cfg_buf);
|
|
|
|
/**
|
|
+ * enum dpni_tx_schedule_mode - DPNI Tx scheduling mode
|
|
+ * @DPNI_TX_SCHED_STRICT_PRIORITY: strict priority
|
|
+ * @DPNI_TX_SCHED_WEIGHTED_A: weighted based scheduling in group A
|
|
+ * @DPNI_TX_SCHED_WEIGHTED_B: weighted based scheduling in group B
|
|
+ */
|
|
+enum dpni_tx_schedule_mode {
|
|
+ DPNI_TX_SCHED_STRICT_PRIORITY = 0,
|
|
+ DPNI_TX_SCHED_WEIGHTED_A,
|
|
+ DPNI_TX_SCHED_WEIGHTED_B,
|
|
+};
|
|
+
|
|
+/**
|
|
+ * struct dpni_tx_schedule_cfg - Structure representing Tx scheduling conf
|
|
+ * @mode: Scheduling mode
|
|
+ * @delta_bandwidth: Bandwidth represented in weights from 100 to 10000;
|
|
+ * not applicable for 'strict-priority' mode;
|
|
+ */
|
|
+struct dpni_tx_schedule_cfg {
|
|
+ enum dpni_tx_schedule_mode mode;
|
|
+ u16 delta_bandwidth;
|
|
+};
|
|
+
|
|
+/**
|
|
+ * struct dpni_tx_priorities_cfg - Structure representing transmission
|
|
+ * priorities for DPNI TCs
|
|
+ * @tc_sched: An array of traffic-classes
|
|
+ * @prio_group_A: Priority of group A
|
|
+ * @prio_group_B: Priority of group B
|
|
+ * @separate_groups: Treat A and B groups as separate
|
|
+ * @ceetm_ch_idx: ceetm channel index to apply the changes
|
|
+ */
|
|
+struct dpni_tx_priorities_cfg {
|
|
+ struct dpni_tx_schedule_cfg tc_sched[DPNI_MAX_TC];
|
|
+ u8 prio_group_A;
|
|
+ u8 prio_group_B;
|
|
+ u8 separate_groups;
|
|
+};
|
|
+
|
|
+int dpni_set_tx_priorities(struct fsl_mc_io *mc_io,
|
|
+ u32 cmd_flags,
|
|
+ u16 token,
|
|
+ const struct dpni_tx_priorities_cfg *cfg);
|
|
+
|
|
+/**
|
|
* struct dpni_rx_tc_dist_cfg - Rx traffic class distribution configuration
|
|
* @dist_size: Set the distribution size;
|
|
* supported values: 1,2,3,4,6,7,8,12,14,16,24,28,32,48,56,64,96,
|