📄 cy7c67200_300_lcd.h
字号:
#ifndef __CY7C67200_300_LCDH_#define __CY7C67200_300_LCDH_/******************************************************************* * * FILE: cy7c67200_300_lcd.h * * DESCRIPTION: CY7C67200_300 Low-level interface header file * * AUTHOR: ARY * * HISTORY: * Created 7/3/2002 ARY * * Copyright (c) Cypress Semiconductor 2002 * *******************************************************************//** include file(s) **/#include "lcp_cmd.h"#include "lcp_data.h"#include "67300.h"#include "cy7c67200_300_common.h"/** definitions **//* Endpoint definition(s) */#define MAX_NUM_ENDPOINTS 0x8/** OTG Command defines **/#define LCD_OFFER_HNP 0x00#define LCD_INITIATE_SRP 0x01/* Reserved for future use - 0x02 to 0x0F *//** HCD Command defines **/#define LCD_DISABLE_OTG_VBUS 0x10#define LCD_ENABLE_OTG_VBUS 0x11#define LCD_START_SOF 0x12#define LCD_STOP_SOF 0x13#define LCD_CHANGE_TO_PERIPHERAL_ROLE 0x14/* Reserved for future use - 0x15 to 0x1F *//** PCD Command defines **/#define LCD_CHANGE_TO_HOST_ROLE 0x20#define LCD_REMOTE_WAKEUP 0x21/* Reserved for future use - 0x22 to 0x2F *//** Shared Command defines */#define LCD_DATALINE_RESISTOR_TERMINATION 0x30/* Reserved for future use - 0x31 to 0x3F *//** Dataline Termination Resistor Defines **/#define DATALINE_TERMINATION_OFF 0x0#define DPLUS_PULLUP 0x1#define DMINUS_PULLUP 0x2#define DPLUS_PULLDOWN 0x4#define DMINUS_PULLDOWN 0x8/** Download start address **/#define DOWNLOAD_START_ADDRESS 0x04D4/** Structures **/struct list_head { struct list_head *next, *prev;};typedef void (*lcd_callback_t)(unsigned short response, unsigned short value, int opt_arg, cy_priv_t * cy_priv_data);typedef struct lcd_lcp_entry_struct{ struct list_head list; unsigned short command; unsigned short arg[15]; unsigned short response; unsigned short value; char * buf; int len; lcd_callback_t funcptr; int opt_arg; cy_priv_t * cy_priv_data;} lcd_lcp_entry_t;typedef struct lcd_priv_data_struct{ struct list_head lcd_lcp_list; CRITICAL_SECTION lcd_lock; unsigned short sie1_cb_addresses[MAX_NUM_ENDPOINTS]; unsigned short sie2_cb_addresses[MAX_NUM_ENDPOINTS];} lcd_priv_data_t;typedef struct lcd_int_data_struct{ unsigned short int_num; unsigned short reg[14];} lcd_int_data_t;/** Prototypes **/extern DWORD bCharge;unsigned short lcd_get_cb_address(unsigned short port_num, int endpoint, cy_priv_t * cy_private_data);DWORD lcd_hw_init(cy_priv_t *cy_private_data);int lcd_init(cy_priv_t * cy_private_data);int lcd_download(char * download_data, int download_length, lcd_callback_t funcptr, int opt_arg, cy_priv_t * cy_private_data);void lcd_deinit(cy_priv_t * cy_private_data); int lcd_complete_lcp_entry(cy_priv_t * cy_private_data);int lcd_command(int command, int command_arg, unsigned short port_number, lcd_callback_t funcptr, int opt_arg, cy_priv_t * cy_private_data);int lcd_send_data(unsigned short chip_addr, unsigned short port_number, unsigned short endpoint, int byte_length, char * data, lcd_callback_t funcptr, int opt_arg, cy_priv_t * cy_private_data);int lcd_recv_data(unsigned short chip_addr, unsigned short port_number, unsigned short endpoint, int byte_length, char * data, lcd_callback_t funcptr, int opt_arg, cy_priv_t * cy_private_data);int lcd_send_tdlist(unsigned short chip_addr, int port_number, int byte_length, char * data, cy_priv_t * cy_private_data);int lcd_get_tdstatus(unsigned short chip_addr, int byte_length, char * data, cy_priv_t * cy_private_data);int lcd_read_memory(unsigned short chip_addr, int byte_length, char * data, cy_priv_t * cy_private_data);int lcd_write_memory(unsigned short chip_addr, int byte_length, char * data, cy_priv_t * cy_private_data);int lcd_read_xmemory(unsigned short xmem_addr, unsigned short byte_length, char * data, lcd_callback_t funcptr, int opt_arg, cy_priv_t * cy_private_data);int lcd_write_xmemory(unsigned short xmem_addr, unsigned short byte_length, char * data, lcd_callback_t funcptr, int opt_arg, cy_priv_t * cy_private_data);int lcd_lcp_write_reg( unsigned short reg_addr, unsigned short reg_value, unsigned short flag, cy_priv_t * cy_private_data);int lcd_read_reg(unsigned short reg_addr, unsigned short *reg_value, cy_priv_t * cy_private_data);int lcd_write_reg(unsigned short reg_addr, unsigned short reg_value, cy_priv_t * cy_private_data);int lcd_inplace_and_reg(unsigned short reg_addr, unsigned short reg_value, cy_priv_t * cy_private_data);int lcd_inplace_or_reg(unsigned short reg_addr, unsigned short reg_value, cy_priv_t * cy_private_data); int lcd_exec_interrupt(lcd_int_data_t *int_data, lcd_callback_t funcptr, int opt_arg, cy_priv_t * cy_private_data);int lcd_download_code(unsigned short chip_addr, int byte_length, char * data, lcd_callback_t funcptr, int opt_arg, cy_priv_t * cy_private_data);void lcd_hpi_write_word(unsigned short chip_addr, unsigned short value, cy_priv_t * cy_private_data);void lcd_hpi_write_word1(unsigned short chip_addr, unsigned short value, cy_priv_t * cy_private_data);unsigned short lcd_hpi_read_word(unsigned short chip_addr, cy_priv_t * cy_private_data);unsigned short lcd_hpi_read_word1(unsigned short chip_addr, cy_priv_t * cy_private_data);void lcd_hpi_write_words(unsigned short chip_addr, unsigned short * data, int num_words, cy_priv_t * cy_private_data);void lcd_hpi_read_words(unsigned short chip_addr, unsigned short * data, int num_words, cy_priv_t * cy_private_data);void lcd_hpi_write_mbx(unsigned short value, cy_priv_t * cy_private_data);unsigned short lcd_hpi_read_mbx(cy_priv_t * cy_private_data);unsigned short lcd_hpi_read_status_reg(cy_priv_t * cy_private_data);void lcd_hpi_write_status_reg(unsigned short value, cy_priv_t * cy_private_data);void lcp_handle_mailbox(cy_priv_t * cy_private_data);#define LIST_HEAD_INIT(name) { &(name), &(name) }#define LIST_HEAD(name) \ struct list_head name = LIST_HEAD_INIT(name)#define INIT_LIST_HEAD(ptr) do { \ (ptr)->next = (ptr); (ptr)->prev = (ptr); \} while (0)static __inline void __list_add(struct list_head * new_entry, struct list_head * prev, struct list_head * next){ next->prev = new_entry; new_entry->next = next; new_entry->prev = prev; prev->next = new_entry;}static __inline void list_add_tail(struct list_head *new_entry, struct list_head *head){ __list_add(new_entry, head->prev, head);}static __inline void __list_del(struct list_head * prev, struct list_head * next){ next->prev = prev; prev->next = next;}static __inline void list_del(struct list_head *entry){ __list_del(entry->prev, entry->next);}static __inline int list_empty(struct list_head *head){ return head->next == head;}#define list_entry(ptr, type, member) \ ((type *)((char *)(ptr)-(unsigned long)(&((type *)0)->member))) // otg register operationunsigned long uhc_read(ULONG offset, ULONG uhc_base);void uhc_write(ULONG val, ULONG offset,ULONG uhc_base);void uhc_set(ULONG val, ULONG offset,ULONG uhc_base);void uhc_clear(ULONG val, ULONG offset, ULONG uhc_base); #endif /* __CY7C67200_300_LCDH_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -