]>
Commit | Line | Data |
---|---|---|
caff4cae IM |
1 | /* arch/arm/mach-msm/adsp_info.c |
2 | * | |
3 | * Copyright (c) 2008 QUALCOMM Incorporated. | |
4 | * Copyright (c) 2008 QUALCOMM USA, INC. | |
5 | * | |
6 | * This software is licensed under the terms of the GNU General Public | |
7 | * License version 2, as published by the Free Software Foundation, and | |
8 | * may be copied, distributed, and modified under those terms. | |
9 | * | |
10 | * This program is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
13 | * GNU General Public License for more details. | |
14 | * | |
15 | */ | |
16 | ||
17 | #include "adsp.h" | |
18 | ||
19 | /* Firmware modules */ | |
20 | #define QDSP_MODULE_KERNEL 0x0106dd4e | |
21 | #define QDSP_MODULE_AFETASK 0x0106dd6f | |
22 | #define QDSP_MODULE_AUDPLAY0TASK 0x0106dd70 | |
23 | #define QDSP_MODULE_AUDPLAY1TASK 0x0106dd71 | |
24 | #define QDSP_MODULE_AUDPPTASK 0x0106dd72 | |
25 | #define QDSP_MODULE_VIDEOTASK 0x0106dd73 | |
26 | #define QDSP_MODULE_VIDEO_AAC_VOC 0x0106dd74 | |
27 | #define QDSP_MODULE_PCM_DEC 0x0106dd75 | |
28 | #define QDSP_MODULE_AUDIO_DEC_MP3 0x0106dd76 | |
29 | #define QDSP_MODULE_AUDIO_DEC_AAC 0x0106dd77 | |
30 | #define QDSP_MODULE_AUDIO_DEC_WMA 0x0106dd78 | |
31 | #define QDSP_MODULE_HOSTPCM 0x0106dd79 | |
32 | #define QDSP_MODULE_DTMF 0x0106dd7a | |
33 | #define QDSP_MODULE_AUDRECTASK 0x0106dd7b | |
34 | #define QDSP_MODULE_AUDPREPROCTASK 0x0106dd7c | |
35 | #define QDSP_MODULE_SBC_ENC 0x0106dd7d | |
36 | #define QDSP_MODULE_VOC_UMTS 0x0106dd9a | |
37 | #define QDSP_MODULE_VOC_CDMA 0x0106dd98 | |
38 | #define QDSP_MODULE_VOC_PCM 0x0106dd7f | |
39 | #define QDSP_MODULE_VOCENCTASK 0x0106dd80 | |
40 | #define QDSP_MODULE_VOCDECTASK 0x0106dd81 | |
41 | #define QDSP_MODULE_VOICEPROCTASK 0x0106dd82 | |
42 | #define QDSP_MODULE_VIDEOENCTASK 0x0106dd83 | |
43 | #define QDSP_MODULE_VFETASK 0x0106dd84 | |
44 | #define QDSP_MODULE_WAV_ENC 0x0106dd85 | |
45 | #define QDSP_MODULE_AACLC_ENC 0x0106dd86 | |
46 | #define QDSP_MODULE_VIDEO_AMR 0x0106dd87 | |
47 | #define QDSP_MODULE_VOC_AMR 0x0106dd88 | |
48 | #define QDSP_MODULE_VOC_EVRC 0x0106dd89 | |
49 | #define QDSP_MODULE_VOC_13K 0x0106dd8a | |
50 | #define QDSP_MODULE_VOC_FGV 0x0106dd8b | |
51 | #define QDSP_MODULE_DIAGTASK 0x0106dd8c | |
52 | #define QDSP_MODULE_JPEGTASK 0x0106dd8d | |
53 | #define QDSP_MODULE_LPMTASK 0x0106dd8e | |
54 | #define QDSP_MODULE_QCAMTASK 0x0106dd8f | |
55 | #define QDSP_MODULE_MODMATHTASK 0x0106dd90 | |
56 | #define QDSP_MODULE_AUDPLAY2TASK 0x0106dd91 | |
57 | #define QDSP_MODULE_AUDPLAY3TASK 0x0106dd92 | |
58 | #define QDSP_MODULE_AUDPLAY4TASK 0x0106dd93 | |
59 | #define QDSP_MODULE_GRAPHICSTASK 0x0106dd94 | |
60 | #define QDSP_MODULE_MIDI 0x0106dd95 | |
61 | #define QDSP_MODULE_GAUDIO 0x0106dd96 | |
62 | #define QDSP_MODULE_VDEC_LP_MODE 0x0106dd97 | |
63 | #define QDSP_MODULE_MAX 0x7fffffff | |
64 | ||
65 | /* DO NOT USE: Force this enum to be a 32bit type to improve speed */ | |
66 | #define QDSP_MODULE_32BIT_DUMMY 0x10000 | |
67 | ||
68 | static uint32_t *qdsp_task_to_module[IMG_MAX]; | |
69 | static uint32_t *qdsp_queue_offset_table[IMG_MAX]; | |
70 | ||
71 | #define QDSP_MODULE(n, clkname, clkrate, verify_cmd_func, patch_event_func) \ | |
72 | { .name = #n, .pdev_name = "adsp_" #n, .id = QDSP_MODULE_##n, \ | |
73 | .clk_name = clkname, .clk_rate = clkrate, \ | |
74 | .verify_cmd = verify_cmd_func, .patch_event = patch_event_func } | |
75 | ||
76 | static struct adsp_module_info module_info[] = { | |
77 | QDSP_MODULE(AUDPLAY0TASK, NULL, 0, NULL, NULL), | |
78 | QDSP_MODULE(AUDPPTASK, NULL, 0, NULL, NULL), | |
79 | QDSP_MODULE(AUDRECTASK, NULL, 0, NULL, NULL), | |
80 | QDSP_MODULE(AUDPREPROCTASK, NULL, 0, NULL, NULL), | |
81 | QDSP_MODULE(VFETASK, "vfe_clk", 0, adsp_vfe_verify_cmd, | |
82 | adsp_vfe_patch_event), | |
83 | QDSP_MODULE(QCAMTASK, NULL, 0, NULL, NULL), | |
84 | QDSP_MODULE(LPMTASK, NULL, 0, adsp_lpm_verify_cmd, NULL), | |
85 | QDSP_MODULE(JPEGTASK, "vdc_clk", 96000000, adsp_jpeg_verify_cmd, | |
86 | adsp_jpeg_patch_event), | |
87 | QDSP_MODULE(VIDEOTASK, "vdc_clk", 96000000, | |
88 | adsp_video_verify_cmd, NULL), | |
89 | QDSP_MODULE(VDEC_LP_MODE, NULL, 0, NULL, NULL), | |
90 | QDSP_MODULE(VIDEOENCTASK, "vdc_clk", 96000000, | |
91 | adsp_videoenc_verify_cmd, NULL), | |
92 | }; | |
93 | ||
94 | int adsp_init_info(struct adsp_info *info) | |
95 | { | |
96 | uint32_t img_num; | |
97 | ||
98 | info->send_irq = 0x00c00200; | |
99 | info->read_ctrl = 0x00400038; | |
100 | info->write_ctrl = 0x00400034; | |
101 | ||
102 | info->max_msg16_size = 193; | |
103 | info->max_msg32_size = 8; | |
104 | for (img_num = 0; img_num < IMG_MAX; img_num++) | |
105 | qdsp_queue_offset_table[img_num] = | |
106 | &info->init_info_ptr->queue_offsets[img_num][0]; | |
107 | ||
108 | for (img_num = 0; img_num < IMG_MAX; img_num++) | |
109 | qdsp_task_to_module[img_num] = | |
110 | &info->init_info_ptr->task_to_module_tbl[img_num][0]; | |
111 | info->max_task_id = 30; | |
112 | info->max_module_id = QDSP_MODULE_MAX - 1; | |
113 | info->max_queue_id = QDSP_MAX_NUM_QUEUES; | |
114 | info->max_image_id = 2; | |
115 | info->queue_offset = qdsp_queue_offset_table; | |
116 | info->task_to_module = qdsp_task_to_module; | |
117 | ||
118 | info->module_count = ARRAY_SIZE(module_info); | |
119 | info->module = module_info; | |
120 | return 0; | |
121 | } |