/*
 * arch/arm/mach-ambarella/board-device.h
 *
 * Author: Anthony Ginger <hfjiang@ambarella.com>
 *
 * Copyright (C) 2004-2010, Ambarella, Inc.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 *
 */

#ifndef __MACH_AMBARELLA_BOARD_DEVICE_H__
#define __MACH_AMBARELLA_BOARD_DEVICE_H__

/* ==========================================================================*/
extern struct i2c_board_info ambarella_ak4183_board_info;
extern struct i2c_board_info ambarella_chacha_mt4d_board_info;
extern struct i2c_board_info ambarella_tm1510_board_info;
extern struct i2c_board_info ambarella_tm1726_board_info;
extern struct i2c_board_info ambarella_tm1927_board_info;
extern struct i2c_board_info ambarella_hx8526_board_info;
extern struct i2c_board_info ambarella_nt11001_board_info;
extern struct i2c_board_info ambarella_ft540_board_info;
extern struct i2c_board_info ambarella_isl12022m_board_info;
extern struct i2c_board_info ambarella_scn0700_board_info;
extern struct i2c_board_info ambarella_ft5x0x_board_info;

extern struct i2c_board_info ambarella_board_vin_infos[2];
extern struct i2c_board_info ambarella_board_hdmi_info;

extern	struct platform_device lcd_1p3831;
extern	struct platform_device i1evk_cpufreq_device;

extern struct i2c_board_info ambarella_ti6586x_board_info;
extern struct i2c_board_info ambarella_bq27410_board_info;

extern struct wm831x_pdata wm8310_default_pdata;
extern struct wm831x_pdata md800_wm8310_default_pdata;
extern struct wm831x_pdata pvepb84_wm8310_default_pdata;

extern int ambarella_init_wm8994(void);
extern int ambarella_init_wm8737(u8 i2c_bus_num, u8 i2c_addr);
extern int ambarella_init_es8328(u8 i2c_bus_num, u8 i2c_addr);
extern int ambarella_init_tlv320aic326x(u8 i2c_bus_num, u8 i2c_addr);
extern int ambarella_init_tlv320aic3101(u8 i2c_bus_num, u8 i2c_addr);
extern int ambarella_init_ak4642(u8 i2c_bus_num, u8 i2c_addr, u8 rst_pin);
extern int ambarella_init_wm8940(u8 i2c_bus_num, u8 i2c_addr);
extern int ambarella_init_alc5633(u8 i2c_bus_num, u8 i2c_addr);
extern int ambarella_init_wm8974(u8 i2c_bus_num, u8 i2c_addr);

#endif //__MACH_AMBARELLA_BOARD_DEVICE_H__
