blob: adffaf0ed35bfaab5abb695ddfeb39966c6cd840 [file] [log] [blame]
/*
* include/linux/amlogic/media/vout/lcd/lcd_notify.h
*
* Copyright (C) 2017 Amlogic, Inc. 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 as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* 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 _INC_LCD_NOTIFY_H_
#define _INC_LCD_NOTIFY_H_
#include <linux/notifier.h>
#define LCD_PRIORITY_INIT_CONFIG 12
#define LCD_PRIORITY_INIT_VOUT 11
#define LCD_PRIORITY_SCREEN_BLACK 7
#define LCD_PRIORITY_POWER_BL_OFF 6
#define LCD_PRIORITY_POWER_IF_OFF 5
#define LCD_PRIORITY_POWER_ENCL_OFF 4
#define LCD_PRIORITY_POWER_ENCL_ON 3
#define LCD_PRIORITY_POWER_IF_ON 2
#define LCD_PRIORITY_POWER_BL_ON 1
#define LCD_PRIORITY_SCREEN_RESTORE 0
/* orignal event */
#define LCD_EVENT_SCREEN_BLACK (1 << 0)
#define LCD_EVENT_BL_OFF (1 << 1)
#define LCD_EVENT_IF_OFF (1 << 2)
#define LCD_EVENT_ENCL_OFF (1 << 3)
#define LCD_EVENT_ENCL_ON (1 << 4)
#define LCD_EVENT_IF_ON (1 << 5)
#define LCD_EVENT_BL_ON (1 << 6)
#define LCD_EVENT_SCREEN_RESTORE (1 << 7)
/* combined event */
#define LCD_EVENT_POWER_ON (LCD_EVENT_BL_ON | LCD_EVENT_IF_ON | \
LCD_EVENT_ENCL_ON | LCD_EVENT_SCREEN_RESTORE)
#define LCD_EVENT_IF_POWER_ON (LCD_EVENT_IF_ON | LCD_EVENT_BL_ON | \
LCD_EVENT_SCREEN_RESTORE)
#define LCD_EVENT_POWER_OFF (LCD_EVENT_SCREEN_BLACK | \
LCD_EVENT_BL_OFF | LCD_EVENT_IF_OFF | \
LCD_EVENT_ENCL_OFF)
#define LCD_EVENT_IF_POWER_OFF (LCD_EVENT_SCREEN_BLACK | \
LCD_EVENT_BL_OFF | LCD_EVENT_IF_OFF)
#define LCD_EVENT_PREPARE (LCD_EVENT_ENCL_ON)
#define LCD_EVENT_ENABLE (LCD_EVENT_IF_ON | LCD_EVENT_BL_ON | \
LCD_EVENT_SCREEN_RESTORE)
#define LCD_EVENT_DISABLE (LCD_EVENT_SCREEN_BLACK | \
LCD_EVENT_BL_OFF | LCD_EVENT_IF_OFF)
#define LCD_EVENT_UNPREPARE (LCD_EVENT_ENCL_OFF)
/* lcd backlight index select */
#define LCD_EVENT_BACKLIGHT_SEL (1 << 8)
/* lcd backlight pwm_vs vfreq change occurred */
#define LCD_EVENT_BACKLIGHT_UPDATE (1 << 9)
#define LCD_EVENT_GAMMA_UPDATE (1 << 10)
#define LCD_EVENT_EXTERN_SEL (1 << 11)
/* lcd frame rate change occurred */
#define LCD_EVENT_FRAME_RATE_ADJUST (1 << 12)
/* lcd config change occurred */
#define LCD_EVENT_CONFIG_UPDATE (1 << 13)
/* lcd bist pattern test occurred */
#define LCD_EVENT_TEST_PATTERN (1 << 14)
#define LCD_VLOCK_PARAM_NUM 5
#define LCD_VLOCK_PARAM_BIT_UPDATE (1 << 4)
#define LCD_VLOCK_PARAM_BIT_VALID (1 << 0)
#define LCD_EVENT_VLOCK_PARAM (1 << 16)
extern int aml_lcd_notifier_register(struct notifier_block *nb);
extern int aml_lcd_notifier_unregister(struct notifier_block *nb);
extern int aml_lcd_notifier_call_chain(unsigned long event, void *v);
#endif /* _INC_LCD_NOTIFY_H_ */