#ifndef __KEY_DRV_IR_H__
#define __KEY_DRV_IR_H__

#define IR_PORTA(x) (0x00 + x)
#define IR_PORTB(x) (0x10 + x)
#define IR_PORTC(x) (0x20 + x)
#define IR_PORTD(x) (0x30 + x)
#define IR_USBDP    (0x3d)
#define IR_USBDM 	(0x3e)

// #define IR_IO       IR_PORTA(9)

/*ir key define*/
#define IR_00                   0
#define IR_01                   1
#define IR_02                   2
#define IR_03                   3
#define IR_04                   4
#define IR_05                   5
#define IR_06                   6
#define IR_07                   7
#define IR_08                   8
#define IR_09                   9
#define IR_10                   10
#define IR_11                   11
#define IR_12                   12
#define IR_13                   13
#define IR_14                   14
#define IR_15                   15
#define IR_16                   16
#define IR_17                   17
#define IR_18                   18
#define IR_19                   19
#define IR_20                   20
#define IR_21                   21
#define IR_22                   22

//////////////////////////////////
#define NKEY_00               0xff
#define NKEY_01               0xff
#define NKEY_02               0xff
#define NKEY_03               0xff
#define NKEY_04               0xff
#define NKEY_05               0xff
#define NKEY_06               0xff
#define NKEY_07               0xff
#define NKEY_08               0xff
#define NKEY_09               0xff
#define NKEY_0A               0xff
#define NKEY_0B               0xff
#define NKEY_0C               0xff
#define NKEY_0D               0xff
#define NKEY_0E               0xff
#define NKEY_0F               0xff
#define NKEY_10               0xff
#define NKEY_11               0xff
#define NKEY_12               0xff
#define NKEY_13               0xff
#define NKEY_14               0xff
#define NKEY_15               0xff
#define NKEY_16               0xff
#define NKEY_17               0xff
#define NKEY_18               0xff
#define NKEY_19               0xff
#define NKEY_1A               0xff
#define NKEY_1B               0xff
#define NKEY_1C               0xff
#define NKEY_1D               0xff
#define NKEY_1E               0xff
#define NKEY_1F               0xff
#define NKEY_20               0xff
#define NKEY_21               0xff
#define NKEY_22               0xff
#define NKEY_23               0xff
#define NKEY_24               0xff
#define NKEY_25               0xff
#define NKEY_26               0xff
#define NKEY_27               0xff
#define NKEY_28               0xff
#define NKEY_29               0xff
#define NKEY_2A               0xff
#define NKEY_2B               0xff
#define NKEY_2C               0xff
#define NKEY_2D               0xff
#define NKEY_2E               0xff
#define NKEY_2F               0xff
#define NKEY_30               0xff
#define NKEY_31               0xff
#define NKEY_32               0xff
#define NKEY_33               0xff
#define NKEY_34               0xff
#define NKEY_35               0xff
#define NKEY_36               0xff
#define NKEY_37               0xff
#define NKEY_38               0xff
#define NKEY_39               0xff
#define NKEY_3A               0xff
#define NKEY_3B               0xff
#define NKEY_3C               0xff
#define NKEY_3D               0xff
#define NKEY_3E               0xff
#define NKEY_3F               0xff
#define NKEY_40               0xff
#define NKEY_41               0xff
#define NKEY_42               0xff
#define NKEY_43               0xff
#define NKEY_44               0xff
#define NKEY_45               0xff
#define NKEY_46               0xff
#define NKEY_47               0xff
#define NKEY_48               0xff
#define NKEY_49               0xff
#define NKEY_4A               0xff
#define NKEY_4B               0xff
#define NKEY_4C               0xff
#define NKEY_4D               0xff
#define NKEY_4E               0xff
#define NKEY_4F               0xff
#define NKEY_50               0xff
#define NKEY_51               0xff
#define NKEY_52               0xff
#define NKEY_53               0xff
#define NKEY_54               0xff
#define NKEY_55               0xff
#define NKEY_56               0xff
#define NKEY_57               0xff
#define NKEY_58               0xff
#define NKEY_59               0xff
#define NKEY_5A               0xff
#define NKEY_5B               0xff
#define NKEY_5C               0xff
#define NKEY_5D               0xff
#define NKEY_5E               0xff
#define NKEY_5F               0xff
#define NKEY_60               0xff
#define NKEY_61               0xff
#define NKEY_62               0xff
#define NKEY_63               0xff
#define NKEY_64               0xff
#define NKEY_65               0xff
#define NKEY_66               0xff
#define NKEY_67               0xff
#define NKEY_68               0xff
#define NKEY_69               0xff
#define NKEY_6A               0xff
#define NKEY_6B               0xff
#define NKEY_6C               0xff
#define NKEY_6D               0xff
#define NKEY_6E               0xff
#define NKEY_6F               0xff
#define NKEY_70               0xff
#define NKEY_71               0xff
#define NKEY_72               0xff
#define NKEY_73               0xff
#define NKEY_74               0xff
#define NKEY_75               0xff
#define NKEY_76               0xff
#define NKEY_77               0xff
#define NKEY_78               0xff
#define NKEY_79               0xff
#define NKEY_7A               0xff
#define NKEY_7B               0xff
#define NKEY_7C               0xff
#define NKEY_7D               0xff
#define NKEY_7E               0xff
#define NKEY_7F               0xff
#define NKEY_80               0xff
#define NKEY_81               0xff
#define NKEY_82               0xff
#define NKEY_83               0xff
#define NKEY_84               0xff
#define NKEY_85               0xff
#define NKEY_86               0xff
#define NKEY_87               0xff
#define NKEY_88               0xff
#define NKEY_89               0xff
#define NKEY_8A               0xff
#define NKEY_8B               0xff
#define NKEY_8C               0xff
#define NKEY_8D               0xff
#define NKEY_8E               0xff
#define NKEY_8F               0xff
#define NKEY_90               0xff
#define NKEY_91               0xff
#define NKEY_92               0xff
#define NKEY_93               0xff
#define NKEY_94               0xff
#define NKEY_95               0xff


typedef struct _IR_CODE {
    u16 wData;          //<键值
    u16 wUserCode;      //<用户码
    u16 timer_pad;
    u8  bState;         //<接收状态
    u8  boverflow;      //<红外信号超时
} IR_CODE;

enum timer_sel {
    TIMER0 = 0x4,
    TIMER1 = 0x5,
    TIMER2 = 0x6,
    TIMER3 = 0x7,
};

struct irflt_platform_data {
    u8 irflt_io;
    u8 timer;
};

#define IRFLT_PLATFORM_DATA_BEGIN(data) \
		static const struct irflt_platform_data data = {

#define IRFLT_PLATFORM_DATA_END() \
};


extern const struct device_operations irflt_dev_ops;

void set_ir_clk(void);
void ir_input_io_sel(u8 port);
void ir_output_timer_sel();
void ir_timeout_set(void);
void irflt_config();
void log_irflt_info();
u8 get_irflt_value(void);

#endif

