staging: fsl-mc: update dprc binary interface to v5.1
PATCH 5/14 staging: fsl-mc: update dprc binary interface to v5.1
From: Stuart Yoder <[email protected]>
The meaning of the "status" parameter in dprc_get_irq_status has changed, and this patch updates the flib and caller of the API.
Signed-off-by Stuart Yoder <[email protected]>
--- drivers/staging/fsl-mc/bus/dprc-cmd.h | 4 ++-- drivers/staging/fsl-mc/bus/dprc-driver.c | 1 + drivers/staging/fsl-mc/bus/dprc.c | 26 +++++++++++++------------- drivers/staging/fsl-mc/bus/mc-msi.c | 2 +- drivers/staging/fsl-mc/include/dprc.h | 19 ++++++++++++------- 5 files changed, 29 insertions(+), 23 deletions(-)
drivers/staging/fsl-mc/bus/dprc-cmd.h +2 -2
@@ -41,8 +41,8 @@#define _FSL_DPRC_CMD_H/* DPRC Version */ -#define DPRC_VER_MAJOR 4 -#define DPRC_VER_MINOR 0 +#define DPRC_VER_MAJOR 5 +#define DPRC_VER_MINOR 1/* Command IDs */ #define DPRC_CMDID_CLOSE 0x800
drivers/staging/fsl-mc/bus/dprc-driver.c +1 -0
@@ -423,6 +423,7 @@ static irqreturn_t dprc_irq0_handler_thread(int irq_num, void *arg)if (WARN_ON (!msi_desc || msi_desc->irq != (u32 )irq_num)) goto out; + status =0 ; error =dprc_get_irq_status (mc_io,0 , mc_dev->mc_handle,0 , &status);if (error <0 ) {
drivers/staging/fsl-mc/bus/dprc.c +13 -13
@@ -265,7 +265,7 @@ int dprc_get_irq(struct fsl_mc_io *mc_io,/* retrieve response parameters */ irq_cfg->val =mc_dec (cmd.params[0 ],0 ,32 ); irq_cfg->paddr =mc_dec (cmd.params[1 ],0 ,64 ); - irq_cfg->user_irq_id =mc_dec (cmd.params[2 ],0 ,32 ); + irq_cfg->irq_num =mc_dec (cmd.params[2 ],0 ,32 ); *type =mc_dec (cmd.params[2 ],32 ,32 );return 0 ;
@@ -296,7 +296,7 @@ int dprc_set_irq(struct fsl_mc_io *mc_io, cmd.params[0 ] |=mc_enc (32 ,8 , irq_index); cmd.params[0 ] |=mc_enc (0 ,32 , irq_cfg->val); cmd.params[1 ] |=mc_enc (0 ,64 , irq_cfg->paddr); - 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);
@@ -466,6 +466,7 @@ int dprc_get_irq_status(struct fsl_mc_io *mc_io,/* prepare command */ cmd.header =mc_encode_cmd_header (DPRC_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*/
@@ -948,6 +949,7 @@ int dprc_get_obj(struct fsl_mc_io *mc_io, obj_desc->state =mc_dec (cmd.params[1 ],32 ,32 ); obj_desc->ver_major =mc_dec (cmd.params[2 ],0 ,16 ); obj_desc->ver_minor =mc_dec (cmd.params[2 ],16 ,16 ); + obj_desc->flags =mc_dec (cmd.params[2 ],32 ,16 ); obj_desc->type[0 ] =mc_dec (cmd.params[3 ],0 ,8 ); obj_desc->type[1 ] =mc_dec (cmd.params[3 ],8 ,8 ); obj_desc->type[2 ] =mc_dec (cmd.params[3 ],16 ,8 );
@@ -1042,6 +1044,7 @@ int dprc_get_obj_desc(struct fsl_mc_io *mc_io, obj_desc->state = (u32 )mc_dec (cmd.params[1 ],32 ,32 ); obj_desc->ver_major = (u16 )mc_dec (cmd.params[2 ],0 ,16 ); obj_desc->ver_minor = (u16 )mc_dec (cmd.params[2 ],16 ,16 ); + obj_desc->flags =mc_dec (cmd.params[2 ],32 ,16 ); obj_desc->type[0 ] = (char )mc_dec (cmd.params[3 ],0 ,8 ); obj_desc->type[1 ] = (char )mc_dec (cmd.params[3 ],8 ,8 ); obj_desc->type[2 ] = (char )mc_dec (cmd.params[3 ],16 ,8 );
@@ -1108,7 +1111,7 @@ int dprc_set_obj_irq(struct fsl_mc_io *mc_io, cmd.params[0 ] |=mc_enc (32 ,8 , irq_index); cmd.params[0 ] |=mc_enc (0 ,32 , irq_cfg->val); cmd.params[1 ] |=mc_enc (0 ,64 , irq_cfg->paddr); - cmd.params[2 ] |=mc_enc (0 ,32 , irq_cfg->user_irq_id); + cmd.params[2 ] |=mc_enc (0 ,32 , irq_cfg->irq_num); cmd.params[2 ] |=mc_enc (32 ,32 , obj_id); cmd.params[3 ] |=mc_enc (0 ,8 , obj_type[0 ]); cmd.params[3 ] |=mc_enc (8 ,8 , obj_type[1 ]);
@@ -1189,7 +1192,7 @@ int dprc_get_obj_irq(struct fsl_mc_io *mc_io,/* retrieve response parameters */ irq_cfg->val = (u32 )mc_dec (cmd.params[0 ],0 ,32 ); irq_cfg->paddr = (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 ;
@@ -1437,14 +1440,8 @@ EXPORT_SYMBOL(dprc_set_obj_label);* @endpoint1: Endpoint 1 configuration parameters * @endpoint2: Endpoint 2 configuration parameters * @cfg: Connection configuration. The connection configuration is ignored for -* connections made to DPMAC objects, where rate is set according to -* MAC configuration. -* The committed rate is the guaranteed rate for the connection. -* The maximum rate is an upper limit allowed for the connection; it is -* expected to be equal or higher than the committed rate. -* When committed and maximum rates are both zero, the connection is set -* to "best effort" mode, having lower priority compared to connections -* with committed or maximum rates. +* connections made to DPMAC objects, where rate is retrieved from the +* MAC configuration. * * Return: '0' on Success; Error code otherwise. */
@@ -1555,7 +1552,10 @@ int dprc_disconnect(struct fsl_mc_io *mc_io,* @token: Token of DPRC object * @endpoint1: Endpoint 1 configuration parameters * @endpoint2: Returned endpoint 2 configuration parameters -* @state: Returned link state: 1 - link is up, 0 - link is down +* @state: Returned link state: +* 1 - link is up; +* 0 - link is down; +* -1 - no connection (endpoint2 information is irrelevant) * * Return: '0' on Success; -ENAVAIL if connection does not exist. */
drivers/staging/fsl-mc/bus/mc-msi.c +1 -1
@@ -65,7 +65,7 @@ static void __fsl_mc_msi_write_msg(struct fsl_mc_device *mc_bus_dev, irq_cfg.paddr = ((u64 )msi_desc->msg.address_hi <<32 ) | msi_desc->msg.address_lo; irq_cfg.val = msi_desc->msg.data; - irq_cfg.user_irq_id = msi_desc->irq; + irq_cfg.irq_num = msi_desc->irq;if (owner_mc_dev == mc_bus_dev) {/*
drivers/staging/fsl-mc/include/dprc.h +12 -7
@@ -94,11 +94,6 @@ int dprc_close(struct fsl_mc_io *mc_io,*/ #define DPRC_CFG_OPT_TOPOLOGY_CHANGES_ALLOWED 0x00000008 -/* IOMMU bypass - indicates whether objects of this container are permitted -* to bypass the IOMMU. -*/ -#define DPRC_CFG_OPT_IOMMU_BYPASS 0x00000010 -/* AIOP - Indicates that container belongs to AIOP. */ #define DPRC_CFG_OPT_AIOP 0x00000020
@@ -173,12 +168,12 @@ int dprc_reset_container(struct fsl_mc_io *mc_io,* struct dprc_irq_cfg - IRQ configuration * @paddr: 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 dprc_irq_cfg {phys_addr_t paddr;u32 val; -int user_irq_id; +int irq_num; }; int dprc_set_irq(struct fsl_mc_io *mc_io,
@@ -353,6 +348,14 @@ int dprc_get_obj_count(struct fsl_mc_io *mc_io,#define DPRC_OBJ_STATE_PLUGGED 0x00000002/** +* Shareability flag - Object flag indicating no memory shareability. +* the object generates memory accesses that are non coherent with other +* masters; +* user is responsible for proper memory handling through IOMMU configuration. +*/ +#define DPRC_OBJ_FLAG_NO_MEM_SHAREABILITY 0x0001 + +/** * struct dprc_obj_desc - Object descriptor, returned from dprc_get_obj() * @type: Type of object: NULL terminated string * @id: ID of logical object resource
@@ -363,6 +366,7 @@ int dprc_get_obj_count(struct fsl_mc_io *mc_io,* @region_count: Number of mappable regions supported by the object * @state: Object state: combination of DPRC_OBJ_STATE_ states * @label: Object label +* @flags: Object's flags */ struct dprc_obj_desc {char type[16 ];
@@ -374,6 +378,7 @@ struct dprc_obj_desc {u8 region_count;u32 state;char label[16 ]; +u16 flags; }; int dprc_get_obj(struct fsl_mc_io *mc_io,
Signature · 1 line
1.7.9.5