/alps/pcitool

To get this branch, use:
bzr branch http://suren.me/webbzr/alps/pcitool

« back to all changes in this revision

Viewing changes to driver/ioctl.c

  • Committer: Suren A. Chilingaryan
  • Date: 2015-11-19 02:19:51 UTC
  • Revision ID: csa@suren.me-20151119021951-00bae7ma1vqy561h
Support setting payload size

Show diffs side-by-side

added added

removed removed

Lines of Context:
433
433
        return 0;
434
434
}
435
435
 
436
 
 
437
436
/**
438
437
 *
439
438
 * Gets current device and driver configuration
448
447
 
449
448
        info = (pcilib_device_state_t) {
450
449
            .iommu = iommu_present(privdata->pdev->dev.bus),
 
450
            .mps = pcidriver_pcie_get_mps(privdata->pdev),
451
451
            .dma_mask = privdata->pdev->dma_mask
452
452
        };
453
453
 
468
468
{
469
469
        int err;
470
470
 
471
 
        if ((arg < 24) && (arg > 63))
 
471
        if ((arg < 24) || (arg > 64))
472
472
                return -EINVAL;
473
473
 
474
474
        err = pci_set_dma_mask(privdata->pdev, DMA_BIT_MASK(arg));
477
477
            return err;
478
478
        }
479
479
        
480
 
        printk(KERN_ERR "pci_set_dma_mask(%lu) successeded\n", arg);
481
 
 
 
480
        return 0;
 
481
}
 
482
 
 
483
/**
 
484
 *
 
485
 * Sets Max Payload Size.
 
486
 *
 
487
 * @param arg Not a pointer, but payload size in bits
 
488
 *
 
489
 */
 
490
static int ioctl_set_mps(pcidriver_privdata_t *privdata, unsigned long arg)
 
491
{
 
492
        int err;
 
493
 
 
494
        if ((arg != 128) && (arg != 256) && (arg != 512))
 
495
                return -EINVAL;
 
496
 
 
497
        err = pcidriver_pcie_set_mps(privdata->pdev, arg);
 
498
        if (err < 0) {
 
499
            printk(KERN_ERR "pcie_set_mps(%lu) failed\n", arg);
 
500
            return err;
 
501
        }
 
502
        
482
503
        return 0;
483
504
}
484
505
 
551
572
                case PCIDRIVER_IOC_DMA_MASK:
552
573
                        return ioctl_set_dma_mask(privdata, arg);
553
574
 
 
575
                case PCIDRIVER_IOC_MPS:
 
576
                        return ioctl_set_mps(privdata, arg);
 
577
 
554
578
                default:
555
579
                        return -EINVAL;
556
580
        }