Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v4.4 86 lines 2.1 kB view raw
1/* 2 * Intel(R) Trace Hub pci driver 3 * 4 * Copyright (C) 2014-2015 Intel Corporation. 5 * 6 * This program is free software; you can redistribute it and/or modify it 7 * under the terms and conditions of the GNU General Public License, 8 * version 2, as published by the Free Software Foundation. 9 * 10 * This program is distributed in the hope it will be useful, but WITHOUT 11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 12 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 13 * more details. 14 */ 15 16#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt 17 18#include <linux/types.h> 19#include <linux/module.h> 20#include <linux/device.h> 21#include <linux/sysfs.h> 22#include <linux/pci.h> 23 24#include "intel_th.h" 25 26#define DRIVER_NAME "intel_th_pci" 27 28#define BAR_MASK (BIT(TH_MMIO_CONFIG) | BIT(TH_MMIO_SW)) 29 30static int intel_th_pci_probe(struct pci_dev *pdev, 31 const struct pci_device_id *id) 32{ 33 struct intel_th *th; 34 int err; 35 36 err = pcim_enable_device(pdev); 37 if (err) 38 return err; 39 40 err = pcim_iomap_regions_request_all(pdev, BAR_MASK, DRIVER_NAME); 41 if (err) 42 return err; 43 44 th = intel_th_alloc(&pdev->dev, pdev->resource, 45 DEVICE_COUNT_RESOURCE, pdev->irq); 46 if (IS_ERR(th)) 47 return PTR_ERR(th); 48 49 pci_set_drvdata(pdev, th); 50 51 return 0; 52} 53 54static void intel_th_pci_remove(struct pci_dev *pdev) 55{ 56 struct intel_th *th = pci_get_drvdata(pdev); 57 58 intel_th_free(th); 59} 60 61static const struct pci_device_id intel_th_pci_id_table[] = { 62 { 63 PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x9d26), 64 .driver_data = (kernel_ulong_t)0, 65 }, 66 { 67 PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0xa126), 68 .driver_data = (kernel_ulong_t)0, 69 }, 70 { 0 }, 71}; 72 73MODULE_DEVICE_TABLE(pci, intel_th_pci_id_table); 74 75static struct pci_driver intel_th_pci_driver = { 76 .name = DRIVER_NAME, 77 .id_table = intel_th_pci_id_table, 78 .probe = intel_th_pci_probe, 79 .remove = intel_th_pci_remove, 80}; 81 82module_pci_driver(intel_th_pci_driver); 83 84MODULE_LICENSE("GPL v2"); 85MODULE_DESCRIPTION("Intel(R) Trace Hub PCI controller driver"); 86MODULE_AUTHOR("Alexander Shishkin <alexander.shishkin@intel.com>");