aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/layerscape/patches-4.4/7168-staging-fsl-mc-update-dpbp-binary-interface-to-v2.2.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/layerscape/patches-4.4/7168-staging-fsl-mc-update-dpbp-binary-interface-to-v2.2.patch')
-rw-r--r--target/linux/layerscape/patches-4.4/7168-staging-fsl-mc-update-dpbp-binary-interface-to-v2.2.patch208
1 files changed, 0 insertions, 208 deletions
diff --git a/target/linux/layerscape/patches-4.4/7168-staging-fsl-mc-update-dpbp-binary-interface-to-v2.2.patch b/target/linux/layerscape/patches-4.4/7168-staging-fsl-mc-update-dpbp-binary-interface-to-v2.2.patch
deleted file mode 100644
index 474baf42be..0000000000
--- a/target/linux/layerscape/patches-4.4/7168-staging-fsl-mc-update-dpbp-binary-interface-to-v2.2.patch
+++ /dev/null
@@ -1,208 +0,0 @@
-From de0fa9842d52e4e80576d378f32aa9ca76a4270b Mon Sep 17 00:00:00 2001
-From: Stuart Yoder <stuart.yoder@nxp.com>
-Date: Mon, 11 Apr 2016 11:48:54 -0500
-Subject: [PATCH 168/226] staging: fsl-mc: update dpbp binary interface to
- v2.2
-
-Signed-off-by: Stuart Yoder <stuart.yoder@nxp.com>
-Acked-by: German Rivera <german.rivera@nxp.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- drivers/staging/fsl-mc/bus/dpbp.c | 77 ++++++++++++++++++++++++++++-
- drivers/staging/fsl-mc/include/dpbp-cmd.h | 4 +-
- drivers/staging/fsl-mc/include/dpbp.h | 51 ++++++++++++++++++-
- 3 files changed, 127 insertions(+), 5 deletions(-)
-
---- a/drivers/staging/fsl-mc/bus/dpbp.c
-+++ b/drivers/staging/fsl-mc/bus/dpbp.c
-@@ -293,7 +293,7 @@ int dpbp_set_irq(struct fsl_mc_io *mc_io
- cmd.params[0] |= mc_enc(0, 8, irq_index);
- cmd.params[0] |= mc_enc(32, 32, irq_cfg->val);
- cmd.params[1] |= mc_enc(0, 64, irq_cfg->addr);
-- cmd.params[2] |= mc_enc(0, 32, irq_cfg->user_irq_id);
-+ cmd.params[2] |= mc_enc(0, 32, irq_cfg->irq_num);
-
- /* send command to mc*/
- return mc_send_command(mc_io, &cmd);
-@@ -334,7 +334,7 @@ int dpbp_get_irq(struct fsl_mc_io *mc_io
- /* retrieve response parameters */
- irq_cfg->val = (u32)mc_dec(cmd.params[0], 0, 32);
- irq_cfg->addr = (u64)mc_dec(cmd.params[1], 0, 64);
-- irq_cfg->user_irq_id = (int)mc_dec(cmd.params[2], 0, 32);
-+ irq_cfg->irq_num = (int)mc_dec(cmd.params[2], 0, 32);
- *type = (int)mc_dec(cmd.params[2], 32, 32);
- return 0;
- }
-@@ -502,6 +502,7 @@ int dpbp_get_irq_status(struct fsl_mc_io
- /* prepare command */
- cmd.header = mc_encode_cmd_header(DPBP_CMDID_GET_IRQ_STATUS,
- cmd_flags, token);
-+ cmd.params[0] |= mc_enc(0, 32, *status);
- cmd.params[0] |= mc_enc(32, 8, irq_index);
-
- /* send command to mc*/
-@@ -580,3 +581,75 @@ int dpbp_get_attributes(struct fsl_mc_io
- return 0;
- }
- EXPORT_SYMBOL(dpbp_get_attributes);
-+
-+/**
-+ * dpbp_set_notifications() - Set notifications towards software
-+ * @mc_io: Pointer to MC portal's I/O object
-+ * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_'
-+ * @token: Token of DPBP object
-+ * @cfg: notifications configuration
-+ *
-+ * Return: '0' on Success; Error code otherwise.
-+ */
-+int dpbp_set_notifications(struct fsl_mc_io *mc_io,
-+ u32 cmd_flags,
-+ u16 token,
-+ struct dpbp_notification_cfg *cfg)
-+{
-+ struct mc_command cmd = { 0 };
-+
-+ /* prepare command */
-+ cmd.header = mc_encode_cmd_header(DPBP_CMDID_SET_NOTIFICATIONS,
-+ cmd_flags,
-+ token);
-+
-+ cmd.params[0] |= mc_enc(0, 32, cfg->depletion_entry);
-+ cmd.params[0] |= mc_enc(32, 32, cfg->depletion_exit);
-+ cmd.params[1] |= mc_enc(0, 32, cfg->surplus_entry);
-+ cmd.params[1] |= mc_enc(32, 32, cfg->surplus_exit);
-+ cmd.params[2] |= mc_enc(0, 16, cfg->options);
-+ cmd.params[3] |= mc_enc(0, 64, cfg->message_ctx);
-+ cmd.params[4] |= mc_enc(0, 64, cfg->message_iova);
-+
-+ /* send command to mc*/
-+ return mc_send_command(mc_io, &cmd);
-+}
-+
-+/**
-+ * dpbp_get_notifications() - Get the notifications 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 DPBP object
-+ * @cfg: notifications configuration
-+ *
-+ * Return: '0' on Success; Error code otherwise.
-+ */
-+int dpbp_get_notifications(struct fsl_mc_io *mc_io,
-+ u32 cmd_flags,
-+ u16 token,
-+ struct dpbp_notification_cfg *cfg)
-+{
-+ struct mc_command cmd = { 0 };
-+ int err;
-+
-+ /* prepare command */
-+ cmd.header = mc_encode_cmd_header(DPBP_CMDID_GET_NOTIFICATIONS,
-+ cmd_flags,
-+ token);
-+
-+ /* send command to mc*/
-+ err = mc_send_command(mc_io, &cmd);
-+ if (err)
-+ return err;
-+
-+ /* retrieve response parameters */
-+ cfg->depletion_entry = (u32)mc_dec(cmd.params[0], 0, 32);
-+ cfg->depletion_exit = (u32)mc_dec(cmd.params[0], 32, 32);
-+ cfg->surplus_entry = (u32)mc_dec(cmd.params[1], 0, 32);
-+ cfg->surplus_exit = (u32)mc_dec(cmd.params[1], 32, 32);
-+ cfg->options = (u16)mc_dec(cmd.params[2], 0, 16);
-+ cfg->message_ctx = (u64)mc_dec(cmd.params[3], 0, 64);
-+ cfg->message_iova = (u64)mc_dec(cmd.params[4], 0, 64);
-+
-+ return 0;
-+}
---- a/drivers/staging/fsl-mc/include/dpbp-cmd.h
-+++ b/drivers/staging/fsl-mc/include/dpbp-cmd.h
-@@ -34,7 +34,7 @@
-
- /* DPBP Version */
- #define DPBP_VER_MAJOR 2
--#define DPBP_VER_MINOR 1
-+#define DPBP_VER_MINOR 2
-
- /* Command IDs */
- #define DPBP_CMDID_CLOSE 0x800
-@@ -57,4 +57,6 @@
- #define DPBP_CMDID_GET_IRQ_STATUS 0x016
- #define DPBP_CMDID_CLEAR_IRQ_STATUS 0x017
-
-+#define DPBP_CMDID_SET_NOTIFICATIONS 0x01b0
-+#define DPBP_CMDID_GET_NOTIFICATIONS 0x01b1
- #endif /* _FSL_DPBP_CMD_H */
---- a/drivers/staging/fsl-mc/include/dpbp.h
-+++ b/drivers/staging/fsl-mc/include/dpbp.h
-@@ -85,12 +85,12 @@ int dpbp_reset(struct fsl_mc_io *mc_io,
- * struct dpbp_irq_cfg - IRQ configuration
- * @addr: Address that must be written to signal a message-based interrupt
- * @val: Value to write into irq_addr address
-- * @user_irq_id: A user defined number associated with this IRQ
-+ * @irq_num: A user defined number associated with this IRQ
- */
- struct dpbp_irq_cfg {
- u64 addr;
- u32 val;
-- int user_irq_id;
-+ int irq_num;
- };
-
- int dpbp_set_irq(struct fsl_mc_io *mc_io,
-@@ -168,6 +168,53 @@ int dpbp_get_attributes(struct fsl_mc_io
- u16 token,
- struct dpbp_attr *attr);
-
-+/**
-+ * DPBP notifications options
-+ */
-+
-+/**
-+ * BPSCN write will attempt to allocate into a cache (coherent write)
-+ */
-+#define DPBP_NOTIF_OPT_COHERENT_WRITE 0x00000001
-+
-+/**
-+ * struct dpbp_notification_cfg - Structure representing DPBP notifications
-+ * towards software
-+ * @depletion_entry: below this threshold the pool is "depleted";
-+ * set it to '0' to disable it
-+ * @depletion_exit: greater than or equal to this threshold the pool exit its
-+ * "depleted" state
-+ * @surplus_entry: above this threshold the pool is in "surplus" state;
-+ * set it to '0' to disable it
-+ * @surplus_exit: less than or equal to this threshold the pool exit its
-+ * "surplus" state
-+ * @message_iova: MUST be given if either 'depletion_entry' or 'surplus_entry'
-+ * is not '0' (enable); I/O virtual address (must be in DMA-able memory),
-+ * must be 16B aligned.
-+ * @message_ctx: The context that will be part of the BPSCN message and will
-+ * be written to 'message_iova'
-+ * @options: Mask of available options; use 'DPBP_NOTIF_OPT_<X>' values
-+ */
-+struct dpbp_notification_cfg {
-+ u32 depletion_entry;
-+ u32 depletion_exit;
-+ u32 surplus_entry;
-+ u32 surplus_exit;
-+ u64 message_iova;
-+ u64 message_ctx;
-+ u16 options;
-+};
-+
-+int dpbp_set_notifications(struct fsl_mc_io *mc_io,
-+ u32 cmd_flags,
-+ u16 token,
-+ struct dpbp_notification_cfg *cfg);
-+
-+int dpbp_get_notifications(struct fsl_mc_io *mc_io,
-+ u32 cmd_flags,
-+ u16 token,
-+ struct dpbp_notification_cfg *cfg);
-+
- /** @} */
-
- #endif /* __FSL_DPBP_H */