/* 8 bytes of samples, divided in 2 packets*/ #define ENE_FW_SAMPLE_BUFFER 0xF8F0 /* sample buffer */ #define ENE_FW_SAMPLE_SPACE 0x80 /* sample is space */ #define ENE_FW_PACKET_SIZE 4
/* first firmware flag register */ #define ENE_FW1 0xF8F8 /* flagr */ #define ENE_FW1_ENABLE 0x01 /* enable fw processing */ #define ENE_FW1_TXIRQ 0x02 /* TX interrupt pending */ #define ENE_FW1_HAS_EXTRA_BUF 0x04 /* fw uses extra buffer*/ #define ENE_FW1_EXTRA_BUF_HND 0x08 /* extra buffer handshake bit*/ #define ENE_FW1_LED_ON 0x10 /* turn on a led */
#define ENE_FW1_WPATTERN 0x20 /* enable wake pattern */ #define ENE_FW1_WAKE 0x40 /* enable wake from S3 */ #define ENE_FW1_IRQ 0x80 /* enable interrupt */
/* second firmware flag register */ #define ENE_FW2 0xF8F9 /* flagw */ #define ENE_FW2_BUF_WPTR 0x01 /* which half of the buffer to read */ #define ENE_FW2_RXIRQ 0x04 /* RX IRQ pending*/ #define ENE_FW2_GP0A 0x08 /* Use GPIO0A for demodulated input */ #define ENE_FW2_EMMITER1_CONN 0x10 /* TX emmiter 1 connected */ #define ENE_FW2_EMMITER2_CONN 0x20 /* TX emmiter 2 connected */
#define ENE_FW2_FAN_INPUT 0x40 /* fan input used for demodulated data*/ #define ENE_FW2_LEARNING 0x80 /* hardware supports learning and TX */
/* firmware RX pointer for new style buffer */ #define ENE_FW_RX_POINTER 0xF8FA
/* high parts of samples for fan input (8 samples)*/ #define ENE_FW_SMPL_BUF_FAN 0xF8FB #define ENE_FW_SMPL_BUF_FAN_PLS 0x8000 /* combined sample is pulse */ #define ENE_FW_SMPL_BUF_FAN_MSK 0x0FFF /* combined sample maximum value */ #define ENE_FW_SAMPLE_PERIOD_FAN 61 /* fan input has fixed sample period */
/* Carrier detect setting * Low nibble - number of carrier pulses to average * High nibble - number of initial carrier pulses to discard
*/ #define ENE_CIRCAR_PULS 0xFECB
/* hw IO settings */ long hw_io; int irq;
spinlock_t hw_lock;
/* HW features */ int hw_revision; /* hardware revision */ bool hw_use_gpio_0a; /* gpio0a is demodulated input*/ bool hw_extra_buffer; /* hardware has 'extra buffer' */ bool hw_fan_input; /* fan input is IR data source */ bool hw_learning_and_tx_capable; /* learning & tx capable */ int pll_freq; int buffer_len;
/* Extra RX buffer location */ int extra_buf1_address; int extra_buf1_len; int extra_buf2_address; int extra_buf2_len;
/* HW state*/ int r_pointer; /* pointer to next sample to read */ int w_pointer; /* pointer to next sample hw will write */ bool rx_fan_input_inuse; /* is fan input in use for rx*/ int tx_reg; /* current reg used for TX */
u8 saved_conf1; /* saved FEC0 reg */ unsignedint tx_sample; /* current sample for TX */ bool tx_sample_pulse; /* current sample is pulse */
/* TX buffer */ unsigned *tx_buffer; /* input samples buffer*/ int tx_pos; /* position in that buffer */ int tx_len; /* current len of tx buffer */ int tx_done; /* done transmitting */ /* one more sample pending*/ struct completion tx_complete; /* TX completion */ struct timer_list tx_sim_timer;
/* TX settings */ int tx_period; int tx_duty_cycle; int transmitter_mask;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.