Lines Matching refs:ionic
271 err = ionic_heartbeat_check(lif->ionic); in ionic_adminq_post()
312 static void ionic_dev_cmd_clean(struct ionic *ionic) in ionic_dev_cmd_clean() argument
314 union __iomem ionic_dev_cmd_regs *regs = ionic->idev.dev_cmd_regs; in ionic_dev_cmd_clean()
320 int ionic_dev_cmd_wait(struct ionic *ionic, unsigned long max_seconds) in ionic_dev_cmd_wait() argument
322 struct ionic_dev *idev = &ionic->idev; in ionic_dev_cmd_wait()
348 hb = ionic_heartbeat_check(ionic); in ionic_dev_cmd_wait()
352 dev_dbg(ionic->dev, "DEVCMD %s (%d) done=%d took %ld secs (%ld jiffies)\n", in ionic_dev_cmd_wait()
361 dev_warn(ionic->dev, "DEVCMD %s (%d) failed - FW halted\n", in ionic_dev_cmd_wait()
367 ionic_dev_cmd_clean(ionic); in ionic_dev_cmd_wait()
368 dev_warn(ionic->dev, "DEVCMD %s (%d) timeout after %ld secs\n", in ionic_dev_cmd_wait()
373 err = ionic_dev_cmd_status(&ionic->idev); in ionic_dev_cmd_wait()
377 dev_dbg(ionic->dev, "DEV_CMD %s (%d), %s (%d) retrying...\n", in ionic_dev_cmd_wait()
388 dev_err(ionic->dev, "DEV_CMD %s (%d) error, %s (%d) failed\n", in ionic_dev_cmd_wait()
398 int ionic_setup(struct ionic *ionic) in ionic_setup() argument
402 err = ionic_dev_setup(ionic); in ionic_setup()
405 ionic_reset(ionic); in ionic_setup()
410 int ionic_identify(struct ionic *ionic) in ionic_identify() argument
412 struct ionic_identity *ident = &ionic->ident; in ionic_identify()
413 struct ionic_dev *idev = &ionic->idev; in ionic_identify()
423 mutex_lock(&ionic->dev_cmd_lock); in ionic_identify()
429 err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); in ionic_identify()
434 mutex_unlock(&ionic->dev_cmd_lock); in ionic_identify()
437 dev_err(ionic->dev, "Cannot identify ionic: %dn", err); in ionic_identify()
441 err = ionic_lif_identify(ionic, IONIC_LIF_TYPE_CLASSIC, in ionic_identify()
442 &ionic->ident.lif); in ionic_identify()
444 dev_err(ionic->dev, "Cannot identify LIFs: %d\n", err); in ionic_identify()
454 int ionic_init(struct ionic *ionic) in ionic_init() argument
456 struct ionic_dev *idev = &ionic->idev; in ionic_init()
459 mutex_lock(&ionic->dev_cmd_lock); in ionic_init()
461 err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); in ionic_init()
462 mutex_unlock(&ionic->dev_cmd_lock); in ionic_init()
467 int ionic_reset(struct ionic *ionic) in ionic_reset() argument
469 struct ionic_dev *idev = &ionic->idev; in ionic_reset()
472 mutex_lock(&ionic->dev_cmd_lock); in ionic_reset()
474 err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); in ionic_reset()
475 mutex_unlock(&ionic->dev_cmd_lock); in ionic_reset()
480 int ionic_port_identify(struct ionic *ionic) in ionic_port_identify() argument
482 struct ionic_identity *ident = &ionic->ident; in ionic_port_identify()
483 struct ionic_dev *idev = &ionic->idev; in ionic_port_identify()
487 mutex_lock(&ionic->dev_cmd_lock); in ionic_port_identify()
490 err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); in ionic_port_identify()
496 mutex_unlock(&ionic->dev_cmd_lock); in ionic_port_identify()
501 int ionic_port_init(struct ionic *ionic) in ionic_port_init() argument
503 struct ionic_identity *ident = &ionic->ident; in ionic_port_init()
504 struct ionic_dev *idev = &ionic->idev; in ionic_port_init()
510 idev->port_info = dma_alloc_coherent(ionic->dev, in ionic_port_init()
515 dev_err(ionic->dev, "Failed to allocate port info\n"); in ionic_port_init()
522 mutex_lock(&ionic->dev_cmd_lock); in ionic_port_init()
526 err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); in ionic_port_init()
528 ionic_dev_cmd_port_state(&ionic->idev, IONIC_PORT_ADMIN_STATE_UP); in ionic_port_init()
529 (void)ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); in ionic_port_init()
531 mutex_unlock(&ionic->dev_cmd_lock); in ionic_port_init()
533 dev_err(ionic->dev, "Failed to init port\n"); in ionic_port_init()
534 dma_free_coherent(ionic->dev, idev->port_info_sz, in ionic_port_init()
543 int ionic_port_reset(struct ionic *ionic) in ionic_port_reset() argument
545 struct ionic_dev *idev = &ionic->idev; in ionic_port_reset()
551 mutex_lock(&ionic->dev_cmd_lock); in ionic_port_reset()
553 err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT); in ionic_port_reset()
554 mutex_unlock(&ionic->dev_cmd_lock); in ionic_port_reset()
556 dma_free_coherent(ionic->dev, idev->port_info_sz, in ionic_port_reset()
563 dev_err(ionic->dev, "Failed to reset port\n"); in ionic_port_reset()