| /* |
| *FM radio driver kernel module insmod file for wmt dynamic loader |
| */ |
| #include <stdlib.h> |
| #include <stdio.h> |
| #include <fcntl.h> |
| #include <errno.h> |
| #include <unistd.h> |
| #include <cutils/misc.h> |
| |
| //For directory operation |
| #include <dirent.h> |
| |
| #define FMR_MODULES_PATH "/system/lib/modules/mtk_fm_drv.ko" |
| extern int load_fm_module(int chip_id); |
| extern int init_module(void *, unsigned long, const char *); |
| |
| //insmod |
| static int insmod(const char *filename, const char *args) |
| { |
| void *module; |
| unsigned int size; |
| int ret = -1; |
| int retry = 10; |
| |
| printf("filename(%s)\n",filename); |
| |
| module = load_file(filename, &size); |
| if (!module) |
| { |
| printf("load file fail\n"); |
| return -1; |
| } |
| |
| while(retry-- > 0){ |
| ret = init_module(module, size, args); |
| |
| if(ret < 0) |
| { |
| printf("insmod module fail(%d)\n",ret); |
| usleep(10000); |
| } |
| else |
| break; |
| |
| } |
| |
| free(module); |
| |
| return ret; |
| } |
| |
| int load_fm_module(int chip_id) |
| { |
| int ret=-1; |
| ret = insmod(FMR_MODULES_PATH, ""); |
| if(ret) |
| { |
| printf("insert mtk_fm_drv.ko fail(%d)\n",ret); |
| } |
| else |
| { |
| printf("insert mtk_fm_drv.ko ok\n"); |
| } |
| return ret; |
| } |
| |