diff options
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.patch | 208 |
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 */ |