1/* 2 * Copyright (c) 2020 HiSilicon (Shanghai) Technologies CO., LIMITED. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16#include <stdio.h> 17#include "asm/io.h" 18#include "hi_module_param.h" 19 20#include "stdlib.h" 21#include "fcntl.h" 22#include "string.h" 23#include "board.h" 24 25#ifdef __cplusplus 26#if __cplusplus 27extern "C" { 28#endif 29#endif /* End of #ifdef __cplusplus */ 30 31#define SENSOR_NAME_LEN 64 32#define CHIP_NAME_LEN 64 33#define BOARD_NAME_LEN 64 34 35static unsigned long long g_mmz_start = 0x42000000; 36static unsigned int g_mmz_size = 32; /* M Byte */ 37static char g_chip_name[CHIP_NAME_LEN] = "hi3518ev300"; /* hi3518ev300 */ 38static char g_sensor_name[SENSOR_NAME_LEN] = "f23"; /* f23 */ 39static char g_board_name[BOARD_NAME_LEN] = "demo"; /* demo sck */ 40 41static void CHIP_init(void) 42{ 43 return; 44} 45 46static int SYSCONFIG_init(void) 47{ 48 extern int hi_sysconfig_init(void); 49 extern int g_quick_start_flag; 50 extern int g_online_flag; 51 extern int g_cmos_yuv_flag; 52 extern char g_sensor_list[SENSOR_NAME_LEN]; 53 extern char g_chip_list[CHIP_NAME_LEN]; 54 extern char g_board_list[BOARD_NAME_LEN]; 55 56 g_quick_start_flag = 0; 57 g_online_flag = 0; 58 g_cmos_yuv_flag = 0; 59 strncpy(g_chip_list, g_chip_name, CHIP_NAME_LEN); 60 strncpy(g_sensor_list, g_sensor_name, SENSOR_NAME_LEN); 61 strncpy(g_board_list, g_board_name, BOARD_NAME_LEN); 62 63 return hi_sysconfig_init(); 64} 65 66 67static int MMZ_init(void) 68{ 69 extern int media_mem_init(void *pArgs); 70 MMZ_SETUP_MODULE_PARAMS_S stMMZ_Param = {0}; 71 72 snprintf(stMMZ_Param.mmz, MMZ_SETUP_CMDLINE_LENGTH, "anonymous,0,0x%llx,%dM", g_mmz_start, g_mmz_size); 73 74 stMMZ_Param.anony = 1; 75 76 dprintf("g_mmz_start=0x%llx, g_mmz_size=0x%x\n", g_mmz_start, g_mmz_size); 77 dprintf("mmz param= %s\n", stMMZ_Param.mmz); 78 79 return media_mem_init(&stMMZ_Param); 80} 81 82static int BASE_init(void) 83{ 84 extern void base_get_module_param(void *pArgs); 85 extern int base_mod_init(void *pArgs); 86 87 BASE_MODULE_PARAMS_S stBaseModuleParam; 88 base_get_module_param(&stBaseModuleParam); 89 90 return base_mod_init(&stBaseModuleParam); 91} 92 93static int SYS_init(void) 94{ 95 extern int sys_mod_init(void); 96 97 return sys_mod_init(); 98} 99 100static int RGN_init(void) 101{ 102 extern int rgn_mod_init(void); 103 104 return rgn_mod_init(); 105} 106 107static int ISP_init(void) 108{ 109 extern int isp_mod_init(void); 110 111 return isp_mod_init(); 112} 113 114static int VI_init(void) 115{ 116 extern int vi_mod_init(void); 117 118 return vi_mod_init(); 119} 120 121static int VGS_init(void) 122{ 123 extern void vgs_get_module_param(void *pArgs); 124 extern int vgs_mod_init(void *pArgs); 125 126 VGS_MODULE_PARAMS_S stVgsModuleParam; 127 128 vgs_get_module_param((void*)&stVgsModuleParam); 129 stVgsModuleParam.u32MaxVgsJob = 64; /* 64 -- max job num */ 130 stVgsModuleParam.u32MaxVgsTask = 100; /* 100 -- max task num */ 131 stVgsModuleParam.u32MaxVgsNode = 100; /* 100 -- max node num */ 132 133 return vgs_mod_init(&stVgsModuleParam); 134} 135 136static int IVE_init(void) 137{ 138 extern int ive_mod_init(void *pArgs); 139 extern void ive_get_module_param(void *pArgs); 140 141 IVE_MODULE_PARAMS_S stIveModuleParam; 142 ive_get_module_param((void*)&stIveModuleParam); 143 stIveModuleParam.bSavePowerEn = HI_TRUE; 144 stIveModuleParam.u16IveNodeNum = 512; /* 512 -- node num */ 145 return ive_mod_init(&stIveModuleParam); 146} 147 148static int VPSS_init(void) 149{ 150 extern void vpss_get_module_param(void *pArgs); 151 extern int vpss_mod_init(void *pArgs); 152 153 VPSS_MODULE_PARAMS_S stVpssModuleParam; 154 vpss_get_module_param((void*)&stVpssModuleParam); 155 156 return vpss_mod_init(&stVpssModuleParam); 157} 158 159static int VO_init(void) 160{ 161 extern int vou_module_init(void); 162 163 return vou_module_init(); 164} 165 166static int RC_init(void) 167{ 168 extern int rc_mod_init(void); 169 return rc_mod_init(); 170} 171 172static int VENC_init(void) 173{ 174 extern void venc_get_module_param(void *pArgs); 175 extern int venc_mod_init(void *pArgs); 176 177 VENC_MODULE_PARAMS_S stVencModuleParam; 178 venc_get_module_param((void*)&stVencModuleParam); 179 return venc_mod_init(&stVencModuleParam); 180} 181 182static int CHNL_init(void) 183{ 184 extern int chnl_mod_init(void); 185 return chnl_mod_init(); 186} 187 188static int VEDU_init(void) 189{ 190 extern int vedu_mod_init(void); 191 return vedu_mod_init(); 192} 193 194static int H264e_init(void) 195{ 196 extern int h264e_mod_init(void); 197 return h264e_mod_init(); 198} 199 200static int H265e_init(void) 201{ 202 extern int h265e_mod_init(void *pArgs); 203 return h265e_mod_init(NULL); 204} 205 206static int JPEGE_init(void) 207{ 208 extern int jpege_mod_init(void); 209 return jpege_mod_init(); 210} 211 212static int hi_sensor_spi_init(void) 213{ 214 extern int sensor_spi_dev_init(void *pArgs); 215 return sensor_spi_dev_init(NULL); 216} 217 218static int hi_sensor_i2c_init(void) 219{ 220 extern int hi_dev_init(void); 221 return hi_dev_init(); 222} 223 224static int PWM_init(void) 225{ 226 return 0; 227} 228 229static int MIPI_RX_init(void) 230{ 231 extern int mipi_rx_mod_init(void); 232 return mipi_rx_mod_init(); 233} 234 235 236static int AcodecMod_init(void) 237{ 238 extern int acodec_mod_init(void *pArgs); 239 return acodec_mod_init(NULL); 240} 241 242static int AiaoMod_init(void) 243{ 244 extern int aiao_mod_init(void); 245 return aiao_mod_init(); 246} 247 248static int AiMod_init(void) 249{ 250 extern int ai_mod_init(void); 251 return ai_mod_init(); 252} 253 254static int AoMod_init(void) 255{ 256 extern int ao_mod_init(void *pArgs); 257 return ao_mod_init(NULL); 258} 259 260static int AencMod_init(void) 261{ 262 extern int aenc_mod_init(void *pArgs); 263 return aenc_mod_init(NULL); 264} 265 266static int AdecMod_init(void) 267{ 268 extern int adec_mod_init(void *pArgs); 269 return adec_mod_init(NULL); 270} 271 272static int Cipher_init(void) 273{ 274 extern int cipher_drv_mod_init(void); 275 return cipher_drv_mod_init(); 276} 277 278static int TDE_init(void) 279{ 280 extern int tde_mod_init(void); 281 return tde_mod_init(); 282} 283 284static void insert_audio(void) 285{ 286 int ret; 287 288 ret = AiaoMod_init(); 289 if (ret != 0) { 290 printf("aiao init error.\n"); 291 } 292 293 ret = AiMod_init(); 294 if (ret != 0) { 295 printf("ai init error.\n"); 296 } 297 298 ret = AoMod_init(); 299 if (ret != 0) { 300 printf("ao init error.\n"); 301 } 302 303 ret = AencMod_init(); 304 if (ret != 0) { 305 printf("aenc init error.\n"); 306 } 307 308 ret = AdecMod_init(); 309 if (ret != 0) { 310 printf("adec init error.\n"); 311 } 312 313 ret = AcodecMod_init(); 314 if (ret != 0) { 315 printf("acodec init error.\n"); 316 } 317 318 printf("insert audio\n"); 319} 320extern void osal_proc_init(void); 321extern int hifb_init(void* pArgs); 322 323 324static int HIFB_init(void) 325{ 326 HIFB_MODULE_PARAMS_S stHIFB_Param; 327 snprintf(stHIFB_Param.video, 64, "hifb:vram0_size:1620"); /* 64 -- str length */ 328 stHIFB_Param.bUpdateRotateRect = HI_FALSE; 329 return hifb_init(&stHIFB_Param); 330} 331 332static int PM_init(void) 333{ 334 return 0; 335} 336 337 338void SDK_init(void) 339{ 340 int ret; 341 342 CHIP_init(); 343 SYSCONFIG_init(); 344 osal_proc_init(); 345 346 ret = MMZ_init(); 347 if (ret != 0) { 348 printf("MMZ init error.\n"); 349 } 350 351 ret = BASE_init(); 352 if (ret != 0) { 353 printf("base init error.\n"); 354 } 355 356 ret = SYS_init(); 357 if (ret != 0) { 358 printf("sys init error.\n"); 359 } 360 361 ret = RGN_init(); 362 if (ret != 0) { 363 printf("rgn init error.\n"); 364 } 365 366 ret = VGS_init(); 367 if (ret != 0) { 368 printf("vgs init error.\n"); 369 } 370 371 ret = ISP_init(); 372 if (ret != 0) { 373 printf("isp init error.\n"); 374 } 375 376 ret = VI_init(); 377 if (ret != 0) { 378 printf("vi init error.\n"); 379 } 380 381 ret = VPSS_init(); 382 if (ret != 0) { 383 printf("vpss init error.\n"); 384 } 385 386 ret = VO_init(); 387 if (ret != 0) { 388 printf("vo init error.\n"); 389 } 390 391 ret = CHNL_init(); 392 if (ret != 0) { 393 printf("chnl init error.\n"); 394 } 395 396 ret = VEDU_init(); 397 if (ret != 0) { 398 printf("vedu init error.\n"); 399 } 400 401 ret = RC_init(); 402 if (ret != 0) { 403 printf("rc init error.\n"); 404 } 405 406 ret = VENC_init(); 407 if (ret != 0) { 408 printf("venc init error.\n"); 409 } 410 411 ret = H264e_init(); 412 if (ret != 0) { 413 printf("H264e init error.\n"); 414 } 415 416 ret = H265e_init(); 417 if (ret != 0) { 418 printf("H265e init error.\n"); 419 } 420 421 ret = JPEGE_init(); 422 if (ret != 0) { 423 printf("jpege init error.\n"); 424 } 425 426 ret = IVE_init(); 427 if (ret != 0) { 428 printf("ive init error.\n"); 429 } 430 insert_audio(); 431 432 ret = PWM_init(); 433 if (ret != 0) { 434 printf("pwm init error.\n"); 435 } 436 437#ifndef LOSCFG_DRIVERS_HDF_PLATFORM_SPI 438#ifdef LOSCFG_DRIVERS_SPI 439 dprintf("spi bus init ...\n"); 440 extern int spi_dev_init(void); 441 spi_dev_init(); 442#endif 443#endif 444 445#ifndef LOSCFG_DRIVERS_HDF_PLATFORM_I2C 446#ifdef LOSCFG_DRIVERS_I2C 447 dprintf("i2c bus init ...\n"); 448 extern int i2c_dev_init(void); 449 i2c_dev_init(); 450#endif 451#endif 452 453 ret = hi_sensor_spi_init(); 454 if (ret != 0) { 455 printf("sensor spi init error.\n"); 456 } 457 458 ret = Cipher_init(); 459 if (ret != 0) { 460 printf("cipher init error.\n"); 461 } 462 463 ret = MIPI_RX_init(); 464 if (ret != 0) { 465 printf("mipi_rx init error.\n"); 466 } 467 468 ret = hi_sensor_i2c_init(); 469 if (ret != 0) { 470 printf("sensor i2c init error.\n"); 471 } else { 472 printf("sensor i2c init OK.\n"); 473 } 474 475 ret = TDE_init(); 476 if (ret != 0) { 477 printf("TDE init error.\n"); 478 } 479 480 ret = HIFB_init(); 481 if (ret != 0) { 482 printf("HIFB_init error.\n"); 483 } 484 485 ret = PM_init(); 486 if (ret != 0) { 487 printf("PM_init error.\n"); 488 } 489 490 printf("SDK init ok...\n"); 491} 492 493 494#ifdef __cplusplus 495#if __cplusplus 496} 497#endif 498#endif /* End of #ifdef __cplusplus */ 499