/linux-4.1.27/drivers/staging/nvec/ |
H A D | nvec.c | 40 #include "nvec.h" 87 .name = "nvec-kbd", 90 .name = "nvec-mouse", 93 .name = "nvec-power", 97 .name = "nvec-power", 101 .name = "nvec-paz00", 106 * nvec_register_notifier - Register a notifier with nvec 107 * @nvec: A &struct nvec_chip 110 * Registers a notifier with @nvec. The notifier will be added to an atomic 114 int nvec_register_notifier(struct nvec_chip *nvec, struct notifier_block *nb, nvec_register_notifier() argument 117 return atomic_notifier_chain_register(&nvec->notifier_list, nb); nvec_register_notifier() 122 * nvec_unregister_notifier - Unregister a notifier with nvec 123 * @nvec: A &struct nvec_chip 126 * Unregisters a notifier with @nvec. The notifier will be removed from the 129 int nvec_unregister_notifier(struct nvec_chip *nvec, struct notifier_block *nb) nvec_unregister_notifier() argument 131 return atomic_notifier_chain_unregister(&nvec->notifier_list, nb); nvec_unregister_notifier() 144 struct nvec_chip *nvec = container_of(nb, struct nvec_chip, nvec_status_notifier() local 151 dev_warn(nvec->dev, "unhandled msg type %ld\n", event_type); nvec_status_notifier() 160 * @nvec: A &struct nvec_chip 164 * @nvec. The result shall be passed to nvec_msg_free() if no longer 172 static struct nvec_msg *nvec_msg_alloc(struct nvec_chip *nvec, nvec_msg_alloc() argument 178 if (atomic_xchg(&nvec->msg_pool[i].used, 1) == 0) { nvec_msg_alloc() 179 dev_vdbg(nvec->dev, "INFO: Allocate %i\n", i); nvec_msg_alloc() 180 return &nvec->msg_pool[i]; nvec_msg_alloc() 184 dev_err(nvec->dev, "could not allocate %s buffer\n", nvec_msg_alloc() 192 * @nvec: A &struct nvec_chip 193 * @msg: A message (must be allocated by nvec_msg_alloc() and belong to @nvec) 197 void nvec_msg_free(struct nvec_chip *nvec, struct nvec_msg *msg) nvec_msg_free() argument 199 if (msg != &nvec->tx_scratch) nvec_msg_free() 200 dev_vdbg(nvec->dev, "INFO: Free %ti\n", msg - nvec->msg_pool); nvec_msg_free() 237 * @nvec: A &struct nvec_chip 242 static void nvec_gpio_set_value(struct nvec_chip *nvec, int value) nvec_gpio_set_value() argument 244 dev_dbg(nvec->dev, "GPIO changed from %u to %u\n", nvec_gpio_set_value() 245 gpio_get_value(nvec->gpio), value); nvec_gpio_set_value() 246 gpio_set_value(nvec->gpio, value); nvec_gpio_set_value() 251 * @nvec: An nvec_chip instance 259 * occurred, the nvec driver may print an error. 261 int nvec_write_async(struct nvec_chip *nvec, const unsigned char *data, nvec_write_async() argument 267 msg = nvec_msg_alloc(nvec, NVEC_MSG_TX); nvec_write_async() 276 spin_lock_irqsave(&nvec->tx_lock, flags); nvec_write_async() 277 list_add_tail(&msg->node, &nvec->tx_data); nvec_write_async() 278 spin_unlock_irqrestore(&nvec->tx_lock, flags); nvec_write_async() 280 schedule_work(&nvec->tx_work); nvec_write_async() 287 * nvec_write_sync - Write a message to nvec and read the response 288 * @nvec: An &struct nvec_chip 301 struct nvec_msg *nvec_write_sync(struct nvec_chip *nvec, nvec_write_sync() argument 306 mutex_lock(&nvec->sync_write_mutex); nvec_write_sync() 308 nvec->sync_write_pending = (data[1] << 8) + data[0]; nvec_write_sync() 310 if (nvec_write_async(nvec, data, size) < 0) { nvec_write_sync() 311 mutex_unlock(&nvec->sync_write_mutex); nvec_write_sync() 315 dev_dbg(nvec->dev, "nvec_sync_write: 0x%04x\n", nvec_write_sync() 316 nvec->sync_write_pending); nvec_write_sync() 317 if (!(wait_for_completion_timeout(&nvec->sync_write, nvec_write_sync() 319 dev_warn(nvec->dev, "timeout waiting for sync write to complete\n"); nvec_write_sync() 320 mutex_unlock(&nvec->sync_write_mutex); nvec_write_sync() 324 dev_dbg(nvec->dev, "nvec_sync_write: pong!\n"); nvec_write_sync() 326 msg = nvec->last_sync_msg; nvec_write_sync() 328 mutex_unlock(&nvec->sync_write_mutex); nvec_write_sync() 336 * @nvec: nvec handle 341 static void nvec_toggle_global_events(struct nvec_chip *nvec, bool state) nvec_toggle_global_events() argument 345 nvec_write_async(nvec, global_events, 3); nvec_toggle_global_events() 379 struct nvec_chip *nvec = container_of(work, struct nvec_chip, tx_work); nvec_request_master() local 384 spin_lock_irqsave(&nvec->tx_lock, flags); nvec_request_master() 385 while (!list_empty(&nvec->tx_data)) { nvec_request_master() 386 msg = list_first_entry(&nvec->tx_data, struct nvec_msg, node); nvec_request_master() 387 spin_unlock_irqrestore(&nvec->tx_lock, flags); nvec_request_master() 388 nvec_gpio_set_value(nvec, 0); nvec_request_master() 390 &nvec->ec_transfer, msecs_to_jiffies(5000)); nvec_request_master() 393 dev_warn(nvec->dev, "timeout waiting for ec transfer\n"); nvec_request_master() 394 nvec_gpio_set_value(nvec, 1); nvec_request_master() 398 spin_lock_irqsave(&nvec->tx_lock, flags); nvec_request_master() 402 nvec_msg_free(nvec, msg); nvec_request_master() 405 spin_unlock_irqrestore(&nvec->tx_lock, flags); nvec_request_master() 410 * @nvec: A &struct nvec_chip 411 * @msg: A message received by @nvec 416 static int parse_msg(struct nvec_chip *nvec, struct nvec_msg *msg) parse_msg() argument 419 dev_err(nvec->dev, "ec responded %*ph\n", 4, msg->data); parse_msg() 428 atomic_notifier_call_chain(&nvec->notifier_list, msg->data[0] & 0x8f, parse_msg() 443 struct nvec_chip *nvec = container_of(work, struct nvec_chip, rx_work); nvec_dispatch() local 447 spin_lock_irqsave(&nvec->rx_lock, flags); nvec_dispatch() 448 while (!list_empty(&nvec->rx_data)) { nvec_dispatch() 449 msg = list_first_entry(&nvec->rx_data, struct nvec_msg, node); nvec_dispatch() 451 spin_unlock_irqrestore(&nvec->rx_lock, flags); nvec_dispatch() 453 if (nvec->sync_write_pending == nvec_dispatch() 455 dev_dbg(nvec->dev, "sync write completed!\n"); nvec_dispatch() 456 nvec->sync_write_pending = 0; nvec_dispatch() 457 nvec->last_sync_msg = msg; nvec_dispatch() 458 complete(&nvec->sync_write); nvec_dispatch() 460 parse_msg(nvec, msg); nvec_dispatch() 461 nvec_msg_free(nvec, msg); nvec_dispatch() 463 spin_lock_irqsave(&nvec->rx_lock, flags); nvec_dispatch() 465 spin_unlock_irqrestore(&nvec->rx_lock, flags); nvec_dispatch() 470 * @nvec: A &struct nvec_chip 474 static void nvec_tx_completed(struct nvec_chip *nvec) nvec_tx_completed() argument 477 if (nvec->tx->pos != nvec->tx->size) { nvec_tx_completed() 478 dev_err(nvec->dev, "premature END_TRANS, resending\n"); nvec_tx_completed() 479 nvec->tx->pos = 0; nvec_tx_completed() 480 nvec_gpio_set_value(nvec, 0); nvec_tx_completed() 482 nvec->state = 0; nvec_tx_completed() 488 * @nvec: A &struct nvec_chip 492 static void nvec_rx_completed(struct nvec_chip *nvec) nvec_rx_completed() argument 494 if (nvec->rx->pos != nvec_msg_size(nvec->rx)) { nvec_rx_completed() 495 dev_err(nvec->dev, "RX incomplete: Expected %u bytes, got %u\n", nvec_rx_completed() 496 (uint) nvec_msg_size(nvec->rx), nvec_rx_completed() 497 (uint) nvec->rx->pos); nvec_rx_completed() 499 nvec_msg_free(nvec, nvec->rx); nvec_rx_completed() 500 nvec->state = 0; nvec_rx_completed() 503 if (nvec->rx->data[0] == NVEC_BAT) nvec_rx_completed() 504 complete(&nvec->ec_transfer); nvec_rx_completed() 509 spin_lock(&nvec->rx_lock); nvec_rx_completed() 513 list_add_tail(&nvec->rx->node, &nvec->rx_data); nvec_rx_completed() 515 spin_unlock(&nvec->rx_lock); nvec_rx_completed() 517 nvec->state = 0; nvec_rx_completed() 519 if (!nvec_msg_is_event(nvec->rx)) nvec_rx_completed() 520 complete(&nvec->ec_transfer); nvec_rx_completed() 522 schedule_work(&nvec->rx_work); nvec_rx_completed() 527 * @nvec: The nvec device 531 static void nvec_invalid_flags(struct nvec_chip *nvec, unsigned int status, nvec_invalid_flags() argument 534 dev_err(nvec->dev, "unexpected status flags 0x%02x during state %i\n", nvec_invalid_flags() 535 status, nvec->state); nvec_invalid_flags() 537 nvec->state = 0; nvec_invalid_flags() 541 * nvec_tx_set - Set the message to transfer (nvec->tx) 542 * @nvec: A &struct nvec_chip 544 * Gets the first entry from the tx_data list of @nvec and sets the 548 static void nvec_tx_set(struct nvec_chip *nvec) nvec_tx_set() argument 550 spin_lock(&nvec->tx_lock); nvec_tx_set() 551 if (list_empty(&nvec->tx_data)) { nvec_tx_set() 552 dev_err(nvec->dev, "empty tx - sending no-op\n"); nvec_tx_set() 553 memcpy(nvec->tx_scratch.data, "\x02\x07\x02", 3); nvec_tx_set() 554 nvec->tx_scratch.size = 3; nvec_tx_set() 555 nvec->tx_scratch.pos = 0; nvec_tx_set() 556 nvec->tx = &nvec->tx_scratch; nvec_tx_set() 557 list_add_tail(&nvec->tx->node, &nvec->tx_data); nvec_tx_set() 559 nvec->tx = list_first_entry(&nvec->tx_data, struct nvec_msg, nvec_tx_set() 561 nvec->tx->pos = 0; nvec_tx_set() 563 spin_unlock(&nvec->tx_lock); nvec_tx_set() 565 dev_dbg(nvec->dev, "Sending message of length %u, command 0x%x\n", nvec_tx_set() 566 (uint)nvec->tx->size, nvec->tx->data[1]); nvec_tx_set() 572 * @dev: The nvec device 584 struct nvec_chip *nvec = dev; nvec_interrupt() local 585 unsigned int state = nvec->state; nvec_interrupt() 587 status = readl(nvec->base + I2C_SL_STATUS); nvec_interrupt() 591 dev_err(nvec->dev, "unexpected irq mask %lx\n", status); nvec_interrupt() 595 dev_err(nvec->dev, "Spurious IRQ\n"); nvec_interrupt() 601 received = readl(nvec->base + I2C_SL_RCVD); nvec_interrupt() 603 writel(0, nvec->base + I2C_SL_RCVD); nvec_interrupt() 607 nvec->state = 0; nvec_interrupt() 609 switch (nvec->state) { nvec_interrupt() 612 nvec_invalid_flags(nvec, status, false); nvec_interrupt() 616 nvec_invalid_flags(nvec, status, true); nvec_interrupt() 618 nvec->rx = nvec_msg_alloc(nvec, NVEC_MSG_RX); nvec_interrupt() 620 if (unlikely(nvec->rx == NULL)) { nvec_interrupt() 621 nvec->state = 0; nvec_interrupt() 624 nvec->rx->data[0] = received; nvec_interrupt() 625 nvec->rx->pos = 1; nvec_interrupt() 626 nvec->state = 2; nvec_interrupt() 632 if (nvec->rx->data[0] != 0x01) { nvec_interrupt() 633 dev_err(nvec->dev, nvec_interrupt() 635 nvec->state = 0; nvec_interrupt() 638 nvec_msg_free(nvec, nvec->rx); nvec_interrupt() 639 nvec->state = 3; nvec_interrupt() 640 nvec_tx_set(nvec); nvec_interrupt() 641 BUG_ON(nvec->tx->size < 1); nvec_interrupt() 642 to_send = nvec->tx->data[0]; nvec_interrupt() 643 nvec->tx->pos = 1; nvec_interrupt() 645 BUG_ON(nvec->rx == NULL); nvec_interrupt() 646 nvec->rx->data[1] = received; nvec_interrupt() 647 nvec->rx->pos = 2; nvec_interrupt() 648 nvec->state = 4; nvec_interrupt() 650 nvec_invalid_flags(nvec, status, true); nvec_interrupt() 655 nvec_tx_completed(nvec); nvec_interrupt() 657 nvec_invalid_flags(nvec, status, true); nvec_interrupt() 658 } else if (nvec->tx && nvec->tx->pos < nvec->tx->size) { nvec_interrupt() 659 to_send = nvec->tx->data[nvec->tx->pos++]; nvec_interrupt() 661 dev_err(nvec->dev, "tx buffer underflow on %p (%u > %u)\n", nvec_interrupt() 662 nvec->tx, nvec_interrupt() 663 (uint) (nvec->tx ? nvec->tx->pos : 0), nvec_interrupt() 664 (uint) (nvec->tx ? nvec->tx->size : 0)); nvec_interrupt() 665 nvec->state = 0; nvec_interrupt() 670 nvec_rx_completed(nvec); nvec_interrupt() 672 nvec_invalid_flags(nvec, status, true); nvec_interrupt() 673 else if (nvec->rx && nvec->rx->pos < NVEC_MSG_SIZE) nvec_interrupt() 674 nvec->rx->data[nvec->rx->pos++] = received; nvec_interrupt() 676 dev_err(nvec->dev, nvec_interrupt() 678 nvec->rx, nvec->rx ? nvec->rx->pos : 0, nvec_interrupt() 682 nvec->state = 0; nvec_interrupt() 687 if (received != nvec->i2c_addr) nvec_interrupt() 688 dev_err(nvec->dev, nvec_interrupt() 690 received, nvec->i2c_addr); nvec_interrupt() 691 nvec->state = 1; nvec_interrupt() 696 writel(to_send, nvec->base + I2C_SL_RCVD); nvec_interrupt() 700 nvec_gpio_set_value(nvec, 1); nvec_interrupt() 702 dev_dbg(nvec->dev, nvec_interrupt() 725 static void tegra_init_i2c_slave(struct nvec_chip *nvec) tegra_init_i2c_slave() argument 729 clk_prepare_enable(nvec->i2c_clk); tegra_init_i2c_slave() 731 reset_control_assert(nvec->rst); tegra_init_i2c_slave() 733 reset_control_deassert(nvec->rst); tegra_init_i2c_slave() 737 writel(val, nvec->base + I2C_CNFG); tegra_init_i2c_slave() 739 clk_set_rate(nvec->i2c_clk, 8 * 80000); tegra_init_i2c_slave() 741 writel(I2C_SL_NEWSL, nvec->base + I2C_SL_CNFG); tegra_init_i2c_slave() 742 writel(0x1E, nvec->base + I2C_SL_DELAY_COUNT); tegra_init_i2c_slave() 744 writel(nvec->i2c_addr>>1, nvec->base + I2C_SL_ADDR1); tegra_init_i2c_slave() 745 writel(0, nvec->base + I2C_SL_ADDR2); tegra_init_i2c_slave() 747 enable_irq(nvec->irq); tegra_init_i2c_slave() 751 static void nvec_disable_i2c_slave(struct nvec_chip *nvec) nvec_disable_i2c_slave() argument 753 disable_irq(nvec->irq); nvec_disable_i2c_slave() 754 writel(I2C_SL_NEWSL | I2C_SL_NACK, nvec->base + I2C_SL_CNFG); nvec_disable_i2c_slave() 755 clk_disable_unprepare(nvec->i2c_clk); nvec_disable_i2c_slave() 770 static int nvec_i2c_parse_dt_pdata(struct nvec_chip *nvec) nvec_i2c_parse_dt_pdata() argument 772 nvec->gpio = of_get_named_gpio(nvec->dev->of_node, "request-gpios", 0); nvec_i2c_parse_dt_pdata() 774 if (nvec->gpio < 0) { nvec_i2c_parse_dt_pdata() 775 dev_err(nvec->dev, "no gpio specified"); nvec_i2c_parse_dt_pdata() 779 if (of_property_read_u32(nvec->dev->of_node, "slave-addr", nvec_i2c_parse_dt_pdata() 780 &nvec->i2c_addr)) { nvec_i2c_parse_dt_pdata() 781 dev_err(nvec->dev, "no i2c address specified"); nvec_i2c_parse_dt_pdata() 792 struct nvec_chip *nvec; tegra_nvec_probe() local 805 nvec = devm_kzalloc(&pdev->dev, sizeof(struct nvec_chip), GFP_KERNEL); tegra_nvec_probe() 806 if (!nvec) tegra_nvec_probe() 809 platform_set_drvdata(pdev, nvec); tegra_nvec_probe() 810 nvec->dev = &pdev->dev; tegra_nvec_probe() 812 err = nvec_i2c_parse_dt_pdata(nvec); tegra_nvec_probe() 821 nvec->irq = platform_get_irq(pdev, 0); tegra_nvec_probe() 822 if (nvec->irq < 0) { tegra_nvec_probe() 829 dev_err(nvec->dev, "failed to get controller clock\n"); tegra_nvec_probe() 833 nvec->rst = devm_reset_control_get(&pdev->dev, "i2c"); tegra_nvec_probe() 834 if (IS_ERR(nvec->rst)) { tegra_nvec_probe() 835 dev_err(nvec->dev, "failed to get controller reset\n"); tegra_nvec_probe() 836 return PTR_ERR(nvec->rst); tegra_nvec_probe() 839 nvec->base = base; tegra_nvec_probe() 840 nvec->i2c_clk = i2c_clk; tegra_nvec_probe() 841 nvec->rx = &nvec->msg_pool[0]; tegra_nvec_probe() 843 ATOMIC_INIT_NOTIFIER_HEAD(&nvec->notifier_list); tegra_nvec_probe() 845 init_completion(&nvec->sync_write); tegra_nvec_probe() 846 init_completion(&nvec->ec_transfer); tegra_nvec_probe() 847 mutex_init(&nvec->sync_write_mutex); tegra_nvec_probe() 848 spin_lock_init(&nvec->tx_lock); tegra_nvec_probe() 849 spin_lock_init(&nvec->rx_lock); tegra_nvec_probe() 850 INIT_LIST_HEAD(&nvec->rx_data); tegra_nvec_probe() 851 INIT_LIST_HEAD(&nvec->tx_data); tegra_nvec_probe() 852 INIT_WORK(&nvec->rx_work, nvec_dispatch); tegra_nvec_probe() 853 INIT_WORK(&nvec->tx_work, nvec_request_master); tegra_nvec_probe() 855 err = devm_gpio_request_one(&pdev->dev, nvec->gpio, GPIOF_OUT_INIT_HIGH, tegra_nvec_probe() 856 "nvec gpio"); tegra_nvec_probe() 858 dev_err(nvec->dev, "couldn't request gpio\n"); tegra_nvec_probe() 862 err = devm_request_irq(&pdev->dev, nvec->irq, nvec_interrupt, 0, tegra_nvec_probe() 863 "nvec", nvec); tegra_nvec_probe() 865 dev_err(nvec->dev, "couldn't request irq\n"); tegra_nvec_probe() 868 disable_irq(nvec->irq); tegra_nvec_probe() 870 tegra_init_i2c_slave(nvec); tegra_nvec_probe() 873 nvec_toggle_global_events(nvec, true); tegra_nvec_probe() 875 nvec->nvec_status_notifier.notifier_call = nvec_status_notifier; tegra_nvec_probe() 876 nvec_register_notifier(nvec, &nvec->nvec_status_notifier, 0); tegra_nvec_probe() 878 nvec_power_handle = nvec; tegra_nvec_probe() 882 msg = nvec_write_sync(nvec, get_firmware_version, 2); tegra_nvec_probe() 885 dev_warn(nvec->dev, "ec firmware version %02x.%02x.%02x / %02x\n", tegra_nvec_probe() 888 nvec_msg_free(nvec, msg); tegra_nvec_probe() 891 ret = mfd_add_devices(nvec->dev, 0, nvec_devices, tegra_nvec_probe() 894 dev_err(nvec->dev, "error adding subdevices\n"); tegra_nvec_probe() 897 nvec_write_async(nvec, unmute_speakers, 4); tegra_nvec_probe() 901 nvec_write_async(nvec, enable_event, 7); tegra_nvec_probe() 905 nvec_write_async(nvec, enable_event, 7); tegra_nvec_probe() 912 struct nvec_chip *nvec = platform_get_drvdata(pdev); tegra_nvec_remove() local 914 nvec_toggle_global_events(nvec, false); tegra_nvec_remove() 915 mfd_remove_devices(nvec->dev); tegra_nvec_remove() 916 nvec_unregister_notifier(nvec, &nvec->nvec_status_notifier); tegra_nvec_remove() 917 cancel_work_sync(&nvec->rx_work); tegra_nvec_remove() 918 cancel_work_sync(&nvec->tx_work); tegra_nvec_remove() 919 /* FIXME: needs check wether nvec is responsible for power off */ tegra_nvec_remove() 929 struct nvec_chip *nvec = platform_get_drvdata(pdev); nvec_suspend() local 933 dev_dbg(nvec->dev, "suspending\n"); nvec_suspend() 936 nvec_toggle_global_events(nvec, false); nvec_suspend() 938 msg = nvec_write_sync(nvec, ap_suspend, sizeof(ap_suspend)); nvec_suspend() 939 nvec_msg_free(nvec, msg); nvec_suspend() 941 nvec_disable_i2c_slave(nvec); nvec_suspend() 949 struct nvec_chip *nvec = platform_get_drvdata(pdev); nvec_resume() local 951 dev_dbg(nvec->dev, "resuming\n"); nvec_resume() 952 tegra_init_i2c_slave(nvec); nvec_resume() 953 nvec_toggle_global_events(nvec, true); nvec_resume() 963 { .compatible = "nvidia,nvec", }, 972 .name = "nvec", 980 MODULE_ALIAS("platform:nvec");
|
H A D | nvec_kbd.c | 21 #include "nvec-keytable.h" 22 #include "nvec.h" 38 struct nvec_chip *nvec; member in struct:nvec_keys 54 nvec_write_async(keys_dev.nvec, buf, sizeof(buf)); nvec_kbd_toggle_led() 92 struct nvec_chip *nvec = keys_dev.nvec; nvec_kbd_event() local 105 nvec_write_async(nvec, buf, sizeof(buf)); nvec_kbd_event() 112 struct nvec_chip *nvec = dev_get_drvdata(pdev->dev.parent); nvec_kbd_probe() local 130 idev->name = "nvec keyboard"; nvec_kbd_probe() 131 idev->phys = "nvec"; nvec_kbd_probe() 149 keys_dev.nvec = nvec; nvec_kbd_probe() 150 nvec_register_notifier(nvec, &keys_dev.notifier, 0); nvec_kbd_probe() 153 nvec_write_async(nvec, enable_kbd, 2); nvec_kbd_probe() 156 nvec_write_async(nvec, cnfg_wake, 4); nvec_kbd_probe() 158 nvec_write_async(nvec, cnfg_wake_key_reporting, 3); nvec_kbd_probe() 161 nvec_write_async(nvec, clear_leds, sizeof(clear_leds)); nvec_kbd_probe() 168 struct nvec_chip *nvec = dev_get_drvdata(pdev->dev.parent); nvec_kbd_remove() local 172 nvec_write_async(nvec, uncnfg_wake_key_reporting, 3); nvec_kbd_remove() 173 nvec_write_async(nvec, disable_kbd, 2); nvec_kbd_remove() 174 nvec_unregister_notifier(nvec, &keys_dev.notifier); nvec_kbd_remove() 183 .name = "nvec-kbd", 191 MODULE_ALIAS("platform:nvec-kbd");
|
H A D | nvec_paz00.c | 19 #include "nvec.h" 30 struct nvec_chip *nvec; member in struct:nvec_led 41 nvec_write_async(led->nvec, buf, sizeof(buf)); nvec_led_brightness_set() 49 struct nvec_chip *nvec = dev_get_drvdata(pdev->dev.parent); nvec_paz00_probe() local 62 led->nvec = nvec; nvec_paz00_probe() 89 .name = "nvec-paz00", 98 MODULE_ALIAS("platform:nvec-paz00");
|
H A D | nvec_ps2.c | 22 #include "nvec.h" 48 struct nvec_chip *nvec; member in struct:nvec_ps2 57 return nvec_write_async(ps2_dev.nvec, buf, sizeof(buf)); ps2_startstreaming() 64 nvec_write_async(ps2_dev.nvec, buf, sizeof(buf)); ps2_stopstreaming() 74 return nvec_write_async(ps2_dev.nvec, buf, sizeof(buf)); ps2_sendcommand() 107 struct nvec_chip *nvec = dev_get_drvdata(pdev->dev.parent); nvec_mouse_probe() local 120 strlcpy(ser_dev->name, "nvec mouse", sizeof(ser_dev->name)); nvec_mouse_probe() 121 strlcpy(ser_dev->phys, "nvec", sizeof(ser_dev->phys)); nvec_mouse_probe() 125 ps2_dev.nvec = nvec; nvec_mouse_probe() 126 nvec_register_notifier(nvec, &ps2_dev.notifier, 0); nvec_mouse_probe() 131 nvec_write_async(nvec, mouse_reset, sizeof(mouse_reset)); nvec_mouse_probe() 138 struct nvec_chip *nvec = dev_get_drvdata(pdev->dev.parent); nvec_mouse_remove() local 142 nvec_unregister_notifier(nvec, &ps2_dev.notifier); nvec_mouse_remove() 179 .name = "nvec-mouse", 188 MODULE_ALIAS("platform:nvec-mouse");
|
H A D | nvec_power.c | 23 #include "nvec.h" 30 struct nvec_chip *nvec; member in struct:nvec_power 120 nvec_write_async(power->nvec, buf, 2); get_bat_mfg_data() 360 nvec_write_async(power->nvec, buf, 2); nvec_power_poll() 367 nvec_write_async(power->nvec, buf, 2); nvec_power_poll() 377 struct nvec_chip *nvec = dev_get_drvdata(pdev->dev.parent); nvec_power_probe() local 385 power->nvec = nvec; nvec_power_probe() 409 nvec_register_notifier(nvec, &power->notifier, NVEC_SYS); nvec_power_probe() 424 nvec_unregister_notifier(power->nvec, &power->notifier); nvec_power_remove() 440 .name = "nvec-power", 449 MODULE_ALIAS("platform:nvec-power");
|
H A D | nvec.h | 168 extern int nvec_write_async(struct nvec_chip *nvec, const unsigned char *data, 171 extern struct nvec_msg *nvec_write_sync(struct nvec_chip *nvec, 174 extern int nvec_register_notifier(struct nvec_chip *nvec, 181 extern void nvec_msg_free(struct nvec_chip *nvec, struct nvec_msg *msg);
|
H A D | nvec-keytable.h | 2 * drivers/input/keyboard/tegra-nvec.c
|
/linux-4.1.27/arch/powerpc/kernel/ |
H A D | msi.c | 16 int arch_setup_msi_irqs(struct pci_dev *dev, int nvec, int type) arch_setup_msi_irqs() argument 24 if (type == PCI_CAP_ID_MSI && nvec > 1) arch_setup_msi_irqs() 27 return ppc_md.setup_msi_irqs(dev, nvec, type); arch_setup_msi_irqs()
|
/linux-4.1.27/drivers/iommu/ |
H A D | irq_remapping.c | 27 static int msi_alloc_remapped_irq(struct pci_dev *pdev, int irq, int nvec); 52 static int do_setup_msi_irqs(struct pci_dev *dev, int nvec) do_setup_msi_irqs() argument 60 irq = irq_alloc_hwirqs(nvec, dev_to_node(&dev->dev)); do_setup_msi_irqs() 64 nvec_pow2 = __roundup_pow_of_two(nvec); do_setup_msi_irqs() 65 for (sub_handle = 0; sub_handle < nvec; sub_handle++) { do_setup_msi_irqs() 85 irq_free_hwirqs(irq, nvec); do_setup_msi_irqs() 96 static int do_setup_msix_irqs(struct pci_dev *dev, int nvec) do_setup_msix_irqs() argument 112 ret = index = msi_alloc_remapped_irq(dev, irq, nvec); do_setup_msix_irqs() 135 int nvec, int type) irq_remapping_setup_msi_irqs() 138 return do_setup_msi_irqs(dev, nvec); irq_remapping_setup_msi_irqs() 140 return do_setup_msix_irqs(dev, nvec); irq_remapping_setup_msi_irqs() 298 static int msi_alloc_remapped_irq(struct pci_dev *pdev, int irq, int nvec) msi_alloc_remapped_irq() argument 303 return remap_ops->msi_alloc_irq(pdev, irq, nvec); msi_alloc_remapped_irq() 134 irq_remapping_setup_msi_irqs(struct pci_dev *dev, int nvec, int type) irq_remapping_setup_msi_irqs() argument
|
H A D | intel_irq_remapping.c | 1137 * and allocate 'nvec' consecutive interrupt-remapping table entries 1140 static int intel_msi_alloc_irq(struct pci_dev *dev, int irq, int nvec) intel_msi_alloc_irq() argument 1152 index = alloc_irte(iommu, irq, nvec); intel_msi_alloc_irq() 1156 nvec, pci_name(dev)); intel_msi_alloc_irq()
|
H A D | amd_iommu.c | 4215 static int msi_alloc_irq(struct pci_dev *pdev, int irq, int nvec) msi_alloc_irq() argument 4229 index = alloc_irq_index(cfg, devid, nvec); msi_alloc_irq()
|
/linux-4.1.27/arch/x86/include/asm/xen/ |
H A D | pci.h | 49 int (*enable_msix)(struct pci_dev *dev, int vectors[], int nvec); 68 int vectors[], int nvec) xen_pci_frontend_enable_msix() 71 return xen_pci_frontend->enable_msix(dev, vectors, nvec); xen_pci_frontend_enable_msix() 67 xen_pci_frontend_enable_msix(struct pci_dev *dev, int vectors[], int nvec) xen_pci_frontend_enable_msix() argument
|
/linux-4.1.27/arch/powerpc/platforms/pseries/ |
H A D | msi.c | 130 static int check_req(struct pci_dev *pdev, int nvec, char *prop_name) check_req() argument 150 if (req_msi < nvec) { check_req() 151 pr_debug("rtas_msi: %s requests < %d MSIs\n", prop_name, nvec); check_req() 162 static int check_req_msi(struct pci_dev *pdev, int nvec) check_req_msi() argument 164 return check_req(pdev, nvec, "ibm,req#msi"); check_req_msi() 167 static int check_req_msix(struct pci_dev *pdev, int nvec) check_req_msix() argument 169 return check_req(pdev, nvec, "ibm,req#msi-x"); check_req_msix() 385 int nvec = nvec_in; rtas_setup_msi_irqs() local 389 rc = check_req_msix(pdev, nvec); rtas_setup_msi_irqs() 391 rc = check_req_msi(pdev, nvec); rtas_setup_msi_irqs() 396 quota = msi_quota_for_device(pdev, nvec); rtas_setup_msi_irqs() 398 if (quota && quota < nvec) rtas_setup_msi_irqs() 409 int m = roundup_pow_of_two(nvec); rtas_setup_msi_irqs() 413 nvec = m; rtas_setup_msi_irqs() 426 rc = rtas_change_msi(pdn, RTAS_CHANGE_32MSI_FN, nvec); rtas_setup_msi_irqs() 441 rc = rtas_change_msi(pdn, RTAS_CHANGE_MSI_FN, nvec); rtas_setup_msi_irqs() 445 rc = rtas_change_msi(pdn, RTAS_CHANGE_FN, nvec); rtas_setup_msi_irqs() 451 rc = rtas_change_msi(pdn, RTAS_CHANGE_MSIX_FN, nvec); rtas_setup_msi_irqs() 453 if (rc != nvec) { rtas_setup_msi_irqs() 454 if (nvec != nvec_in) { rtas_setup_msi_irqs() 455 nvec = nvec_in; rtas_setup_msi_irqs()
|
/linux-4.1.27/drivers/pci/ |
H A D | msi.c | 52 static int pci_msi_setup_msi_irqs(struct pci_dev *dev, int nvec, int type) pci_msi_setup_msi_irqs() argument 58 return pci_msi_domain_alloc_irqs(domain, dev, nvec, type); pci_msi_setup_msi_irqs() 60 return arch_setup_msi_irqs(dev, nvec, type); pci_msi_setup_msi_irqs() 122 int __weak arch_setup_msi_irqs(struct pci_dev *dev, int nvec, int type) arch_setup_msi_irqs() argument 131 if (type == PCI_CAP_ID_MSI && nvec > 1) arch_setup_msi_irqs() 586 static struct msi_desc *msi_setup_entry(struct pci_dev *dev, int nvec) msi_setup_entry() argument 604 entry->msi_attrib.multiple = ilog2(__roundup_pow_of_two(nvec)); msi_setup_entry() 605 entry->nvec_used = nvec; msi_setup_entry() 636 * @nvec: number of interrupts to allocate 644 static int msi_capability_init(struct pci_dev *dev, int nvec) msi_capability_init() argument 652 entry = msi_setup_entry(dev, nvec); msi_capability_init() 663 ret = pci_msi_setup_msi_irqs(dev, nvec, PCI_CAP_ID_MSI); msi_capability_init() 714 struct msix_entry *entries, int nvec) msix_setup_entries() 719 for (i = 0; i < nvec; i++) { msix_setup_entries() 764 * @nvec: number of @entries 771 struct msix_entry *entries, int nvec) msix_capability_init() 786 ret = msix_setup_entries(dev, base, entries, nvec); msix_capability_init() 790 ret = pci_msi_setup_msi_irqs(dev, nvec, PCI_CAP_ID_MSIX); msix_capability_init() 847 * @nvec: how many MSIs have been requested ? 853 static int pci_msi_supported(struct pci_dev *dev, int nvec) pci_msi_supported() argument 867 * b) the list manipulation code assumes nvec >= 1. pci_msi_supported() 869 if (nvec < 1) pci_msi_supported() 969 * @nvec: number of MSI-X irqs requested for allocation by device driver 980 int pci_enable_msix(struct pci_dev *dev, struct msix_entry *entries, int nvec) pci_enable_msix() argument 985 if (!pci_msi_supported(dev, nvec)) pci_enable_msix() 994 if (nvec > nr_entries) pci_enable_msix() 998 for (i = 0; i < nvec; i++) { pci_enable_msix() 1001 for (j = i + 1; j < nvec; j++) { pci_enable_msix() 1013 return msix_capability_init(dev, entries, nvec); pci_enable_msix() 1093 int nvec; pci_enable_msi_range() local 1111 nvec = pci_msi_vec_count(dev); pci_enable_msi_range() 1112 if (nvec < 0) pci_enable_msi_range() 1113 return nvec; pci_enable_msi_range() 1114 else if (nvec < minvec) pci_enable_msi_range() 1116 else if (nvec > maxvec) pci_enable_msi_range() 1117 nvec = maxvec; pci_enable_msi_range() 1120 rc = msi_capability_init(dev, nvec); pci_enable_msi_range() 1126 nvec = rc; pci_enable_msi_range() 1130 return nvec; pci_enable_msi_range() 1152 int nvec = maxvec; pci_enable_msix_range() local 1159 rc = pci_enable_msix(dev, entries, nvec); pci_enable_msix_range() 1165 nvec = rc; pci_enable_msix_range() 1169 return nvec; pci_enable_msix_range() 1317 * @nvec: The number of interrupts to allocate 1324 int nvec, int type) pci_msi_domain_alloc_irqs() 1326 return msi_domain_alloc_irqs(domain, &dev->dev, nvec); pci_msi_domain_alloc_irqs() 713 msix_setup_entries(struct pci_dev *dev, void __iomem *base, struct msix_entry *entries, int nvec) msix_setup_entries() argument 770 msix_capability_init(struct pci_dev *dev, struct msix_entry *entries, int nvec) msix_capability_init() argument 1323 pci_msi_domain_alloc_irqs(struct irq_domain *domain, struct pci_dev *dev, int nvec, int type) pci_msi_domain_alloc_irqs() argument
|
H A D | xen-pcifront.c | 250 int vector[], int nvec) pci_frontend_enable_msix() 259 .value = nvec, pci_frontend_enable_msix() 265 if (nvec > SH_INFO_MAX_VEC) { pci_frontend_enable_msix() 267 " Increase SH_INFO_MAX_VEC.\n", nvec); pci_frontend_enable_msix() 284 for (i = 0; i < nvec; i++) { pci_frontend_enable_msix() 249 pci_frontend_enable_msix(struct pci_dev *dev, int vector[], int nvec) pci_frontend_enable_msix() argument
|
/linux-4.1.27/arch/x86/pci/ |
H A D | xen.c | 162 static int xen_setup_msi_irqs(struct pci_dev *dev, int nvec, int type) xen_setup_msi_irqs() argument 168 if (type == PCI_CAP_ID_MSI && nvec > 1) xen_setup_msi_irqs() 171 v = kzalloc(sizeof(int) * max(1, nvec), GFP_KERNEL); xen_setup_msi_irqs() 176 ret = xen_pci_frontend_enable_msix(dev, v, nvec); xen_setup_msi_irqs() 184 (type == PCI_CAP_ID_MSI) ? nvec : 1, xen_setup_msi_irqs() 224 static int xen_hvm_setup_msi_irqs(struct pci_dev *dev, int nvec, int type) xen_hvm_setup_msi_irqs() argument 230 if (type == PCI_CAP_ID_MSI && nvec > 1) xen_hvm_setup_msi_irqs() 252 (type == PCI_CAP_ID_MSI) ? nvec : 1, xen_hvm_setup_msi_irqs() 272 static int xen_initdom_setup_msi_irqs(struct pci_dev *dev, int nvec, int type) xen_initdom_setup_msi_irqs() argument 296 if (type == PCI_CAP_ID_MSI && nvec > 1) { xen_initdom_setup_msi_irqs() 298 map_irq.entry_nr = nvec; xen_initdom_setup_msi_irqs() 320 if (type == PCI_CAP_ID_MSI && nvec > 1 && ret) { xen_initdom_setup_msi_irqs() 347 (type == PCI_CAP_ID_MSI) ? nvec : 1, xen_initdom_setup_msi_irqs()
|
/linux-4.1.27/drivers/pci/pcie/ |
H A D | portdrv_core.c | 78 int nr_entries, status, pos, i, nvec; pcie_port_enable_msix() local 109 nvec = 0; pcie_port_enable_msix() 129 i = pcie_port_msix_add_entry(msix_entries, entry, nvec); pcie_port_enable_msix() 130 if (i == nvec) pcie_port_enable_msix() 131 nvec++; pcie_port_enable_msix() 155 i = pcie_port_msix_add_entry(msix_entries, entry, nvec); pcie_port_enable_msix() 156 if (i == nvec) pcie_port_enable_msix() 157 nvec++; pcie_port_enable_msix() 163 * If nvec is equal to the allocated number of entries, we can just use pcie_port_enable_msix() 167 if (nvec == nr_entries) { pcie_port_enable_msix() 174 status = pci_enable_msix_exact(dev, msix_entries, nvec); pcie_port_enable_msix()
|
/linux-4.1.27/arch/x86/kernel/ |
H A D | x86_init.c | 122 int arch_setup_msi_irqs(struct pci_dev *dev, int nvec, int type) arch_setup_msi_irqs() argument 124 return x86_msi.setup_msi_irqs(dev, nvec, type); arch_setup_msi_irqs()
|
/linux-4.1.27/drivers/vfio/pci/ |
H A D | vfio_pci_intrs.c | 250 static int vfio_msi_enable(struct vfio_pci_device *vdev, int nvec, bool msix) vfio_msi_enable() argument 258 vdev->ctx = kzalloc(nvec * sizeof(struct vfio_pci_irq_ctx), GFP_KERNEL); vfio_msi_enable() 265 vdev->msix = kzalloc(nvec * sizeof(struct msix_entry), vfio_msi_enable() 272 for (i = 0; i < nvec; i++) vfio_msi_enable() 275 ret = pci_enable_msix_range(pdev, vdev->msix, 1, nvec); vfio_msi_enable() 276 if (ret < nvec) { vfio_msi_enable() 284 ret = pci_enable_msi_range(pdev, 1, nvec); vfio_msi_enable() 285 if (ret < nvec) { vfio_msi_enable() 293 vdev->num_ctx = nvec; vfio_msi_enable() 302 vdev->msi_qmax = fls(nvec * 2 - 1) - 1; vfio_msi_enable()
|
/linux-4.1.27/arch/powerpc/sysdev/ |
H A D | mpic_pasemi_msi.c | 86 static int pasemi_msi_setup_msi_irqs(struct pci_dev *pdev, int nvec, int type) pasemi_msi_setup_msi_irqs() argument 95 pr_debug("pasemi_msi_setup_msi_irqs, pdev %p nvec %d type %d\n", pasemi_msi_setup_msi_irqs() 96 pdev, nvec, type); pasemi_msi_setup_msi_irqs()
|
H A D | ppc4xx_msi.c | 79 static int ppc4xx_setup_msi_irqs(struct pci_dev *dev, int nvec, int type) ppc4xx_setup_msi_irqs() argument 88 __func__, nvec, type); ppc4xx_setup_msi_irqs()
|
H A D | mpic_u3msi.c | 125 static int u3msi_setup_msi_irqs(struct pci_dev *pdev, int nvec, int type) u3msi_setup_msi_irqs() argument
|
H A D | ppc4xx_hsta_msi.c | 40 static int hsta_setup_msi_irqs(struct pci_dev *dev, int nvec, int type) hsta_setup_msi_irqs() argument
|
H A D | fsl_msi.c | 183 static int fsl_setup_msi_irqs(struct pci_dev *pdev, int nvec, int type) fsl_setup_msi_irqs() argument
|
/linux-4.1.27/kernel/irq/ |
H A D | msi.c | 142 int nvec, msi_alloc_info_t *arg) msi_domain_ops_prepare() 247 * @nvec: The number of interrupts to allocate 252 int nvec) msi_domain_alloc_irqs() 262 ret = ops->msi_prepare(domain, dev, nvec, &arg); msi_domain_alloc_irqs() 141 msi_domain_ops_prepare(struct irq_domain *domain, struct device *dev, int nvec, msi_alloc_info_t *arg) msi_domain_ops_prepare() argument 251 msi_domain_alloc_irqs(struct irq_domain *domain, struct device *dev, int nvec) msi_domain_alloc_irqs() argument
|
/linux-4.1.27/include/linux/ |
H A D | msi.h | 99 int arch_setup_msi_irqs(struct pci_dev *dev, int nvec, int type); 162 struct device *dev, int nvec, 220 int nvec); 232 int nvec, int type);
|
H A D | pci.h | 1226 int pci_enable_msix(struct pci_dev *dev, struct msix_entry *entries, int nvec); 1232 static inline int pci_enable_msi_exact(struct pci_dev *dev, int nvec) pci_enable_msi_exact() argument 1234 int rc = pci_enable_msi_range(dev, nvec, nvec); pci_enable_msi_exact() 1242 struct msix_entry *entries, int nvec) pci_enable_msix_exact() 1244 int rc = pci_enable_msix_range(dev, entries, nvec, nvec); pci_enable_msix_exact() 1255 struct msix_entry *entries, int nvec) pci_enable_msix() 1264 static inline int pci_enable_msi_exact(struct pci_dev *dev, int nvec) pci_enable_msi_exact() argument 1270 struct msix_entry *entries, int nvec) pci_enable_msix_exact() 1241 pci_enable_msix_exact(struct pci_dev *dev, struct msix_entry *entries, int nvec) pci_enable_msix_exact() argument 1254 pci_enable_msix(struct pci_dev *dev, struct msix_entry *entries, int nvec) pci_enable_msix() argument 1269 pci_enable_msix_exact(struct pci_dev *dev, struct msix_entry *entries, int nvec) pci_enable_msix_exact() argument
|
/linux-4.1.27/drivers/infiniband/hw/qib/ |
H A D | qib_pcie.c | 200 int nvec = *msixcnt; qib_msix_setup() local 208 nvec = min(nvec, ret); qib_msix_setup() 213 msix_entry = kcalloc(nvec, sizeof(*msix_entry), GFP_KERNEL); qib_msix_setup() 217 for (i = 0; i < nvec; i++) qib_msix_setup() 220 ret = pci_enable_msix_range(dd->pcidev, msix_entry, 1, nvec); qib_msix_setup() 224 nvec = ret; qib_msix_setup() 226 for (i = 0; i < nvec; i++) qib_msix_setup() 230 *msixcnt = nvec; qib_msix_setup() 240 nvec, ret); qib_msix_setup()
|
/linux-4.1.27/drivers/net/ethernet/mellanox/mlx5/core/ |
H A D | main.c | 213 int nvec; mlx5_enable_msix() local 216 nvec = dev->caps.gen.num_ports * num_online_cpus() + MLX5_EQ_VEC_COMP_BASE; mlx5_enable_msix() 217 nvec = min_t(int, nvec, num_eqs); mlx5_enable_msix() 218 if (nvec <= MLX5_EQ_VEC_COMP_BASE) mlx5_enable_msix() 221 table->msix_arr = kzalloc(nvec * sizeof(*table->msix_arr), GFP_KERNEL); mlx5_enable_msix() 225 for (i = 0; i < nvec; i++) mlx5_enable_msix() 228 nvec = pci_enable_msix_range(dev->pdev, table->msix_arr, mlx5_enable_msix() 229 MLX5_EQ_VEC_COMP_BASE + 1, nvec); mlx5_enable_msix() 230 if (nvec < 0) mlx5_enable_msix() 231 return nvec; mlx5_enable_msix() 233 table->num_comp_vectors = nvec - MLX5_EQ_VEC_COMP_BASE; mlx5_enable_msix()
|
/linux-4.1.27/drivers/scsi/bfa/ |
H A D | bfad.c | 1166 for (i = 0, bfad->nvec = 0; i < MAX_MSIX_ENTRY; i++) { bfad_init_msix_entry() 1168 bfad->msix_tab[bfad->nvec].msix.entry = i; bfad_init_msix_entry() 1169 bfad->msix_tab[bfad->nvec].bfad = bfad; bfad_init_msix_entry() 1170 msix_entries[bfad->nvec].entry = i; bfad_init_msix_entry() 1171 bfad->nvec++; bfad_init_msix_entry() 1184 for (i = 0; i < bfad->nvec; i++) { bfad_install_msix_handler() 1234 msix_entries, bfad->nvec); bfad_setup_intr() 1239 bfad->pci_name, bfad->nvec, error); bfad_setup_intr() 1240 bfad->nvec = 1; bfad_setup_intr() 1261 for (i = 0; i < bfad->nvec; i++) { bfad_setup_intr() 1266 bfa_msix_init(&bfad->bfa, bfad->nvec); bfad_setup_intr() 1290 for (i = 0; i < bfad->nvec; i++) bfad_remove_intr()
|
H A D | bfad_drv.h | 214 int nvec; member in struct:bfad_s
|
/linux-4.1.27/arch/x86/include/asm/ |
H A D | pci.h | 101 int native_setup_msi_irqs(struct pci_dev *dev, int nvec, int type); early_quirks()
|
H A D | x86_init.h | 177 int (*setup_msi_irqs)(struct pci_dev *dev, int nvec, int type);
|
/linux-4.1.27/arch/x86/kernel/apic/ |
H A D | msi.c | 146 int native_setup_msi_irqs(struct pci_dev *dev, int nvec, int type) native_setup_msi_irqs() argument 153 if (type == PCI_CAP_ID_MSI && nvec > 1) native_setup_msi_irqs()
|
/linux-4.1.27/drivers/net/vmxnet3/ |
H A D | vmxnet3_drv.c | 2756 vmxnet3_acquire_msix_vectors(struct vmxnet3_adapter *adapter, int nvec) vmxnet3_acquire_msix_vectors() argument 2759 adapter->intr.msix_entries, nvec, nvec); vmxnet3_acquire_msix_vectors() 2761 if (ret == -ENOSPC && nvec > VMXNET3_LINUX_MIN_MSIX_VECT) { vmxnet3_acquire_msix_vectors() 2764 nvec, VMXNET3_LINUX_MIN_MSIX_VECT); vmxnet3_acquire_msix_vectors() 2804 int i, nvec; vmxnet3_alloc_intr_resources() local 2806 nvec = adapter->share_intr == VMXNET3_INTR_TXSHARE ? vmxnet3_alloc_intr_resources() 2808 nvec += adapter->share_intr == VMXNET3_INTR_BUDDYSHARE ? vmxnet3_alloc_intr_resources() 2810 nvec += 1; /* for link event */ vmxnet3_alloc_intr_resources() 2811 nvec = nvec > VMXNET3_LINUX_MIN_MSIX_VECT ? vmxnet3_alloc_intr_resources() 2812 nvec : VMXNET3_LINUX_MIN_MSIX_VECT; vmxnet3_alloc_intr_resources() 2814 for (i = 0; i < nvec; i++) vmxnet3_alloc_intr_resources() 2817 nvec = vmxnet3_acquire_msix_vectors(adapter, nvec); vmxnet3_alloc_intr_resources() 2818 if (nvec < 0) vmxnet3_alloc_intr_resources() 2824 if (nvec == VMXNET3_LINUX_MIN_MSIX_VECT) { vmxnet3_alloc_intr_resources() 2834 adapter->intr.num_intrs = nvec; vmxnet3_alloc_intr_resources() 2841 "Limiting #rx queues to 1, try MSI.\n", nvec); vmxnet3_alloc_intr_resources()
|
/linux-4.1.27/include/xen/ |
H A D | events.h | 109 int pirq, int nvec, const char *name, domid_t domid);
|
/linux-4.1.27/arch/s390/pci/ |
H A D | pci.c | 386 int arch_setup_msi_irqs(struct pci_dev *pdev, int nvec, int type) arch_setup_msi_irqs() argument 395 if (type == PCI_CAP_ID_MSI && nvec > 1) arch_setup_msi_irqs() 397 msi_vecs = min_t(unsigned int, nvec, zdev->max_msi); arch_setup_msi_irqs() 440 return (msi_vecs == nvec) ? 0 : msi_vecs; arch_setup_msi_irqs()
|
/linux-4.1.27/arch/mips/pci/ |
H A D | msi-octeon.c | 185 int arch_setup_msi_irqs(struct pci_dev *dev, int nvec, int type) arch_setup_msi_irqs() argument 200 if (type == PCI_CAP_ID_MSI && nvec > 1) arch_setup_msi_irqs()
|
/linux-4.1.27/drivers/xen/events/ |
H A D | events_base.c | 391 static int __must_check xen_allocate_irqs_dynamic(int nvec) xen_allocate_irqs_dynamic() argument 393 int i, irq = irq_alloc_descs(-1, 0, nvec, -1); xen_allocate_irqs_dynamic() 396 for (i = 0; i < nvec; i++) xen_allocate_irqs_dynamic() 740 int pirq, int nvec, const char *name, domid_t domid) xen_bind_pirq_msi_to_irq() 746 irq = xen_allocate_irqs_dynamic(nvec); xen_bind_pirq_msi_to_irq() 750 for (i = 0; i < nvec; i++) { xen_bind_pirq_msi_to_irq() 739 xen_bind_pirq_msi_to_irq(struct pci_dev *dev, struct msi_desc *msidesc, int pirq, int nvec, const char *name, domid_t domid) xen_bind_pirq_msi_to_irq() argument
|
/linux-4.1.27/drivers/pci/host/ |
H A D | pcie-designware.c | 211 unsigned int nvec, unsigned int pos) clear_irq_range() 215 for (i = 0; i < nvec; i++) { clear_irq_range() 224 bitmap_release_region(pp->msi_irq_in_use, pos, order_base_2(nvec)); clear_irq_range() 210 clear_irq_range(struct pcie_port *pp, unsigned int irq_base, unsigned int nvec, unsigned int pos) clear_irq_range() argument
|
/linux-4.1.27/drivers/ata/ |
H A D | ahci.c | 1341 int rc, nvec; ahci_init_interrupts() local 1346 nvec = pci_msi_vec_count(pdev); ahci_init_interrupts() 1347 if (nvec < 0) ahci_init_interrupts() 1355 if (nvec < n_ports) ahci_init_interrupts() 1358 rc = pci_enable_msi_exact(pdev, nvec); ahci_init_interrupts() 1371 if (nvec > 1) ahci_init_interrupts() 1374 return nvec; ahci_init_interrupts()
|
/linux-4.1.27/arch/powerpc/platforms/cell/ |
H A D | axon_msi.c | 256 static int axon_msi_setup_msi_irqs(struct pci_dev *dev, int nvec, int type) axon_msi_setup_msi_irqs() argument
|
/linux-4.1.27/arch/powerpc/include/asm/ |
H A D | machdep.h | 136 int nvec, int type);
|
/linux-4.1.27/fs/dlm/ |
H A D | lowcomms.c | 795 int nvec; receive_from_sock() local 828 nvec = 1; receive_from_sock() 838 nvec = 2; receive_from_sock() 842 r = ret = kernel_recvmsg(con->sock, &msg, iov, nvec, len, receive_from_sock()
|
/linux-4.1.27/drivers/irqchip/ |
H A D | irq-gic-v3-its.c | 1244 int nvec, msi_alloc_info_t *info) its_msi_prepare() 1256 dev_alias.count = nvec; its_msi_prepare() 1243 its_msi_prepare(struct irq_domain *domain, struct device *dev, int nvec, msi_alloc_info_t *info) its_msi_prepare() argument
|
/linux-4.1.27/fs/cifs/ |
H A D | cifsproto.h | 99 struct kvec *, int /* nvec to send */, 401 unsigned int *nbytes, struct kvec *iov, const int nvec);
|
/linux-4.1.27/arch/powerpc/platforms/powernv/ |
H A D | pci.c | 48 static int pnv_setup_msi_irqs(struct pci_dev *pdev, int nvec, int type) pnv_setup_msi_irqs() argument
|
/linux-4.1.27/arch/mips/kernel/ |
H A D | traps.c | 2262 int nvec = cpu_has_veic ? 64 : 8; trap_init() local 2263 for (i = 0; i < nvec; i++) trap_init()
|