Path: blob/master/arch/blackfin/include/asm/bfin_rotary.h
15126 views
/*1* board initialization should put one of these structures into platform_data2* and place the bfin-rotary onto platform_bus named "bfin-rotary".3*4* Copyright 2008-2010 Analog Devices Inc.5*6* Licensed under the GPL-2 or later.7*/89#ifndef _BFIN_ROTARY_H10#define _BFIN_ROTARY_H1112/* mode bitmasks */13#define ROT_QUAD_ENC CNTMODE_QUADENC /* quadrature/grey code encoder mode */14#define ROT_BIN_ENC CNTMODE_BINENC /* binary encoder mode */15#define ROT_UD_CNT CNTMODE_UDCNT /* rotary counter mode */16#define ROT_DIR_CNT CNTMODE_DIRCNT /* direction counter mode */1718#define ROT_DEBE DEBE /* Debounce Enable */1920#define ROT_CDGINV CDGINV /* CDG Pin Polarity Invert */21#define ROT_CUDINV CUDINV /* CUD Pin Polarity Invert */22#define ROT_CZMINV CZMINV /* CZM Pin Polarity Invert */2324struct bfin_rotary_platform_data {25/* set rotary UP KEY_### or BTN_### in case you prefer26* bfin-rotary to send EV_KEY otherwise set 027*/28unsigned int rotary_up_key;29/* set rotary DOWN KEY_### or BTN_### in case you prefer30* bfin-rotary to send EV_KEY otherwise set 031*/32unsigned int rotary_down_key;33/* set rotary BUTTON KEY_### or BTN_### */34unsigned int rotary_button_key;35/* set rotary Relative Axis REL_### in case you prefer36* bfin-rotary to send EV_REL otherwise set 037*/38unsigned int rotary_rel_code;39unsigned short debounce; /* 0..17 */40unsigned short mode;41};4243/* CNT_CONFIG bitmasks */44#define CNTE (1 << 0) /* Counter Enable */45#define DEBE (1 << 1) /* Debounce Enable */46#define CDGINV (1 << 4) /* CDG Pin Polarity Invert */47#define CUDINV (1 << 5) /* CUD Pin Polarity Invert */48#define CZMINV (1 << 6) /* CZM Pin Polarity Invert */49#define CNTMODE_SHIFT 850#define CNTMODE (0x7 << CNTMODE_SHIFT) /* Counter Operating Mode */51#define ZMZC (1 << 1) /* CZM Zeroes Counter Enable */52#define BNDMODE_SHIFT 1253#define BNDMODE (0x3 << BNDMODE_SHIFT) /* Boundary register Mode */54#define INPDIS (1 << 15) /* CUG and CDG Input Disable */5556#define CNTMODE_QUADENC (0 << CNTMODE_SHIFT) /* quadrature encoder mode */57#define CNTMODE_BINENC (1 << CNTMODE_SHIFT) /* binary encoder mode */58#define CNTMODE_UDCNT (2 << CNTMODE_SHIFT) /* up/down counter mode */59#define CNTMODE_DIRCNT (4 << CNTMODE_SHIFT) /* direction counter mode */60#define CNTMODE_DIRTMR (5 << CNTMODE_SHIFT) /* direction timer mode */6162#define BNDMODE_COMP (0 << BNDMODE_SHIFT) /* boundary compare mode */63#define BNDMODE_ZERO (1 << BNDMODE_SHIFT) /* boundary compare and zero mode */64#define BNDMODE_CAPT (2 << BNDMODE_SHIFT) /* boundary capture mode */65#define BNDMODE_AEXT (3 << BNDMODE_SHIFT) /* boundary auto-extend mode */6667/* CNT_IMASK bitmasks */68#define ICIE (1 << 0) /* Illegal Gray/Binary Code Interrupt Enable */69#define UCIE (1 << 1) /* Up count Interrupt Enable */70#define DCIE (1 << 2) /* Down count Interrupt Enable */71#define MINCIE (1 << 3) /* Min Count Interrupt Enable */72#define MAXCIE (1 << 4) /* Max Count Interrupt Enable */73#define COV31IE (1 << 5) /* Bit 31 Overflow Interrupt Enable */74#define COV15IE (1 << 6) /* Bit 15 Overflow Interrupt Enable */75#define CZEROIE (1 << 7) /* Count to Zero Interrupt Enable */76#define CZMIE (1 << 8) /* CZM Pin Interrupt Enable */77#define CZMEIE (1 << 9) /* CZM Error Interrupt Enable */78#define CZMZIE (1 << 10) /* CZM Zeroes Counter Interrupt Enable */7980/* CNT_STATUS bitmasks */81#define ICII (1 << 0) /* Illegal Gray/Binary Code Interrupt Identifier */82#define UCII (1 << 1) /* Up count Interrupt Identifier */83#define DCII (1 << 2) /* Down count Interrupt Identifier */84#define MINCII (1 << 3) /* Min Count Interrupt Identifier */85#define MAXCII (1 << 4) /* Max Count Interrupt Identifier */86#define COV31II (1 << 5) /* Bit 31 Overflow Interrupt Identifier */87#define COV15II (1 << 6) /* Bit 15 Overflow Interrupt Identifier */88#define CZEROII (1 << 7) /* Count to Zero Interrupt Identifier */89#define CZMII (1 << 8) /* CZM Pin Interrupt Identifier */90#define CZMEII (1 << 9) /* CZM Error Interrupt Identifier */91#define CZMZII (1 << 10) /* CZM Zeroes Counter Interrupt Identifier */9293/* CNT_COMMAND bitmasks */94#define W1LCNT 0xf /* Load Counter Register */95#define W1LMIN 0xf0 /* Load Min Register */96#define W1LMAX 0xf00 /* Load Max Register */97#define W1ZMONCE (1 << 12) /* Enable CZM Clear Counter Once */9899#define W1LCNT_ZERO (1 << 0) /* write 1 to load CNT_COUNTER with zero */100#define W1LCNT_MIN (1 << 2) /* write 1 to load CNT_COUNTER from CNT_MIN */101#define W1LCNT_MAX (1 << 3) /* write 1 to load CNT_COUNTER from CNT_MAX */102103#define W1LMIN_ZERO (1 << 4) /* write 1 to load CNT_MIN with zero */104#define W1LMIN_CNT (1 << 5) /* write 1 to load CNT_MIN from CNT_COUNTER */105#define W1LMIN_MAX (1 << 7) /* write 1 to load CNT_MIN from CNT_MAX */106107#define W1LMAX_ZERO (1 << 8) /* write 1 to load CNT_MAX with zero */108#define W1LMAX_CNT (1 << 9) /* write 1 to load CNT_MAX from CNT_COUNTER */109#define W1LMAX_MIN (1 << 10) /* write 1 to load CNT_MAX from CNT_MIN */110111/* CNT_DEBOUNCE bitmasks */112#define DPRESCALE 0xf /* Load Counter Register */113114#endif115116117