287 lines
7.2 KiB
C
287 lines
7.2 KiB
C
|
/* arch/arm/mach-msm/include/mach/board.h
|
||
|
*
|
||
|
* Copyright (C) 2007 Google, Inc.
|
||
|
* Author: Brian Swetland <swetland@google.com>
|
||
|
*
|
||
|
* This software is licensed under the terms of the GNU General Public
|
||
|
* License version 2, as published by the Free Software Foundation, and
|
||
|
* may be copied, distributed, and modified under those terms.
|
||
|
*
|
||
|
* 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.
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
#ifndef __ASM_ARCH_MSM_BOARD_H
|
||
|
#define __ASM_ARCH_MSM_BOARD_H
|
||
|
|
||
|
#include <linux/types.h>
|
||
|
#include <asm/setup.h>
|
||
|
|
||
|
/* platform device data structures */
|
||
|
struct msm_acpu_clock_platform_data {
|
||
|
uint32_t acpu_switch_time_us;
|
||
|
uint32_t max_speed_delta_khz;
|
||
|
uint32_t vdd_switch_time_us;
|
||
|
unsigned long mpll_khz;
|
||
|
unsigned long power_collapse_khz;
|
||
|
unsigned long wait_for_irq_khz;
|
||
|
};
|
||
|
|
||
|
struct msm_camera_io_ext {
|
||
|
uint32_t mdcphy;
|
||
|
uint32_t mdcsz;
|
||
|
uint32_t appphy;
|
||
|
uint32_t appsz;
|
||
|
uint32_t camifpadphy;
|
||
|
uint32_t camifpadsz;
|
||
|
uint32_t csiphy;
|
||
|
uint32_t csisz;
|
||
|
uint32_t csiirq;
|
||
|
};
|
||
|
|
||
|
struct msm_camera_device_platform_data {
|
||
|
void (*camera_gpio_on) (void);
|
||
|
void (*camera_gpio_off)(void);
|
||
|
struct msm_camera_io_ext ioext;
|
||
|
};
|
||
|
enum msm_camera_csi_data_format {
|
||
|
CSI_8BIT,
|
||
|
CSI_10BIT,
|
||
|
CSI_12BIT,
|
||
|
};
|
||
|
struct msm_camera_csi_params {
|
||
|
enum msm_camera_csi_data_format data_format;
|
||
|
uint8_t lane_cnt;
|
||
|
uint8_t lane_assign;
|
||
|
uint8_t settle_cnt;
|
||
|
uint8_t dpcm_scheme;
|
||
|
};
|
||
|
|
||
|
struct msm_camera_legacy_device_platform_data {
|
||
|
int sensor_reset;
|
||
|
int sensor_pwd;
|
||
|
int vcm_pwd;
|
||
|
void (*config_gpio_on) (void);
|
||
|
void (*config_gpio_off)(void);
|
||
|
struct msm_camsensor_device_platform_data *sensor_info;
|
||
|
};
|
||
|
|
||
|
struct msm_i2c_platform_data {
|
||
|
int clk_freq;
|
||
|
#ifdef CONFIG_ARCH_MSM7X30 /* TODO.606 need camera team help to check */
|
||
|
uint32_t rmutex;
|
||
|
const char *rsl_id;
|
||
|
#else
|
||
|
uint32_t *rmutex;
|
||
|
int rsl_id;
|
||
|
#endif
|
||
|
uint32_t pm_lat;
|
||
|
int pri_clk;
|
||
|
int pri_dat;
|
||
|
int aux_clk;
|
||
|
int aux_dat;
|
||
|
const char *clk;
|
||
|
const char *pclk;
|
||
|
void (*msm_i2c_config_gpio)(int iface, int config_type);
|
||
|
};
|
||
|
|
||
|
#define MSM_CAMERA_FLASH_NONE 0
|
||
|
#define MSM_CAMERA_FLASH_LED 1
|
||
|
#define MSM_CAMERA_FLASH_SRC_PMIC (0x00000001<<0)
|
||
|
#define MSM_CAMERA_FLASH_SRC_PWM (0x00000001<<1)
|
||
|
|
||
|
struct msm_camera_sensor_flash_pmic {
|
||
|
uint32_t low_current;
|
||
|
uint32_t high_current;
|
||
|
};
|
||
|
|
||
|
struct msm_camera_sensor_flash_pwm {
|
||
|
uint32_t freq;
|
||
|
uint32_t max_load;
|
||
|
uint32_t low_load;
|
||
|
uint32_t high_load;
|
||
|
uint32_t channel;
|
||
|
};
|
||
|
|
||
|
struct msm_camera_sensor_flash_src {
|
||
|
int flash_sr_type;
|
||
|
|
||
|
union {
|
||
|
struct msm_camera_sensor_flash_pmic pmic_src;
|
||
|
struct msm_camera_sensor_flash_pwm pwm_src;
|
||
|
} _fsrc;
|
||
|
};
|
||
|
|
||
|
struct msm_camera_sensor_flash_data {
|
||
|
int flash_type;
|
||
|
struct msm_camera_sensor_flash_src *flash_src;
|
||
|
};
|
||
|
|
||
|
struct camera_flash_cfg {
|
||
|
int num_flash_levels;
|
||
|
int (*camera_flash)(int level);
|
||
|
uint16_t low_temp_limit;
|
||
|
uint16_t low_cap_limit;
|
||
|
uint8_t postpone_led_mode;
|
||
|
};
|
||
|
|
||
|
struct msm_camera_sensor_info {
|
||
|
const char *sensor_name;
|
||
|
int sensor_reset;
|
||
|
int sensor_pwd;
|
||
|
int vcm_pwd;
|
||
|
void(*camera_clk_switch)(void);
|
||
|
/*power*/
|
||
|
char *camera_analog_pwd;
|
||
|
char *camera_io_pwd;
|
||
|
char *camera_vcm_pwd;
|
||
|
char *camera_digital_pwd;
|
||
|
int analog_pwd1_gpio;
|
||
|
int (*camera_power_on)(void);
|
||
|
int (*camera_power_off)(void);
|
||
|
int mclk;
|
||
|
int flash_type; /* for back support */
|
||
|
uint8_t led_high_enabled;
|
||
|
int need_suspend;
|
||
|
struct msm_camera_device_platform_data *pdata;
|
||
|
struct resource *resource;
|
||
|
uint8_t num_resources;
|
||
|
uint32_t waked_up;
|
||
|
wait_queue_head_t event_wait;
|
||
|
uint32_t kpi_sensor_start;
|
||
|
uint32_t kpi_sensor_end;
|
||
|
struct camera_flash_cfg* flash_cfg;
|
||
|
int csi_if;
|
||
|
struct msm_camera_csi_params csi_params;
|
||
|
};
|
||
|
struct clk;
|
||
|
|
||
|
struct snd_endpoint {
|
||
|
int id;
|
||
|
const char *name;
|
||
|
};
|
||
|
|
||
|
struct msm_snd_endpoints {
|
||
|
struct snd_endpoint *endpoints;
|
||
|
unsigned num;
|
||
|
};
|
||
|
|
||
|
enum {
|
||
|
BOOTMODE_NORMAL = 0x0,
|
||
|
BOOTMODE_FACTORY = 0x1,
|
||
|
BOOTMODE_RECOVERY = 0x2,
|
||
|
BOOTMODE_CHARGE = 0x3,
|
||
|
BOOTMODE_POWERTEST = 0x4,
|
||
|
BOOTMODE_OFFMODE_CHARGING = 0x5,
|
||
|
};
|
||
|
|
||
|
#define MSM_MAX_DEC_CNT 14
|
||
|
/* 7k target ADSP information */
|
||
|
/* Bit 23:0, for codec identification like mp3, wav etc *
|
||
|
* Bit 27:24, for mode identification like tunnel, non tunnel*
|
||
|
* bit 31:28, for operation support like DM, DMA */
|
||
|
enum msm_adspdec_concurrency {
|
||
|
MSM_ADSP_CODEC_WAV = 0,
|
||
|
MSM_ADSP_CODEC_ADPCM = 1,
|
||
|
MSM_ADSP_CODEC_MP3 = 2,
|
||
|
MSM_ADSP_CODEC_REALAUDIO = 3,
|
||
|
MSM_ADSP_CODEC_WMA = 4,
|
||
|
MSM_ADSP_CODEC_AAC = 5,
|
||
|
MSM_ADSP_CODEC_RESERVED = 6,
|
||
|
MSM_ADSP_CODEC_MIDI = 7,
|
||
|
MSM_ADSP_CODEC_YADPCM = 8,
|
||
|
MSM_ADSP_CODEC_QCELP = 9,
|
||
|
MSM_ADSP_CODEC_AMRNB = 10,
|
||
|
MSM_ADSP_CODEC_AMRWB = 11,
|
||
|
MSM_ADSP_CODEC_EVRC = 12,
|
||
|
MSM_ADSP_CODEC_WMAPRO = 13,
|
||
|
MSM_ADSP_MODE_TUNNEL = 24,
|
||
|
MSM_ADSP_MODE_NONTUNNEL = 25,
|
||
|
MSM_ADSP_MODE_LP = 26,
|
||
|
MSM_ADSP_OP_DMA = 28,
|
||
|
MSM_ADSP_OP_DM = 29,
|
||
|
};
|
||
|
|
||
|
struct msm_adspdec_info {
|
||
|
const char *module_name;
|
||
|
unsigned module_queueid;
|
||
|
int module_decid; /* objid */
|
||
|
unsigned nr_codec_support;
|
||
|
};
|
||
|
|
||
|
/* Carries information about number codec
|
||
|
* supported if same codec or different codecs
|
||
|
*/
|
||
|
struct dec_instance_table {
|
||
|
uint8_t max_instances_same_dec;
|
||
|
uint8_t max_instances_diff_dec;
|
||
|
};
|
||
|
|
||
|
struct msm_adspdec_database {
|
||
|
unsigned num_dec;
|
||
|
unsigned num_concurrency_support;
|
||
|
unsigned int *dec_concurrency_table; /* Bit masked entry to *
|
||
|
* represents codec, mode etc */
|
||
|
struct msm_adspdec_info *dec_info_list;
|
||
|
struct dec_instance_table *dec_instance_list;
|
||
|
};
|
||
|
|
||
|
/* common init routines for use by arch/arm/mach-msm/board-*.c */
|
||
|
void __init msm_add_devices(void);
|
||
|
void __init msm_map_common_io(void);
|
||
|
void __init msm_init_irq(void);
|
||
|
void __init msm_clock_init(void);
|
||
|
void __init msm_acpu_clock_init(struct msm_acpu_clock_platform_data *);
|
||
|
|
||
|
#if defined(CONFIG_MSM_RMT_STORAGE_SERVER)
|
||
|
struct shared_ramfs_entry {
|
||
|
uint32_t client_id; /* Client id to uniquely identify a client */
|
||
|
uint32_t base_addr; /* Base address of shared RAMFS memory */
|
||
|
uint32_t size; /* Size of the shared RAMFS memory */
|
||
|
uint32_t server_status; /* This will be initialized to 1 when
|
||
|
remote storage RPC server is available */
|
||
|
};
|
||
|
struct shared_ramfs_table {
|
||
|
uint32_t magic_id; /* Identify RAMFS details in SMEM */
|
||
|
uint32_t version; /* Version of shared_ramfs_table */
|
||
|
uint32_t entries; /* Total number of valid entries */
|
||
|
struct shared_ramfs_entry ramfs_entry[3]; /* List all entries */
|
||
|
};
|
||
|
|
||
|
int __init rmt_storage_add_ramfs(void);
|
||
|
#endif
|
||
|
|
||
|
#if defined(CONFIG_USB_FUNCTION_MSM_HSUSB) || defined(CONFIG_USB_MSM_72K)
|
||
|
void msm_hsusb_set_vbus_state(int online);
|
||
|
/* START: add USB connected notify function */
|
||
|
struct t_usb_status_notifier{
|
||
|
struct list_head notifier_link;
|
||
|
const char *name;
|
||
|
void (*func)(int online);
|
||
|
};
|
||
|
int usb_register_notifier(struct t_usb_status_notifier *);
|
||
|
static LIST_HEAD(g_lh_usb_notifier_list);
|
||
|
/* END: add USB connected notify function */
|
||
|
#else
|
||
|
static inline void msm_hsusb_set_vbus_state(int online) {}
|
||
|
#endif
|
||
|
|
||
|
int __init parse_tag_skuid(const struct tag *tags);
|
||
|
int __init parse_tag_engineerid(const struct tag *tags);
|
||
|
int board_mfg_mode(void);
|
||
|
void __init msm_snddev_init(void);
|
||
|
void msm_snddev_poweramp_on(void);
|
||
|
void msm_snddev_poweramp_off(void);
|
||
|
void msm_snddev_hsed_pamp_on(void);
|
||
|
void msm_snddev_hsed_pamp_off(void);
|
||
|
void msm_snddev_tx_route_config(void);
|
||
|
void msm_snddev_tx_route_deconfig(void);
|
||
|
|
||
|
extern int emmc_partition_read_proc(char *page, char **start, off_t off,
|
||
|
int count, int *eof, void *data);
|
||
|
|
||
|
#endif
|