A modern Music Player Daemon based on Rockbox open source high quality audio player
libadwaita audio rust zig deno mpris rockbox mpd
at master 190 lines 7.2 kB view raw
1/*************************************************************************** 2 * __________ __ ___. 3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___ 4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / 5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < 6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ 7 * \/ \/ \/ \/ \/ 8 * $Id$ 9 * 10 * Copyright (C) 2012 Amaury Pouly 11 * 12 * This program is free software; you can redistribute it and/or 13 * modify it under the terms of the GNU General Public License 14 * as published by the Free Software Foundation; either version 2 15 * of the License, or (at your option) any later version. 16 * 17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 18 * KIND, either express or implied. 19 * 20 ****************************************************************************/ 21#ifndef __MPR121_H__ 22#define __MPR121_H__ 23 24/** Registers for the Freescale MPR121 Capacitive Proximity Sensor */ 25#include "system.h" 26 27/* Touch status: EL{0,7} */ 28#define REG_TOUCH_STATUS 0x00 29#define REG_TOUCH_STATUS__ELE(x) (1 << (x)) 30/* Touch status: EL{8-11,prox}, overcurrent */ 31#define REG_TOUCH_STATUS2 0x01 32#define REG_TOUCH_STATUS2__ELE(x) (1 << ((x) - 8)) 33#define REG_TOUCH_STATUS2__ELEPROX (1 << 4) 34#define REG_TOUCH_STATUS2__OVCF (1 << 7) 35/* Out of range: EL{0,7} */ 36#define REG_OOR_STATUS 0x02 37#define REG_OOR_STATUS__ELE(x) (1 << (x)) 38/* Out of range: EL{8-11,prox}, autoconf err */ 39#define REG_OOR_STATUS2 0x03 40#define REG_OOR_STATUS2__ELE(x) (1 << (x)) 41#define REG_OOR_STATUS2__ELEPROX (1 << 4) 42#define REG_OOR_STATUS2__ACFF (1 << 6) 43#define REG_OOR_STATUS2__ARFF (1 << 7) 44/* Electrode X filtered data LSB */ 45#define REG_EFDxLB(x) (0x04 + 0x02 * (x)) 46/* Electrode X filtered data MSB */ 47#define REG_EFDxHB(x) (0x05 + 0x02 * (x)) 48/* Proximity electrode X filtered data LSB */ 49#define REG_EFDPROXLB 0x1c 50/* Proximity electrode X filtered data MSB */ 51#define REG_EFDPROXHB 0x1d 52/* Electrode baseline value */ 53#define REG_ExBV(x) (0x1e + (x)) 54/* Proximity electrode baseline value */ 55#define REG_EPROXBV 0x2a 56/* Max Half Delta Rising */ 57#define REG_MHDR 0x2b 58/* Noise Half Delta Rising */ 59#define REG_NHDR 0x2c 60/* Noise Count Limit Rising */ 61#define REG_NCLR 0x2d 62/* Filter Delay Limit Rising */ 63#define REG_FDLR 0x2e 64/* Max Half Delta Falling */ 65#define REG_MHDF 0x2f 66/* Noise Half Delta Falling */ 67#define REG_NHDF 0x30 68/* Noise Count Limit Falling */ 69#define REG_NCLF 0x31 70/* Filter Delay Limit Falling */ 71#define REG_FDLF 0x32 72/* Noise Half Delta Touched */ 73#define REG_NHDT 0x33 74/* Noise Count Limit Touched */ 75#define REG_NCLT 0x34 76/* Filter Delay Limit Touched */ 77#define REG_FDLT 0x35 78/* Proximity Max Half Delta Rising */ 79#define REG_MHDPROXR 0x36 80/* Proximity Noise Half Delta Rising */ 81#define REG_NHDPROXR 0x37 82/* Proximity Noise Count Limit Rising */ 83#define REG_NCLPROXR 0x38 84/* Proximity Filter Delay Limit Rising */ 85#define REG_FDLPROXR 0x39 86/* Proximity Max Half Delta Falling */ 87#define REG_MHDPROXF 0x3a 88/* Proximity Noise Half Delta Falling */ 89#define REG_NHDPROXF 0x3b 90/* Proximity Noise Count Limit Falling */ 91#define REG_NCLPROXF 0x3c 92/* Proximity Filter Delay Limit Falling */ 93#define REG_FDLPROXF 0x3d 94/* Proximity Noise Half Delta Touched */ 95#define REG_NHDPROXT 0x3e 96/* Proximity Noise Count Limit Touched */ 97#define REG_NCLPROXT 0x3f 98/* Proximity Filter Delay Limit Touched */ 99#define REG_FDLPROXT 0x40 100/* Eletrode Touch Threshold */ 101#define REG_ExTTH(x) (0x41 + 2 * (x)) 102/* Eletrode Release Threshold */ 103#define REG_ExRTH(x) (0x42 + 2 * (x)) 104/* Proximity Eletrode Touch Threshold */ 105#define REG_EPROXTTH 0x59 106/* Proximity Eletrode Release Threshold */ 107#define REG_EPROXRTH 0x5a 108/* Debounce Control */ 109#define REG_DEBOUNCE 0x5b 110#define REG_DEBOUNCE__DR(dr) ((dr) << 4) 111#define REG_DEBOUNCE__DT(dt) (dt) 112/* Analog Front End Configuration */ 113#define REG_AFE 0x5c 114#define REG_AFE__CDC(cdc) (cdc) 115#define REG_AFE__FFI(ffi) ((ffi) << 6) 116/* Filter Configuration */ 117#define REG_FILTER 0x5d 118#define REG_FILTER__ESI(esi) (esi) 119#define REG_FILTER__SFI(sfi) ((sfi) << 3) 120#define REG_FILTER__CDT(cdt) ((cdt) << 5) 121/* Electrode Configuration */ 122#define REG_ELECTRODE 0x5e 123#define REG_ELECTRODE__ELE_EN(en) (en) 124#define REG_ELECTRODE__ELEPROX_EN(en) ((en) << 4) 125#define REG_ELECTRODE__CL(cl) ((cl) << 6) 126/* Electrode X Current */ 127#define REG_CDCx(x) (0x5f + (x)) 128/* Proximity Eletrode X Current */ 129#define REG_CDCPROX 0x6b 130/* Electrode X Charge Time */ 131#define REG_CDTx(x) (0x6c + (x) / 2) 132#define REG_CDTx__CDT0(x) (x) 133#define REG_CDTx__CDT1(x) ((x) << 4) 134/* Proximity Eletrode X Charge Time */ 135#define REG_CDTPROX 0x72 136/* GPIO Control Register: CTL0{4-11} */ 137#define REG_GPIO_CTL0 0x73 138#define REG_GPIO_CTL0__CTL0x(x) (1 << ((x) - 4)) 139/* GPIO Control Register: CTL1{4-11} */ 140#define REG_GPIO_CTL1 0x74 141#define REG_GPIO_CTL1__CTL1x(x) (1 << ((x) - 4)) 142/* GPIO Data Register */ 143#define REG_GPIO_DATA 0x75 144#define REG_GPIO_DATA__DATx(x) (1 << ((x) - 4)) 145/* GPIO Direction Register */ 146#define REG_GPIO_DIR 0x76 147#define REG_GPIO_DIR__DIRx(x) (1 << ((x) - 4)) 148/* GPIO Enable Register */ 149#define REG_GPIO_EN 0x77 150#define REG_GPIO_EN__ENx(x) (1 << ((x) - 4)) 151/* GPIO Data Set Register */ 152#define REG_GPIO_SET 0x78 153#define REG_GPIO_SET__SETx(x) (1 << ((x) - 4)) 154/* GPIO Data Clear Register */ 155#define REG_GPIO_CLR 0x79 156#define REG_GPIO_CLR__CLRx(x) (1 << ((x) - 4)) 157/* GPIO Data Toggle Register */ 158#define REG_GPIO_TOG 0x7a 159#define REG_GPIO_TOG__TOGx(x) (1 << ((x) - 4)) 160/* Auto-Configuration Control 0 */ 161#define REG_AUTO_CONF 0x7b 162#define REG_AUTO_CONF__ACE(ace) (ace) 163#define REG_AUTO_CONF__ARE(are) ((are) << 1) 164#define REG_AUTO_CONF__BVA(bva) ((bva) << 2) 165#define REG_AUTO_CONF__RETRY(retry) ((retry) << 4) 166#define REG_AUTO_CONF__FFI(ffi) ((ffi) << 6) 167/* Auto-Configuration Control 1 */ 168#define REG_AUTO_CONF2 0x7c 169#define REG_AUTO_CONF2__ACFIE(acfie) (acfie) 170#define REG_AUTO_CONF2__ARFIE(arfie) ((arfie) << 1) 171#define REG_AUTO_CONF2__OORIE(oorie) ((oorie) << 2) 172#define REG_AUTO_CONF2__SCTS(scts) ((scts) << 7) 173/* Auto-Configuration Upper-Limit */ 174#define REG_USL 0x7d 175/* Auto-Configuration Lower-Limit */ 176#define REG_LSL 0x7e 177/* Auto-Configuration Target Level */ 178#define REG_TL 0x7f 179/* Soft-Reset */ 180#define REG_SOFTRESET 0x80 181#define REG_SOFTRESET__MAGIC 0x63 182/* PWM Control */ 183#define REG_PWMx(x) (0x81 + ((x) - 4) / 2) 184#define REG_PWMx_IS_PWM0(x) (((x) % 2) == 0) 185#define REG_PWMx__PWM0(x) (x) 186#define REG_PWMx__PWM0_BM 0xf 187#define REG_PWMx__PWM1(x) ((x) << 4) 188#define REG_PWMx__PWM1_BM 0xf0 189 190#endif /* __MPR121_H__ */