Lines Matching refs:octeon_dev
3338 static int setup_nic_devices(struct octeon_device *octeon_dev) in setup_nic_devices() argument
3360 octeon_register_dispatch_fn(octeon_dev, OPCODE_NIC, in setup_nic_devices()
3362 lio_nic_info, octeon_dev); in setup_nic_devices()
3367 octeon_register_reqtype_free_fn(octeon_dev, REQTYPE_NORESP_NET, in setup_nic_devices()
3370 octeon_register_reqtype_free_fn(octeon_dev, REQTYPE_NORESP_NET_SG, in setup_nic_devices()
3373 octeon_register_reqtype_free_fn(octeon_dev, REQTYPE_RESP_NET_SG, in setup_nic_devices()
3376 for (i = 0; i < octeon_dev->ifcount; i++) { in setup_nic_devices()
3380 octeon_alloc_soft_command(octeon_dev, data_size, in setup_nic_devices()
3390 if (OCTEON_CN23XX_PF(octeon_dev)) { in setup_nic_devices()
3391 num_iqueues = octeon_dev->sriov_info.num_pf_rings; in setup_nic_devices()
3392 num_oqueues = octeon_dev->sriov_info.num_pf_rings; in setup_nic_devices()
3393 base_queue = octeon_dev->sriov_info.pf_srn; in setup_nic_devices()
3395 gmx_port_id = octeon_dev->pf_num; in setup_nic_devices()
3396 ifidx_or_pfnum = octeon_dev->pf_num; in setup_nic_devices()
3399 octeon_get_conf(octeon_dev), i); in setup_nic_devices()
3401 octeon_get_conf(octeon_dev), i); in setup_nic_devices()
3403 octeon_get_conf(octeon_dev), i); in setup_nic_devices()
3405 octeon_get_conf(octeon_dev), i); in setup_nic_devices()
3409 dev_dbg(&octeon_dev->pci_dev->dev, in setup_nic_devices()
3421 octeon_prepare_soft_command(octeon_dev, sc, OPCODE_NIC, in setup_nic_devices()
3428 retval = octeon_send_soft_command(octeon_dev, sc); in setup_nic_devices()
3430 dev_err(&octeon_dev->pci_dev->dev, in setup_nic_devices()
3434 octeon_free_soft_command(octeon_dev, sc); in setup_nic_devices()
3441 retval = wait_for_sc_completion_timeout(octeon_dev, sc, 0); in setup_nic_devices()
3447 dev_err(&octeon_dev->pci_dev->dev, "iq/oq config failed\n"); in setup_nic_devices()
3451 snprintf(octeon_dev->fw_info.liquidio_firmware_version, in setup_nic_devices()
3456 fw_ver = octeon_dev->fw_info.liquidio_firmware_version; in setup_nic_devices()
3460 dev_err(&octeon_dev->pci_dev->dev, in setup_nic_devices()
3465 } else if (atomic_read(octeon_dev->adapter_fw_state) == in setup_nic_devices()
3467 dev_info(&octeon_dev->pci_dev->dev, in setup_nic_devices()
3476 octeon_dev->fw_info.ver.maj = LIQUIDIO_BASE_MAJOR_VERSION; in setup_nic_devices()
3477 octeon_dev->fw_info.ver.min = LIQUIDIO_BASE_MINOR_VERSION; in setup_nic_devices()
3478 octeon_dev->fw_info.ver.rev = micro; in setup_nic_devices()
3487 dev_err(&octeon_dev->pci_dev->dev, in setup_nic_devices()
3495 if (OCTEON_CN6XXX(octeon_dev)) { in setup_nic_devices()
3496 max_num_queues = CFG_GET_IQ_MAX_Q(CHIP_CONF(octeon_dev, in setup_nic_devices()
3498 } else if (OCTEON_CN23XX_PF(octeon_dev)) { in setup_nic_devices()
3499 max_num_queues = CFG_GET_IQ_MAX_Q(CHIP_CONF(octeon_dev, in setup_nic_devices()
3503 dev_dbg(&octeon_dev->pci_dev->dev, in setup_nic_devices()
3510 dev_err(&octeon_dev->pci_dev->dev, "Device allocation failed\n"); in setup_nic_devices()
3515 SET_NETDEV_DEV(netdev, &octeon_dev->pci_dev->dev); in setup_nic_devices()
3524 dev_err(&octeon_dev->pci_dev->dev, in setup_nic_devices()
3532 dev_err(&octeon_dev->pci_dev->dev, in setup_nic_devices()
3544 props = &octeon_dev->props[i]; in setup_nic_devices()
3566 if (OCTEON_CN23XX_PF(octeon_dev) || in setup_nic_devices()
3567 OCTEON_CN6XXX(octeon_dev)) { in setup_nic_devices()
3616 lio->oct_dev = octeon_dev; in setup_nic_devices()
3620 dev_dbg(&octeon_dev->pci_dev->dev, in setup_nic_devices()
3624 for (j = 0; j < octeon_dev->sriov_info.max_vfs; j++) { in setup_nic_devices()
3629 dev_err(&octeon_dev->pci_dev->dev, in setup_nic_devices()
3650 if (liquidio_setup_io_queues(octeon_dev, i, in setup_nic_devices()
3653 dev_err(&octeon_dev->pci_dev->dev, "I/O queues creation failed\n"); in setup_nic_devices()
3659 lio->tx_qsize = octeon_get_tx_qsize(octeon_dev, lio->txq); in setup_nic_devices()
3660 lio->rx_qsize = octeon_get_rx_qsize(octeon_dev, lio->rxq); in setup_nic_devices()
3662 if (lio_setup_glists(octeon_dev, lio, num_iqueues)) { in setup_nic_devices()
3663 dev_err(&octeon_dev->pci_dev->dev, in setup_nic_devices()
3671 octeon_dev->priv_flags = OCT_PRIV_FLAG_DEFAULT; in setup_nic_devices()
3673 octeon_dev->priv_flags = 0x0; in setup_nic_devices()
3689 if ((octeon_dev->fw_info.app_cap_flags & in setup_nic_devices()
3699 dev_err(&octeon_dev->pci_dev->dev, "Device registration failed\n"); in setup_nic_devices()
3703 dev_dbg(&octeon_dev->pci_dev->dev, in setup_nic_devices()
3720 dev_dbg(&octeon_dev->pci_dev->dev, in setup_nic_devices()
3723 if (octeon_dev->subsystem_id == in setup_nic_devices()
3725 octeon_dev->subsystem_id == in setup_nic_devices()
3727 cur_ver = OCT_FW_VER(octeon_dev->fw_info.ver.maj, in setup_nic_devices()
3728 octeon_dev->fw_info.ver.min, in setup_nic_devices()
3729 octeon_dev->fw_info.ver.rev); in setup_nic_devices()
3733 dev_info(&octeon_dev->pci_dev->dev, in setup_nic_devices()
3735 octeon_dev->speed_setting = 25; in setup_nic_devices()
3736 octeon_dev->no_speed_setting = 1; in setup_nic_devices()
3741 if (octeon_dev->speed_setting == 0) { in setup_nic_devices()
3742 octeon_dev->speed_setting = 25; in setup_nic_devices()
3743 octeon_dev->no_speed_setting = 1; in setup_nic_devices()
3746 octeon_dev->no_speed_setting = 1; in setup_nic_devices()
3747 octeon_dev->speed_setting = 10; in setup_nic_devices()
3749 octeon_dev->speed_boot = octeon_dev->speed_setting; in setup_nic_devices()
3752 if (octeon_dev->speed_boot == 25 && in setup_nic_devices()
3753 !octeon_dev->no_speed_setting) { in setup_nic_devices()
3755 octeon_dev->props[lio->ifidx].fec_boot = in setup_nic_devices()
3756 octeon_dev->props[lio->ifidx].fec; in setup_nic_devices()
3760 device_lock(&octeon_dev->pci_dev->dev); in setup_nic_devices()
3763 &octeon_dev->pci_dev->dev); in setup_nic_devices()
3765 device_unlock(&octeon_dev->pci_dev->dev); in setup_nic_devices()
3766 dev_err(&octeon_dev->pci_dev->dev, "devlink alloc failed\n"); in setup_nic_devices()
3771 lio_devlink->oct = octeon_dev; in setup_nic_devices()
3773 octeon_dev->devlink = devlink; in setup_nic_devices()
3774 octeon_dev->eswitch_mode = DEVLINK_ESWITCH_MODE_LEGACY; in setup_nic_devices()
3776 device_unlock(&octeon_dev->pci_dev->dev); in setup_nic_devices()
3783 dev_err(&octeon_dev->pci_dev->dev, in setup_nic_devices()
3785 liquidio_destroy_nic_device(octeon_dev, i); in setup_nic_devices()
4049 static int octeon_device_init(struct octeon_device *octeon_dev) in octeon_device_init() argument
4055 struct octeon_device_priv *oct_priv = octeon_dev->priv; in octeon_device_init()
4056 atomic_set(&octeon_dev->status, OCT_DEV_BEGIN_STATE); in octeon_device_init()
4061 if (octeon_pci_os_setup(octeon_dev)) in octeon_device_init()
4064 atomic_set(&octeon_dev->status, OCT_DEV_PCI_ENABLE_DONE); in octeon_device_init()
4067 if (octeon_chip_specific_setup(octeon_dev)) { in octeon_device_init()
4068 dev_err(&octeon_dev->pci_dev->dev, "Chip specific setup failed\n"); in octeon_device_init()
4072 atomic_set(&octeon_dev->status, OCT_DEV_PCI_MAP_DONE); in octeon_device_init()
4078 octeon_register_device(octeon_dev, octeon_dev->pci_dev->bus->number, in octeon_device_init()
4079 PCI_SLOT(octeon_dev->pci_dev->devfn), in octeon_device_init()
4080 PCI_FUNC(octeon_dev->pci_dev->devfn), in octeon_device_init()
4083 octeon_dev->app_mode = CVM_DRV_INVALID_APP; in octeon_device_init()
4092 if (OCTEON_CN23XX_PF(octeon_dev) && in octeon_device_init()
4093 cn23xx_fw_loaded(octeon_dev) && fw_type_is_auto()) { in octeon_device_init()
4094 atomic_cmpxchg(octeon_dev->adapter_fw_state, in octeon_device_init()
4099 fw_state = atomic_cmpxchg(octeon_dev->adapter_fw_state, in octeon_device_init()
4116 if (octeon_dev->fn_list.soft_reset(octeon_dev)) in octeon_device_init()
4122 if (octeon_init_dispatch_list(octeon_dev)) in octeon_device_init()
4125 octeon_register_dispatch_fn(octeon_dev, OPCODE_NIC, in octeon_device_init()
4128 octeon_dev); in octeon_device_init()
4130 octeon_register_dispatch_fn(octeon_dev, OPCODE_NIC, in octeon_device_init()
4132 octeon_recv_vf_drv_notice, octeon_dev); in octeon_device_init()
4133 INIT_DELAYED_WORK(&octeon_dev->nic_poll_work.work, nic_starter); in octeon_device_init()
4134 octeon_dev->nic_poll_work.ctxptr = (void *)octeon_dev; in octeon_device_init()
4135 schedule_delayed_work(&octeon_dev->nic_poll_work.work, in octeon_device_init()
4138 atomic_set(&octeon_dev->status, OCT_DEV_DISPATCH_INIT_DONE); in octeon_device_init()
4140 if (octeon_set_io_queues_off(octeon_dev)) { in octeon_device_init()
4141 dev_err(&octeon_dev->pci_dev->dev, "setting io queues off failed\n"); in octeon_device_init()
4145 if (OCTEON_CN23XX_PF(octeon_dev)) { in octeon_device_init()
4146 ret = octeon_dev->fn_list.setup_device_regs(octeon_dev); in octeon_device_init()
4148 dev_err(&octeon_dev->pci_dev->dev, "OCTEON: Failed to configure device registers\n"); in octeon_device_init()
4155 if (octeon_setup_sc_buffer_pool(octeon_dev)) { in octeon_device_init()
4156 dev_err(&octeon_dev->pci_dev->dev, "sc buffer pool allocation failed\n"); in octeon_device_init()
4159 atomic_set(&octeon_dev->status, OCT_DEV_SC_BUFF_POOL_INIT_DONE); in octeon_device_init()
4162 if (octeon_setup_instr_queues(octeon_dev)) { in octeon_device_init()
4163 dev_err(&octeon_dev->pci_dev->dev, in octeon_device_init()
4167 atomic_set(&octeon_dev->status, OCT_DEV_INSTR_QUEUE_INIT_DONE); in octeon_device_init()
4172 if (octeon_setup_response_list(octeon_dev)) { in octeon_device_init()
4173 dev_err(&octeon_dev->pci_dev->dev, "Response list allocation failed\n"); in octeon_device_init()
4176 atomic_set(&octeon_dev->status, OCT_DEV_RESP_LIST_INIT_DONE); in octeon_device_init()
4178 if (octeon_setup_output_queues(octeon_dev)) { in octeon_device_init()
4179 dev_err(&octeon_dev->pci_dev->dev, "Output queue initialization failed\n"); in octeon_device_init()
4183 atomic_set(&octeon_dev->status, OCT_DEV_DROQ_INIT_DONE); in octeon_device_init()
4185 if (OCTEON_CN23XX_PF(octeon_dev)) { in octeon_device_init()
4186 if (octeon_dev->fn_list.setup_mbox(octeon_dev)) { in octeon_device_init()
4187 dev_err(&octeon_dev->pci_dev->dev, "OCTEON: Mailbox setup failed\n"); in octeon_device_init()
4190 atomic_set(&octeon_dev->status, OCT_DEV_MBOX_SETUP_DONE); in octeon_device_init()
4193 (octeon_dev, in octeon_device_init()
4194 octeon_dev->sriov_info.num_pf_rings)) { in octeon_device_init()
4195 dev_err(&octeon_dev->pci_dev->dev, "OCTEON: ioq vector allocation failed\n"); in octeon_device_init()
4198 atomic_set(&octeon_dev->status, OCT_DEV_MSIX_ALLOC_VECTOR_DONE); in octeon_device_init()
4205 ret = octeon_dev->fn_list.setup_device_regs(octeon_dev); in octeon_device_init()
4207 dev_err(&octeon_dev->pci_dev->dev, in octeon_device_init()
4214 dev_dbg(&octeon_dev->pci_dev->dev, "Initializing droq tasklet\n"); in octeon_device_init()
4219 if (octeon_setup_interrupt(octeon_dev, in octeon_device_init()
4220 octeon_dev->sriov_info.num_pf_rings)) in octeon_device_init()
4224 octeon_dev->fn_list.enable_interrupt(octeon_dev, OCTEON_ALL_INTR); in octeon_device_init()
4226 atomic_set(&octeon_dev->status, OCT_DEV_INTR_SET_DONE); in octeon_device_init()
4236 for (j = 0; j < octeon_dev->num_oqs; j++) in octeon_device_init()
4237 writel(octeon_dev->droq[j]->max_count, in octeon_device_init()
4238 octeon_dev->droq[j]->pkts_credit_reg); in octeon_device_init()
4241 ret = octeon_dev->fn_list.enable_io_queues(octeon_dev); in octeon_device_init()
4243 dev_err(&octeon_dev->pci_dev->dev, "Failed to enable input/output queues"); in octeon_device_init()
4247 atomic_set(&octeon_dev->status, OCT_DEV_IO_QUEUES_DONE); in octeon_device_init()
4250 dev_dbg(&octeon_dev->pci_dev->dev, "Waiting for DDR initialization...\n"); in octeon_device_init()
4252 dev_info(&octeon_dev->pci_dev->dev, in octeon_device_init()
4266 ret = octeon_wait_for_ddr_init(octeon_dev, &ddr_timeout); in octeon_device_init()
4268 dev_err(&octeon_dev->pci_dev->dev, in octeon_device_init()
4274 if (octeon_wait_for_bootloader(octeon_dev, 1000)) { in octeon_device_init()
4275 dev_err(&octeon_dev->pci_dev->dev, "Board not responding\n"); in octeon_device_init()
4280 ret = octeon_console_send_cmd(octeon_dev, bootcmd, 50); in octeon_device_init()
4282 dev_dbg(&octeon_dev->pci_dev->dev, "Initializing consoles\n"); in octeon_device_init()
4283 ret = octeon_init_consoles(octeon_dev); in octeon_device_init()
4285 dev_err(&octeon_dev->pci_dev->dev, "Could not access board consoles\n"); in octeon_device_init()
4292 ret = octeon_add_console(octeon_dev, 0, dbg_enb); in octeon_device_init()
4294 dev_err(&octeon_dev->pci_dev->dev, "Could not access board console\n"); in octeon_device_init()
4300 octeon_dev->console[0].print = octeon_dbg_console_print; in octeon_device_init()
4303 atomic_set(&octeon_dev->status, OCT_DEV_CONSOLE_INIT_DONE); in octeon_device_init()
4305 dev_dbg(&octeon_dev->pci_dev->dev, "Loading firmware\n"); in octeon_device_init()
4306 ret = load_firmware(octeon_dev); in octeon_device_init()
4308 dev_err(&octeon_dev->pci_dev->dev, "Could not load firmware to board\n"); in octeon_device_init()
4312 atomic_set(octeon_dev->adapter_fw_state, FW_HAS_BEEN_LOADED); in octeon_device_init()
4315 handshake[octeon_dev->octeon_id].init_ok = 1; in octeon_device_init()
4316 complete(&handshake[octeon_dev->octeon_id].init); in octeon_device_init()
4318 atomic_set(&octeon_dev->status, OCT_DEV_HOST_OK); in octeon_device_init()
4319 oct_priv->dev = octeon_dev; in octeon_device_init()