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

dp_power.h (2824B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2/*
      3 * Copyright (c) 2012-2020, The Linux Foundation. All rights reserved.
      4 */
      5
      6#ifndef _DP_POWER_H_
      7#define _DP_POWER_H_
      8
      9#include "dp_parser.h"
     10
     11/**
     12 * sruct dp_power - DisplayPort's power related data
     13 *
     14 * @init: initializes the regulators/core clocks/GPIOs/pinctrl
     15 * @deinit: turns off the regulators/core clocks/GPIOs/pinctrl
     16 * @clk_enable: enable/disable the DP clocks
     17 * @set_pixel_clk_parent: set the parent of DP pixel clock
     18 */
     19struct dp_power {
     20	bool core_clks_on;
     21	bool link_clks_on;
     22	bool stream_clks_on;
     23};
     24
     25/**
     26 * dp_power_init() - enable power supplies for display controller
     27 *
     28 * @power: instance of power module
     29 * @flip: bool for flipping gpio direction
     30 * return: 0 if success or error if failure.
     31 *
     32 * This API will turn on the regulators and configures gpio's
     33 * aux/hpd.
     34 */
     35int dp_power_init(struct dp_power *power, bool flip);
     36
     37/**
     38 * dp_power_deinit() - turn off regulators and gpios.
     39 *
     40 * @power: instance of power module
     41 * return: 0 for success
     42 *
     43 * This API turns off power and regulators.
     44 */
     45int dp_power_deinit(struct dp_power *power);
     46
     47/**
     48 * dp_power_clk_status() - display controller clocks status
     49 *
     50 * @power: instance of power module
     51 * @pm_type: type of pm, core/ctrl/phy
     52 * return: status of power clocks
     53 *
     54 * This API return status of DP clocks
     55 */
     56
     57int dp_power_clk_status(struct dp_power *dp_power, enum dp_pm_type pm_type);
     58
     59/**
     60 * dp_power_clk_enable() - enable display controller clocks
     61 *
     62 * @power: instance of power module
     63 * @pm_type: type of pm, core/ctrl/phy
     64 * @enable: enables or disables
     65 * return: pointer to allocated power module data
     66 *
     67 * This API will call setrate and enable for DP clocks
     68 */
     69
     70int dp_power_clk_enable(struct dp_power *power, enum dp_pm_type pm_type,
     71				bool enable);
     72
     73/**
     74 * dp_power_client_init() - initialize clock and regulator modules
     75 *
     76 * @power: instance of power module
     77 * return: 0 for success, error for failure.
     78 *
     79 * This API will configure the DisplayPort's clocks and regulator
     80 * modules.
     81 */
     82int dp_power_client_init(struct dp_power *power);
     83
     84/**
     85 * dp_power_clinet_deinit() - de-initialize clock and regulator modules
     86 *
     87 * @power: instance of power module
     88 * return: 0 for success, error for failure.
     89 *
     90 * This API will de-initialize the DisplayPort's clocks and regulator
     91 * modules.
     92 */
     93void dp_power_client_deinit(struct dp_power *power);
     94
     95/**
     96 * dp_power_get() - configure and get the DisplayPort power module data
     97 *
     98 * @parser: instance of parser module
     99 * return: pointer to allocated power module data
    100 *
    101 * This API will configure the DisplayPort's power module and provides
    102 * methods to be called by the client to configure the power related
    103 * modules.
    104 */
    105struct dp_power *dp_power_get(struct device *dev, struct dp_parser *parser);
    106
    107#endif /* _DP_POWER_H_ */