__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
/*
 * Copyright (C) 2013, NVIDIA Corporation.  All rights reserved.
 *
 * Permission is hereby granted, free of charge, to any person obtaining a
 * copy of this software and associated documentation files (the "Software"),
 * to deal in the Software without restriction, including without limitation
 * the rights to use, copy, modify, merge, publish, distribute, sub license,
 * and/or sell copies of the Software, and to permit persons to whom the
 * Software is furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice (including the
 * next paragraph) shall be included in all copies or substantial portions
 * of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 * DEALINGS IN THE SOFTWARE.
 */

#ifndef __DRM_PANEL_H__
#define __DRM_PANEL_H__

#include <linux/err.h>
#include <linux/errno.h>
#include <linux/list.h>
#include <linux/mutex.h>

struct backlight_device;
struct dentry;
struct device_node;
struct drm_connector;
struct drm_device;
struct drm_panel_follower;
struct drm_panel;
struct display_timing;

enum drm_panel_orientation;

/**
 * struct drm_panel_funcs - perform operations on a given panel
 *
 * The .prepare() function is typically called before the display controller
 * starts to transmit video data. Panel drivers can use this to turn the panel
 * on and wait for it to become ready. If additional configuration is required
 * (via a control bus such as I2C, SPI or DSI for example) this is a good time
 * to do that.
 *
 * After the display controller has started transmitting video data, it's safe
 * to call the .enable() function. This will typically enable the backlight to
 * make the image on screen visible. Some panels require a certain amount of
 * time or frames before the image is displayed. This function is responsible
 * for taking this into account before enabling the backlight to avoid visual
 * glitches.
 *
 * Before stopping video transmission from the display controller it can be
 * necessary to turn off the panel to avoid visual glitches. This is done in
 * the .disable() function. Analogously to .enable() this typically involves
 * turning off the backlight and waiting for some time to make sure no image
 * is visible on the panel. It is then safe for the display controller to
 * cease transmission of video data.
 *
 * To save power when no video data is transmitted, a driver can power down
 * the panel. This is the job of the .unprepare() function.
 *
 * Backlight can be handled automatically if configured using
 * drm_panel_of_backlight() or drm_panel_dp_aux_backlight(). Then the driver
 * does not need to implement the functionality to enable/disable backlight.
 */
struct drm_panel_funcs {
	/**
	 * @prepare:
	 *
	 * Turn on panel and perform set up.
	 *
	 * This function is optional.
	 */
	int (*prepare)(struct drm_panel *panel);

	/**
	 * @enable:
	 *
	 * Enable panel (turn on back light, etc.).
	 *
	 * This function is optional.
	 */
	int (*enable)(struct drm_panel *panel);

	/**
	 * @disable:
	 *
	 * Disable panel (turn off back light, etc.).
	 *
	 * This function is optional.
	 */
	int (*disable)(struct drm_panel *panel);

	/**
	 * @unprepare:
	 *
	 * Turn off panel.
	 *
	 * This function is optional.
	 */
	int (*unprepare)(struct drm_panel *panel);

	/**
	 * @get_modes:
	 *
	 * Add modes to the connector that the panel is attached to
	 * and returns the number of modes added.
	 *
	 * This function is mandatory.
	 */
	int (*get_modes)(struct drm_panel *panel,
			 struct drm_connector *connector);

	/**
	 * @get_orientation:
	 *
	 * Return the panel orientation set by device tree or EDID.
	 *
	 * This function is optional.
	 */
	enum drm_panel_orientation (*get_orientation)(struct drm_panel *panel);

	/**
	 * @get_timings:
	 *
	 * Copy display timings into the provided array and return
	 * the number of display timings available.
	 *
	 * This function is optional.
	 */
	int (*get_timings)(struct drm_panel *panel, unsigned int num_timings,
			   struct display_timing *timings);

	/**
	 * @debugfs_init:
	 *
	 * Allows panels to create panels-specific debugfs files.
	 */
	void (*debugfs_init)(struct drm_panel *panel, struct dentry *root);
};

struct drm_panel_follower_funcs {
	/**
	 * @panel_prepared:
	 *
	 * Called after the panel has been powered on.
	 */
	int (*panel_prepared)(struct drm_panel_follower *follower);

	/**
	 * @panel_unpreparing:
	 *
	 * Called before the panel is powered off.
	 */
	int (*panel_unpreparing)(struct drm_panel_follower *follower);
};

struct drm_panel_follower {
	/**
	 * @funcs:
	 *
	 * Dependent device callbacks; should be initted by the caller.
	 */
	const struct drm_panel_follower_funcs *funcs;

	/**
	 * @list
	 *
	 * Used for linking into panel's list; set by drm_panel_add_follower().
	 */
	struct list_head list;

	/**
	 * @panel
	 *
	 * The panel we're dependent on; set by drm_panel_add_follower().
	 */
	struct drm_panel *panel;
};

/**
 * struct drm_panel - DRM panel object
 */
struct drm_panel {
	/**
	 * @dev:
	 *
	 * Parent device of the panel.
	 */
	struct device *dev;

	/**
	 * @backlight:
	 *
	 * Backlight device, used to turn on backlight after the call
	 * to enable(), and to turn off backlight before the call to
	 * disable().
	 * backlight is set by drm_panel_of_backlight() or
	 * drm_panel_dp_aux_backlight() and drivers shall not assign it.
	 */
	struct backlight_device *backlight;

	/**
	 * @funcs:
	 *
	 * Operations that can be performed on the panel.
	 */
	const struct drm_panel_funcs *funcs;

	/**
	 * @connector_type:
	 *
	 * Type of the panel as a DRM_MODE_CONNECTOR_* value. This is used to
	 * initialise the drm_connector corresponding to the panel with the
	 * correct connector type.
	 */
	int connector_type;

	/**
	 * @list:
	 *
	 * Panel entry in registry.
	 */
	struct list_head list;

	/**
	 * @followers:
	 *
	 * A list of struct drm_panel_follower dependent on this panel.
	 */
	struct list_head followers;

	/**
	 * @follower_lock:
	 *
	 * Lock for followers list.
	 */
	struct mutex follower_lock;

	/**
	 * @prepare_prev_first:
	 *
	 * The previous controller should be prepared first, before the prepare
	 * for the panel is called. This is largely required for DSI panels
	 * where the DSI host controller should be initialised to LP-11 before
	 * the panel is powered up.
	 */
	bool prepare_prev_first;

	/**
	 * @prepared:
	 *
	 * If true then the panel has been prepared.
	 */
	bool prepared;

	/**
	 * @enabled:
	 *
	 * If true then the panel has been enabled.
	 */
	bool enabled;
};

void drm_panel_init(struct drm_panel *panel, struct device *dev,
		    const struct drm_panel_funcs *funcs,
		    int connector_type);

void drm_panel_add(struct drm_panel *panel);
void drm_panel_remove(struct drm_panel *panel);

int drm_panel_prepare(struct drm_panel *panel);
int drm_panel_unprepare(struct drm_panel *panel);

int drm_panel_enable(struct drm_panel *panel);
int drm_panel_disable(struct drm_panel *panel);

int drm_panel_get_modes(struct drm_panel *panel, struct drm_connector *connector);

#if defined(CONFIG_OF) && defined(CONFIG_DRM_PANEL)
struct drm_panel *of_drm_find_panel(const struct device_node *np);
int of_drm_get_panel_orientation(const struct device_node *np,
				 enum drm_panel_orientation *orientation);
#else
static inline struct drm_panel *of_drm_find_panel(const struct device_node *np)
{
	return ERR_PTR(-ENODEV);
}

static inline int of_drm_get_panel_orientation(const struct device_node *np,
					       enum drm_panel_orientation *orientation)
{
	return -ENODEV;
}
#endif

#if defined(CONFIG_DRM_PANEL)
bool drm_is_panel_follower(struct device *dev);
int drm_panel_add_follower(struct device *follower_dev,
			   struct drm_panel_follower *follower);
void drm_panel_remove_follower(struct drm_panel_follower *follower);
int devm_drm_panel_add_follower(struct device *follower_dev,
				struct drm_panel_follower *follower);
#else
static inline bool drm_is_panel_follower(struct device *dev)
{
	return false;
}

static inline int drm_panel_add_follower(struct device *follower_dev,
					 struct drm_panel_follower *follower)
{
	return -ENODEV;
}

static inline void drm_panel_remove_follower(struct drm_panel_follower *follower) { }
static inline int devm_drm_panel_add_follower(struct device *follower_dev,
					      struct drm_panel_follower *follower)
{
	return -ENODEV;
}
#endif

#if IS_ENABLED(CONFIG_DRM_PANEL) && (IS_BUILTIN(CONFIG_BACKLIGHT_CLASS_DEVICE) || \
	(IS_MODULE(CONFIG_DRM) && IS_MODULE(CONFIG_BACKLIGHT_CLASS_DEVICE)))
int drm_panel_of_backlight(struct drm_panel *panel);
#else
static inline int drm_panel_of_backlight(struct drm_panel *panel)
{
	return 0;
}
#endif

#endif

Filemanager

Name Type Size Permission Actions
bridge Folder 0755
clients Folder 0755
display Folder 0755
i2c Folder 0755
intel Folder 0755
ttm Folder 0755
amd_asic_type.h File 2.35 KB 0644
drm_accel.h File 2.29 KB 0644
drm_atomic.h File 43.1 KB 0644
drm_atomic_helper.h File 10.78 KB 0644
drm_atomic_state_helper.h File 4.42 KB 0644
drm_atomic_uapi.h File 2.06 KB 0644
drm_audio_component.h File 3.84 KB 0644
drm_auth.h File 4.18 KB 0644
drm_blend.h File 2.35 KB 0644
drm_bridge.h File 38.15 KB 0644
drm_bridge_connector.h File 405 B 0644
drm_buddy.h File 4.57 KB 0644
drm_cache.h File 3.3 KB 0644
drm_client.h File 6.3 KB 0644
drm_client_event.h File 897 B 0644
drm_color_mgmt.h File 3.91 KB 0644
drm_connector.h File 74.11 KB 0644
drm_crtc.h File 44.52 KB 0644
drm_crtc_helper.h File 2.51 KB 0644
drm_damage_helper.h File 3.33 KB 0644
drm_debugfs.h File 5.68 KB 0644
drm_debugfs_crc.h File 2.76 KB 0644
drm_device.h File 7.64 KB 0644
drm_drv.h File 17.32 KB 0644
drm_edid.h File 15.5 KB 0644
drm_eld.h File 4.76 KB 0644
drm_encoder.h File 11.07 KB 0644
drm_encoder_slave.h File 7.39 KB 0644
drm_exec.h File 4.3 KB 0644
drm_fb_dma_helper.h File 718 B 0644
drm_fb_helper.h File 11.68 KB 0644
drm_fbdev_dma.h File 461 B 0644
drm_fbdev_shmem.h File 475 B 0644
drm_fbdev_ttm.h File 488 B 0644
drm_file.h File 14.65 KB 0644
drm_fixed.h File 5.26 KB 0644
drm_flip_work.h File 2.63 KB 0644
drm_format_helper.h File 5.34 KB 0644
drm_fourcc.h File 9.99 KB 0644
drm_framebuffer.h File 10.04 KB 0644
drm_gem.h File 18.97 KB 0644
drm_gem_atomic_helper.h File 5.52 KB 0644
drm_gem_dma_helper.h File 9.29 KB 0644
drm_gem_framebuffer_helper.h File 1.93 KB 0644
drm_gem_shmem_helper.h File 8.21 KB 0644
drm_gem_ttm_helper.h File 822 B 0644
drm_gem_vram_helper.h File 5.73 KB 0644
drm_gpuvm.h File 33.53 KB 0644
drm_ioctl.h File 5.82 KB 0644
drm_kunit_helpers.h File 4.21 KB 0644
drm_lease.h File 1.01 KB 0644
drm_managed.h File 3.99 KB 0644
drm_mipi_dbi.h File 7.08 KB 0644
drm_mipi_dsi.h File 17.52 KB 0644
drm_mm.h File 17.46 KB 0644
drm_mode_config.h File 32.7 KB 0644
drm_mode_object.h File 5.46 KB 0644
drm_modes.h File 19.99 KB 0644
drm_modeset_helper.h File 1.77 KB 0644
drm_modeset_helper_vtables.h File 61.02 KB 0644
drm_modeset_lock.h File 7.07 KB 0644
drm_module.h File 3.72 KB 0644
drm_of.h File 5.5 KB 0644
drm_panel.h File 8.89 KB 0644
drm_panic.h File 5.33 KB 0644
drm_pciids.h File 61.04 KB 0644
drm_plane.h File 31.3 KB 0644
drm_plane_helper.h File 2.22 KB 0644
drm_prime.h File 4.21 KB 0644
drm_print.h File 22.7 KB 0644
drm_privacy_screen_consumer.h File 1.94 KB 0644
drm_privacy_screen_driver.h File 2.99 KB 0644
drm_privacy_screen_machine.h File 1.25 KB 0644
drm_probe_helper.h File 1.68 KB 0644
drm_property.h File 11.99 KB 0644
drm_rect.h File 7.52 KB 0644
drm_self_refresh_helper.h File 594 B 0644
drm_simple_kms_helper.h File 9.52 KB 0644
drm_suballoc.h File 2.74 KB 0644
drm_syncobj.h File 3.95 KB 0644
drm_sysfs.h File 512 B 0644
drm_util.h File 2.58 KB 0644
drm_utils.h File 592 B 0644
drm_vblank.h File 10.18 KB 0644
drm_vblank_work.h File 1.99 KB 0644
drm_vma_manager.h File 8.23 KB 0644
drm_writeback.h File 4.45 KB 0644
gpu_scheduler.h File 21.21 KB 0644
gud.h File 11.65 KB 0644
spsc_queue.h File 3.08 KB 0644
task_barrier.h File 2.95 KB 0644
Filemanager