Lines Matching refs:port

165 static u16 rio_get_device_id(struct rio_mport *port, u16 destid, u8 hopcount)  in rio_get_device_id()  argument
169 rio_mport_read_config_32(port, destid, hopcount, RIO_DID_CSR, &result); in rio_get_device_id()
171 return RIO_GET_DID(port->sys_size, result); in rio_get_device_id()
183 static void rio_set_device_id(struct rio_mport *port, u16 destid, u8 hopcount, u16 did) in rio_set_device_id() argument
185 rio_mport_write_config_32(port, destid, hopcount, RIO_DID_CSR, in rio_set_device_id()
186 RIO_SET_DID(port->sys_size, did)); in rio_set_device_id()
196 static void rio_local_set_device_id(struct rio_mport *port, u16 did) in rio_local_set_device_id() argument
198 rio_local_write_config_32(port, RIO_DID_CSR, RIO_SET_DID(port->sys_size, in rio_local_set_device_id()
212 struct rio_mport *port = net->hport; in rio_clear_locks() local
218 rio_local_write_config_32(port, RIO_HOST_DID_LOCK_CSR, in rio_clear_locks()
219 port->host_deviceid); in rio_clear_locks()
220 rio_local_read_config_32(port, RIO_HOST_DID_LOCK_CSR, &result); in rio_clear_locks()
229 port->host_deviceid); in rio_clear_locks()
259 static int rio_enum_host(struct rio_mport *port) in rio_enum_host() argument
264 rio_local_write_config_32(port, RIO_HOST_DID_LOCK_CSR, in rio_enum_host()
265 port->host_deviceid); in rio_enum_host()
267 rio_local_read_config_32(port, RIO_HOST_DID_LOCK_CSR, &result); in rio_enum_host()
268 if ((result & 0xffff) != port->host_deviceid) in rio_enum_host()
272 rio_local_set_device_id(port, port->host_deviceid); in rio_enum_host()
286 static int rio_device_has_destid(struct rio_mport *port, int src_ops, in rio_device_has_destid() argument
342 struct rio_mport *port, u16 destid, in rio_setup_device() argument
353 if (rio_mport_read_config_32(port, destid, hopcount, in rio_setup_device()
358 rio_mport_read_config_32(port, destid, hopcount, in rio_setup_device()
373 rio_mport_read_config_32(port, destid, hopcount, RIO_DEV_ID_CAR, in rio_setup_device()
377 rio_mport_read_config_32(port, destid, hopcount, RIO_DEV_INFO_CAR, in rio_setup_device()
379 rio_mport_read_config_32(port, destid, hopcount, RIO_ASM_ID_CAR, in rio_setup_device()
383 rio_mport_read_config_32(port, destid, hopcount, RIO_ASM_INFO_CAR, in rio_setup_device()
388 rdev->phys_efptr = rio_mport_get_physefb(port, 0, destid, in rio_setup_device()
391 rdev->em_efptr = rio_mport_get_feature(port, 0, destid, in rio_setup_device()
395 rio_mport_read_config_32(port, destid, hopcount, RIO_SRC_OPS_CAR, in rio_setup_device()
397 rio_mport_read_config_32(port, destid, hopcount, RIO_DST_OPS_CAR, in rio_setup_device()
406 rio_mport_write_config_32(port, destid, hopcount, in rio_setup_device()
411 rio_mport_read_config_32(port, destid, hopcount, in rio_setup_device()
416 if (rio_device_has_destid(port, rdev->src_ops, rdev->dst_ops)) { in rio_setup_device()
418 rio_set_device_id(port, destid, hopcount, next_destid); in rio_setup_device()
422 rdev->destid = rio_get_device_id(port, destid, hopcount); in rio_setup_device()
439 RIO_MAX_ROUTE_ENTRIES(port->sys_size), in rio_setup_device()
444 for (rdid = 0; rdid < RIO_MAX_ROUTE_ENTRIES(port->sys_size); in rio_setup_device()
458 rio_enable_rx_tx_port(port, 0, destid, hopcount, 0); in rio_setup_device()
464 rdev->dev.parent = &port->dev; in rio_setup_device()
506 rio_sport_is_active(struct rio_mport *port, u16 destid, u8 hopcount, int sport) in rio_sport_is_active() argument
511 ext_ftr_ptr = rio_mport_get_efb(port, 0, destid, hopcount, 0); in rio_sport_is_active()
514 rio_mport_read_config_32(port, destid, hopcount, in rio_sport_is_active()
522 ext_ftr_ptr = rio_mport_get_efb(port, 0, destid, hopcount, in rio_sport_is_active()
527 rio_mport_read_config_32(port, destid, hopcount, in rio_sport_is_active()
543 static u16 rio_get_host_deviceid_lock(struct rio_mport *port, u8 hopcount) in rio_get_host_deviceid_lock() argument
547 rio_mport_read_config_32(port, RIO_ANY_DESTID(port->sys_size), hopcount, in rio_get_host_deviceid_lock()
564 static int rio_enum_peer(struct rio_net *net, struct rio_mport *port, in rio_enum_peer() argument
571 if (rio_mport_chk_dev_access(port, in rio_enum_peer()
572 RIO_ANY_DESTID(port->sys_size), hopcount)) { in rio_enum_peer()
577 if (rio_get_host_deviceid_lock(port, hopcount) == port->host_deviceid) { in rio_enum_peer()
583 rio_mport_read_config_32(port, RIO_ANY_DESTID(port->sys_size), in rio_enum_peer()
600 rio_mport_write_config_32(port, RIO_ANY_DESTID(port->sys_size), in rio_enum_peer()
602 RIO_HOST_DID_LOCK_CSR, port->host_deviceid); in rio_enum_peer()
603 while ((tmp = rio_get_host_deviceid_lock(port, hopcount)) in rio_enum_peer()
604 < port->host_deviceid) { in rio_enum_peer()
608 rio_mport_write_config_32(port, RIO_ANY_DESTID(port->sys_size), in rio_enum_peer()
611 port->host_deviceid); in rio_enum_peer()
614 if (rio_get_host_deviceid_lock(port, hopcount) > port->host_deviceid) { in rio_enum_peer()
621 rdev = rio_setup_device(net, port, RIO_ANY_DESTID(port->sys_size), in rio_enum_peer()
641 port->host_deviceid, sw_inport, 0); in rio_enum_peer()
642 rdev->rswitch->route_table[port->host_deviceid] = sw_inport; in rio_enum_peer()
646 if (destid != port->host_deviceid) { in rio_enum_peer()
662 rio_enable_rx_tx_port(port, 0, in rio_enum_peer()
663 RIO_ANY_DESTID(port->sys_size), in rio_enum_peer()
672 (port, RIO_ANY_DESTID(port->sys_size), hopcount, in rio_enum_peer()
677 rio_enable_rx_tx_port(port, 0, in rio_enum_peer()
678 RIO_ANY_DESTID(port->sys_size), in rio_enum_peer()
682 RIO_ANY_DESTID(port->sys_size), in rio_enum_peer()
685 if (rio_enum_peer(net, port, hopcount + 1, in rio_enum_peer()
694 if (destid != port->host_deviceid) { in rio_enum_peer()
724 (port->host_deviceid << 16) | in rio_enum_peer()
725 (port->sys_size << 15)); in rio_enum_peer()
750 static int rio_enum_complete(struct rio_mport *port) in rio_enum_complete() argument
754 rio_local_read_config_32(port, port->phys_efptr + RIO_PORT_GEN_CTL_CSR, in rio_enum_complete()
772 rio_disc_peer(struct rio_net *net, struct rio_mport *port, u16 destid, in rio_disc_peer() argument
780 if ((rdev = rio_setup_device(net, port, destid, hopcount, 0))) { in rio_disc_peer()
804 (port, destid, hopcount, port_num)) { in rio_disc_peer()
809 rio_lock_device(port, destid, hopcount, 1000); in rio_disc_peer()
812 ndestid < RIO_ANY_DESTID(port->sys_size); in rio_disc_peer()
822 if (ndestid == RIO_ANY_DESTID(port->sys_size)) in rio_disc_peer()
824 rio_unlock_device(port, destid, hopcount); in rio_disc_peer()
825 if (rio_disc_peer(net, port, ndestid, in rio_disc_peer()
846 static int rio_mport_is_active(struct rio_mport *port) in rio_mport_is_active() argument
854 rio_mport_get_feature(port, 1, 0, 0, *entry))) in rio_mport_is_active()
859 rio_local_read_config_32(port, in rio_mport_is_active()
861 RIO_PORT_N_ERR_STS_CSR(port->index), in rio_mport_is_active()
878 static struct rio_net *rio_alloc_net(struct rio_mport *port, in rio_alloc_net() argument
886 BITS_TO_LONGS(RIO_MAX_ROUTE_ENTRIES(port->sys_size)), in rio_alloc_net()
897 RIO_MAX_ROUTE_ENTRIES(port->sys_size); in rio_alloc_net()
907 list_add_tail(&port->nnode, &net->mports); in rio_alloc_net()
908 net->hport = port; in rio_alloc_net()
909 net->id = port->id; in rio_alloc_net()
975 static void rio_pw_enable(struct rio_mport *port, int enable) in rio_pw_enable() argument
977 if (port->ops->pwenable) in rio_pw_enable()
978 port->ops->pwenable(port, enable); in rio_pw_enable()