/* Copyright (c) 2011, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and * only version 2 as published by the Free Software Foundation. * * 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 _MSM_DSPS_H_ #define _MSM_DSPS_H_ #include #include #include #define DSPS_SIGNATURE 0x12345678 /** * DSPS Clocks Platform data. * * @name - clock name. * @rate - rate to set. zero if not relevant. * @clock - clock handle, reserved for the driver. */ struct dsps_clk_info { const char *name; u32 rate; struct clk *clock; }; /** * DSPS GPIOs Platform data. * * @name - clock name. * @num - GPIO number. * @on_val - value to ouptput for ON (depends on polarity). * @off_val - value to ouptput for OFF (depends on polarity). * @is_owner - reserved for the driver. */ struct dsps_gpio_info { const char *name; int num; int on_val; int off_val; int is_owner; }; /** * DSPS Power regulators Platform data. * * @name - regulator name. * @volt - required voltage (in uV). * @reg - reserved for the driver. */ struct dsps_regulator_info { const char *name; int volt; struct regulator *reg; }; /** * DSPS Platform data. * * @pil_name - peripheral image name * @clks - array of clocks. * @clks_num - number of clocks in array. * @gpios - array of gpios. * @gpios_num - number of gpios. * @regs - array of regulators. * @regs_num - number of regulators. * @dsps_pwr_ctl_en - to enable DSPS to do power control if set 1 * otherwise the apps will do power control * @tcm_code_start - start of the TCM code region as physical address * @tcm_code_size - size of the TCM code region in bytes * @tcm_buf_start - start of the TCM buf region as physical address * @tcm_buf_size - size of the TCM buf region in bytes * @pipe_start - start of the PIPE region as physical address * @pipe_size - size of the PIPE region in bytes * @ddr_start - start of the DDR region as physical address * @ddr_size - size of the DDR region in bytes * @smem_start - start of the smem region as physical address * @smem_size - size of the smem region in bytes * @ppss_pause_reg - Offset to the PPSS_PAUSE register * @ppss_wdog_unmasked_int_en_reg - Offset to PPSS_WDOG_UNMASKED_INT_EN register * @signature - signature for validity check. */ struct msm_dsps_platform_data { const char *pil_name; struct dsps_clk_info *clks; int clks_num; struct dsps_gpio_info *gpios; int gpios_num; struct dsps_regulator_info *regs; int regs_num; int dsps_pwr_ctl_en; void (*init)(struct msm_dsps_platform_data *data); int tcm_code_start; int tcm_code_size; int tcm_buf_start; int tcm_buf_size; int pipe_start; int pipe_size; int ddr_start; int ddr_size; int smem_start; int smem_size; int ppss_pause_reg; int ppss_wdog_unmasked_int_en_reg; u32 signature; }; #endif /* _MSM_DSPS_H_ */