Lines Matching refs:mport

38 	int (*pwcback)(struct rio_mport *mport, void *context,
108 struct rio_net *rio_alloc_net(struct rio_mport *mport) in rio_alloc_net() argument
117 mport->net = net; in rio_alloc_net()
232 int rio_request_inb_mbox(struct rio_mport *mport, in rio_request_inb_mbox() argument
236 void (*minb) (struct rio_mport * mport, void *dev_id, int mbox, in rio_request_inb_mbox()
242 if (!mport->ops->open_inb_mbox) in rio_request_inb_mbox()
250 rc = request_resource(&mport->riores[RIO_INB_MBOX_RESOURCE], in rio_request_inb_mbox()
257 mport->inb_msg[mbox].res = res; in rio_request_inb_mbox()
260 mport->inb_msg[mbox].mcback = minb; in rio_request_inb_mbox()
262 rc = mport->ops->open_inb_mbox(mport, dev_id, mbox, entries); in rio_request_inb_mbox()
264 mport->inb_msg[mbox].mcback = NULL; in rio_request_inb_mbox()
265 mport->inb_msg[mbox].res = NULL; in rio_request_inb_mbox()
285 int rio_release_inb_mbox(struct rio_mport *mport, int mbox) in rio_release_inb_mbox() argument
289 if (!mport->ops->close_inb_mbox || !mport->inb_msg[mbox].res) in rio_release_inb_mbox()
292 mport->ops->close_inb_mbox(mport, mbox); in rio_release_inb_mbox()
293 mport->inb_msg[mbox].mcback = NULL; in rio_release_inb_mbox()
295 rc = release_resource(mport->inb_msg[mbox].res); in rio_release_inb_mbox()
299 kfree(mport->inb_msg[mbox].res); in rio_release_inb_mbox()
300 mport->inb_msg[mbox].res = NULL; in rio_release_inb_mbox()
317 int rio_request_outb_mbox(struct rio_mport *mport, in rio_request_outb_mbox() argument
321 void (*moutb) (struct rio_mport * mport, void *dev_id, int mbox, int slot)) in rio_request_outb_mbox()
326 if (!mport->ops->open_outb_mbox) in rio_request_outb_mbox()
334 rc = request_resource(&mport->riores[RIO_OUTB_MBOX_RESOURCE], in rio_request_outb_mbox()
341 mport->outb_msg[mbox].res = res; in rio_request_outb_mbox()
344 mport->outb_msg[mbox].mcback = moutb; in rio_request_outb_mbox()
346 rc = mport->ops->open_outb_mbox(mport, dev_id, mbox, entries); in rio_request_outb_mbox()
348 mport->outb_msg[mbox].mcback = NULL; in rio_request_outb_mbox()
349 mport->outb_msg[mbox].res = NULL; in rio_request_outb_mbox()
369 int rio_release_outb_mbox(struct rio_mport *mport, int mbox) in rio_release_outb_mbox() argument
373 if (!mport->ops->close_outb_mbox || !mport->outb_msg[mbox].res) in rio_release_outb_mbox()
376 mport->ops->close_outb_mbox(mport, mbox); in rio_release_outb_mbox()
377 mport->outb_msg[mbox].mcback = NULL; in rio_release_outb_mbox()
379 rc = release_resource(mport->outb_msg[mbox].res); in rio_release_outb_mbox()
383 kfree(mport->outb_msg[mbox].res); in rio_release_outb_mbox()
384 mport->outb_msg[mbox].res = NULL; in rio_release_outb_mbox()
402 rio_setup_inb_dbell(struct rio_mport *mport, void *dev_id, struct resource *res, in rio_setup_inb_dbell() argument
403 void (*dinb) (struct rio_mport * mport, void *dev_id, u16 src, u16 dst, in rio_setup_inb_dbell()
415 mutex_lock(&mport->lock); in rio_setup_inb_dbell()
416 list_add_tail(&dbell->node, &mport->dbells); in rio_setup_inb_dbell()
417 mutex_unlock(&mport->lock); in rio_setup_inb_dbell()
433 int rio_request_inb_dbell(struct rio_mport *mport, in rio_request_inb_dbell() argument
437 void (*dinb) (struct rio_mport * mport, void *dev_id, u16 src, in rio_request_inb_dbell()
447 rc = request_resource(&mport->riores[RIO_DOORBELL_RESOURCE], in rio_request_inb_dbell()
455 rc = rio_setup_inb_dbell(mport, dev_id, res, dinb); in rio_request_inb_dbell()
474 int rio_release_inb_dbell(struct rio_mport *mport, u16 start, u16 end) in rio_release_inb_dbell() argument
479 mutex_lock(&mport->lock); in rio_release_inb_dbell()
480 list_for_each_entry(dbell, &mport->dbells, node) { in rio_release_inb_dbell()
487 mutex_unlock(&mport->lock); in rio_release_inb_dbell()
562 int rio_add_mport_pw_handler(struct rio_mport *mport, void *context, in rio_add_mport_pw_handler() argument
563 int (*pwcback)(struct rio_mport *mport, in rio_add_mport_pw_handler() argument
573 mutex_lock(&mport->lock); in rio_add_mport_pw_handler()
574 list_add_tail(&pwrite->node, &mport->pwrites); in rio_add_mport_pw_handler()
575 mutex_unlock(&mport->lock); in rio_add_mport_pw_handler()
589 int rio_del_mport_pw_handler(struct rio_mport *mport, void *context, in rio_del_mport_pw_handler() argument
590 int (*pwcback)(struct rio_mport *mport, in rio_del_mport_pw_handler() argument
596 mutex_lock(&mport->lock); in rio_del_mport_pw_handler()
597 list_for_each_entry(pwrite, &mport->pwrites, node) { in rio_del_mport_pw_handler()
605 mutex_unlock(&mport->lock); in rio_del_mport_pw_handler()
664 void rio_pw_enable(struct rio_mport *mport, int enable) in rio_pw_enable() argument
666 if (mport->ops->pwenable) { in rio_pw_enable()
667 mutex_lock(&mport->lock); in rio_pw_enable()
669 if ((enable && ++mport->pwe_refcnt == 1) || in rio_pw_enable()
670 (!enable && mport->pwe_refcnt && --mport->pwe_refcnt == 0)) in rio_pw_enable()
671 mport->ops->pwenable(mport, enable); in rio_pw_enable()
672 mutex_unlock(&mport->lock); in rio_pw_enable()
689 int rio_map_inb_region(struct rio_mport *mport, dma_addr_t local, in rio_map_inb_region() argument
695 if (!mport->ops->map_inb) in rio_map_inb_region()
698 rc = mport->ops->map_inb(mport, local, rbase, size, rflags); in rio_map_inb_region()
709 void rio_unmap_inb_region(struct rio_mport *mport, dma_addr_t lstart) in rio_unmap_inb_region() argument
712 if (!mport->ops->unmap_inb) in rio_unmap_inb_region()
715 mport->ops->unmap_inb(mport, lstart); in rio_unmap_inb_region()
733 int rio_map_outb_region(struct rio_mport *mport, u16 destid, u64 rbase, in rio_map_outb_region() argument
739 if (!mport->ops->map_outb) in rio_map_outb_region()
743 rc = mport->ops->map_outb(mport, destid, rbase, size, in rio_map_outb_region()
757 void rio_unmap_outb_region(struct rio_mport *mport, u16 destid, u64 rstart) in rio_unmap_outb_region() argument
761 if (!mport->ops->unmap_outb) in rio_unmap_outb_region()
765 mport->ops->unmap_outb(mport, destid, rstart); in rio_unmap_outb_region()
993 rio_mport_chk_dev_access(struct rio_mport *mport, u16 destid, u8 hopcount) in rio_mport_chk_dev_access() argument
998 while (rio_mport_read_config_32(mport, destid, hopcount, in rio_mport_chk_dev_access()
1170 int rio_inb_pwrite_handler(struct rio_mport *mport, union rio_pw_msg *pw_msg) in rio_inb_pwrite_handler() argument
1181 pr_debug("%s: PW to mport_%d:\n", __func__, mport->id); in rio_inb_pwrite_handler()
1210 mutex_lock(&mport->lock); in rio_inb_pwrite_handler()
1211 list_for_each_entry(pwrite, &mport->pwrites, node) in rio_inb_pwrite_handler()
1212 pwrite->pwcback(mport, pwrite->context, pw_msg, 0); in rio_inb_pwrite_handler()
1213 mutex_unlock(&mport->lock); in rio_inb_pwrite_handler()
1426 rio_std_route_add_entry(struct rio_mport *mport, u16 destid, u8 hopcount, in rio_std_route_add_entry() argument
1430 rio_mport_write_config_32(mport, destid, hopcount, in rio_std_route_add_entry()
1433 rio_mport_write_config_32(mport, destid, hopcount, in rio_std_route_add_entry()
1454 rio_std_route_get_entry(struct rio_mport *mport, u16 destid, u8 hopcount, in rio_std_route_get_entry() argument
1460 rio_mport_write_config_32(mport, destid, hopcount, in rio_std_route_get_entry()
1462 rio_mport_read_config_32(mport, destid, hopcount, in rio_std_route_get_entry()
1480 rio_std_route_clr_table(struct rio_mport *mport, u16 destid, u8 hopcount, in rio_std_route_clr_table() argument
1488 rio_mport_read_config_32(mport, destid, hopcount, in rio_std_route_clr_table()
1491 if (mport->sys_size) { in rio_std_route_clr_table()
1492 rio_mport_read_config_32(mport, destid, hopcount, in rio_std_route_clr_table()
1508 rio_mport_write_config_32(mport, destid, hopcount, in rio_std_route_clr_table()
1511 rio_mport_write_config_32(mport, destid, hopcount, in rio_std_route_clr_table()
1754 struct rio_mport *mport = arg; in rio_chan_filter() local
1757 return mport == container_of(chan->device, struct rio_mport, dma); in rio_chan_filter()
1767 struct dma_chan *rio_request_mport_dma(struct rio_mport *mport) in rio_request_mport_dma() argument
1773 return dma_request_channel(mask, rio_chan_filter, mport); in rio_request_mport_dma()
2048 struct rio_mport *mport; member
2057 work->mport->id, work->mport->name); in disc_work_handler()
2058 if (try_module_get(work->mport->nscan->owner)) { in disc_work_handler()
2059 work->mport->nscan->discover(work->mport, 0); in disc_work_handler()
2060 module_put(work->mport->nscan->owner); in disc_work_handler()
2116 work[n].mport = port; in rio_init_mports()
2142 int rio_mport_initialize(struct rio_mport *mport) in rio_mport_initialize() argument
2149 atomic_set(&mport->state, RIO_DEVICE_INITIALIZING); in rio_mport_initialize()
2150 mport->id = next_portid++; in rio_mport_initialize()
2151 mport->host_deviceid = rio_get_hdid(mport->id); in rio_mport_initialize()
2152 mport->nscan = NULL; in rio_mport_initialize()
2153 mutex_init(&mport->lock); in rio_mport_initialize()
2154 mport->pwe_refcnt = 0; in rio_mport_initialize()
2155 INIT_LIST_HEAD(&mport->pwrites); in rio_mport_initialize()