Lines Matching refs:mc_io
12 static int fsl_mc_io_set_dpmcp(struct fsl_mc_io *mc_io, in fsl_mc_io_set_dpmcp() argument
17 if (mc_io->dpmcp_dev) in fsl_mc_io_set_dpmcp()
20 if (dpmcp_dev->mc_io) in fsl_mc_io_set_dpmcp()
23 error = dpmcp_open(mc_io, in fsl_mc_io_set_dpmcp()
30 mc_io->dpmcp_dev = dpmcp_dev; in fsl_mc_io_set_dpmcp()
31 dpmcp_dev->mc_io = mc_io; in fsl_mc_io_set_dpmcp()
35 static void fsl_mc_io_unset_dpmcp(struct fsl_mc_io *mc_io) in fsl_mc_io_unset_dpmcp() argument
38 struct fsl_mc_device *dpmcp_dev = mc_io->dpmcp_dev; in fsl_mc_io_unset_dpmcp()
40 error = dpmcp_close(mc_io, in fsl_mc_io_unset_dpmcp()
48 mc_io->dpmcp_dev = NULL; in fsl_mc_io_unset_dpmcp()
49 dpmcp_dev->mc_io = NULL; in fsl_mc_io_unset_dpmcp()
72 struct fsl_mc_io *mc_io; in fsl_create_mc_io() local
76 mc_io = devm_kzalloc(dev, sizeof(*mc_io), GFP_KERNEL); in fsl_create_mc_io()
77 if (!mc_io) in fsl_create_mc_io()
80 mc_io->dev = dev; in fsl_create_mc_io()
81 mc_io->flags = flags; in fsl_create_mc_io()
82 mc_io->portal_phys_addr = mc_portal_phys_addr; in fsl_create_mc_io()
83 mc_io->portal_size = mc_portal_size; in fsl_create_mc_io()
85 raw_spin_lock_init(&mc_io->spinlock); in fsl_create_mc_io()
87 mutex_init(&mc_io->mutex); in fsl_create_mc_io()
110 mc_io->portal_virt_addr = mc_portal_virt_addr; in fsl_create_mc_io()
112 error = fsl_mc_io_set_dpmcp(mc_io, dpmcp_dev); in fsl_create_mc_io()
117 *new_mc_io = mc_io; in fsl_create_mc_io()
121 fsl_destroy_mc_io(mc_io); in fsl_create_mc_io()
130 void fsl_destroy_mc_io(struct fsl_mc_io *mc_io) in fsl_destroy_mc_io() argument
134 if (!mc_io) in fsl_destroy_mc_io()
137 dpmcp_dev = mc_io->dpmcp_dev; in fsl_destroy_mc_io()
140 fsl_mc_io_unset_dpmcp(mc_io); in fsl_destroy_mc_io()
142 devm_iounmap(mc_io->dev, mc_io->portal_virt_addr); in fsl_destroy_mc_io()
143 devm_release_mem_region(mc_io->dev, in fsl_destroy_mc_io()
144 mc_io->portal_phys_addr, in fsl_destroy_mc_io()
145 mc_io->portal_size); in fsl_destroy_mc_io()
147 mc_io->portal_virt_addr = NULL; in fsl_destroy_mc_io()
148 devm_kfree(mc_io->dev, mc_io); in fsl_destroy_mc_io()
176 struct fsl_mc_io *mc_io = NULL; in fsl_mc_portal_allocate() local
213 mc_io_flags, &mc_io); in fsl_mc_portal_allocate()
225 *new_mc_io = mc_io; in fsl_mc_portal_allocate()
229 fsl_destroy_mc_io(mc_io); in fsl_mc_portal_allocate()
242 void fsl_mc_portal_free(struct fsl_mc_io *mc_io) in fsl_mc_portal_free() argument
251 dpmcp_dev = mc_io->dpmcp_dev; in fsl_mc_portal_free()
260 fsl_destroy_mc_io(mc_io); in fsl_mc_portal_free()
272 int fsl_mc_portal_reset(struct fsl_mc_io *mc_io) in fsl_mc_portal_reset() argument
275 struct fsl_mc_device *dpmcp_dev = mc_io->dpmcp_dev; in fsl_mc_portal_reset()
277 error = dpmcp_reset(mc_io, 0, dpmcp_dev->mc_handle); in fsl_mc_portal_reset()