/* * Driver for the Samsung HCR-13SS22 VF-Display connected to the Conexant * CX2450x (Nevis) SoC via Coolstream VFD-Controller - public definititons. * * Copyright (C) 2008 Coolstream International Limited */ #ifndef __CS_VFD__ #define __CS_VFD__ typedef enum { /* for all frontpanels with VFD or OLED */ VFD_ICON_NONE = 0x00000000, VFD_ICON_BAR8 = 0x00000004, VFD_ICON_BAR7 = 0x00000008, VFD_ICON_BAR6 = 0x00000010, VFD_ICON_BAR5 = 0x00000020, VFD_ICON_BAR4 = 0x00000040, VFD_ICON_BAR3 = 0x00000080, VFD_ICON_BAR2 = 0x00000100, VFD_ICON_BAR1 = 0x00000200, VFD_ICON_FRAME = 0x00000400, VFD_ICON_MUTE = 0x00001000, VFD_ICON_DOLBY = 0x00002000, VFD_ICON_TV = 0x00020000, VFD_ICON_RADIO = 0x00040000, VFD_ICON_HD = 0x01000001, VFD_ICON_1080P = 0x02000001, VFD_ICON_1080I = 0x03000001, VFD_ICON_720P = 0x04000001, VFD_ICON_480P = 0x05000001, VFD_ICON_480I = 0x06000001, VFD_ICON_MP3 = 0x08000001, VFD_ICON_PLAY = 0x09000001, VFD_ICON_PAUSE = 0x0A000001, VFD_ICON_CAM1 = 0x0B000001, /* only for frontpanels with VFD */ VFD_ICON_HDD = 0x00000800, VFD_ICON_POWER = 0x00004000, VFD_ICON_TIMESHIFT = 0x00008000, VFD_ICON_SIGNAL = 0x00010000, VFD_ICON_USB = 0x07000001, VFD_ICON_COL1 = 0x09000002, VFD_ICON_COL2 = 0x0B000002, VFD_ICON_CAM2 = 0x0C000001, /* only for frontpanels with OLED */ VFD_ICON_SD = 0x01000002, VFD_ICON_576P = 0x02000002, VFD_ICON_576I = 0x03000002, VFD_ICON_MP2 = 0x07000002, VFD_ICON_DTS = 0x08000002 } vfd_icon; typedef enum { VFD_FLAG_NONE = 0x00, VFD_FLAG_SCROLL_ON = 0x01, /* switch scrolling on */ VFD_FLAG_SCROLL_LTR = 0x02, /* scroll from left to right instead of default right to left direction (i.e. for arabic text) */ VFD_FLAG_SCROLL_SIO = 0x04, /* start/stop scrolling with empty screen (scroll in/out) */ VFD_FLAG_SCROLL_DELAY = 0x08, /* delayed scroll start */ VFD_FLAG_ALIGN_LEFT = 0x10, /* align the text in display from the left (default) */ VFD_FLAG_ALIGN_RIGHT = 0x20, /* align the text in display from the right (arabic) */ VFD_FLAG_UPDATE_SCROLL_POS = 0x40, /* update the current position for scrolling */ } vfd_flag; typedef struct { unsigned char brightness; unsigned char flags; unsigned char current_hour; unsigned char current_minute; unsigned char timer_minutes_hi; unsigned char timer_minutes_lo; } standby_data_t; typedef enum { VFD_LED_1_ON = 0x81, VFD_LED_2_ON = 0x82, VFD_LED_3_ON = 0x83, VFD_LED_1_OFF = 0x01, VFD_LED_2_OFF = 0x02, VFD_LED_3_OFF = 0x03, } vfd_led_ctrl_t; typedef struct { unsigned char source; unsigned char time_minutes_hi; unsigned char time_minutes_lo; } wakeup_data_t; typedef enum { WAKEUP_SOURCE_TIMER = 0x01, WAKEUP_SOURCE_BUTTON = 0x02, WAKEUP_SOURCE_REMOTE = 0x04, WAKEUP_SOURCE_PWLOST = 0x7F, WAKEUP_SOURCE_POWER = 0xFF } wakeup_source; typedef struct { unsigned short addr; unsigned short cmd; } standbycmd_data_t; #define IOC_VFD_SET_BRIGHT _IOW(0xDE, 1, unsigned char) /* set the display brighness in 16 steps between 0 to 15 */ #define IOC_VFD_CLEAR_ALL _IOW(0xDE, 2, unsigned int) /* clear the entire display (both text and icons) */ #define IOC_VFD_SET_TEXT _IOW(0xDE, 3, char*) /* set a text to be displayed on the display. If arg == NULL, the text is cleared */ #define IOC_VFD_SET_ICON _IOW(0xDE, 4, vfd_icon) /* switch the given icon on */ #define IOC_VFD_CLEAR_ICON _IOW(0xDE, 5, vfd_icon) /* switch the given icon off */ #define IOC_VFD_SET_OUTPUT _IOW(0xDE, 6, unsigned char) /* switch the given output on (supported by the controller, but not used in the hardware) */ #define IOC_VFD_CLEAR_OUTPUT _IOW(0xDE, 7, unsigned char) /* switch the given output off (supported by the controller, but not used in the hardware) */ #define IOC_VFD_STANDBY _IOW(0xDE, 8, standby_data_t *)/* switch the vfd/psu in standby (NEO and above only) */ #define IOC_VFD_LED_CTRL _IOW(0xDE, 9, unsigned char) /* control the Frontpanles LED's (NEO and above only) */ #define IOC_VFD_GET_WAKEUP _IOW(0xDE, 10,wakeup_data_t *) /* get wakeup data (NEO and above only) */ #define IOC_VFD_STANDBY_CMD _IOW(0xDE, 11,standbycmd_data_t *) /* get wakeup data (NEO and above only) */ #endif /* __CS_VFD__ */