cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

media-dev-allocator.h (2261B)


      1/* SPDX-License-Identifier: GPL-2.0+ */
      2/*
      3 * media-dev-allocator.h - Media Controller Device Allocator API
      4 *
      5 * Copyright (c) 2019 Shuah Khan <shuah@kernel.org>
      6 *
      7 * Credits: Suggested by Laurent Pinchart <laurent.pinchart@ideasonboard.com>
      8 */
      9
     10/*
     11 * This file adds a global ref-counted Media Controller Device Instance API.
     12 * A system wide global media device list is managed and each media device
     13 * includes a kref count. The last put on the media device releases the media
     14 * device instance.
     15 */
     16
     17#ifndef _MEDIA_DEV_ALLOCATOR_H
     18#define _MEDIA_DEV_ALLOCATOR_H
     19
     20struct usb_device;
     21
     22#if defined(CONFIG_MEDIA_CONTROLLER) && IS_ENABLED(CONFIG_USB)
     23/**
     24 * media_device_usb_allocate() - Allocate and return struct &media device
     25 *
     26 * @udev:		struct &usb_device pointer
     27 * @module_name:	should be filled with %KBUILD_MODNAME
     28 * @owner:		struct module pointer %THIS_MODULE for the driver.
     29 *			%THIS_MODULE is null for a built-in driver.
     30 *			It is safe even when %THIS_MODULE is null.
     31 *
     32 * This interface should be called to allocate a Media Device when multiple
     33 * drivers share usb_device and the media device. This interface allocates
     34 * &media_device structure and calls media_device_usb_init() to initialize
     35 * it.
     36 *
     37 */
     38struct media_device *media_device_usb_allocate(struct usb_device *udev,
     39					       const char *module_name,
     40					       struct module *owner);
     41/**
     42 * media_device_delete() - Release media device. Calls kref_put().
     43 *
     44 * @mdev:		struct &media_device pointer
     45 * @module_name:	should be filled with %KBUILD_MODNAME
     46 * @owner:		struct module pointer %THIS_MODULE for the driver.
     47 *			%THIS_MODULE is null for a built-in driver.
     48 *			It is safe even when %THIS_MODULE is null.
     49 *
     50 * This interface should be called to put Media Device Instance kref.
     51 */
     52void media_device_delete(struct media_device *mdev, const char *module_name,
     53			 struct module *owner);
     54#else
     55static inline struct media_device *media_device_usb_allocate(
     56			struct usb_device *udev, const char *module_name,
     57			struct module *owner)
     58			{ return NULL; }
     59static inline void media_device_delete(
     60			struct media_device *mdev, const char *module_name,
     61			struct module *owner) { }
     62#endif /* CONFIG_MEDIA_CONTROLLER && CONFIG_USB */
     63#endif /* _MEDIA_DEV_ALLOCATOR_H */