Loading drivers/soc/fsl/dpio/dpio-cmd.h +1 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ #define DPIO_CMDID_ENABLE DPIO_CMD(0x002) #define DPIO_CMDID_DISABLE DPIO_CMD(0x003) #define DPIO_CMDID_GET_ATTR DPIO_CMD(0x004) #define DPIO_CMDID_RESET DPIO_CMD(0x005) struct dpio_cmd_open { __le32 dpio_id; Loading drivers/soc/fsl/dpio/dpio-driver.c +7 −0 Original line number Diff line number Diff line Loading @@ -110,6 +110,12 @@ static int dpaa2_dpio_probe(struct fsl_mc_device *dpio_dev) goto err_open; } err = dpio_reset(dpio_dev->mc_io, 0, dpio_dev->mc_handle); if (err) { dev_err(dev, "dpio_reset() failed\n"); goto err_reset; } err = dpio_get_attributes(dpio_dev->mc_io, 0, dpio_dev->mc_handle, &dpio_attrs); if (err) { Loading Loading @@ -192,6 +198,7 @@ static int dpaa2_dpio_probe(struct fsl_mc_device *dpio_dev) err_allocate_irqs: dpio_disable(dpio_dev->mc_io, 0, dpio_dev->mc_handle); err_get_attr: err_reset: dpio_close(dpio_dev->mc_io, 0, dpio_dev->mc_handle); err_open: fsl_mc_portal_free(dpio_dev->mc_io); Loading drivers/soc/fsl/dpio/dpio.c +23 −0 Original line number Diff line number Diff line Loading @@ -196,3 +196,26 @@ int dpio_get_api_version(struct fsl_mc_io *mc_io, return 0; } /** * dpio_reset() - Reset the DPIO, returns the object to initial state. * @mc_io: Pointer to MC portal's I/O object * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_' * @token: Token of DPIO object * * Return: '0' on Success; Error code otherwise. */ int dpio_reset(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token) { struct fsl_mc_command cmd = { 0 }; /* prepare command */ cmd.header = mc_encode_cmd_header(DPIO_CMDID_RESET, cmd_flags, token); /* send command to mc*/ return mc_send_command(mc_io, &cmd); } drivers/soc/fsl/dpio/dpio.h +4 −0 Original line number Diff line number Diff line Loading @@ -80,4 +80,8 @@ int dpio_get_api_version(struct fsl_mc_io *mc_io, u16 *major_ver, u16 *minor_ver); int dpio_reset(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token); #endif /* __FSL_DPIO_H */ Loading
drivers/soc/fsl/dpio/dpio-cmd.h +1 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ #define DPIO_CMDID_ENABLE DPIO_CMD(0x002) #define DPIO_CMDID_DISABLE DPIO_CMD(0x003) #define DPIO_CMDID_GET_ATTR DPIO_CMD(0x004) #define DPIO_CMDID_RESET DPIO_CMD(0x005) struct dpio_cmd_open { __le32 dpio_id; Loading
drivers/soc/fsl/dpio/dpio-driver.c +7 −0 Original line number Diff line number Diff line Loading @@ -110,6 +110,12 @@ static int dpaa2_dpio_probe(struct fsl_mc_device *dpio_dev) goto err_open; } err = dpio_reset(dpio_dev->mc_io, 0, dpio_dev->mc_handle); if (err) { dev_err(dev, "dpio_reset() failed\n"); goto err_reset; } err = dpio_get_attributes(dpio_dev->mc_io, 0, dpio_dev->mc_handle, &dpio_attrs); if (err) { Loading Loading @@ -192,6 +198,7 @@ static int dpaa2_dpio_probe(struct fsl_mc_device *dpio_dev) err_allocate_irqs: dpio_disable(dpio_dev->mc_io, 0, dpio_dev->mc_handle); err_get_attr: err_reset: dpio_close(dpio_dev->mc_io, 0, dpio_dev->mc_handle); err_open: fsl_mc_portal_free(dpio_dev->mc_io); Loading
drivers/soc/fsl/dpio/dpio.c +23 −0 Original line number Diff line number Diff line Loading @@ -196,3 +196,26 @@ int dpio_get_api_version(struct fsl_mc_io *mc_io, return 0; } /** * dpio_reset() - Reset the DPIO, returns the object to initial state. * @mc_io: Pointer to MC portal's I/O object * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_' * @token: Token of DPIO object * * Return: '0' on Success; Error code otherwise. */ int dpio_reset(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token) { struct fsl_mc_command cmd = { 0 }; /* prepare command */ cmd.header = mc_encode_cmd_header(DPIO_CMDID_RESET, cmd_flags, token); /* send command to mc*/ return mc_send_command(mc_io, &cmd); }
drivers/soc/fsl/dpio/dpio.h +4 −0 Original line number Diff line number Diff line Loading @@ -80,4 +80,8 @@ int dpio_get_api_version(struct fsl_mc_io *mc_io, u16 *major_ver, u16 *minor_ver); int dpio_reset(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token); #endif /* __FSL_DPIO_H */