123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- /* SPDX-License-Identifier: GPL-2.0-only */
- /*
- * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
- * Copyright (c) 2016-2021, The Linux Foundation. All rights reserved.
- */
- #ifndef __SDE_VBIF_H__
- #define __SDE_VBIF_H__
- #include "sde_kms.h"
- struct sde_vbif_set_ot_params {
- u32 xin_id;
- u32 num;
- u32 width;
- u32 height;
- u32 frame_rate;
- bool rd;
- bool is_wfd;
- u32 vbif_idx;
- u32 clk_ctrl;
- };
- struct sde_vbif_set_memtype_params {
- u32 xin_id;
- u32 vbif_idx;
- u32 clk_ctrl;
- bool is_cacheable;
- };
- /**
- * struct sde_vbif_set_xin_halt_params - xin halt parameters
- * @vbif_idx: vbif identifier
- * @xin_id: client interface identifier
- * @clk_ctrl: clock control identifier of the xin
- * @forced_on: whether or not previous call to xin halt forced the clocks on,
- * only applicable to xin halt disable calls
- * @enable: whether to enable/disable xin halts
- */
- struct sde_vbif_set_xin_halt_params {
- u32 vbif_idx;
- u32 xin_id;
- u32 clk_ctrl;
- bool forced_on;
- bool enable;
- };
- /**
- * struct sde_vbif_get_xin_status_params - xin halt parameters
- * @vbif_idx: vbif identifier
- * @xin_id: client interface identifier
- * @clk_ctrl: clock control identifier of the xin
- */
- struct sde_vbif_get_xin_status_params {
- u32 vbif_idx;
- u32 xin_id;
- u32 clk_ctrl;
- };
- /**
- * struct sde_vbif_set_qos_params - QoS remapper parameter
- * @vbif_idx: vbif identifier
- * @xin_id: client interface identifier
- * @clk_ctrl: clock control identifier of the xin
- * @num: pipe identifier (debug only)
- * @client_type: client type enumerated by sde_vbif_client_type
- */
- struct sde_vbif_set_qos_params {
- u32 vbif_idx;
- u32 xin_id;
- u32 clk_ctrl;
- u32 num;
- enum sde_vbif_client_type client_type;
- };
- /**
- * sde_vbif_clk_register - register vbif clk client
- * @sde_kms: SDE handler
- * @client: pointer to VBIF clk client info
- * Returns: 0 on success, error code otherwise
- */
- int sde_vbif_clk_register(struct sde_kms *sde_kms, struct sde_vbif_clk_client *client);
- /**
- * sde_vbif_set_ot_limit - set OT limit for vbif client
- * @sde_kms: SDE handler
- * @params: Pointer to OT configuration parameters
- */
- void sde_vbif_set_ot_limit(struct sde_kms *sde_kms,
- struct sde_vbif_set_ot_params *params);
- /**
- * sde_vbif_set_xin_halt - halt one of the xin ports
- * This function isn't thread safe.
- * @sde_kms: SDE handler
- * @params: Pointer to halt configuration parameters
- * Returns: Whether or not VBIF clocks were forced on
- */
- bool sde_vbif_set_xin_halt(struct sde_kms *sde_kms,
- struct sde_vbif_set_xin_halt_params *params);
- /**
- * sde_vbif_get_xin_status - halt one of the xin ports
- * This function isn't thread safe.
- * @sde_kms: SDE handler
- * @params: Pointer to xin status parameters
- * Returns: true if xin client is idle, false otherwise
- */
- bool sde_vbif_get_xin_status(struct sde_kms *sde_kms,
- struct sde_vbif_get_xin_status_params *params);
- /**
- * sde_vbif_set_qos_remap - set QoS priority level remap
- * @sde_kms: SDE handler
- * @params: Pointer to QoS configuration parameters
- */
- void sde_vbif_set_qos_remap(struct sde_kms *sde_kms,
- struct sde_vbif_set_qos_params *params);
- /**
- * sde_vbif_clear_errors - clear any vbif errors
- * @sde_kms: SDE handler
- */
- void sde_vbif_clear_errors(struct sde_kms *sde_kms);
- /**
- * sde_vbif_init_memtypes - initialize xin memory types for vbif
- * @sde_kms: SDE handler
- */
- void sde_vbif_init_memtypes(struct sde_kms *sde_kms);
- /**
- * sde_vbif_axi_halt_request - halt all axi transcations on vbif
- * @sde_kms: SDE handler
- */
- void sde_vbif_axi_halt_request(struct sde_kms *sde_kms);
- /**
- * sde_vbif_halt_xin_mask - halts/unhalts all the xin clients present in
- * the mask.
- * @sde_kms: SDE handler
- * @xin_id_mask: Mask of all the xin-ids to be halted/unhalted
- * halt: boolen to indicate halt/unhalt
- */
- int sde_vbif_halt_xin_mask(struct sde_kms *sde_kms, u32 xin_id_mask, bool halt);
- #if IS_ENABLED(CONFIG_DEBUG_FS)
- int sde_debugfs_vbif_init(struct sde_kms *sde_kms, struct dentry *debugfs_root);
- void sde_debugfs_vbif_destroy(struct sde_kms *sde_kms);
- #else
- static inline int sde_debugfs_vbif_init(struct sde_kms *sde_kms,
- struct dentry *debugfs_root)
- {
- return 0;
- }
- static inline void sde_debugfs_vbif_destroy(struct sde_kms *sde_kms)
- {
- }
- #endif /* CONFIG_DEBUG_FS */
- #endif /* __SDE_VBIF_H__ */
|