pdata.h revision c9fbf7e070bbf9cc7adc1420df87706c62cb04ed
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 329e50108668a70a9927257298bd4e679300124420Mark Brown#define WM8994_EQ_REGS 19 339e50108668a70a9927257298bd4e679300124420Mark Brown 349e50108668a70a9927257298bd4e679300124420Mark Brown/** 359e50108668a70a9927257298bd4e679300124420Mark Brown * DRC configurations are specified with a label and a set of register 369e50108668a70a9927257298bd4e679300124420Mark Brown * values to write (the enable bits will be ignored). At runtime an 379e50108668a70a9927257298bd4e679300124420Mark Brown * enumerated control will be presented for each DRC block allowing 389e50108668a70a9927257298bd4e679300124420Mark Brown * the user to choose the configration to use. 399e50108668a70a9927257298bd4e679300124420Mark Brown * 409e50108668a70a9927257298bd4e679300124420Mark Brown * Configurations may be generated by hand or by using the DRC control 419e50108668a70a9927257298bd4e679300124420Mark Brown * panel provided by the WISCE - see http://www.wolfsonmicro.com/wisce/ 429e50108668a70a9927257298bd4e679300124420Mark Brown * for details. 439e50108668a70a9927257298bd4e679300124420Mark Brown */ 449e50108668a70a9927257298bd4e679300124420Mark Brownstruct wm8994_drc_cfg { 459e50108668a70a9927257298bd4e679300124420Mark Brown const char *name; 469e50108668a70a9927257298bd4e679300124420Mark Brown u16 regs[WM8994_DRC_REGS]; 479e50108668a70a9927257298bd4e679300124420Mark Brown}; 489e50108668a70a9927257298bd4e679300124420Mark Brown 499e50108668a70a9927257298bd4e679300124420Mark Brown/** 509e50108668a70a9927257298bd4e679300124420Mark Brown * ReTune Mobile configurations are specified with a label, sample 519e50108668a70a9927257298bd4e679300124420Mark Brown * rate and set of values to write (the enable bits will be ignored). 529e50108668a70a9927257298bd4e679300124420Mark Brown * 539e50108668a70a9927257298bd4e679300124420Mark Brown * Configurations are expected to be generated using the ReTune Mobile 549e50108668a70a9927257298bd4e679300124420Mark Brown * control panel in WISCE - see http://www.wolfsonmicro.com/wisce/ 559e50108668a70a9927257298bd4e679300124420Mark Brown */ 569e50108668a70a9927257298bd4e679300124420Mark Brownstruct wm8994_retune_mobile_cfg { 579e50108668a70a9927257298bd4e679300124420Mark Brown const char *name; 589e50108668a70a9927257298bd4e679300124420Mark Brown unsigned int rate; 599e50108668a70a9927257298bd4e679300124420Mark Brown u16 regs[WM8994_EQ_REGS]; 609e50108668a70a9927257298bd4e679300124420Mark Brown}; 619e50108668a70a9927257298bd4e679300124420Mark Brown 629e50108668a70a9927257298bd4e679300124420Mark Brownstruct wm8994_pdata { 639e50108668a70a9927257298bd4e679300124420Mark Brown int gpio_base; 649e50108668a70a9927257298bd4e679300124420Mark Brown 659e50108668a70a9927257298bd4e679300124420Mark Brown /** 669e50108668a70a9927257298bd4e679300124420Mark Brown * Default values for GPIOs if non-zero, WM8994_CONFIGURE_GPIO 679e50108668a70a9927257298bd4e679300124420Mark Brown * can be used for all zero values. 689e50108668a70a9927257298bd4e679300124420Mark Brown */ 699e50108668a70a9927257298bd4e679300124420Mark Brown int gpio_defaults[WM8994_NUM_GPIO]; 709e50108668a70a9927257298bd4e679300124420Mark Brown 719e50108668a70a9927257298bd4e679300124420Mark Brown struct wm8994_ldo_pdata ldo[WM8994_NUM_LDO]; 729e50108668a70a9927257298bd4e679300124420Mark Brown 73c9fbf7e070bbf9cc7adc1420df87706c62cb04edMark Brown int irq_base; /** Base IRQ number for WM8994, required for IRQs */ 749e50108668a70a9927257298bd4e679300124420Mark Brown 759e50108668a70a9927257298bd4e679300124420Mark Brown int num_drc_cfgs; 769e50108668a70a9927257298bd4e679300124420Mark Brown struct wm8994_drc_cfg *drc_cfgs; 779e50108668a70a9927257298bd4e679300124420Mark Brown 789e50108668a70a9927257298bd4e679300124420Mark Brown int num_retune_mobile_cfgs; 799e50108668a70a9927257298bd4e679300124420Mark Brown struct wm8994_retune_mobile_cfg *retune_mobile_cfgs; 809e50108668a70a9927257298bd4e679300124420Mark Brown 819e50108668a70a9927257298bd4e679300124420Mark Brown /* LINEOUT can be differential or single ended */ 829e50108668a70a9927257298bd4e679300124420Mark Brown unsigned int lineout1_diff:1; 839e50108668a70a9927257298bd4e679300124420Mark Brown unsigned int lineout2_diff:1; 849e50108668a70a9927257298bd4e679300124420Mark Brown 859e50108668a70a9927257298bd4e679300124420Mark Brown /* Common mode feedback */ 869e50108668a70a9927257298bd4e679300124420Mark Brown unsigned int lineout1fb:1; 879e50108668a70a9927257298bd4e679300124420Mark Brown unsigned int lineout2fb:1; 889e50108668a70a9927257298bd4e679300124420Mark Brown 899e50108668a70a9927257298bd4e679300124420Mark Brown /* Microphone biases: 0=0.9*AVDD1 1=0.65*AVVD1 */ 909e50108668a70a9927257298bd4e679300124420Mark Brown unsigned int micbias1_lvl:1; 919e50108668a70a9927257298bd4e679300124420Mark Brown unsigned int micbias2_lvl:1; 929e50108668a70a9927257298bd4e679300124420Mark Brown 939e50108668a70a9927257298bd4e679300124420Mark Brown /* Jack detect threashold levels, see datasheet for values */ 949e50108668a70a9927257298bd4e679300124420Mark Brown unsigned int jd_scthr:2; 959e50108668a70a9927257298bd4e679300124420Mark Brown unsigned int jd_thr:2; 969e50108668a70a9927257298bd4e679300124420Mark Brown}; 979e50108668a70a9927257298bd4e679300124420Mark Brown 989e50108668a70a9927257298bd4e679300124420Mark Brown#endif 99