linux_old1/include/linux/mfd/arizona/core.h

103 lines
3.2 KiB
C
Raw Normal View History

/*
* Arizona MFD internals
*
* Copyright 2012 Wolfson Microelectronics plc
*
* Author: Mark Brown <broonie@opensource.wolfsonmicro.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#ifndef _WM_ARIZONA_CORE_H
#define _WM_ARIZONA_CORE_H
#include <linux/interrupt.h>
#include <linux/regmap.h>
#include <linux/regulator/consumer.h>
#include <linux/mfd/arizona/pdata.h>
#define ARIZONA_MAX_CORE_SUPPLIES 3
enum arizona_type {
WM5102 = 1,
};
#define ARIZONA_IRQ_GP1 0
#define ARIZONA_IRQ_GP2 1
#define ARIZONA_IRQ_GP3 2
#define ARIZONA_IRQ_GP4 3
#define ARIZONA_IRQ_GP5_FALL 4
#define ARIZONA_IRQ_GP5_RISE 5
#define ARIZONA_IRQ_JD_FALL 6
#define ARIZONA_IRQ_JD_RISE 7
#define ARIZONA_IRQ_DSP1_RAM_RDY 8
#define ARIZONA_IRQ_DSP_IRQ1 9
#define ARIZONA_IRQ_DSP_IRQ2 10
#define ARIZONA_IRQ_SPK_SHUTDOWN_WARN 11
#define ARIZONA_IRQ_SPK_SHUTDOWN 12
#define ARIZONA_IRQ_MICDET 13
#define ARIZONA_IRQ_HPDET 14
#define ARIZONA_IRQ_WSEQ_DONE 15
#define ARIZONA_IRQ_DRC2_SIG_DET 16
#define ARIZONA_IRQ_DRC1_SIG_DET 17
#define ARIZONA_IRQ_ASRC2_LOCK 18
#define ARIZONA_IRQ_ASRC1_LOCK 19
#define ARIZONA_IRQ_UNDERCLOCKED 20
#define ARIZONA_IRQ_OVERCLOCKED 21
#define ARIZONA_IRQ_FLL2_LOCK 22
#define ARIZONA_IRQ_FLL1_LOCK 23
#define ARIZONA_IRQ_CLKGEN_ERR 24
#define ARIZONA_IRQ_CLKGEN_ERR_ASYNC 25
#define ARIZONA_IRQ_ASRC_CFG_ERR 26
#define ARIZONA_IRQ_AIF3_ERR 27
#define ARIZONA_IRQ_AIF2_ERR 28
#define ARIZONA_IRQ_AIF1_ERR 29
#define ARIZONA_IRQ_CTRLIF_ERR 30
#define ARIZONA_IRQ_MIXER_DROPPED_SAMPLES 31
#define ARIZONA_IRQ_ASYNC_CLK_ENA_LOW 32
#define ARIZONA_IRQ_SYSCLK_ENA_LOW 33
#define ARIZONA_IRQ_ISRC1_CFG_ERR 34
#define ARIZONA_IRQ_ISRC2_CFG_ERR 35
#define ARIZONA_IRQ_BOOT_DONE 36
#define ARIZONA_IRQ_DCS_DAC_DONE 37
#define ARIZONA_IRQ_DCS_HP_DONE 38
#define ARIZONA_IRQ_FLL2_CLOCK_OK 39
#define ARIZONA_IRQ_FLL1_CLOCK_OK 40
#define ARIZONA_NUM_IRQ 41
struct arizona {
struct regmap *regmap;
struct device *dev;
enum arizona_type type;
unsigned int rev;
int num_core_supplies;
struct regulator_bulk_data core_supplies[ARIZONA_MAX_CORE_SUPPLIES];
struct arizona_pdata pdata;
int irq;
struct irq_domain *virq;
struct regmap_irq_chip_data *aod_irq_chip;
struct regmap_irq_chip_data *irq_chip;
struct mutex clk_lock;
int clk32k_ref;
};
int arizona_clk32k_enable(struct arizona *arizona);
int arizona_clk32k_disable(struct arizona *arizona);
int arizona_request_irq(struct arizona *arizona, int irq, char *name,
irq_handler_t handler, void *data);
void arizona_free_irq(struct arizona *arizona, int irq, void *data);
int arizona_set_irq_wake(struct arizona *arizona, int irq, int on);
int wm5102_patch(struct arizona *arizona);
#endif