diff options
Diffstat (limited to 'drivers/misc/pci_endpoint_test.c')
| -rw-r--r-- | drivers/misc/pci_endpoint_test.c | 18 | 
1 files changed, 18 insertions, 0 deletions
diff --git a/drivers/misc/pci_endpoint_test.c b/drivers/misc/pci_endpoint_test.c index 29582fe57151..7b015f2a1c6f 100644 --- a/drivers/misc/pci_endpoint_test.c +++ b/drivers/misc/pci_endpoint_test.c @@ -75,6 +75,11 @@  #define PCI_ENDPOINT_TEST_IRQ_TYPE		0x24  #define PCI_ENDPOINT_TEST_IRQ_NUMBER		0x28 +#define PCI_DEVICE_ID_TI_AM654			0xb00c + +#define is_am654_pci_dev(pdev)		\ +		((pdev)->device == PCI_DEVICE_ID_TI_AM654) +  static DEFINE_IDA(pci_endpoint_test_ida);  #define to_endpoint_test(priv) container_of((priv), struct pci_endpoint_test, \ @@ -588,6 +593,7 @@ static long pci_endpoint_test_ioctl(struct file *file, unsigned int cmd,  	int ret = -EINVAL;  	enum pci_barno bar;  	struct pci_endpoint_test *test = to_endpoint_test(file->private_data); +	struct pci_dev *pdev = test->pdev;  	mutex_lock(&test->mutex);  	switch (cmd) { @@ -595,6 +601,8 @@ static long pci_endpoint_test_ioctl(struct file *file, unsigned int cmd,  		bar = arg;  		if (bar < 0 || bar > 5)  			goto ret; +		if (is_am654_pci_dev(pdev) && bar == BAR_0) +			goto ret;  		ret = pci_endpoint_test_bar(test, bar);  		break;  	case PCITEST_LEGACY_IRQ: @@ -662,6 +670,7 @@ static int pci_endpoint_test_probe(struct pci_dev *pdev,  	data = (struct pci_endpoint_test_data *)ent->driver_data;  	if (data) {  		test_reg_bar = data->test_reg_bar; +		test->test_reg_bar = test_reg_bar;  		test->alignment = data->alignment;  		irq_type = data->irq_type;  	} @@ -785,11 +794,20 @@ static void pci_endpoint_test_remove(struct pci_dev *pdev)  	pci_disable_device(pdev);  } +static const struct pci_endpoint_test_data am654_data = { +	.test_reg_bar = BAR_2, +	.alignment = SZ_64K, +	.irq_type = IRQ_TYPE_MSI, +}; +  static const struct pci_device_id pci_endpoint_test_tbl[] = {  	{ PCI_DEVICE(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_DRA74x) },  	{ PCI_DEVICE(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_DRA72x) },  	{ PCI_DEVICE(PCI_VENDOR_ID_FREESCALE, 0x81c0) },  	{ PCI_DEVICE(PCI_VENDOR_ID_SYNOPSYS, 0xedda) }, +	{ PCI_DEVICE(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_AM654), +	  .driver_data = (kernel_ulong_t)&am654_data +	},  	{ }  };  MODULE_DEVICE_TABLE(pci, pci_endpoint_test_tbl);  |