You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
103 lines
2.7 KiB
103 lines
2.7 KiB
/* Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 and
|
|
* only version 2 as published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*/
|
|
#ifndef _SDE_AD4_H_
|
|
#define _SDE_AD4_H_
|
|
|
|
#include <drm/drm_mode.h>
|
|
#include <drm/drm_property.h>
|
|
#include "sde_hw_dspp.h"
|
|
|
|
/**
|
|
* enum ad4_modes - ad4 modes supported by driver
|
|
*/
|
|
enum ad4_modes {
|
|
AD4_OFF,
|
|
AD4_AUTO_STRENGTH,
|
|
AD4_CALIBRATION,
|
|
AD4_MANUAL,
|
|
};
|
|
|
|
/**
|
|
* struct drm_prop_enum_list - drm structure for creating enum property and
|
|
* enumerating values
|
|
*/
|
|
static const struct drm_prop_enum_list ad4_modes[] = {
|
|
{AD4_OFF, "off"},
|
|
{AD4_AUTO_STRENGTH, "auto_strength_mode"},
|
|
{AD4_CALIBRATION, "calibration_mode"},
|
|
{AD4_MANUAL, "manual_mode"},
|
|
};
|
|
|
|
/**
|
|
* enum ad_property - properties that can be set for ad
|
|
*/
|
|
enum ad_property {
|
|
AD_MODE,
|
|
AD_INIT,
|
|
AD_CFG,
|
|
AD_INPUT,
|
|
AD_SUSPEND,
|
|
AD_ASSERTIVE,
|
|
AD_BACKLIGHT,
|
|
AD_STRENGTH,
|
|
AD_ROI,
|
|
AD_IPC_SUSPEND,
|
|
AD_IPC_RESUME,
|
|
AD_IPC_RESET,
|
|
AD_PROPMAX,
|
|
};
|
|
|
|
/**
|
|
* enum ad_intr_resp_property - ad4 interrupt response enum
|
|
*/
|
|
enum ad_intr_resp_property {
|
|
AD4_IN_OUT_BACKLIGHT,
|
|
AD4_RESPMAX,
|
|
};
|
|
|
|
/**
|
|
* struct sde_ad_hw_cfg - structure for setting the ad properties
|
|
* @prop: enum of ad property
|
|
* @hw_cfg: payload for the prop being set.
|
|
*/
|
|
struct sde_ad_hw_cfg {
|
|
enum ad_property prop;
|
|
struct sde_hw_cp_cfg *hw_cfg;
|
|
};
|
|
|
|
/**
|
|
* sde_validate_dspp_ad4() - api to validate if ad property is allowed for
|
|
* the display with allocated dspp/mixers.
|
|
* @dspp: pointer to dspp info structure.
|
|
* @prop: pointer to u32 pointing to ad property
|
|
*/
|
|
int sde_validate_dspp_ad4(struct sde_hw_dspp *dspp, u32 *prop);
|
|
|
|
/**
|
|
* sde_setup_dspp_ad4 - api to apply the ad property, sde_validate_dspp_ad4
|
|
* should be called before call this function
|
|
* @dspp: pointer to dspp info structure.
|
|
* @cfg: pointer to struct sde_ad_hw_cfg
|
|
*/
|
|
void sde_setup_dspp_ad4(struct sde_hw_dspp *dspp, void *cfg);
|
|
|
|
/**
|
|
* sde_read_intr_resp_ad4 - api to get ad4 interrupt status for event
|
|
* @dspp: pointer to dspp object
|
|
* @event: event for which response is needed
|
|
* @resp_in: read ad4 input value of event requested
|
|
* @resp_out: read ad4 output value of event requested
|
|
*/
|
|
void sde_read_intr_resp_ad4(struct sde_hw_dspp *dspp, u32 event,
|
|
u32 *resp_in, u32 *resp_out);
|
|
|
|
#endif /* _SDE_AD4_H_ */
|
|
|