S: Maintained
F: drivers/net/wireless/wl3501*
-- - -WM97XX TOUCHSCREEN DRIVERS
-- - -M: Mark Brown <broonie@kernel.org>
-- - -M: Liam Girdwood <lrg@slimlogic.co.uk>
-- - -L: linux-input@vger.kernel.org
- T: git git://opensource.wolfsonmicro.com/linux-2.6-touch
- W: http://opensource.wolfsonmicro.com/node/7
- - -W: https://github.com/CirrusLogic/linux-drivers/wiki
-- - -S: Supported
-- - -F: drivers/input/touchscreen/*wm97*
-- - -F: include/linux/wm97xx.h
-- - -
WOLFSON MICROELECTRONICS DRIVERS
L: patches@opensource.wolfsonmicro.com
- T: git git://opensource.wolfsonmicro.com/linux-2.6-asoc
- T: git git://opensource.wolfsonmicro.com/linux-2.6-audioplus
- W: http://opensource.wolfsonmicro.com/content/linux-drivers-wolfson-devices
+ T: git https://github.com/CirrusLogic/linux-drivers.git
+ W: https://github.com/CirrusLogic/linux-drivers/wiki
S: Supported
F: Documentation/hwmon/wm83??
F: arch/arm/mach-s3c64xx/mach-crag6410*
static void do_detach(struct iommu_dev_data *dev_data)
{
struct amd_iommu *iommu;
+ +++++++ u16 alias;
+++ ++
++++ ++ /*
++++ ++ * First check if the device is still attached. It might already
++++ ++ * be detached from its domain because the generic
++++ ++ * iommu_detach_group code detached it and we try again here in
++++ ++ * our alias handling.
++++ ++ */
++++ ++ if (!dev_data->domain)
++++ ++ return;
+
iommu = amd_iommu_rlookup_table[dev_data->devid];
+ +++++++ alias = amd_iommu_alias_table[dev_data->devid];
/* decrease reference counters */
dev_data->domain->dev_iommu[iommu->index] -= 1;
}
/* allocates the memory where the IOMMU will log its events to */
- -------static u8 * __init alloc_ppr_log(struct amd_iommu *iommu)
+ +++++++static int __init alloc_ppr_log(struct amd_iommu *iommu)
{
- ------- iommu->ppr_log = (u8 *)__get_free_pages(GFP_KERNEL | __GFP_ZERO,
- ------- get_order(PPR_LOG_SIZE));
--- --
--- -- if (iommu->ppr_log == NULL)
--- -- return NULL;
+ +++++++ iommu->ppr_log = (void *)__get_free_pages(GFP_KERNEL | __GFP_ZERO,
+ +++++++ get_order(PPR_LOG_SIZE));
- - - if (iommu->ppr_log == NULL)
- - - return NULL;
- - -
- ------- return iommu->ppr_log;
+ +++++++ return iommu->ppr_log ? 0 : -ENOMEM;
}
static void iommu_enable_ppr_log(struct amd_iommu *iommu)
#define IOMMU_PTE_IR (1ULL << 61)
#define IOMMU_PTE_IW (1ULL << 62)
- ------ #define DTE_FLAG_IOTLB (0x01UL << 32)
- ------ #define DTE_FLAG_GV (0x01ULL << 55)
+ +++++++#define DTE_FLAG_IOTLB (1ULL << 32)
+ +++++++#define DTE_FLAG_GV (1ULL << 55)
++++++++ #define DTE_FLAG_MASK (0x3ffULL << 32)
-#define DTE_FLAG_IOTLB (0x01UL << 32)
-#define DTE_FLAG_GV (0x01ULL << 55)
#define DTE_GLX_SHIFT (56)
#define DTE_GLX_MASK (3)
static int arm_smmu_add_device(struct device *dev)
{
------- - if (dev_is_pci(dev))
------- - return arm_smmu_add_pci_device(to_pci_dev(dev));
+++++++ + struct iommu_group *group;
++++ ++ +
- return arm_smmu_add_platform_device(dev);
+++++++ + group = iommu_group_get_for_dev(dev);
+++++++ + if (IS_ERR(group))
+++++++ + return PTR_ERR(group);
+
---- -- - return arm_smmu_add_platform_device(dev);
+++++++ + return 0;
}
static void arm_smmu_remove_device(struct device *dev)