pdata.h revision 9b7c525dfaa9a1b5f01db1f3a1edc50bbb6eb739
19e50108668a70a9927257298bd4e679300124420Mark Brown/* 29e50108668a70a9927257298bd4e679300124420Mark Brown * include/linux/mfd/wm8994/pdata.h -- Platform data for WM8994 39e50108668a70a9927257298bd4e679300124420Mark Brown * 49e50108668a70a9927257298bd4e679300124420Mark Brown * Copyright 2009 Wolfson Microelectronics PLC. 59e50108668a70a9927257298bd4e679300124420Mark Brown * 69e50108668a70a9927257298bd4e679300124420Mark Brown * Author: Mark Brown <broonie@opensource.wolfsonmicro.com> 79e50108668a70a9927257298bd4e679300124420Mark Brown * 89e50108668a70a9927257298bd4e679300124420Mark Brown * This program is free software; you can redistribute it and/or modify it 99e50108668a70a9927257298bd4e679300124420Mark Brown * under the terms of the GNU General Public License as published by the 109e50108668a70a9927257298bd4e679300124420Mark Brown * Free Software Foundation; either version 2 of the License, or (at your 119e50108668a70a9927257298bd4e679300124420Mark Brown * option) any later version. 129e50108668a70a9927257298bd4e679300124420Mark Brown * 139e50108668a70a9927257298bd4e679300124420Mark Brown */ 149e50108668a70a9927257298bd4e679300124420Mark Brown 159e50108668a70a9927257298bd4e679300124420Mark Brown#ifndef __MFD_WM8994_PDATA_H__ 169e50108668a70a9927257298bd4e679300124420Mark Brown#define __MFD_WM8994_PDATA_H__ 179e50108668a70a9927257298bd4e679300124420Mark Brown 189e50108668a70a9927257298bd4e679300124420Mark Brown#define WM8994_NUM_LDO 2 199e50108668a70a9927257298bd4e679300124420Mark Brown#define WM8994_NUM_GPIO 11 209e50108668a70a9927257298bd4e679300124420Mark Brown 219e50108668a70a9927257298bd4e679300124420Mark Brownstruct wm8994_ldo_pdata { 229e50108668a70a9927257298bd4e679300124420Mark Brown /** GPIOs to enable regulator, 0 or less if not available */ 239e50108668a70a9927257298bd4e679300124420Mark Brown int enable; 249e50108668a70a9927257298bd4e679300124420Mark Brown 259e50108668a70a9927257298bd4e679300124420Mark Brown const char *supply; 269e50108668a70a9927257298bd4e679300124420Mark Brown struct regulator_init_data *init_data; 279e50108668a70a9927257298bd4e679300124420Mark Brown}; 289e50108668a70a9927257298bd4e679300124420Mark Brown 299e50108668a70a9927257298bd4e679300124420Mark Brown#define WM8994_CONFIGURE_GPIO 0x8000 309e50108668a70a9927257298bd4e679300124420Mark Brown 319e50108668a70a9927257298bd4e679300124420Mark Brown#define WM8994_DRC_REGS 5 323fcc0afbb9c93f3599ba03273e59915670b6c2c2Uk Kim#define WM8994_EQ_REGS 20 33131d81061eba5ffd436b5d132530ac5205b16892Mark Brown#define WM8958_MBC_CUTOFF_REGS 20 34131d81061eba5ffd436b5d132530ac5205b16892Mark Brown#define WM8958_MBC_COEFF_REGS 48 359e50108668a70a9927257298bd4e679300124420Mark Brown 369e50108668a70a9927257298bd4e679300124420Mark Brown/** 379e50108668a70a9927257298bd4e679300124420Mark Brown * DRC configurations are specified with a label and a set of register 389e50108668a70a9927257298bd4e679300124420Mark Brown * values to write (the enable bits will be ignored). At runtime an 399e50108668a70a9927257298bd4e679300124420Mark Brown * enumerated control will be presented for each DRC block allowing 409e50108668a70a9927257298bd4e679300124420Mark Brown * the user to choose the configration to use. 419e50108668a70a9927257298bd4e679300124420Mark Brown * 429e50108668a70a9927257298bd4e679300124420Mark Brown * Configurations may be generated by hand or by using the DRC control 439e50108668a70a9927257298bd4e679300124420Mark Brown * panel provided by the WISCE - see http://www.wolfsonmicro.com/wisce/ 449e50108668a70a9927257298bd4e679300124420Mark Brown * for details. 459e50108668a70a9927257298bd4e679300124420Mark Brown */ 469e50108668a70a9927257298bd4e679300124420Mark Brownstruct wm8994_drc_cfg { 479e50108668a70a9927257298bd4e679300124420Mark Brown const char *name; 489e50108668a70a9927257298bd4e679300124420Mark Brown u16 regs[WM8994_DRC_REGS]; 499e50108668a70a9927257298bd4e679300124420Mark Brown}; 509e50108668a70a9927257298bd4e679300124420Mark Brown 519e50108668a70a9927257298bd4e679300124420Mark Brown/** 529e50108668a70a9927257298bd4e679300124420Mark Brown * ReTune Mobile configurations are specified with a label, sample 539e50108668a70a9927257298bd4e679300124420Mark Brown * rate and set of values to write (the enable bits will be ignored). 549e50108668a70a9927257298bd4e679300124420Mark Brown * 559e50108668a70a9927257298bd4e679300124420Mark Brown * Configurations are expected to be generated using the ReTune Mobile 569e50108668a70a9927257298bd4e679300124420Mark Brown * control panel in WISCE - see http://www.wolfsonmicro.com/wisce/ 579e50108668a70a9927257298bd4e679300124420Mark Brown */ 589e50108668a70a9927257298bd4e679300124420Mark Brownstruct wm8994_retune_mobile_cfg { 599e50108668a70a9927257298bd4e679300124420Mark Brown const char *name; 609e50108668a70a9927257298bd4e679300124420Mark Brown unsigned int rate; 619e50108668a70a9927257298bd4e679300124420Mark Brown u16 regs[WM8994_EQ_REGS]; 629e50108668a70a9927257298bd4e679300124420Mark Brown}; 639e50108668a70a9927257298bd4e679300124420Mark Brown 64131d81061eba5ffd436b5d132530ac5205b16892Mark Brown/** 65131d81061eba5ffd436b5d132530ac5205b16892Mark Brown * Multiband compressor configurations are specified with a label and 66131d81061eba5ffd436b5d132530ac5205b16892Mark Brown * two sets of values to write. Configurations are expected to be 67131d81061eba5ffd436b5d132530ac5205b16892Mark Brown * generated using the multiband compressor configuration panel in 68131d81061eba5ffd436b5d132530ac5205b16892Mark Brown * WISCE - see http://www.wolfsonmicro.com/wisce/ 69131d81061eba5ffd436b5d132530ac5205b16892Mark Brown */ 70131d81061eba5ffd436b5d132530ac5205b16892Mark Brownstruct wm8958_mbc_cfg { 71131d81061eba5ffd436b5d132530ac5205b16892Mark Brown const char *name; 72131d81061eba5ffd436b5d132530ac5205b16892Mark Brown u16 cutoff_regs[WM8958_MBC_CUTOFF_REGS]; 73131d81061eba5ffd436b5d132530ac5205b16892Mark Brown u16 coeff_regs[WM8958_MBC_COEFF_REGS]; 74131d81061eba5ffd436b5d132530ac5205b16892Mark Brown}; 75131d81061eba5ffd436b5d132530ac5205b16892Mark Brown 769e50108668a70a9927257298bd4e679300124420Mark Brownstruct wm8994_pdata { 779e50108668a70a9927257298bd4e679300124420Mark Brown int gpio_base; 789e50108668a70a9927257298bd4e679300124420Mark Brown 799e50108668a70a9927257298bd4e679300124420Mark Brown /** 809e50108668a70a9927257298bd4e679300124420Mark Brown * Default values for GPIOs if non-zero, WM8994_CONFIGURE_GPIO 819e50108668a70a9927257298bd4e679300124420Mark Brown * can be used for all zero values. 829e50108668a70a9927257298bd4e679300124420Mark Brown */ 839e50108668a70a9927257298bd4e679300124420Mark Brown int gpio_defaults[WM8994_NUM_GPIO]; 849e50108668a70a9927257298bd4e679300124420Mark Brown 859e50108668a70a9927257298bd4e679300124420Mark Brown struct wm8994_ldo_pdata ldo[WM8994_NUM_LDO]; 869e50108668a70a9927257298bd4e679300124420Mark Brown 87c9fbf7e070bbf9cc7adc1420df87706c62cb04edMark Brown int irq_base; /** Base IRQ number for WM8994, required for IRQs */ 889e50108668a70a9927257298bd4e679300124420Mark Brown 899e50108668a70a9927257298bd4e679300124420Mark Brown int num_drc_cfgs; 909e50108668a70a9927257298bd4e679300124420Mark Brown struct wm8994_drc_cfg *drc_cfgs; 919e50108668a70a9927257298bd4e679300124420Mark Brown 929e50108668a70a9927257298bd4e679300124420Mark Brown int num_retune_mobile_cfgs; 939e50108668a70a9927257298bd4e679300124420Mark Brown struct wm8994_retune_mobile_cfg *retune_mobile_cfgs; 949e50108668a70a9927257298bd4e679300124420Mark Brown 95131d81061eba5ffd436b5d132530ac5205b16892Mark Brown int num_mbc_cfgs; 96131d81061eba5ffd436b5d132530ac5205b16892Mark Brown struct wm8958_mbc_cfg *mbc_cfgs; 97131d81061eba5ffd436b5d132530ac5205b16892Mark Brown 989e50108668a70a9927257298bd4e679300124420Mark Brown /* LINEOUT can be differential or single ended */ 999e50108668a70a9927257298bd4e679300124420Mark Brown unsigned int lineout1_diff:1; 1009e50108668a70a9927257298bd4e679300124420Mark Brown unsigned int lineout2_diff:1; 1019e50108668a70a9927257298bd4e679300124420Mark Brown 1029e50108668a70a9927257298bd4e679300124420Mark Brown /* Common mode feedback */ 1039e50108668a70a9927257298bd4e679300124420Mark Brown unsigned int lineout1fb:1; 1049e50108668a70a9927257298bd4e679300124420Mark Brown unsigned int lineout2fb:1; 1059e50108668a70a9927257298bd4e679300124420Mark Brown 1069b7c525dfaa9a1b5f01db1f3a1edc50bbb6eb739Mark Brown /* IRQ for microphone detection if brought out directly as a 1079b7c525dfaa9a1b5f01db1f3a1edc50bbb6eb739Mark Brown * signal. 1089b7c525dfaa9a1b5f01db1f3a1edc50bbb6eb739Mark Brown */ 1099b7c525dfaa9a1b5f01db1f3a1edc50bbb6eb739Mark Brown int micdet_irq; 1109b7c525dfaa9a1b5f01db1f3a1edc50bbb6eb739Mark Brown 1119e50108668a70a9927257298bd4e679300124420Mark Brown /* Microphone biases: 0=0.9*AVDD1 1=0.65*AVVD1 */ 1129e50108668a70a9927257298bd4e679300124420Mark Brown unsigned int micbias1_lvl:1; 1139e50108668a70a9927257298bd4e679300124420Mark Brown unsigned int micbias2_lvl:1; 1149e50108668a70a9927257298bd4e679300124420Mark Brown 1159e50108668a70a9927257298bd4e679300124420Mark Brown /* Jack detect threashold levels, see datasheet for values */ 1169e50108668a70a9927257298bd4e679300124420Mark Brown unsigned int jd_scthr:2; 1179e50108668a70a9927257298bd4e679300124420Mark Brown unsigned int jd_thr:2; 1189e50108668a70a9927257298bd4e679300124420Mark Brown}; 1199e50108668a70a9927257298bd4e679300124420Mark Brown 1209e50108668a70a9927257298bd4e679300124420Mark Brown#endif 121