cregit-Linux how code gets into the kernel

Release 4.11 drivers/gpu/drm/exynos/exynos_drm_iommu.c

/* exynos_drm_iommu.c
 *
 * Copyright (c) 2012 Samsung Electronics Co., Ltd.
 * Author: Inki Dae <inki.dae@samsung.com>
 *
 * This program is free software; you can redistribute  it and/or modify it
 * under  the terms of  the GNU General  Public License as published by the
 * Free Software Foundation;  either version 2 of the  License, or (at your
 * option) any later version.
 */

#include <drm/drmP.h>
#include <drm/exynos_drm.h>

#include <linux/dma-mapping.h>
#include <linux/iommu.h>

#include "exynos_drm_drv.h"
#include "exynos_drm_iommu.h"


static inline int configure_dma_max_seg_size(struct device *dev) { if (!dev->dma_parms) dev->dma_parms = kzalloc(sizeof(*dev->dma_parms), GFP_KERNEL); if (!dev->dma_parms) return -ENOMEM; dma_set_max_seg_size(dev, DMA_BIT_MASK(32)); return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Marek Szyprowski60100.00%1100.00%
Total60100.00%1100.00%


static inline void clear_dma_max_seg_size(struct device *dev) { kfree(dev->dma_parms); dev->dma_parms = NULL; }

Contributors

PersonTokensPropCommitsCommitProp
Marek Szyprowski25100.00%1100.00%
Total25100.00%1100.00%

/* * drm_create_iommu_mapping - create a mapping structure * * @drm_dev: DRM device */
int drm_create_iommu_mapping(struct drm_device *drm_dev) { struct exynos_drm_private *priv = drm_dev->dev_private; return __exynos_iommu_create_mapping(priv, EXYNOS_DEV_ADDR_START, EXYNOS_DEV_ADDR_SIZE); }

Contributors

PersonTokensPropCommitsCommitProp
Inki Dae2482.76%133.33%
Marek Szyprowski517.24%266.67%
Total29100.00%3100.00%

/* * drm_release_iommu_mapping - release iommu mapping structure * * @drm_dev: DRM device */
void drm_release_iommu_mapping(struct drm_device *drm_dev) { struct exynos_drm_private *priv = drm_dev->dev_private; __exynos_iommu_release_mapping(priv); }

Contributors

PersonTokensPropCommitsCommitProp
Inki Dae1979.17%133.33%
Marek Szyprowski520.83%266.67%
Total24100.00%3100.00%

/* * drm_iommu_attach_device- attach device to iommu mapping * * @drm_dev: DRM device * @subdrv_dev: device to be attach * * This function should be called by sub drivers to attach it to iommu * mapping. */
int drm_iommu_attach_device(struct drm_device *drm_dev, struct device *subdrv_dev) { struct exynos_drm_private *priv = drm_dev->dev_private; int ret; if (get_dma_ops(priv->dma_dev) != get_dma_ops(subdrv_dev)) { DRM_ERROR("Device %s lacks support for IOMMU\n", dev_name(subdrv_dev)); return -EINVAL; } ret = configure_dma_max_seg_size(subdrv_dev); if (ret) return ret; ret = __exynos_iommu_attach(priv, subdrv_dev); if (ret) clear_dma_max_seg_size(subdrv_dev); return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Marek Szyprowski4447.83%466.67%
Inki Dae4346.74%116.67%
Sachin Kamat55.43%116.67%
Total92100.00%6100.00%

/* * drm_iommu_detach_device -detach device address space mapping from device * * @drm_dev: DRM device * @subdrv_dev: device to be detached * * This function should be called by sub drivers to detach it from iommu * mapping */
void drm_iommu_detach_device(struct drm_device *drm_dev, struct device *subdrv_dev) { struct exynos_drm_private *priv = drm_dev->dev_private; __exynos_iommu_detach(priv, subdrv_dev); clear_dma_max_seg_size(subdrv_dev); }

Contributors

PersonTokensPropCommitsCommitProp
Inki Dae2569.44%125.00%
Marek Szyprowski1130.56%375.00%
Total36100.00%4100.00%


Overall Contributors

PersonTokensPropCommitsCommitProp
Marek Szyprowski15152.25%555.56%
Inki Dae13245.67%222.22%
Sachin Kamat51.73%111.11%
Andrzej Hajda10.35%111.11%
Total289100.00%9100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.