1 /* exynos_drm_iommu.h 2 * 3 * Copyright (c) 2012 Samsung Electronics Co., Ltd. 4 * Authoer: Inki Dae <inki.dae@samsung.com> 5 * 6 * This program is free software; you can redistribute it and/or modify it 7 * under the terms of the GNU General Public License as published by the 8 * Free Software Foundation; either version 2 of the License, or (at your 9 * option) any later version. 10 */ 11 12 #ifndef _EXYNOS_DRM_IOMMU_H_ 13 #define _EXYNOS_DRM_IOMMU_H_ 14 15 #define EXYNOS_DEV_ADDR_START 0x20000000 16 #define EXYNOS_DEV_ADDR_SIZE 0x40000000 17 18 #ifdef CONFIG_DRM_EXYNOS_IOMMU 19 20 int drm_create_iommu_mapping(struct drm_device *drm_dev); 21 22 void drm_release_iommu_mapping(struct drm_device *drm_dev); 23 24 int drm_iommu_attach_device(struct drm_device *drm_dev, 25 struct device *subdrv_dev); 26 27 void drm_iommu_detach_device(struct drm_device *dev_dev, 28 struct device *subdrv_dev); 29 is_drm_iommu_supported(struct drm_device * drm_dev)30static inline bool is_drm_iommu_supported(struct drm_device *drm_dev) 31 { 32 #ifdef CONFIG_ARM_DMA_USE_IOMMU 33 struct device *dev = drm_dev->dev; 34 35 return dev->archdata.mapping ? true : false; 36 #else 37 return false; 38 #endif 39 } 40 41 #else 42 43 struct dma_iommu_mapping; drm_create_iommu_mapping(struct drm_device * drm_dev)44static inline int drm_create_iommu_mapping(struct drm_device *drm_dev) 45 { 46 return 0; 47 } 48 drm_release_iommu_mapping(struct drm_device * drm_dev)49static inline void drm_release_iommu_mapping(struct drm_device *drm_dev) 50 { 51 } 52 drm_iommu_attach_device(struct drm_device * drm_dev,struct device * subdrv_dev)53static inline int drm_iommu_attach_device(struct drm_device *drm_dev, 54 struct device *subdrv_dev) 55 { 56 return 0; 57 } 58 drm_iommu_detach_device(struct drm_device * drm_dev,struct device * subdrv_dev)59static inline void drm_iommu_detach_device(struct drm_device *drm_dev, 60 struct device *subdrv_dev) 61 { 62 } 63 is_drm_iommu_supported(struct drm_device * drm_dev)64static inline bool is_drm_iommu_supported(struct drm_device *drm_dev) 65 { 66 return false; 67 } 68 69 #endif 70 #endif 71