module_platform_driver 与 module_init

https://blog.csdn.net/m0_37765662/article/details/106490792

在linux内核源码中,我们经常看到module_platform_driver 与 module_init这两个宏定义,有时候在这个驱动中用module_platform_driver,有时候用module_init,那这两个宏定义之间有什么差异吗?还是说可以随便用呢?这就需要我们旭跟踪代码,来看看这两个宏定义到底什么东西?
首先,介绍下module_init,module_init对于做驱动的人应该不陌生,linux内核是一个宏内核,宏内核就是驱动和内核打包在一起的。由于驱动是作为内核模块挂载在内核上的,而内核对于模块的接口就是module_init和module_exit,所以你要加载一个内核模块的时候,必须使用module_init来进行,而卸载一个内核模块的时候,必须使用module_exit来进行。例如:

module_init(xxxx_init);       //加载xxxx模块
module_exit(xxxx_exit);     //卸载xxxx模块

那是不是就有一个疑问了,既然是所有模块都是通过这两个函数来进行加载和卸载的,那应该所有驱动都用module_init函数啊,为什么还会有module_platform_driver?这不是多此一举吗?醒醒吧,少年,Linux社区那么多大神在更新,会出现这种错误吗?
那么我们先看看module_platform_driver的宏定义是个啥?

#define module_platform_driver(__platform_driver) \
	module_driver(__platform_driver, platform_driver_register, \
			platform_driver_unregister)
#define module_driver(__driver, __register, __unregister, ...) \
static int __init __driver##_init(void) \
{ \
	return __register(&(__driver) , ##__VA_ARGS__); \
} \
module_init(__driver##_init); \
static void __exit __driver##_exit(void) \
{ \
	__unregister(&(__driver) , ##__VA_ARGS__); \
} \
module_exit(__driver##_exit);

从代码中看到,module_platform_driver 追根溯源,发现最终还是调用了module_init,但是,又不仅仅是调用了module_init,还调用了platform_driver_register和platform_driver_unregister,这两个函数的作用就是注册和卸载平台驱动。
一般某个设备或某个控制器挂载在处理器上时,肯定是通过某种总线来连接的,比喻说常见总线有SPI总线、IIC总线等等,但控制器一般是通过内部总线挂载处理器端的,对于这一类设备,linux抽象出了一个平台总线,来包含所有的处理器总线挂载的设备。而这类总线需要注册到内核中去,就需要用platform_driver_register来实现,平台总线是抽象出来的,所以所有通过总线直接连在处理器上的设备是不需要关心平台总线怎么运作的,因此这个平台总线的注册和注销都是通用的,所以在加载总线设备驱动时,直接调用module_platform_driver,就可以将平台驱动注册函数和卸载函数、以及总线设备加载一次性运行完,避免了总线驱动在每次加载驱动时都需要手动注册平台总线。

其实说了这么多,module_platform_driver就是对module_init进一步的封装,在module_init之外添加了一些功能,对于平台总线设备而言,直接调用module_platform_driver就可以避免在module_init函数中去注册平台驱动了,使得平台设备驱动的加载变得更方便了。
那是不是说module_init可以与module_platform_driver就可以通用呢?当然不是,能用module_platform_driver的地方肯定可以用module_init,但能用module_init却不一定能用module_platform_driver,这主要看设备是不是通过平台总线的方式挂载处理器上的。

在这里插入图片描述
对于平台总线设备,可以用两种方法来加载

static int __init xxxx_init(void)
{
	return platform_driver_register(&xxxx_driver);
}
 
static void __exit xxxx_exit(void)
{
	platform_driver_unregister(&xxxx_driver);
}
 
module_init(xxxx_init);
module_exit(xxxx_exit);
module_platform_driver(xxxx_driver);

这两种方式的效果是一样的,但明显module_platform_driver比较简洁。

但对于其他总线的设备,就不能使用module_platform_driver了,必须使用module_init,在module_init函数中再注册一遍其他总线,例如SPI总线设备。

static int __init spidev_init(void)
{
	int status;
 
	/* Claim our 256 reserved device numbers.  Then register a class
	 * that will key udev/mdev to add/remove /dev nodes.  Last, register
	 * the driver which manages those device numbers.
	 */
	BUILD_BUG_ON(N_SPI_MINORS > 256);
	status = register_chrdev(SPIDEV_MAJOR, "spi", &spidev_fops);
	if (status < 0)
		return status;
 
	spidev_class = class_create(THIS_MODULE, "spidev");
	if (IS_ERR(spidev_class)) {
		unregister_chrdev(SPIDEV_MAJOR, spidev_spi_driver.driver.name);
		return PTR_ERR(spidev_class);
	}
 
	status = spi_register_driver(&spidev_spi_driver);
	if (status < 0) {
		class_destroy(spidev_class);
		unregister_chrdev(SPIDEV_MAJOR, spidev_spi_driver.driver.name);
	}
	return status;
}
module_init(spidev_init);
 
static void __exit spidev_exit(void)
{
	spi_unregister_driver(&spidev_spi_driver);
	class_destroy(spidev_class);
	unregister_chrdev(SPIDEV_MAJOR, spidev_spi_driver.driver.name);
}
module_exit(spidev_exit);

还有一种情况不能使用module_platform_driver,就是我们编写的驱动程序要使用之前某个驱动程序的功能时,就不能使用module_platform_driver,因为如果都使用module_platform_driver,内核编译链接时,并不知道哪个驱动程序会被链接再前面,也就不知道哪个驱动程序会先执行,如果使用自定义的驱动(使用其他驱动程序功能的程序)先执行,而其他驱动还未进行初始化,就会出现难以预料的问题,所以这种情况下就必须使用late_initcall。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
调通sina33m下的RTL8188EU版本 大文实验室/大文哥 壹捌陆捌零陆捌捌陆捌贰 wb4916 AT qq.com 完成时间:2017/7/7 18:11 版本:V1.0 SDK:Android6.0.1 开发板:SC3817R 1、干掉设置中的BT蓝牙选项: R:\wyb\rtl8188eu_sina33m_sc3817\android\device\softwinner\astar-d7\overlay\frameworks\base\core\res\res\values\config.xml <!-- List of regexpressions describing the interface (if any) that represent tetherable bluetooth interfaces. If the device doesn't want to support tethering over bluetooth this should be empty. --> <!-- default: disable Bluetooth PAN feature --> <string-array translatable="false" name="config_tether_bluetooth_regexs"> <item>"bt-pan"</item> </string-array> 2、干掉BT(特别是rtl8723bs的): R:\wyb\rtl8188eu_sina33m_sc3817\android\device\softwinner\astar-d7\astar_d7.mk PRODUCT_PACKAGES += Launcher3 PRODUCT_PACKAGES += \ ESFileExplorer \ VideoPlayer #Bluetooth PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.hardware.camera.xml:system/etc/permissions/android.hardware.camera.xml \ frameworks/native/data/etc/android.hardware.camera.front.xml:system/etc/permissions/android.hardware.camera.front.xml \ frameworks/native/data/etc/android.hardware.ethernet.xml:system/etc/permissions/android.hardware.ethernet.xml \ frameworks/native/data/etc/android.hardware.wifi.xml:system/etc/permissions/android.hardware.wifi.xml \ frameworks/native/data/etc/android.hardware.wifi.direct.xml:system/etc/permissions/android.hardware.wifi.direct.xml #frameworks/native/data/etc/android.hardware.bluetooth.xml:system/etc/permissions/android.hardware.bluetooth.xml \ #frameworks/native/data/etc/android.hardware.bluetooth_le.xml:system/etc/permissions/android.hardware.bluetooth_le.xml #PRODUCT_COPY_FILES += \ # device/softwinner/astar-d7/bluetooth/bt_vendor.conf:system/etc/bluetooth/bt_vendor.conf # bootanimation PRODUCT_COPY_FILES += \ device/softwinner/astar-d7/media/bootanimation.zip:system/media/bootanimation.zip # camera config for camera detector #PRODUCT_COPY_FILES += \ # device/softwinner/astar-d7/hawkview/sensor_list_cfg.ini:system/etc/hawkview/sensor_list_cfg.ini PRODUCT_PROPERTY_OVERRIDES += \ persist.sys.usb.config=mass_storage,adb \ ro.adb.secure=0 \ ro.sys.mutedrm=true \ rw.logger=0 #$(call inherit-product-if-exists, vendor/google/products/gms_base.mk) #for 8723bs-vq0,should setmacaddr #PRODUCT_PACKAGES += setmacaddr #for 8723bs-vq0,should setbtmacaddr #PRODUCT_PACKAGES += setbtmacaddr 3、 R:\wyb\rtl8188eu_sina33m_sc3817\android\device\softwinner\astar-d7\BoardConfig.mk BOARD_WIFI_VENDOR := realtek ifeq ($(BOARD_WIFI_VENDOR), realtek) WPA_SUPPLICANT_VERSION := VER_0_8_X BOARD_WPA_SUPPLICANT_DRIVER := NL80211 BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_rtl BOARD_HOSTAPD_DRIVER := NL80211 BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_rtl #BOARD_USR_WIFI := rtl8723bs BOARD_USR_WIFI := rtl8188eu include hardware/realtek/wlan/config/config.mk endif # 1.2 broadcom wifi support # BOARD_USR_WIFI:ap6181/ap6210/ap6212/ap6330/ap6335 #BOARD_WIFI_VENDOR := broadcom ifeq ($(BOARD_WIFI_VENDOR), broadcom) BOARD_WPA_SUPPLICANT_DRIVER := NL80211 WPA_SUPPLICANT_VERSION := VER_0_8_X BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_bcmdhd BOARD_HOSTAPD_DRIVER := NL80211 BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_bcmdhd BOARD_WLAN_DEVICE := bcmdhd WIFI_DRIVER_FW_PATH_PARAM := "/sys/module/bcmdhd/parameters/firmware_path" BOARD_USR_WIFI := ap6212 include hardware/broadcom/wlan/bcmdhd/firmware/$(BOARD_USR_WIFI)/device-bcm.mk endif # 2. Bluetooth Configuration # make sure BOARD_HAVE_BLUETOOTH is true for every bt vendor # BOARD_HAVE_BLUETOOTH_NAME:rtl8723bs/rtl8723bs_vq0/rtl8723cs/ap6210/ap6212/ap6330/ap6335/ #BOARD_HAVE_BLUETOOTH := true # #BOARD_HAVE_BLUETOOTH_BCM := true #BOARD_HAVE_BLUETOOTH_NAME := ap6212 # ##BOARD_HAVE_BLUETOOTH_RTK_COEX := true ##BOARD_HAVE_BLUETOOTH_RTK := true ##BLUETOOTH_HCI_USE_RTK_H5 := true # #BOARD_BLUETOOTH_BDROID_BUILDCFG_INCLUDE_DIR := device/softwinner/astar-d7/bluetooth 4、(干掉AP6212,打开RTL8188EU:) R:\wyb\rtl8188eu_sina33m_sc3817\android\device\softwinner\astar-d7\init.sun8i.rc # tp & sensors init_dev_detect # network #insmod /system/vendor/modules/bcmdhd.ko #insmod /system/vendor/modules/bcm_btlpm.ko insmod /system/vendor/modules/usbnet.ko insmod /system/vendor/modules/asix.ko insmod /system/vendor/modules/qf9700.ko #insmod /system/vendor/modules/mcs7830.ko #insmod /system/vendor/modules/smsc95xx.ko insmod /system/vendor/modules/rtl8152.ko #insmod /system/vendor/modules/cdc_ether.ko # bluetooth MAC address programming #chown bluetooth net_bt_stack ro.bt.bdaddr_path #chown bluetooth net_bt_stack /system/etc/bluetooth #chown bluetooth net_bt_stack /data/misc/bluetooth #setprop ro.bt.bdaddr_path "/data/misc/bluetooth/bdaddr" ## bluetooth ## UART device #chmod 0660 /dev/ttyS1 #chown bluetooth net_bt_stack /dev/ttyS1 # ## power up/down interface #chmod 0660 /sys/class/rfkill/rfkill0/state #chmod 0660 /sys/class/rfkill/rfkill0/type #chown bluetooth net_bt_stack /sys/class/rfkill/rfkill0/state #chown bluetooth net_bt_stack /sys/class/rfkill/rfkill0/type # # ## bluetooth LPM #chmod 0220 /proc/bluetooth/sleep/lpm #chmod 0220 /proc/bluetooth/sleep/btwrite #chown bluetooth net_bt_stack /proc/bluetooth/sleep/lpm #chown bluetooth net_bt_stack /proc/bluetooth/sleep/btwrite #write /proc/bluetooth/sleep/lpm 1 (使用的是android4.4.2的service:) # 1. realtek & eagle wifi service # 1.1 realtek & eagle wifi sta service service wpa_supplicant /system/bin/wpa_supplicant \ -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \ -O/data/misc/wifi/sockets \ -e/data/misc/wifi/entropy.bin -g@android:wpa_wlan0 # we will start as root and wpa_supplicant will switch to user wifi # after setting up the capabilities required for WEXT # user wifi # group wifi inet keystore class main socket wpa_wlan0 dgram 660 wifi wifi disabled oneshot # 1.2 realtek & eagle wifi sta p2p concurrent service service p2p_supplicant /system/bin/wpa_supplicant \ -ip2p0 -Dnl80211 -c/data/misc/wifi/p2p_supplicant.conf \ -e/data/misc/wifi/entropy.bin -N \ -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \ -O/data/misc/wifi/sockets \ -g@android:wpa_wlan0 class main socket wpa_wlan0 dgram 660 wifi wifi disabled oneshot ## broadcom wifi service ## 1 broadcom wifi sta service #service wpa_supplicant /system/bin/wpa_supplicant \ # -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \ # -I/system/etc/wifi/wpa_supplicant_overlay.conf \ # -O/data/misc/wifi/sockets \ # -e/data/misc/wifi/entropy.bin -g@android:wpa_wlan0 # # we will start as root and wpa_supplicant will switch to user wifi # # after setting up the capabilities required for WEXT # # user wifi # # group wifi inet keystore # class main # socket wpa_wlan0 dgram 660 wifi wifi # disabled # oneshot # ## 2 broadcom wifi sta p2p concurrent service #service p2p_supplicant /system/bin/wpa_supplicant \ # -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \ # -I/system/etc/wifi/wpa_supplicant_overlay.conf \ # -O/data/misc/wifi/sockets -N \ # -ip2p0 -Dnl80211 -c/data/misc/wifi/p2p_supplicant.conf \ # -I/system/etc/wifi/p2p_supplicant_overlay.conf \ # -puse_p2p_group_interface=1 -e/data/misc/wifi/entropy.bin \ # -g@android:wpa_wlan0 # # we will start as root and wpa_supplicant will switch to user wifi # # after setting up the capabilities required for WEXT # # user wifi # # group wifi inet keystore # class main # socket wpa_wlan0 dgram 660 wifi wifi # disabled # oneshot 4、(可不用修改:) R:\wyb\rtl8188eu_sina33m_sc3817\android\device\softwinner\astar-d7\ueventd.sun8i.rc 5、(可选修改:) R:\wyb\rtl8188eu_sina33m_sc3817\android\frameworks\base\packages\SettingsProvider\res\values\defaults.xml <integer name="def_screen_off_timeout">1800000</integer> <bool name="def_lockscreen_disabled">true</bool> R:\wyb\rtl8188eu_sina33m_sc3817\android\packages\apps\Camera2\src\com\android\camera\CameraActivity.java 6、(可选修改:) R:\wyb\rtl8188eu_sina33m_sc3817\lichee\linux-3.4\arch\arm\mach-sunxi\rf\bt_pm.c R:\wyb\rtl8188eu_sina33m_sc3817\lichee\linux-3.4\arch\arm\mach-sunxi\rf\wifi_pm.c struct wifi_pm_ops wifi_select_pm_ops; static char* wifi_mod[] = {" ", "ap6181", /* 1 - AP6181*/ "ap6210", /* 2 - AP6210*/ "rtl8188eu", /* 3 - RTL8188EU*/ "rtl8723au", /* 4 - RTL8723AU*/ "rtl8723bs", /* 5 - RTL8723BS*/ "esp8089", /* 6 - ESP8089*/ "ap6476", /* 7 - AP6476*/ "rtl8189es", /* 8 - rtl8189es*/ "ap6212", /* 9 - AP6212*/ "ap6330", /* 10- AP6330*/ "gb9663", /* 11- GB9663*/ }; static int __devinit wifi_pm_probe(struct platform_device *pdev) { struct wifi_pm_ops *ops = &wifi_select_pm_ops; switch (ops->module_sel.val) { case 1: /* AP6181 */ ap6xxx_gpio_init(); break; case 2: /* AP6210 */ ap6xxx_gpio_init(); break; case 3: /* RTL8188EU */ rtl8188eu_gpio_init(); break; case 4: /* RTL8723AU */ rtl8723au_gpio_init(); break; case 5: /* RTL8723BS */ rtl8723bs_gpio_init(); break; case 6: /* ESP8089 */ esp8089_gpio_init(); break; case 7: /* AP6476 */ ap6xxx_gpio_init(); break; case 8: /* rtl8189es */ rtl8189es_gpio_init(); break; case 9: /* AP6212 */ ap6xxx_gpio_init(); break; default: wifi_pm_msg("wrong sdio module select %d !\n", ops->module_sel.val); } awwifi_procfs_attach(); wifi_pm_msg("wifi gpio init is OK !!\n"); return 0; } 7、 R:\wyb\rtl8188eu_sina33m_sc3817\lichee\tools\pack\chips\sun8iw5p1\configs\d7\sys_config.fex [power_sply] dcdc1_vol = 3000 dcdc2_vol = 1100 dcdc3_vol = 1200 dcdc4_vol = 0 dcdc5_vol = 1500 aldo1_vol = 3300 aldo2_vol = 2500 aldo3_vol = 3000 dldo1_vol = 3300 dldo2_vol = 3300 dldo3_vol = 2800 ;gpio0_vol = 2800 ldoio0_vol = 2800 [jtag_para] jtag_enable = 0 [dram_para] dram_clk = 552 ;---------------------------------------------------------------------------------- ;uart configuration ;uart_used = uart x enable ;uart_type = 2:2 wire,4:4 wire,8:8 wire, full function ;---------------------------------------------------------------------------------- [uart0] uart_used = 1 uart_port = 0 uart_type = 2 uart_tx = port:PF02<3><1><default><default> uart_rx = port:PF04<3><1><default><default> ;---------------------------------------------------------------------------------- ;capacitor tp configuration ;ctp_twi_id : twi controller ID ;ctp_twi_addr : I2C slave address, 7bit ;ctp_screen_max_x/_y : resolution of touch panel ;ctp_revert_x/_y_flag : whether need to revert x/y ;ctp_exchange_x_y_flag: whether need to exchange the value of x and y ;ctp_int_port : port for tp's interrupt signal ;ctp_wakeup : port for wakeup tp ;---------------------------------------------------------------------------------- [ctp_para] ctp_used = 1 ctp_name = "gt82x" ctp_twi_id = 0 ctp_twi_addr = 0x5d ctp_screen_max_x = 1280 ctp_screen_max_y = 800 ctp_revert_x_flag = 1 ctp_revert_y_flag = 1 ctp_exchange_x_y_flag = 1 ctp_int_port = port:PL04<4><default><default><default> ctp_wakeup = port:PL03<1><default><default><1> ctp_power_ldo = ctp_power_ldo_vol = ctp_power_io = ;-------------------------------------------------------------------------------- ; CTP automatic detection configuration ;ctp_detect_used --- Whether startup automatic inspection function. 1:used,0:unused ;Module name postposition 1 said detection, 0 means no detection. ;-------------------------------------------------------------------------------- [ctp_list_para] ctp_det_used = 1 ft5x_ts = 1 gt82x = 1 gslX680 = 1 gslX680new = 0 gt9xx_ts = 1 gt9xxf_ts = 0 tu_ts = 0 gt818_ts = 1 zet622x = 1 aw5306_ts = 1 icn83xx_ts = 0 ;---------------------------------------------------------------------------------- ;lcd0 configuration ;lcd_if: 0:hv(sync+de); 1:8080; 2:ttl; 3:lvds; 4:dsi; 5:edp; 6:extend dsi ;lcd_x: lcd horizontal resolution ;lcd_y: lcd vertical resolution ;lcd_width: width of lcd in mm ;lcd_height: height of lcd in mm ;lcd_dclk_freq: in MHZ unit ;lcd_pwm_freq: in HZ unit ;lcd_pwm_pol: lcd backlight PWM polarity ;lcd_pwm_max_limit lcd backlight PWM max limit(<=255) ;lcd_hbp: hsync back porch ;lcd_ht: hsync total cycle ;lcd_vbp: vsync back porch ;lcd_vt: vysnc total cycle ;lcd_hspw: hsync plus width ;lcd_vspw: vysnc plus width ;lcd_lvds_if: 0:single link; 1:dual link ;lcd_lvds_colordepth: 0:8bit; 1:6bit ;lcd_lvds_mode: 0:NS mode; 1:JEIDA mode ;lcd_frm: 0:disable; 1:enable rgb666 dither; 2:enable rgb656 dither ;lcd_io_phase: 0:noraml; 1:intert phase(0~3bit: vsync phase; 4~7bit:hsync phase; ; 8~11bit:dclk phase; 12~15bit:de phase) ;lcd_gamma_en lcd gamma correction enable ;lcd_bright_curve_en lcd bright curve correction enable ;lcd_cmap_en lcd color map function enable ;deu_mode 0:smoll lcd screen; 1:large lcd screen(larger than 10inch) ;lcdgamma4iep: Smart Backlight parameter, lcd gamma vale * 10; ; decrease it while lcd is not bright enough; increase while lcd is too bright ;smart_color 90:normal lcd screen 65:retina lcd screen(9.7inch) ;---------------------------------------------------------------------------------- [lcd0_para] lcd_used = 1 lcd_driver_name = "default_lcd" lcd_if = 3 lcd_x = 1280 lcd_y = 800 lcd_width = 150 lcd_height = 94 lcd_dclk_freq = 71 lcd_pwm_used = 1 lcd_pwm_ch = 0 lcd_pwm_freq = 50000 lcd_pwm_pol = 1 lcd_hbp = 20 lcd_ht = 1418 lcd_hspw = 10 lcd_vbp = 10 lcd_vt = 830 lcd_vspw = 5 lcd_lvds_if = 0 lcd_lvds_colordepth = 1 lcd_lvds_mode = 0 lcd_frm = 1 lcd_gamma_en = 0 lcd_bright_curve_en = 0 lcd_cmap_en = 0 deu_mode = 0 lcdgamma4iep = 22 smart_color = 90 lcd_bl_en = port:PD13<1><0><default><1> lcd_power = "axp22_dc1sw" lcdd0 = port:PD18<3><0><default><default> lcdd1 = port:PD19<3><0><default><default> lcdd2 = port:PD20<3><0><default><default> lcdd3 = port:PD21<3><0><default><default> lcdd4 = port:PD22<3><0><default><default> lcdd5 = port:PD23<3><0><default><default> lcdd6 = port:PD24<3><0><default><default> lcdd7 = port:PD25<3><0><default><default> lcdd8 = port:PD26<3><0><default><default> lcdd9 = port:PD27<3><0><default><default> ;---------------------------------------------------------------------------------- ;pwm config ;---------------------------------------------------------------------------------- [pwm0_para] pwm_used = 0 pwm_positive = port:PH00<2><0><default><default> [pwm1_para] pwm_used = 1 pwm_positive = port:PH01<2><0><default><default> ;---------------------------------------------------------------------------------- ;usb configuration ;usb_used: usb controller enable, 0-disable, 1-enable ;usb_port_type: usb mode: 0-device, 1-host, 2-otg ;usb_detect_type: usb hotplug detect mode, 0-none, 1-vbus/id detect, 2-id/dpdm detect ;usb_id_gpio: usb id detect IO ;usb_det_vbus_gpio: usb vbus detect IO, "axp_ctrl" for axp ;usb_drv_vbus_gpio: usb dirve vbus IO ;usb_restrict_gpio: usb current restrict IO ;usb_restric_flag: usb current restrict flag ;---------------------------------------------------------------------------------- [usbc0] usb_used = 1 usb_port_type = 2 usb_detect_type = 1 usb_id_gpio = port:PD10<0><1><default><default> usb_det_vbus_gpio = "axp_ctrl" usb_drv_vbus_gpio = port:power4<1><0><default><0> usb_restrict_gpio = usb_host_init_state = 0 usb_restric_flag = 0 usb_restric_voltage = 3550000 usb_restric_capacity= 5 usb_regulator_io = "nocare" usb_regulator_vol = 0 usb_regulator_id_vbus = "axp22_dcdc1" usb_regulator_id_vbus_vol = 3000000 [usbc1] usb_used = 1 usb_drv_vbus_gpio = port:PD12<1><0><default><0> usb_restrict_gpio = usb_host_init_state = 1 usb_restric_flag = 0 usb_regulator_io = "nocare" usb_regulator_vol = 0 usb_not_suspend = 0 ;-------------------------------------------------------------------------------- ;wifi/bt/fm/gps/nfc modules configuration ;module_num: ; 0- none ; 1- ap6181(wifi) ; 2- ap6210(wifi+bt) ; 3- rtl8188eu(wifi) ; 4- rtl8723au(wifi+bt) ; 5- rtl8723bs(wifi+bt) ; 6- esp8089(wifi) ; 7- ap6476(wifi+bt+fm+gps) ; 8- rtl8189es(wifi) ; 9- ap6212(wifi+bt+fm) ; 10- ap6330(wifi+bt+fm) ; 11- gb9663(wifi+bt+fm) ;module_power1: ""- bat, "axp_dldo1"- axp dldo1 ;module_power1_vol: power1 voltage, mv; not used for module_power1 is "" ;module_power2: ""- bat, "axp_dldo2"- axp dldo2 ;module_power2_vol: power2 voltage, mv; not used for module_power2 is "" ;module_power3: ""- bat, "axp_dldo2"- axp dldo2 ;module_power3_vol: power3 voltage, mv; not used for module_power3 is "" ;power_switch: module power switch io when bat supply ;chip_en: enable chip io ;lpo_use_apclk: ""- not use, "losc_out"- a23/33, "ac10032k1"、"ac10032k2"、"ac10032k3"- a80/a83 ;-------------------------------------------------------------------------------- [rf_para] module_num = 3 module_power1 = "" module_power1_vol = 3000000 module_power2 = "" module_power2_vol = 3000000 module_power3 = "" module_power3_vol = 3000000 power_switch = chip_en = lpo_use_apclk = "losc_out" ;-------------------------------------------------------------------------------- ;wifi configuration ;wifi_used: 0-not use, 1- use ;wifi_sdc_id: 0- SDC0, 1- SDC1, 2- SDC2, 3- SDC3 ;wifi_usbc_id: 0- USB0, 1- USB1, 2- USB2 ;wifi_usbc_type: 1- EHCI(speed 2.0), 2- OHCI(speed 1.0) ;wl_reg_on: wifi function enable io ;wl_host_wake: wifi device wake-up host ;wl_host_wake_invert: whether wl_host_wake use inverter between ap and module ; 0: not used, 1: used ;-------------------------------------------------------------------------------- [wifi_para] wifi_used = 1 wifi_sdc_id = 1 wifi_usbc_id = 1 wifi_usbc_type = 1 (请严重注意这里的选择,不然开不了机:) wifi_mod_sel = 3 wifi_power = "" wifi_power_ext1 = "" wifi_power_ext2 = "" ; 1 - ap6181 sdio wifi gpio config ;ap6xxx_wl_regon = port:PL06<1><default><default><0> ;ap6xxx_wl_host_wake = port:PL07<4><default><default><0> ;ap6xxx_lpo_use_apclk = 1 ; 2 - ap6210 sdio wifi gpio config ;ap6xxx_wl_regon = port:PL06<1><default><default><0> ;ap6xxx_wl_host_wake = port:PL07<4><default><default><0> ;ap6xxx_bt_regon = port:PL08<1><default><default><0> ;ap6xxx_bt_wake = port:PL10<1><default><default><0> ;ap6xxx_bt_host_wake = port:PL09<4><default><default><0> ;ap6xxx_lpo_use_apclk = 1 ; 3 - rtl8188eu usb wifi gpio conifg ; 4 - rtl8723au usb wifi + bt ; 5 - rtl8723bs sdio wifi + bt ;rtl8723bs_chip_en = port:PL11<1><default><default><0> ;rtl8723bs_wl_regon = port:PL06<1><default><default><0> ;rtl8723bs_wl_host_wake = port:PL07<4><default><default><0> ;rtl8723bs_bt_regon = port:PL08<1><default><default><0> ;rtl8723bs_bt_wake = port:PL10<1><default><default><0> ;rtl8723bs_bt_host_wake = port:PL09<4><default><default><0> ;rtl8723bs_lpo_use_apclk = 0 ; 6 - eagle sdio wifi ;esp_wl_chip_en = port:PL03<1><default><default><0> ;esp_wl_rst = port:PL02<1><default><default><0> ; 7 - ap6476 sdio wifi gpio config ;ap6xxx_wl_regon = port:PL06<1><default><default><0> ;ap6xxx_wl_host_wake = port:PL07<4><default><default><0> ;ap6xxx_bt_regon = port:PL08<1><default><default><0> ;ap6xxx_bt_wake = port:PL10<1><default><default><0> ;ap6xxx_bt_host_wake = port:PL09<4><default><default><0> ;ap6xxx_lpo_use_apclk = 1 ; 8 - rtl8189es sdio wifi gpio conifg ;rtl8189es_shdn = port:PL06<1><default><default><0> ;rtl8189es_host_wake = port:PL07<4><default><default><0> (关闭这里,不然开不了机:) ;usb_vbus_power_ctrl = port:PL11<1><default><default><1> ;usb_eth_power_ctrl = port:PL04<1><default><default><1> ;-------------------------------------------------------------------------------- ;bluetooth configuration ;bt_used: 0- no used, 1- used ;bt_uard_id: 0- uart0, 1- uart1, 2- uart2 ;bt_rst_n: bt function enable io ;bt_wake: host wake-up bluetooth device ;bt_wak_host: bt device wake-up host ;bt_wake_invert: whether bt_wake use inverter between ap and module ; 0: not used, 1: used ;bt_host_wake_invert: whether bt_host_wake use inverter between ap and module ; 0: not used, 1: used ;-------------------------------------------------------------------------------- [bt_para] (关闭:) bt_used = 0 bt_uart_id = 1 bt_rst_n = port:PL08<1><default><default><0> bt_wake = port:PL10<1><default><default><0> bt_host_wake = port:PL09<4><default><default><0> bt_wake_invert = 0 bt_host_wake_invert = 0 ls_int = port:PB07<1><default><default><0> pcm_ch = port:PB05<1><default><default><0> power_start = 3 pmu_temp_enable = 0 请严重注意:WIFI配置错误全志R16的系统启动不了: dldo2_vol = 3300 dldo3_vol = 2800 ldoio0_vol = 2800 find power_sply to end vbus exist no battery, limit to dc dram_para_set start dram_para_set end [ 5.079]DRAM: 512 MiB relocation Offset is: 15b0b000 workmode = 16 NAND_UbootProbe start NB1 : enter phy init NandHwInit: Start Nand Hardware initializing ..... uboot:physical version: 2 1f 20141023 1640 [NAND] channel cnt is 1 ndfc version: 1 ndfc dma mode: MBUS DMA Reset NDFC 0 NFC Randomizer start. NFC_ResetChip: 0x101, 0x100 0x10095 NFC_ResetChip: 0xff, ch: 0 [PHY_DBG] CH 0 Nand flash chip id is:0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 nand id of two channel is not the same, set to 1 channel mode [SCAN_DBG] Nand flash chip id is:0xf0 0xf0 0xf0 0xf0 0xf0 0xf0 [SCAN_ERR] search nand physical architecture parameter failed! [ERR]NandHwInit: SCN_AnalyzeNandSystem() failed! NandHwInit: End Nand Hardware initializing ..... FAIL! NB1 : nand phy init fail NB1 : enter phy Exit nand release dma:0 NAND_UbootProbe end: 0xffffffff try nand fail [ 5.191][mmc]: mmc driver ver 2014-11-25 17:03:00 [ 5.196][mmc]: get sdc_phy_wipe fail. [ 5.200][mmc]: get sdc0 sdc_erase fail. [ 5.204][mmc]: get sdc_2xmode ok, val = 1 [ 5.208][mmc]: get sdc_ddrmode fail used = 0 [ 5.213][mmc]: get sdc_f_max fail,use default 50000000Hz [ 5.218][mmc]: get card_line ok, card_line = 4 [ 5.223][mmc]: undefined value 0 or kernel not use auto sample,use default dly [ 5.230][mmc]: SUNXI SD/MMC: 2 [ 5.243][mmc]: *Try SD card 2* [ 5.246][mmc]: mmc 2 cmd 8 err 100 [ 5.252][mmc]: mmc send if cond failed [ 5.256][mmc]: mmc 2 cmd 55 err 100 [ 5.261][mmc]: send app cmd failed [ 5.264][mmc]: *Try MMC card 2* [ 5.315][mmc]: CID 0x1501004d 0x34473146 0x42005603 0x5fe0cebb [ 5.320][mmc]: MMC ver 4.41 [ 5.323][mmc]: mmc clk 50000000 [ 5.327][mmc]: SD/MMC Card: 4bit, capacity: 3728MB [ 5.332][mmc]: boot0 capacity: 1000KB,boot1 capacity: 1000KB [ 5.337][mmc]: ***SD/MMC 2 init OK!!!*** [ 5.342][mmc]: erase_grp_size:0x400WrBlk * 0x200 = 0x80000 Byte [ 5.348][mmc]: secure_feature 0x15 [ 5.351][mmc]: secure_removal_type 0x0 read flash error out of usb burn from boot: not boot mode In: serial Out: serial Err: serial
1B在全志r16平台tinav2.5系统下调通RTL8188FU 2018/5/11 14:49 版本:V1.0 开发板:客户提供 SDK:tina v2.5 1、01原始编译全志r16平台tinav2.5系统: rootroot@cm88:~$ cd /home/wwt rootroot@cm88:/home/wwt$ rootroot@cm88:/home/wwt$ md5sum tinav2.5_orig_r16repack_20171214_1114.tar.gz aa13de7313f393ca25375d9802a65da8 tinav2.5_orig_r16repack_20171214_1114.tar.gz rootroot@cm88:/home/wwt$ tar zxvf tinav2.5_orig_r16repack_20171214_1114.tar.gz rootroot@cm88:/home/wwt$ cd tinav2.5/ rootroot@cm88:/home/wwt/tinav2.5$ rootroot@cm88:/home/wwt/tinav2.5$ 7za x com_tinav2.5通用修改2没有外层目录_干掉AXP223的温度检测20180326_1023.7z -r -o./ rootroot@cm88:/home/wwt/tinav2.5$ source build/envsetup.sh (请严重注意:lunch之后的选项是环境依赖的,请选择astar_parrot-tina前的实际数值!) rootroot@cm88:/home/wwt/tinav2.5$ lunch 32. astar_parrot-tina Which would you like?32 rootroot@cm88:/home/wwt/tinav2.5$ make -j12 rootroot@cm88:/home/wwt/tinav2.5$ pack -d rootroot@cm88:/home/wwt/tinav2.5$ 2、 rootroot@cm88:/home/wwt/tinav2.5$ rootroot@cm88:/home/wwt/tinav2.5$ cd lichee/linux-3.4/drivers/net/wireless/ rootroot@cm88:/home/wwt/tinav2.5/lichee/linux-3.4/drivers/net/wireless$ rootroot@cm88:/home/wwt/tinav2.5/lichee/linux-3.4/drivers/net/wireless$ tar zxvf rtl8188FU_linux_v5.2.11.1_22924.20170703.tar.gz rootroot@cm88:/home/wwt/tinav2.5/lichee/linux-3.4/drivers/net/wireless$ rootroot@cm88:/home/wwt/tinav2.5/lichee/linux-3.4/drivers/net/wireless$ mv rtl8188FU_linux_v5.2.11.1_22924.20170703 rtl8188fu 维权之R16平台配置Makefile: W:\tinav2.5\lichee\linux-3.4\drivers\net\wireless\rtl8188fu\Makefile ########################## WIFI IC ############################ CONFIG_MULTIDRV = n (可选增加) CONFIG_RTL8192C = n CONFIG_RTL8192D = n CONFIG_RTL8723A = n CONFIG_RTL8188E = n CONFIG_RTL8812A = n CONFIG_RTL8821A = n CONFIG_RTL8192E = n CONFIG_RTL8723B = n CONFIG_RTL8814A = n CONFIG_RTL8723C = n CONFIG_RTL8188F = y CONFIG_RTL8822B = n CONFIG_RTL8723D = n CONFIG_RTL8821C = n ###################### Platform Related ####################### (务必修改,否则就是X86架构了) CONFIG_PLATFORM_I386_PC = n CONFIG_PLATFORM_ANDROID_X86 = n CONFIG_PLATFORM_ANDROID_INTEL_X86 = n CONFIG_PLATFORM_JB_X86 = n CONFIG_PLATFORM_ARM_S3C2K4 = n CONFIG_PLATFORM_ARM_PXA2XX = n CONFIG_PLATFORM_ARM_S3C6K4 = n CONFIG_PLATFORM_MIPS_RMI = n CONFIG_PLATFORM_RTD2880B = n CONFIG_PLATFORM_MIPS_AR9132 = n CONFIG_PLATFORM_RTK_DMP = n CONFIG_PLATFORM_MIPS_PLM = n CONFIG_PLATFORM_MSTAR389 = n CONFIG_PLATFORM_MT53XX = n CONFIG_PLATFORM_ARM_MX51_241H = n CONFIG_PLATFORM_FS_MX61 = n CONFIG_PLATFORM_ACTIONS_ATJ227X = n CONFIG_PLATFORM_TEGRA3_CARDHU = n CONFIG_PLATFORM_TEGRA4_DALMORE = n CONFIG_PLATFORM_ARM_TCC8900 = n CONFIG_PLATFORM_ARM_TCC8920 = n CONFIG_PLATFORM_ARM_TCC8920_JB42 = n CONFIG_PLATFORM_ARM_TCC8930_JB42 = n CONFIG_PLATFORM_ARM_RK2818 = n CONFIG_PLATFORM_ARM_RK3066 = n CONFIG_PLATFORM_ARM_RK3188 = n CONFIG_PLATFORM_ARM_URBETTER = n CONFIG_PLATFORM_ARM_TI_PANDA = n CONFIG_PLATFORM_MIPS_JZ4760 = n CONFIG_PLATFORM_DMP_PHILIPS = n (可选修改) CONFIG_PLATFORM_TI_DM365 = n CONFIG_PLATFORM_MSTAR_TITANIA12 = n CONFIG_PLATFORM_MSTAR = n CONFIG_PLATFORM_SZEBOOK = n CONFIG_PLATFORM_ARM_SUNxI = n CONFIG_PLATFORM_ARM_SUN6I = n CONFIG_PLATFORM_ARM_SUN7I = n CONFIG_PLATFORM_ARM_SUN8I_W3P1 = n (务必修改,配置为全志R16平台) CONFIG_PLATFORM_ARM_SUN8I_W5P1 = y W:\tinav2.5\lichee\linux-3.4\drivers\net\wireless\Kconfig source "drivers/net/wireless/ath/Kconfig" source "drivers/net/wireless/b43/Kconfig" source "drivers/net/wireless/b43legacy/Kconfig" source "drivers/net/wireless/bcmdhd/Kconfig" source "drivers/net/wireless/brcm80211/Kconfig" source "drivers/net/wireless/hostap/Kconfig" source "drivers/net/wireless/ipw2x00/Kconfig" source "drivers/net/wireless/iwlwifi/Kconfig" source "drivers/net/wireless/iwlegacy/Kconfig" source "drivers/net/wireless/iwmc3200wifi/Kconfig" source "drivers/net/wireless/libertas/Kconfig" source "drivers/net/wireless/orinoco/Kconfig" source "drivers/net/wireless/p54/Kconfig" source "drivers/net/wireless/rt2x00/Kconfig" source "drivers/net/wireless/rtlwifi/Kconfig" source "drivers/net/wireless/wl1251/Kconfig" source "drivers/net/wireless/wl12xx/Kconfig" source "drivers/net/wireless/zd1211rw/Kconfig" source "drivers/net/wireless/mwifiex/Kconfig" source "drivers/net/wireless/rtl8188eu/Kconfig" source "drivers/net/wireless/rtl8188fu/Kconfig" source "drivers/net/wireless/rtl8189es/Kconfig" source "drivers/net/wireless/rtl8723bs/Kconfig" source "drivers/net/wireless/esp8089/Kconfig" source "drivers/net/wireless/rtl8723bs_vq0/Kconfig" W:\tinav2.5\lichee\linux-3.4\drivers\net\wireless\Makefile obj-$(CONFIG_HOSTAP) += hostap/ obj-$(CONFIG_B43) += b43/ obj-$(CONFIG_B43LEGACY) += b43legacy/ obj-$(CONFIG_ZD1211RW) += zd1211rw/ obj-$(CONFIG_RTL8180) += rtl818x/ obj-$(CONFIG_RTL8187) += rtl818x/ obj-$(CONFIG_RTLWIFI) += rtlwifi/ obj-$(CONFIG_RTL8188EU) += rtl8188eu/ obj-$(CONFIG_RTL8188FU) += rtl8188fu/ obj-$(CONFIG_RTL8189ES) += rtl8189es/ obj-$(CONFIG_RTL8723BS) += rtl8723bs/ obj-$(CONFIG_ESP8089) += esp8089/ obj-$(CONFIG_ESP8089) += esp_prealloc/ obj-$(CONFIG_RTL8723BS_VQ0) += rtl8723bs_vq0/ 3、 W:\tinav2.5\package\firmware\linux-firmware\realtek.mk Package/r8188eu-firmware = $(call Package/firmware-default,RealTek RTL8188EU firmware) define Package/r8188eu-firmware/install $(INSTALL_DIR) $(1)/lib/firmware/rtlwifi # #$(CP) \ # $(PKG_BUILD_DIR)/rtlwifi/rtl8188eufw.bin \ # $(1)/lib/firmware/rtlwifi endef $(eval $(call BuildPackage,r8188eu-firmware)) (RTL8188FU请直接参照RTL8188EU修改即可:) Package/r8188fu-firmware = $(call Package/firmware-default,RealTek RTL8188FU firmware) define Package/r8188fu-firmware/install $(INSTALL_DIR) $(1)/lib/firmware/rtlwifi # #$(CP) \ # $(PKG_BUILD_DIR)/rtlwifi/rtl8188fufw.bin \ # $(1)/lib/firmware/rtlwifi endef $(eval $(call BuildPackage,r8188fu-firmware)) Package/r8723bs-firmware = $(call Package/firmware-default,RealTek RTL8723BS firmware) define Package/r8723bs-firmware/install $(INSTALL_DIR) $(1)/lib/firmware/rtlwifi # #$(CP) \ # $(PKG_BUILD_DIR)/rtlwifi/rtl8188eufw.bin \ # $(1)/lib/firmware/rtlwifi endef $(eval $(call BuildPackage,r8723bs-firmware)) 4、 W:\tinav2.5\package\kernel\linux\modules\wireless.mk # # Copyright (C) 2006-2008 OpenWrt.org # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. # WIRELESS_MENU:=Wireless Drivers define KernelPackage/net-rtl8188eu SUBMENU:=$(WIRELESS_MENU) TITLE:=RTL8188EU support (staging) DEPENDS:=@USB_SUPPORT +@DRIVER_WEXT_SUPPORT +r8188eu-firmware +kmod-usb-core # KCONFIG:=\ # CONFIG_STAGING=y \ # CONFIG_R8188EU \ # CONFIG_88EU_AP_MODE=y \ # CONFIG_88EU_P2P=n FILES:=$(LINUX_DIR)/drivers/net/wireless/rtl8188eu/8188eu.ko AUTOLOAD:=$(call AutoProbe,8188eu) endef define KernelPackage/net-rtl8188eu/description Kernel modules for RealTek RTL8188EU support endef $(eval $(call KernelPackage,net-rtl8188eu)) (RTL8188FU请直接参照RTL8188EU修改即可:) define KernelPackage/net-rtl8188fu SUBMENU:=$(WIRELESS_MENU) TITLE:=RTL8188FU support (staging) DEPENDS:=@USB_SUPPORT +@DRIVER_WEXT_SUPPORT +r8188fu-firmware +kmod-usb-core # KCONFIG:=\ # CONFIG_STAGING=y \ # CONFIG_R8188FU \ # CONFIG_88FU_AP_MODE=y \ # CONFIG_88FU_P2P=n FILES:=$(LINUX_DIR)/drivers/net/wireless/rtl8188fu/8188fu.ko AUTOLOAD:=$(call AutoProbe,8188fu) endef define KernelPackage/net-rtl8188fu/description Kernel modules for RealTek RTL8188FU support endef $(eval $(call KernelPackage,net-rtl8188fu)) define KernelPackage/net-rtl8723bs SUBMENU:=$(WIRELESS_MENU) TITLE:=RTL8723BS support (staging) DEPENDS:=@USB_SUPPORT +@DRIVER_WEXT_SUPPORT +r8723bs-firmware # KCONFIG:=\ # CONFIG_STAGING=y \ # CONFIG_R8723BS \ # CONFIG_23BS_AP_MODE=y \ # CONFIG_23BS_P2P=n FILES:=$(LINUX_DIR)/drivers/net/wireless/rtl8723bs/8723bs.ko AUTOLOAD:=$(call AutoProbe,8723bs) endef define KernelPackage/net-rtl8723bs/description Kernel modules for RealTek RTL8723BS support endef $(eval $(call KernelPackage,net-rtl8723bs)) define KernelPackage/cfg80211 SUBMENU:=$(WIRELESS_MENU) TITLE:=cfg80211 support (staging) DEPENDS:= FILES:=$(LINUX_DIR)/net/wireless/cfg80211.ko AUTOLOAD:=$(call AutoProbe,cfg80211) endef define KernelPackage/cfg80211/description Kernel modules for CFG80211 support endef $(eval $(call KernelPackage,cfg80211)) 5、配置文件: W:\tinav2.5\target\allwinner\astar-parrot\configs\sys_config.fex ;---------------------------------------------------------------------------------- ;dcdc1_vol ---set dcdc1 voltage,mV,1600-3400,100mV/step ;dcdc2_vol ---set dcdc2 voltage,mV,600-1540,20mV/step ;dcdc3_vol ---set dcdc3 voltage,mV,600-1860,20mV/step ;dcdc4_vol ---set dcdc4 voltage,mV,600-1540,20mV/step ;dcdc5_vol ---set dcdc5 voltage,mV,1000-2550,50mV/step ;aldo2_vol ---set aldo2 voltage,mV,700-3300,100mV/step ;aldo3_vol ---set aldo3 voltage,mV,700-3300,100mV/step ;---------------------------------------------------------------------------------- [power_sply] dcdc1_vol = 3000 dcdc2_vol = 1100 dcdc3_vol = 1200 dcdc4_vol = 0 dcdc5_vol = 1500 aldo2_vol = 2500 aldo3_vol = 3000 dldo3_vol = 2800 ldoio1_vol = 3300 ldoio0_vol = 3300 eldo2_vol = 1800 eldo1_vol = 1800 ;---------------------------------------------------------------------------------- ;usb configuration ;usb_used: usb controller enable, 0-disable, 1-enable ;usb_port_type: usb mode: 0-device, 1-host, 2-otg ;usb_detect_type: usb hotplug detect mode, 0-none, 1-vbus/id detect, 2-id/dpdm detect ;usb_id_gpio: usb id detect IO ;usb_det_vbus_gpio: usb vbus detect IO, "axp_ctrl" for axp ;usb_drv_vbus_gpio: usb dirve vbus IO ;usb_restrict_gpio: usb current restrict IO ;usb_restric_flag: usb current restrict flag ;---------------------------------------------------------------------------------- [usbc0] usb_used = 1 usb_port_type = 0 ;-------------------------------------------------------------------------------- ;wifi/bt/fm/gps/nfc modules configuration ;module_num: ; 0- none ; 1- ap6181(wifi) ; 2- ap6210(wifi+bt) ; 3- rtl8188eu(wifi)/rtl8188fu(wifi) ; 4- rtl8723au(wifi+bt) ; 5- rtl8723bs(wifi+bt) ; 6- esp8089(wifi) ; 7- ap6476(wifi+bt+fm+gps) ; 8- ap6330(wifi+bt+fm) ; 9- gb9663(wifi+bt+fm) ; 10- ap6212(wifi+bt+fm) ;module_power1: ""- bat, "axp_dldo1"- axp dldo1 ;module_power1_vol: power1 voltage, mv; not used for module_power1 is "" ;module_power2: ""- bat, "axp_dldo2"- axp dldo2 ;module_power2_vol: power2 voltage, mv; not used for module_power2 is "" ;module_power3: ""- bat, "axp_dldo2"- axp dldo2 ;module_power3_vol: power3 voltage, mv; not used for module_power3 is "" ;power_switch: module power switch io when bat supply ;chip_en: enable chip io ;lpo_use_apclk: ""- not use, "losc_out"- a23/33, "ac10032k1"、"ac10032k2"、"ac10032k3"- a80/a83 ;-------------------------------------------------------------------------------- [rf_para] module_num = 3 module_power1 = "axp22_dldo1" module_power1_vol = 3300000 module_power2 = "axp22_dldo2" module_power2_vol = 3300000 module_power3 = "axp22_aldo1" module_power3_vol = 3300000 power_switch = chip_en = lpo_use_apclk = "losc_out" 6、这里需要断开一下SSH连接或者退出一下终端,因为修改了menuconfig的内容。貌似重新source都不行! rootroot@cm88:/home/wwt$ cd tinav2.5/ rootroot@cm88:/home/wwt/tinav2.5$ rootroot@cm88:/home/wwt/tinav2.5$ source build/envsetup.sh (请严重注意:lunch之后的选项是环境依赖的,请选择astar_parrot-tina前的实际数值!) rootroot@cm88:/home/wwt/tinav2.5$ lunch 32. astar_parrot-tina Which would you like?32 rootroot@cm88:/home/wwt/tinav2.5$ make kernel_menuconfig Device Drivers ---> [*] Network device support ---> [*] Wireless LAN ---> Broadcom FullMAC wireless cards support (/lib/firmware/fw_bcmdhd.bin) Firmware path (/lib/firmware/nvram.txt) NVRAM path Enable Chip Interface (SDIO bus interface support) ---> Interrupt type (Out-of-Band Interrupt) ---> Realtek 8188F USB WiFi (NEW) 修改为: Broadcom FullMAC wireless cards support Realtek 8188F USB WiFi 请严重注意,这里是有顺序的: rootroot@cm88:/home/wwt/tinav2.5$ make menuconfig Kernel modules ---> Wireless Drivers ---> kmod-cfg80211................................. cfg80211 support (staging) kmod-net-ap6212........................................... ap6212 support kmod-net-rtl8188eu........................... RTL8188EU support (staging) kmod-net-rtl8188fu........................... RTL8188FU support (staging) (NEW) kmod-net-rtl8723bs........................... RTL8723BS support (staging) 修改为: kmod-cfg80211................................. cfg80211 support (staging) kmod-net-ap6212........................................... ap6212 support kmod-net-rtl8188eu........................... RTL8188EU support (staging) kmod-net-rtl8188fu........................... RTL8188FU support (staging) kmod-net-rtl8723bs........................... RTL8723BS support (staging) Firmware ---> ap6212-firmware................................. Broadcom AP6212 firmware 修改为: ap6212-firmware................................. Broadcom AP6212 firmware ap6212_plus_ap6212a-firmware............. Broadcom compatibility firmware ap6212a-firmware............................... Broadcom AP6212A firmware ap6255-firmware................................. Broadcom AP6255 firmware ap6335-firmware................................. Broadcom AP6335 firmware ap6356s-firmware............................... Broadcom AP6356S firmware r8188eu-firmware.............................. RealTek RTL8188EU firmware -*- r8188fu-firmware.............................. RealTek RTL8188FU firmware r8723bs-firmware.............................. RealTek RTL8723BS firmware xr819-firmware..................................... Xradio xr819 firmware rootroot@cm88:/home/wwt/tinav2.5$ make -j12 CC [M] drivers/net/wireless/rtl8188fu/os_dep/linux/rtw_cfgvendor.o CC [M] drivers/net/wireless/rtl8188fu/os_dep/linux/wifi_regd.o CC [M] drivers/net/wireless/rtl8188fu/os_dep/linux/rtw_android.o CC [M] drivers/net/wireless/rtl8188fu/os_dep/linux/rtw_proc.o CC [M] drivers/net/wireless/rtl8188fu/os_dep/linux/ioctl_mp.o CC [M] drivers/net/wireless/rtl8188fu/hal/hal_intf.o CC [M] drivers/net/wireless/rtl8188fu/hal/hal_com.o CC [M] drivers/net/wireless/rtl8188fu/hal/hal_com_phycfg.o CC [M] drivers/net/wireless/rtl8188fu/hal/hal_phy.o CC [M] drivers/net/wireless/rtl8188fu/hal/hal_dm.o CC [M] drivers/net/wireless/rtl8188fu/hal/hal_btcoex_wifionly.o CC [M] drivers/net/wireless/rtl8188fu/hal/hal_btcoex.o CC [M] drivers/net/wireless/rtl8188fu/hal/hal_mp.o CC [M] drivers/net/wireless/rtl8188fu/hal/hal_mcc.o CC [M] drivers/net/wireless/rtl8188fu/hal/hal_hci/hal_usb.o CC [M] drivers/net/wireless/rtl8188fu/hal/led/hal_usb_led.o CC [M] drivers/net/wireless/rtl8188fu/hal/HalPwrSeqCmd.o CC [M] drivers/net/wireless/rtl8188fu/hal/rtl8188f/Hal8188FPwrSeq.o CC [M] drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_sreset.o CC [M] drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_hal_init.o CC [M] drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_phycfg.o CC [M] drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_rf6052.o CC [M] drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_dm.o CC [M] drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_rxdesc.o CC [M] drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_cmd.o CC [M] drivers/net/wireless/rtl8188fu/hal/rtl8188f/hal8188f_fw.o CC [M] drivers/net/wireless/rtl8188fu/hal/rtl8188f/usb/usb_halinit.o CC [M] drivers/net/wireless/rtl8188fu/hal/rtl8188f/usb/rtl8188fu_led.o CC [M] drivers/net/wireless/rtl8188fu/hal/rtl8188f/usb/rtl8188fu_xmit.o CC [M] drivers/net/wireless/rtl8188fu/hal/rtl8188f/usb/rtl8188fu_recv.o CC [M] drivers/net/wireless/rtl8188fu/hal/rtl8188f/usb/usb_ops.o CC [M] drivers/net/wireless/rtl8188fu/hal/efuse/rtl8188f/HalEfuseMask8188F_USB.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/phydm_debug.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/phydm_antdiv.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/phydm_antdect.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/phydm_interface.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/phydm_hwconfig.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/phydm.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/halphyrf_ce.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/phydm_dig.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/phydm_pathdiv.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/phydm_rainfo.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/phydm_dynamicbbpowersaving.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/phydm_powertracking_ce.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/phydm_dynamictxpower.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/phydm_adaptivity.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/phydm_cfotracking.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/phydm_noisemonitor.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/phydm_acs.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/phydm_beamforming.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/phydm_dfs.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/txbf/halcomtxbf.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/txbf/haltxbfinterface.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/txbf/phydm_hal_txbf_api.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/phydm_adc_sampling.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/phydm_kfree.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/phydm_ccx.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/phydm_psd.o CC [M] drivers/net/wireless/rtl8188fu/hal/btc/halbtc8723bwifionly.o CC [M] drivers/net/wireless/rtl8188fu/hal/btc/halbtc8822bwifionly.o CC [M] drivers/net/wireless/rtl8188fu/hal/btc/halbtc8821cwifionly.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/rtl8188f/halhwimg8188f_bb.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/rtl8188f/halhwimg8188f_mac.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/rtl8188f/halhwimg8188f_rf.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/rtl8188f/phydm_regconfig8188f.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/rtl8188f/halphyrf_8188f.o CC [M] drivers/net/wireless/rtl8188fu/hal/phydm/rtl8188f/phydm_rtl8188f.o CC [M] drivers/net/wireless/rtl8188fu/platform/platform_ops.o CC [M] drivers/net/wireless/rtl8188fu/platform/platform_ARM_SUNxI_usb.o CC [M] drivers/net/wireless/rtl8188fu/core/rtw_mp.o LD [M] drivers/net/wireless/rtl8188fu/8188fu.o drivers/net/wireless/rtl8188fu/core/rtw_security.o: In function `is_multicast_mac_addr': rtw_security.c:(.text+0x2048): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_security.o: In function `is_broadcast_mac_addr': rtw_security.c:(.text+0x2068): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_security.o: In function `is_zero_mac_addr': rtw_security.c:(.text+0x20ec): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/rtw_debug.o: In function `is_multicast_mac_addr': rtw_debug.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_debug.o: In function `is_broadcast_mac_addr': rtw_debug.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_debug.o: In function `is_zero_mac_addr': rtw_debug.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/rtw_io.o: In function `is_multicast_mac_addr': rtw_io.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_io.o: In function `is_broadcast_mac_addr': rtw_io.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_io.o: In function `is_zero_mac_addr': rtw_io.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/rtw_ioctl_query.o: In function `is_multicast_mac_addr': rtw_ioctl_query.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_ioctl_query.o: In function `is_broadcast_mac_addr': rtw_ioctl_query.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_ioctl_query.o: In function `is_zero_mac_addr': rtw_ioctl_query.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/rtw_ioctl_set.o: In function `is_multicast_mac_addr': rtw_ioctl_set.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_ioctl_set.o: In function `is_broadcast_mac_addr': rtw_ioctl_set.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_ioctl_set.o: In function `is_zero_mac_addr': rtw_ioctl_set.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/rtw_ieee80211.o: In function `is_multicast_mac_addr': rtw_ieee80211.c:(.text+0x58): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_ieee80211.o: In function `is_broadcast_mac_addr': rtw_ieee80211.c:(.text+0x78): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_ieee80211.o: In function `is_zero_mac_addr': rtw_ieee80211.c:(.text+0xfc): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/rtw_mlme.o: In function `is_multicast_mac_addr': rtw_mlme.c:(.text+0x3b4): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_mlme.o: In function `is_broadcast_mac_addr': rtw_mlme.c:(.text+0x3d4): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_mlme.o: In function `is_zero_mac_addr': rtw_mlme.c:(.text+0x458): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/rtw_mlme_ext.o: In function `is_multicast_mac_addr': rtw_mlme_ext.c:(.text+0x10bc): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_mlme_ext.o: In function `is_broadcast_mac_addr': rtw_mlme_ext.c:(.text+0x10dc): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_mlme_ext.o: In function `is_zero_mac_addr': rtw_mlme_ext.c:(.text+0x1160): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/rtw_mi.o: In function `is_multicast_mac_addr': rtw_mi.c:(.text+0x7f8): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_mi.o: In function `is_broadcast_mac_addr': rtw_mi.c:(.text+0x818): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_mi.o: In function `is_zero_mac_addr': rtw_mi.c:(.text+0x89c): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/rtw_wlan_util.o: In function `is_multicast_mac_addr': rtw_wlan_util.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_wlan_util.o: In function `is_broadcast_mac_addr': rtw_wlan_util.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_wlan_util.o: In function `is_zero_mac_addr': rtw_wlan_util.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/rtw_vht.o: In function `is_multicast_mac_addr': rtw_vht.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_vht.o: In function `is_broadcast_mac_addr': rtw_vht.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_vht.o: In function `is_zero_mac_addr': rtw_vht.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/rtw_pwrctrl.o: In function `is_multicast_mac_addr': rtw_pwrctrl.c:(.text+0xb4): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_pwrctrl.o: In function `is_broadcast_mac_addr': rtw_pwrctrl.c:(.text+0xd4): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_pwrctrl.o: In function `is_zero_mac_addr': rtw_pwrctrl.c:(.text+0x158): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/rtw_rf.o: In function `is_multicast_mac_addr': rtw_rf.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_rf.o: In function `is_broadcast_mac_addr': rtw_rf.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_rf.o: In function `is_zero_mac_addr': rtw_rf.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/rtw_recv.o: In function `is_multicast_mac_addr': rtw_recv.c:(.text+0x770): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_recv.o: In function `is_broadcast_mac_addr': rtw_recv.c:(.text+0x790): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_recv.o: In function `is_zero_mac_addr': rtw_recv.c:(.text+0x814): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/rtw_sta_mgt.o: In function `is_multicast_mac_addr': rtw_sta_mgt.c:(.text+0x50): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_sta_mgt.o: In function `is_broadcast_mac_addr': rtw_sta_mgt.c:(.text+0x70): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_sta_mgt.o: In function `is_zero_mac_addr': rtw_sta_mgt.c:(.text+0xf4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/rtw_ap.o: In function `is_multicast_mac_addr': rtw_ap.c:(.text+0x1bc): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_ap.o: In function `is_broadcast_mac_addr': rtw_ap.c:(.text+0x1dc): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_ap.o: In function `is_zero_mac_addr': rtw_ap.c:(.text+0x260): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/rtw_xmit.o: In function `is_multicast_mac_addr': rtw_xmit.c:(.text+0xa4): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_xmit.o: In function `is_broadcast_mac_addr': rtw_xmit.c:(.text+0xc4): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_xmit.o: In function `is_zero_mac_addr': rtw_xmit.c:(.text+0x148): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/rtw_p2p.o: In function `is_multicast_mac_addr': rtw_p2p.c:(.text+0x858): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_p2p.o: In function `is_broadcast_mac_addr': rtw_p2p.c:(.text+0x878): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_p2p.o: In function `is_zero_mac_addr': rtw_p2p.c:(.text+0x8fc): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/rtw_tdls.o: In function `is_multicast_mac_addr': rtw_tdls.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_tdls.o: In function `is_broadcast_mac_addr': rtw_tdls.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_tdls.o: In function `is_zero_mac_addr': rtw_tdls.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/rtw_br_ext.o: In function `is_multicast_mac_addr': rtw_br_ext.c:(.text+0x734): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_br_ext.o: In function `is_broadcast_mac_addr': rtw_br_ext.c:(.text+0x754): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_br_ext.o: In function `is_zero_mac_addr': rtw_br_ext.c:(.text+0x7d8): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/rtw_iol.o: In function `is_multicast_mac_addr': rtw_iol.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_iol.o: In function `is_broadcast_mac_addr': rtw_iol.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_iol.o: In function `is_zero_mac_addr': rtw_iol.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/rtw_sreset.o: In function `is_multicast_mac_addr': rtw_sreset.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_sreset.o: In function `is_broadcast_mac_addr': rtw_sreset.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_sreset.o: In function `is_zero_mac_addr': rtw_sreset.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/rtw_btcoex_wifionly.o: In function `is_multicast_mac_addr': rtw_btcoex_wifionly.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_btcoex_wifionly.o: In function `is_broadcast_mac_addr': rtw_btcoex_wifionly.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_btcoex_wifionly.o: In function `is_zero_mac_addr': rtw_btcoex_wifionly.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/rtw_beamforming.o: In function `is_multicast_mac_addr': rtw_beamforming.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_beamforming.o: In function `is_broadcast_mac_addr': rtw_beamforming.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_beamforming.o: In function `is_zero_mac_addr': rtw_beamforming.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/rtw_odm.o: In function `is_multicast_mac_addr': rtw_odm.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/rtw_odm.o: In function `is_broadcast_mac_addr': rtw_odm.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/rtw_odm.o: In function `is_zero_mac_addr': rtw_odm.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/core/efuse/rtw_efuse.o: In function `is_multicast_mac_addr': rtw_efuse.c:(.text+0xd8): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/core/efuse/rtw_efuse.o: In function `is_broadcast_mac_addr': rtw_efuse.c:(.text+0xf8): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/core/efuse/rtw_efuse.o: In function `is_zero_mac_addr': rtw_efuse.c:(.text+0x17c): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/os_dep/osdep_service.o: In function `is_multicast_mac_addr': osdep_service.c:(.text+0x178): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/os_dep/osdep_service.o: In function `is_broadcast_mac_addr': osdep_service.c:(.text+0x198): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/os_dep/osdep_service.o: In function `is_zero_mac_addr': osdep_service.c:(.text+0x21c): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/os_intfs.o: In function `is_multicast_mac_addr': os_intfs.c:(.text+0x6c4): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/os_intfs.o: In function `is_broadcast_mac_addr': os_intfs.c:(.text+0x6e4): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/os_intfs.o: In function `is_zero_mac_addr': os_intfs.c:(.text+0x768): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/usb_intf.o: In function `is_multicast_mac_addr': usb_intf.c:(.text+0x454): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/usb_intf.o: In function `is_broadcast_mac_addr': usb_intf.c:(.text+0x474): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/usb_intf.o: In function `is_zero_mac_addr': usb_intf.c:(.text+0x4f8): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/usb_ops_linux.o: In function `is_multicast_mac_addr': usb_ops_linux.c:(.text+0x5a8): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/usb_ops_linux.o: In function `is_broadcast_mac_addr': usb_ops_linux.c:(.text+0x5c8): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/usb_ops_linux.o: In function `is_zero_mac_addr': usb_ops_linux.c:(.text+0x64c): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/ioctl_linux.o: In function `is_multicast_mac_addr': ioctl_linux.c:(.text+0xa838): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/ioctl_linux.o: In function `is_broadcast_mac_addr': ioctl_linux.c:(.text+0xa858): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/ioctl_linux.o: In function `is_zero_mac_addr': ioctl_linux.c:(.text+0xa8dc): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/xmit_linux.o: In function `is_multicast_mac_addr': xmit_linux.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/xmit_linux.o: In function `is_broadcast_mac_addr': xmit_linux.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/xmit_linux.o: In function `is_zero_mac_addr': xmit_linux.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/mlme_linux.o: In function `is_multicast_mac_addr': mlme_linux.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/mlme_linux.o: In function `is_broadcast_mac_addr': mlme_linux.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/mlme_linux.o: In function `is_zero_mac_addr': mlme_linux.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/recv_linux.o: In function `is_multicast_mac_addr': recv_linux.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/recv_linux.o: In function `is_broadcast_mac_addr': recv_linux.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/recv_linux.o: In function `is_zero_mac_addr': recv_linux.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/ioctl_cfg80211.o: In function `is_multicast_mac_addr': ioctl_cfg80211.c:(.text+0x5144): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/ioctl_cfg80211.o: In function `is_broadcast_mac_addr': ioctl_cfg80211.c:(.text+0x5164): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/ioctl_cfg80211.o: In function `is_zero_mac_addr': ioctl_cfg80211.c:(.text+0x51e8): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/rtw_cfgvendor.o: In function `is_multicast_mac_addr': rtw_cfgvendor.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/rtw_cfgvendor.o: In function `is_broadcast_mac_addr': rtw_cfgvendor.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/rtw_cfgvendor.o: In function `is_zero_mac_addr': rtw_cfgvendor.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/wifi_regd.o: In function `is_multicast_mac_addr': wifi_regd.c:(.text+0x130): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/wifi_regd.o: In function `is_broadcast_mac_addr': wifi_regd.c:(.text+0x150): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/wifi_regd.o: In function `is_zero_mac_addr': wifi_regd.c:(.text+0x1d4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/rtw_android.o: In function `is_multicast_mac_addr': rtw_android.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/rtw_android.o: In function `is_broadcast_mac_addr': rtw_android.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/rtw_android.o: In function `is_zero_mac_addr': rtw_android.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/rtw_proc.o: In function `is_multicast_mac_addr': rtw_proc.c:(.text+0x4698): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/rtw_proc.o: In function `is_broadcast_mac_addr': rtw_proc.c:(.text+0x46b8): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/rtw_proc.o: In function `is_zero_mac_addr': rtw_proc.c:(.text+0x473c): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/ioctl_mp.o: In function `is_multicast_mac_addr': ioctl_mp.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/ioctl_mp.o: In function `is_broadcast_mac_addr': ioctl_mp.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/os_dep/linux/ioctl_mp.o: In function `is_zero_mac_addr': ioctl_mp.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/hal/hal_intf.o: In function `is_multicast_mac_addr': hal_intf.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/hal/hal_intf.o: In function `is_broadcast_mac_addr': hal_intf.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/hal/hal_intf.o: In function `is_zero_mac_addr': hal_intf.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/hal/hal_com.o: In function `is_multicast_mac_addr': hal_com.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/hal/hal_com.o: In function `is_broadcast_mac_addr': hal_com.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/hal/hal_com.o: In function `is_zero_mac_addr': hal_com.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/hal/hal_com_phycfg.o: In function `is_multicast_mac_addr': hal_com_phycfg.c:(.text+0x174): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/hal/hal_com_phycfg.o: In function `is_broadcast_mac_addr': hal_com_phycfg.c:(.text+0x194): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/hal/hal_com_phycfg.o: In function `is_zero_mac_addr': hal_com_phycfg.c:(.text+0x218): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/hal/hal_phy.o: In function `is_multicast_mac_addr': hal_phy.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/hal/hal_phy.o: In function `is_broadcast_mac_addr': hal_phy.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/hal/hal_phy.o: In function `is_zero_mac_addr': hal_phy.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/hal/hal_dm.o: In function `is_multicast_mac_addr': hal_dm.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/hal/hal_dm.o: In function `is_broadcast_mac_addr': hal_dm.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/hal/hal_dm.o: In function `is_zero_mac_addr': hal_dm.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/hal/hal_btcoex_wifionly.o: In function `is_multicast_mac_addr': hal_btcoex_wifionly.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/hal/hal_btcoex_wifionly.o: In function `is_broadcast_mac_addr': hal_btcoex_wifionly.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/hal/hal_btcoex_wifionly.o: In function `is_zero_mac_addr': hal_btcoex_wifionly.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/hal/hal_mp.o: In function `is_multicast_mac_addr': hal_mp.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/hal/hal_mp.o: In function `is_broadcast_mac_addr': hal_mp.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/hal/hal_mp.o: In function `is_zero_mac_addr': hal_mp.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/hal/hal_hci/hal_usb.o: In function `is_multicast_mac_addr': hal_usb.c:(.text+0x208): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/hal/hal_hci/hal_usb.o: In function `is_broadcast_mac_addr': hal_usb.c:(.text+0x228): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/hal/hal_hci/hal_usb.o: In function `is_zero_mac_addr': hal_usb.c:(.text+0x2ac): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/hal/led/hal_usb_led.o: In function `is_multicast_mac_addr': hal_usb_led.c:(.text+0x5c): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/hal/led/hal_usb_led.o: In function `is_broadcast_mac_addr': hal_usb_led.c:(.text+0x7c): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/hal/led/hal_usb_led.o: In function `is_zero_mac_addr': hal_usb_led.c:(.text+0x100): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/hal/HalPwrSeqCmd.o: In function `is_multicast_mac_addr': HalPwrSeqCmd.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/hal/HalPwrSeqCmd.o: In function `is_broadcast_mac_addr': HalPwrSeqCmd.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/hal/HalPwrSeqCmd.o: In function `is_zero_mac_addr': HalPwrSeqCmd.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/Hal8188FPwrSeq.o: In function `is_multicast_mac_addr': Hal8188FPwrSeq.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/Hal8188FPwrSeq.o: In function `is_broadcast_mac_addr': Hal8188FPwrSeq.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/Hal8188FPwrSeq.o: In function `is_zero_mac_addr': Hal8188FPwrSeq.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_sreset.o: In function `is_multicast_mac_addr': rtl8188f_sreset.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_sreset.o: In function `is_broadcast_mac_addr': rtl8188f_sreset.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_sreset.o: In function `is_zero_mac_addr': rtl8188f_sreset.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_hal_init.o: In function `is_multicast_mac_addr': rtl8188f_hal_init.c:(.text+0x1bec): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_hal_init.o: In function `is_broadcast_mac_addr': rtl8188f_hal_init.c:(.text+0x1c0c): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_hal_init.o: In function `is_zero_mac_addr': rtl8188f_hal_init.c:(.text+0x1c90): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_phycfg.o: In function `is_multicast_mac_addr': rtl8188f_phycfg.c:(.text+0x234): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_phycfg.o: In function `is_broadcast_mac_addr': rtl8188f_phycfg.c:(.text+0x254): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_phycfg.o: In function `is_zero_mac_addr': rtl8188f_phycfg.c:(.text+0x2d8): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_rf6052.o: In function `is_multicast_mac_addr': rtl8188f_rf6052.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_rf6052.o: In function `is_broadcast_mac_addr': rtl8188f_rf6052.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_rf6052.o: In function `is_zero_mac_addr': rtl8188f_rf6052.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_dm.o: In function `is_multicast_mac_addr': rtl8188f_dm.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_dm.o: In function `is_broadcast_mac_addr': rtl8188f_dm.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_dm.o: In function `is_zero_mac_addr': rtl8188f_dm.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_rxdesc.o: In function `is_multicast_mac_addr': rtl8188f_rxdesc.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_rxdesc.o: In function `is_broadcast_mac_addr': rtl8188f_rxdesc.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_rxdesc.o: In function `is_zero_mac_addr': rtl8188f_rxdesc.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_cmd.o: In function `is_multicast_mac_addr': rtl8188f_cmd.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_cmd.o: In function `is_broadcast_mac_addr': rtl8188f_cmd.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/rtl8188f_cmd.o: In function `is_zero_mac_addr': rtl8188f_cmd.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/hal8188f_fw.o: In function `is_multicast_mac_addr': hal8188f_fw.c:(.text+0x0): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/hal8188f_fw.o: In function `is_broadcast_mac_addr': hal8188f_fw.c:(.text+0x20): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/hal8188f_fw.o: In function `is_zero_mac_addr': hal8188f_fw.c:(.text+0xa4): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/usb/usb_halinit.o: In function `is_multicast_mac_addr': usb_halinit.c:(.text+0x73c): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/usb/usb_halinit.o: In function `is_broadcast_mac_addr': usb_halinit.c:(.text+0x75c): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/usb/usb_halinit.o: In function `is_zero_mac_addr': usb_halinit.c:(.text+0x7e0): multiple definition of `is_zero_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x298): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/usb/rtl8188fu_led.o: In function `is_multicast_mac_addr': rtl8188fu_led.c:(.text+0x84): multiple definition of `is_multicast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x1f4): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/usb/rtl8188fu_led.o: In function `is_broadcast_mac_addr': rtl8188fu_led.c:(.text+0xa4): multiple definition of `is_broadcast_mac_addr' drivers/net/wireless/rtl8188fu/core/rtw_cmd.o:rtw_cmd.c:(.text+0x214): first defined here drivers/net/wireless/rtl8188fu/hal/rtl8188f/usb/rtl8188fu_led.o: In function `is_zero_mac_addr': rtl8188fu_led.c:(.text+0x128): multiple definition of `is_zero_mac_addr' driver
全志R16平台的Android6系统下调通rtl8189es 2017/8/28 9:41 版本:V1.1 1、干掉BT选项: Q:\r16m\rtl8189es_r16m\Android\device\softwinner\astar-evb30\overlay\frameworks\base\core\res\res\values\config.xml <!-- List of regexpressions describing the interface (if any) that represent tetherable bluetooth interfaces. If the device doesn't want to support tethering over bluetooth this should be empty. --> <!-- default: disable Bluetooth PAN feature --> <string-array translatable="false" name="config_tether_bluetooth_regexs"> <item>"bt-pan"</item> </string-array> 2、 Q:\r16m\rtl8189es_r16m\android\device\softwinner\astar-evb30\astar_evb30.mk $(call inherit-product, build/target/product/full_base.mk) $(call inherit-product, device/softwinner/astar-common/astar-common.mk) $(call inherit-product-if-exists, device/softwinner/astar-evb30/modules/modules.mk) DEVICE_PACKAGE_OVERLAYS := device/softwinner/astar-evb30/overlay \ $(DEVICE_PACKAGE_OVERLAYS) PRODUCT_PACKAGES += Launcher3 PRODUCT_PACKAGES += \ ESFileExplorer \ VideoPlayer #Bluetooth # PartnerChromeCustomizationsProvider PRODUCT_COPY_FILES += \ device/softwinner/astar-evb30/kernel:kernel \ device/softwinner/astar-evb30/fstab.sun8i:root/fstab.sun8i \ device/softwinner/astar-evb30/init.sun8i.rc:root/init.sun8i.rc \ device/softwinner/astar-evb30/init.recovery.sun8i.rc:root/init.recovery.sun8i.rc \ device/softwinner/astar-evb30/ueventd.sun8i.rc:root/ueventd.sun8i.rc \ device/softwinner/astar-evb30/recovery.fstab:recovery.fstab \ device/softwinner/astar-evb30/modules/modules/nand.ko:root/nand.ko \ device/softwinner/astar-evb30/modules/modules/disp.ko:root/disp.ko \ device/softwinner/astar-evb30/modules/modules/lcd.ko:root/lcd.ko \ device/softwinner/astar-evb30/modules/modules/gslX680new.ko:root/gslX680new.ko \ device/softwinner/astar-evb30/modules/modules/sunxi-keyboard.ko:root/sunxi-keyboard.ko \ device/softwinner/astar-evb30/modules/modules/sw-device.ko:root/sw-device.ko \ device/softwinner/astar-evb30/modules/modules/sunxi-keyboard.ko:obj/sunxi-keyboard.ko \ device/softwinner/astar-evb30/modules/modules/sw-device.ko:obj/sw-device.ko \ device/softwinner/astar-evb30/modules/modules/gslX680new.ko:obj/gslX680new.ko PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.hardware.camera.xml:system/etc/permissions/android.hardware.camera.xml \ frameworks/native/data/etc/android.hardware.camera.front.xml:system/etc/permissions/android.hardware.camera.front.xml \ frameworks/native/data/etc/android.hardware.ethernet.xml:system/etc/permissions/android.hardware.ethernet.xml #frameworks/native/data/etc/android.hardware.bluetooth.xml:system/etc/permissions/android.hardware.bluetooth.xml # Low mem(memory <= 512M) device should not copy android.software.managed_users.xml #PRODUCT_COPY_FILES += \ # frameworks/native/data/etc/android.software.managed_users.xml:system/etc/permissions/android.software.managed_users.xml PRODUCT_COPY_FILES += \ device/softwinner/astar-evb30/configs/camera.cfg:system/etc/camera.cfg \ device/softwinner/astar-evb30/configs/gsensor.cfg:system/usr/gsensor.cfg \ device/softwinner/astar-evb30/configs/media_profiles.xml:system/etc/media_profiles.xml \ device/softwinner/astar-evb30/configs/sunxi-keyboard.kl:system/usr/keylayout/sunxi-keyboard.kl \ device/softwinner/astar-evb30/configs/tp.idc:system/usr/idc/tp.idc #PRODUCT_COPY_FILES += \ # device/softwinner/astar-evb30/bluetooth/bt_vendor.conf:system/etc/bluetooth/bt_vendor.conf # bootanimation PRODUCT_COPY_FILES += \ device/softwinner/astar-evb30/media/bootanimation.zip:system/media/bootanimation.zip # camera config for camera detector #PRODUCT_COPY_FILES += \ # device/softwinner/astar-evb30/hawkview/sensor_list_cfg.ini:system/etc/hawkview/sensor_list_cfg.ini # Radio Packages and Configuration Flie $(call inherit-product, device/softwinner/common/rild/radio_common.mk) #$(call inherit-product, device/softwinner/common/ril_modem/huawei/mu509/huawei_mu509.mk) #$(call inherit-product, device/softwinner/common/ril_modem/Oviphone/em55/oviphone_em55.mk) #PRODUCT_PROPERTY_OVERRIDES += \ # limit dex2oat threads to improve thermals PRODUCT_PROPERTY_OVERRIDES += \ dalvik.vm.boot-dex2oat-threads=4 \ dalvik.vm.dex2oat-threads=3 \ dalvik.vm.image-dex2oat-threads=4 # Realtek wifi efuse map #PRODUCT_COPY_FILES += \ # device/softwinner/astar-d7/wifi_efuse_8723bs-vq0.map:system/etc/wifi/wifi_efuse_8723bs-vq0.map PRODUCT_PROPERTY_OVERRIDES += \ dalvik.vm.dex2oat-flags=--no-watch-dog \ dalvik.vm.jit.codecachesize=0 \ ro.am.reschedule_service=true PRODUCT_PROPERTY_OVERRIDES += \ ro.frp.pst=/dev/block/by-name/frp PRODUCT_PROPERTY_OVERRIDES += \ persist.sys.usb.config=mass_storage,adb \ ro.adb.secure=0 \ ro.sys.mutedrm=true \ rw.logger=0 # A33 Media PRODUCT_PROPERTY_OVERRIDES += \ ro.config.media=1 PRODUCT_PROPERTY_OVERRIDES += \ dalvik.vm.heapsize=384m \ dalvik.vm.heapstartsize=8m \ dalvik.vm.heapgrowthlimit=80m \ dalvik.vm.heaptargetutilization=0.75 \ dalvik.vm.heapminfree=512k \ dalvik.vm.heapmaxfree=8m \ ro.zygote.disable_gl_preload=false #PRODUCT_PROPERTY_OVERRIDES += \ # ro.config.low_ram=true PRODUCT_PROPERTY_OVERRIDES += \ ro.sf.lcd_density=213 PRODUCT_PROPERTY_OVERRIDES += \ persist.sys.timezone=Asia/Shanghai \ persist.sys.country=CN \ persist.sys.language=zh # stoarge PRODUCT_PROPERTY_OVERRIDES += \ persist.fw.force_adoptable=true PRODUCT_CHARACTERISTICS := tablet PRODUCT_AAPT_CONFIG := mdpi PRODUCT_AAPT_PREF_CONFIG := mdpi #$(call inherit-product-if-exists, vendor/google/products/gms_base.mk) #for 8723bs-vq0,should setmacaddr #PRODUCT_PACKAGES += setmacaddr PRODUCT_BRAND := Allwinner PRODUCT_NAME := astar_evb30 PRODUCT_DEVICE := astar-evb30 PRODUCT_MODEL := QUAD-CORE R16 evb30 PRODUCT_MANUFACTURER := Allwinner 3、在这里配置你所使用的WIFI+BT: Q:\r16m\rtl8189es_r16m\android\device\softwinner\astar-evb30\BoardConfig.mk # wifi and bt configuration # 1. Wifi Configuration # 1.1 realtek wifi support # 1.1 realtek wifi configuration # BOARD_USR_WIFI: rtl8188eu/rtl8723bs/rtl8723bs_vq0/rtl8723cs BOARD_WIFI_VENDOR := realtek ifeq ($(BOARD_WIFI_VENDOR), realtek) WPA_SUPPLICANT_VERSION := VER_0_8_X BOARD_WPA_SUPPLICANT_DRIVER := NL80211 BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_rtl BOARD_HOSTAPD_DRIVER := NL80211 BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_rtl #BOARD_USR_WIFI := rtl8723bs_vq0 #BOARD_USR_WIFI := rtl8188eu BOARD_USR_WIFI := rtl8189es include hardware/realtek/wlan/config/config.mk endif # 1.2 broadcom wifi support #BOARD_WIFI_VENDOR := broadcom ifeq ($(BOARD_WIFI_VENDOR), broadcom) BOARD_WPA_SUPPLICANT_DRIVER := NL80211 WPA_SUPPLICANT_VERSION := VER_0_8_X BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_bcmdhd BOARD_HOSTAPD_DRIVER := NL80211 BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_bcmdhd BOARD_WLAN_DEVICE := bcmdhd WIFI_DRIVER_FW_PATH_PARAM := "/sys/module/bcmdhd/parameters/firmware_path" BOARD_USR_WIFI := ap6212 include hardware/broadcom/wlan/bcmdhd/firmware/$(BOARD_USR_WIFI)/device-bcm.mk endif ## 2. Bluetooth Configuration ## make sure BOARD_HAVE_BLUETOOTH is true for every bt vendor #BOARD_HAVE_BLUETOOTH := true #BOARD_HAVE_BLUETOOTH_BCM := true #BOARD_HAVE_BLUETOOTH_NAME := ap6212 #BOARD_BLUETOOTH_BDROID_BUILDCFG_INCLUDE_DIR := device/softwinner/astar-evb30/bluetooth TARGET_USE_BOOSTUP_OPZ := true 4、 Q:\r16m\rtl8189es_r16m\android\device\softwinner\astar-evb30\init.sun8i.rc ## bluetooth # # UART device # chmod 0660 /dev/ttyS1 # chown bluetooth net_bt_stack /dev/ttyS1 # # # power up/down interface # chmod 0660 /sys/class/rfkill/rfkill0/state # chmod 0660 /sys/class/rfkill/rfkill0/type # chown bluetooth net_bt_stack /sys/class/rfkill/rfkill0/state # chown bluetooth net_bt_stack /sys/class/rfkill/rfkill0/type # # # bluetooth MAC address programming # chown bluetooth net_bt_stack ro.bt.bdaddr_path # chown bluetooth net_bt_stack /system/etc/bluetooth # chown bluetooth net_bt_stack /data/misc/bluetooth # setprop ro.bt.bdaddr_path "/data/misc/bluetooth/bdaddr" # # # bluetooth LPM # chmod 0220 /proc/bluetooth/sleep/lpm # chmod 0220 /proc/bluetooth/sleep/btwrite # chown bluetooth net_bt_stack /proc/bluetooth/sleep/lpm # chown bluetooth net_bt_stack /proc/bluetooth/sleep/btwrite ## broadcom wifi service ## 1 broadcom wifi sta service #service wpa_supplicant /system/bin/wpa_supplicant \ # -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \ # -I/system/etc/wifi/wpa_supplicant_overlay.conf \ # -O/data/misc/wifi/sockets \ # -e/data/misc/wifi/entropy.bin -g@android:wpa_wlan0 # # we will start as root and wpa_supplicant will switch to user wifi # # after setting up the capabilities required for WEXT # # user wifi # # group wifi inet keystore # class main # socket wpa_wlan0 dgram 660 wifi wifi # disabled # oneshot # ## 2 broadcom wifi sta p2p concurrent service #service p2p_supplicant /system/bin/wpa_supplicant \ # -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \ # -I/system/etc/wifi/wpa_supplicant_overlay.conf \ # -O/data/misc/wifi/sockets -N \ # -ip2p0 -Dnl80211 -c/data/misc/wifi/p2p_supplicant.conf \ # -I/system/etc/wifi/p2p_supplicant_overlay.conf \ # -puse_p2p_group_interface=1 -e/data/misc/wifi/entropy.bin \ # -g@android:wpa_wlan0 # # we will start as root and wpa_supplicant will switch to user wifi # # after setting up the capabilities required for WEXT # # user wifi # # group wifi inet keystore # class main # socket wpa_wlan0 dgram 660 wifi wifi # disabled # oneshot # realtek wifi service service wpa_supplicant /system/bin/logwrapper /system/bin/wpa_supplicant \ -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \ -O/data/misc/wifi/sockets \ -e/data/misc/wifi/entropy.bin -g@android:wpa_wlan0 class main socket wpa_wlan0 dgram 660 wifi wifi disabled oneshot # 1.2 realtek wifi sta p2p concurrent service service p2p_supplicant /system/bin/logwrapper /system/bin/wpa_supplicant \ -ip2p0 -Dnl80211 -c/data/misc/wifi/p2p_supplicant.conf \ -e/data/misc/wifi/entropy.bin -N \ -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \ -O/data/misc/wifi/sockets \ -g@android:wpa_wlan0 class main socket wpa_wlan0 dgram 660 wifi wifi disabled oneshot 5、可选:为了调试方便 Q:\r16m\rtl8189es_r16m\android\frameworks\base\packages\SettingsProvider\res\values\defaults.xml <integer name="def_screen_off_timeout">60000</integer> <bool name="def_lockscreen_disabled">false</bool> 修改为: <integer name="def_screen_off_timeout">1800000</integer> <bool name="def_lockscreen_disabled">true</bool> 6、解决编译不过的问题。rtl8189es没有BT: Q:\r16m\rtl8189es_r16m\android\hardware\realtek\bluetooth\firmware\rtlbtfw_cfg.mk PRODUCT_COPY_FILES += \ $(LOCAL_PATH)/rtl8723a_fw:system/etc/firmware/rtl8723as_fw \ $(LOCAL_PATH)/rtl8723a_config:system/etc/firmware/rtl8723as_config \ $(LOCAL_PATH)/rtl8723b_fw:system/etc/firmware/rtl8723bs_fw \ $(LOCAL_PATH)/rtl8723b_config:system/etc/firmware/rtl8723bs_config \ $(LOCAL_PATH)/rtl8723b_VQ0_fw:system/etc/firmware/rtl8723bs_VQ0_fw \ $(LOCAL_PATH)/rtl8723b_VQ0_config:system/etc/firmware/rtl8723bs_VQ0_config \ $(LOCAL_PATH)/rtl8723cs_xx_fw:system/etc/firmware/rtl8723cs_xx_fw \ $(LOCAL_PATH)/rtl8723cs_xx_config:system/etc/firmware/rtl8723cs_xx_config \ $(LOCAL_PATH)/rtl8723cs_cg_fw:system/etc/firmware/rtl8723cs_cg_fw \ $(LOCAL_PATH)/rtl8723cs_cg_config:system/etc/firmware/rtl8723cs_cg_config \ $(LOCAL_PATH)/rtl8723cs_vf_fw:system/etc/firmware/rtl8723cs_vf_fw \ $(LOCAL_PATH)/rtl8723cs_vf_config:system/etc/firmware/rtl8723cs_vf_config \ $(LOCAL_PATH)/rtl8703b_fw:system/etc/firmware/rtl8703bs_fw \ $(LOCAL_PATH)/rtl8703b_config:system/etc/firmware/rtl8703bs_config #$(TOP_DIR)device/softwinner/$(basename $(TARGET_DEVICE))/bluetooth/rtkbt.conf:system/etc/bluetooth/rtkbt.conf \ 7、默认的BSP没有加载rtl8189es Q:\r16m\rtl8189es_r16m\android\hardware\libhardware_legacy\wifi\Android.mk # realtek sdio wifi module ifeq ($(BOARD_USR_WIFI), rtl8189fs) LOCAL_CFLAGS += -DRTL_8189FS_WIFI_USED LOCAL_CFLAGS += -DRTL_WIFI_VENDOR endif # realtek sdio wifi module ifeq ($(BOARD_USR_WIFI), rtl8189es) LOCAL_CFLAGS += -DRTL_8189ES_WIFI_USED LOCAL_CFLAGS += -DRTL_WIFI_VENDOR endif Q:\r16m\rtl8189es_r16m\android\hardware\libhardware_legacy\wifi\wifi.c #elif defined RTL_8189FS_WIFI_USED /* rtl8189FS sdio wifi */ #ifndef WIFI_DRIVER_MODULE_PATH #define WIFI_DRIVER_MODULE_PATH "/system/vendor/modules/8189fs.ko" #endif #ifndef WIFI_DRIVER_MODULE_NAME #define WIFI_DRIVER_MODULE_NAME "8189fs" #endif #ifndef WIFI_DRIVER_MODULE_ARG #define WIFI_DRIVER_MODULE_ARG "ifname=wlan0 if2name=p2p0" #endif #elif defined RTL_8189ES_WIFI_USED /* rtl8189ES sdio wifi */ #ifndef WIFI_DRIVER_MODULE_PATH #define WIFI_DRIVER_MODULE_PATH "/system/vendor/modules/8189es.ko" #endif #ifndef WIFI_DRIVER_MODULE_NAME #define WIFI_DRIVER_MODULE_NAME "8189es" #endif #ifndef WIFI_DRIVER_MODULE_ARG #define WIFI_DRIVER_MODULE_ARG "ifname=wlan0 if2name=p2p0" #endif #elif defined ESPRESSIF_ESP8089_WIFI_USED /* esp8089 sdio wifi */ #ifndef WIFI_DRIVER_MODULE_PATH #define WIFI_DRIVER_MODULE_PATH "/system/vendor/modules/esp8089.ko" #endif #ifndef WIFI_DRIVER_MODULE_NAME #define WIFI_DRIVER_MODULE_NAME "esp8089" #endif #ifndef WIFI_DRIVER_MODULE_ARG #define WIFI_DRIVER_MODULE_ARG "" #endif #endif 8、WIFI+BT的驱动识别: Q:\r16m\rtl8189es_r16m\lichee\Linux-3.4\drivers\misc\rf_pm\bt_pm.c static int rfkill_set_power(void *data, bool blocked) { unsigned int mod_sel = get_rf_mod_type(); RF_MSG("rfkill set power %d\n", !blocked); switch (mod_sel){ case 2: /* ap6210 */ case 5: /* rtl8723bs */ case 7: /* ap6476 */ case 8: /* ap6330 */ case 9: /* gb9663 */ case 10: /* ap6212 */ if (!blocked) { if(bt_rst_n != -1) gpio_set_value(bt_rst_n, 1); } else { if(bt_rst_n != -1) gpio_set_value(bt_rst_n, 0); } break; default: RF_MSG("no bt module matched !!\n"); } bt_state = !blocked; msleep(10); return 0; } Q:\r16m\rtl8189es_r16m\lichee\linux-3.4\drivers\misc\rf_pm\rf_pm.c char *module_list[] = { " ", "ap6181", "ap6210", "rtl8188eu", "rtl8723au", "rtl8723bs", "esp8089", "ap6476", "ap6330", "gb9663", "ap6212", "rtl8189es" }; static int rf_pm_probe(struct platform_device *pdev) { get_module_res(); if (mod_info.num <= 0) return -1; //moduls power init switch(mod_info.num){ case 1: /* ap6181 */ case 2: /* ap6210 */ case 5: /* rtl8723bs */ case 6: /* esp8089 */ case 7: /* ap6476 */ case 8: /* ap6330 */ case 9: /* gb9663 */ case 10: /* ap6212 */ case 11: /* rtl8189es */ rf_module_power(1); break; case 3: /* rtl8188eu */ case 4: /* rtl8723au */ rf_module_power(0); break; default: rf_pm_msg("wrong module select %d !\n", mod_info.num); } //opt ap 32k if(mod_info.lpo_use_apclk && strcmp(mod_info.lpo_use_apclk, "")){ ap_32k = clk_get(NULL, mod_info.lpo_use_apclk); if (!ap_32k || IS_ERR(ap_32k)){ rf_pm_msg("get clk %s failed!\n", mod_info.lpo_use_apclk); return -1; } rf_pm_msg("set %s 32k out\n", mod_info.lpo_use_apclk); enable_ap_32k(1); } scene_lock_init(&gpio_hold_standby, SCENE_GPIO_HOLD_STANDBY, "rf_pm"); return 0; } Q:\r16m\rtl8189es_r16m\lichee\linux-3.4\drivers\misc\rf_pm\wifi_pm.c void wifi_pm_power(int on) { int mod_num = get_rf_mod_type(); int on_off = 0; if (on > 0){ on_off = 1; } else { on_off = 0; } wifi_pm_msg("wifi power %s\n", on?"on":"off"); switch(mod_num){ case 1: /* ap6181 */ case 2: /* ap6210 */ case 5: /* rtl8723bs */ case 6: /* esp8089 */ case 7: /* ap6476 */ case 8: /* ap6330 */ case 9: /* gb9663*/ case 10: /* ap6212 */ case 11: /* rtl8189es */ if (wl_info.wl_reg_on != -1) gpio_set_value(wl_info.wl_reg_on, on_off); break; case 3: /* rtl8188eu */ rf_module_power(on_off); break; case 4: /* rtl8723au */ break; default: wifi_pm_msg("wrong module select %d !\n", mod_num); } wl_info.wl_power_state = on_off; wifi_state = on_off; } EXPORT_SYMBOL(wifi_pm_power); 9、直接使用全志R16平台的parrot v1.1系统下的rtl8189es驱动代替。Android6.0.1自带的驱动貌似有问题! Q:\r16m\rtl8189es_r16m\lichee\linux-3.4\drivers\net\wireless\rtl8189es\ rootroot@rootroot-E400:~/wyb/rtl8189es_r16m$ 7za x rtl8189es_r16m验证通过20170818_1659没有外层目录.7z -r -o./ rootroot@rootroot-E400:~/wyb/rtl8189es_r16m$ cd lichee/linux-3.4/drivers/net/wireless/ rootroot@rootroot-E400:~/wyb/rtl8189es_r16m/lichee/linux-3.4/drivers/net/wireless$ rootroot@rootroot-E400:~/wyb/rtl8189es_r16m/lichee/linux-3.4/drivers/net/wireless$ rm rtl8189es -rf rootroot@rootroot-E400:~/wyb/rtl8189es_r16m/lichee/linux-3.4/drivers/net/wireless$ tar zxvf rtl8189es4.tar.gz 10、可选操作:为了调试方便 Q:\r16m\rtl8189es_r16m\lichee\tools\pack\chips\sun8iw5p1\configs\default\env.cfg #kernel command arguments console=ttyS0,115200 nand_root=/dev/nandd mmc_root=/dev/mmcblk0p7 init=/init loglevel=8 #set kernel cmdline if boot.img or recovery.img has no cmdline we will use this setargs_nand=setenv bootargs console=${console} root=${nand_root} init=${init} ion_cma_list="120m,256m" loglevel=${loglevel} partitions=${partitions} setargs_mmc=setenv bootargs console=${console} root=${mmc_root} init=${init} ion_cma_list="120m,256m" loglevel=${loglevel} partitions=${partitions} #nand command syntax: sunxi_flash read address partition_name read_bytes #0x40007800 = 0x40008000(kernel entry) - 0x800(boot.img header 2k) boot_normal=sunxi_flash read 40007800 boot;boota 40007800 boot_recovery=sunxi_flash read 40007800 recovery;boota 40007800 boot_fastboot=fastboot #recovery key recovery_key_value_max=0x13 recovery_key_value_min=0x10 #fastboot key fastboot_key_value_max=0x8 fastboot_key_value_min=0x2 #uboot system env config bootdelay=3 #default bootcmd, will change at runtime according to key press bootcmd=run setargs_nand boot_normal#default nand boot 11、 Q:\r16m\rtl8189es_r16m\lichee\tools\pack\chips\sun8iw5p1\configs\evb-30\sys_config.fex ;--------------------------------------------------------------------------------------------------------- ; wakeup_src_para: ; sometimes, u would like to add more wakeup src in standby mode, these para will be ; help; ; u need to make sure the standby mode support the wakeup src. Also, some hw ; condition must be guaranteed. ; including: ; cpu_en: power on or off. ; 1: mean power on ; 0: mean power off ; cpu_freq: indicating lowest freq. unit is Mhz; ; dram selfresh_en: selfresh or not. ; 1: enable enter selfresh ; 0: disable enter selfresh ; dram_pll: if not enter selfresh, indicating lowest freq. unit is Mhz; ; wakeup_src: to make the scenario work, the wakeup src is needed. ;--------------------------------------------------------------------------------------------------------- [wakeup_src_para] cpu_en = 0 cpu_freq = 48 ; (cpu:apb:ahb) pll_ratio = 0x111 dram_selfresh_en= 1 dram_freq = 36 wakeup_src_wl = port:PL07<4><default><default><0> ;wakeup_src_bt = port:PL09<4><default><default><0> bb_wake_ap = port:PL02<4><default><default><0> ;-------------------------------------------------------------------------------- ;wifi/bt/fm/gps/nfc modules configuration ;module_num: ; 0- none ; 1- ap6181(wifi) ; 2- ap6210/ap6212(wifi+bt) ; 3- rtl8188eu(wifi) ; 4- rtl8723au(wifi+bt) ; 5- rtl8723bs/rtl8723bs-vq0(wifi+bt) ; 6- esp8089(wifi) ; 7- ap6476(wifi+bt+fm+gps) ; 8- ap6330(wifi+bt+fm) ; 9- gb9663(wifi+bt+fm) ; 10- ap6212(wifi+bt) ; 11- rtl8189es(wifi) ;module_power1: ""- bat, "axp_dldo1"- axp dldo1 ;module_power1_vol: power1 voltage, mv; not used for module_power1 is "" ;module_power2: ""- bat, "axp_dldo2"- axp dldo2 ;module_power2_vol: power2 voltage, mv; not used for module_power2 is "" ;module_power3: ""- bat, "axp_dldo2"- axp dldo2 ;module_power3_vol: power3 voltage, mv; not used for module_power3 is "" ;power_switch: module power switch io when bat supply ;chip_en: enable chip io ;lpo_use_apclk: ""- not use, "losc_out"- a23/33, "ac10032k1"?"ac10032k2"?"ac10032k3"- a80/a83 ;-------------------------------------------------------------------------------- [rf_para] module_num = 11 module_power1 = "axp22_dldo1" module_power1_vol = 3300000 module_power2 = "axp22_dldo2" module_power2_vol = 3300000 module_power3 = "axp22_aldo1" module_power3_vol = 3300000 power_switch = chip_en = lpo_use_apclk = "losc_out" ;-------------------------------------------------------------------------------- ;wifi configuration ;wifi_used: 0-not use, 1- use ;wifi_sdc_id: 0- SDC0, 1- SDC1, 2- SDC2, 3- SDC3 ;wifi_usbc_id: 0- USB0, 1- USB1, 2- USB2 ;wifi_usbc_type: 1- EHCI(speed 2.0), 2- OHCI(speed 1.0) ;wl_reg_on: wifi function enable io ;wl_host_wake: wifi device wake-up host ;wl_host_wake_invert: whether wl_host_wake use inverter between ap and module ; 0: not used, 1: used ;-------------------------------------------------------------------------------- [wifi_para] wifi_used = 1 wifi_sdc_id = 1 wifi_usbc_id = 1 wifi_usbc_type = 1 wl_reg_on = port:PL06<1><default><default><0> wl_host_wake = port:PL07<4><default><default><0> rtl8189es_host_wake = port:PL07<4><default><default><0> wl_host_wake_invert = 0 ;-------------------------------------------------------------------------------- ;bluetooth configuration ;bt_used: 0- no used, 1- used ;bt_uard_id: 0- uart0, 1- uart1, 2- uart2 ;bt_rst_n: bt function enable io ;bt_wake: host wake-up bluetooth device ;bt_wak_host: bt device wake-up host ;bt_host_wake_invert: whether bt_host_wake use inverter between ap and module ; 0: not used, 1: used ;-------------------------------------------------------------------------------- [bt_para] bt_used = 0 ;bt_uart_id = 1 ;bt_rst_n = port:PL08<1><default><default><0> ;bt_wake = port:PL10<1><default><default><0> ;bt_host_wake = port:PL09<4><default><default><0> ;bt_host_wake_invert = 0 power_start = 3 pmu_temp_enable = 0
全志R16平台的Android6系统下调通rtl8189es 2017/8/28 9:41 版本:V1.1 1、干掉BT选项: Q:\r16m\rtl8189es_r16m\Android\device\softwinner\astar-evb30\overlay\frameworks\base\core\res\res\values\config.xml "bt-pan" 2、 Q:\r16m\rtl8189es_r16m\android\device\softwinner\astar-evb30\astar_evb30.mk $(call inherit-product, build/target/product/full_base.mk) $(call inherit-product, device/softwinner/astar-common/astar-common.mk) $(call inherit-product-if-exists, device/softwinner/astar-evb30/modules/modules.mk) DEVICE_PACKAGE_OVERLAYS := device/softwinner/astar-evb30/overlay \ $(DEVICE_PACKAGE_OVERLAYS) PRODUCT_PACKAGES += Launcher3 PRODUCT_PACKAGES += \ ESFileExplorer \ VideoPlayer #Bluetooth # PartnerChromeCustomizationsProvider PRODUCT_COPY_FILES += \ device/softwinner/astar-evb30/kernel:kernel \ device/softwinner/astar-evb30/fstab.sun8i:root/fstab.sun8i \ device/softwinner/astar-evb30/init.sun8i.rc:root/init.sun8i.rc \ device/softwinner/astar-evb30/init.recovery.sun8i.rc:root/init.recovery.sun8i.rc \ device/softwinner/astar-evb30/ueventd.sun8i.rc:root/ueventd.sun8i.rc \ device/softwinner/astar-evb30/recovery.fstab:recovery.fstab \ device/softwinner/astar-evb30/modules/modules/nand.ko:root/nand.ko \ device/softwinner/astar-evb30/modules/modules/disp.ko:root/disp.ko \ device/softwinner/astar-evb30/modules/modules/lcd.ko:root/lcd.ko \ device/softwinner/astar-evb30/modules/modules/gslX680new.ko:root/gslX680new.ko \ device/softwinner/astar-evb30/modules/modules/sunxi-keyboard.ko:root/sunxi-keyboard.ko \ device/softwinner/astar-evb30/modules/modules/sw-device.ko:root/sw-device.ko \ device/softwinner/astar-evb30/modules/modules/sunxi-keyboard.ko:obj/sunxi-keyboard.ko \ device/softwinner/astar-evb30/modules/modules/sw-device.ko:obj/sw-device.ko \ device/softwinner/astar-evb30/modules/modules/gslX680new.ko:obj/gslX680new.ko PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.hardware.camera.xml:system/etc/permissions/android.hardware.camera.xml \ frameworks/native/data/etc/android.hardware.camera.front.xml:system/etc/permissions/android.hardware.camera.front.xml \ frameworks/native/data/etc/android.hardware.ethernet.xml:system/etc/permissions/android.hardware.ethernet.xml #frameworks/native/data/etc/android.hardware.bluetooth.xml:system/etc/permissions/android.hardware.bluetooth.xml # Low mem(memory <= 512M) device should not copy android.software.managed_users.xml #PRODUCT_COPY_FILES += \ # frameworks/native/data/etc/android.software.managed_users.xml:system/etc/permissions/android.software.managed_users.xml PRODUCT_COPY_FILES += \ device/softwinner/astar-evb30/configs/camera.cfg:system/etc/camera.cfg \ device/softwinner/astar-evb30/configs/gsensor.cfg:system/usr/gsensor.cfg \ device/softwinner/astar-evb30/configs/media_profiles.xml:system/etc/media_profiles.xml \ device/softwinner/astar-evb30/configs/sunxi-keyboard.kl:system/usr/keylayout/sunxi-keyboard.kl \ device/softwinner/astar-evb30/configs/tp.idc:system/usr/idc/tp.idc #PRODUCT_COPY_FILES += \ # device/softwinner/astar-evb30/bluetooth/bt_vendor.conf:system/etc/bluetooth/bt_vendor.conf # bootanimation PRODUCT_COPY_FILES += \ device/softwinner/astar-evb30/media/bootanimation.zip:system/media/bootanimation.zip # camera config for camera detector #PRODUCT_COPY_FILES += \ # device/softwinner/astar-evb30/hawkview/sensor_list_cfg.ini:system/etc/hawkview/sensor_list_cfg.ini # Radio Packages and Configuration Flie $(call inherit-product, device/softwinner/common/rild/radio_common.mk) #$(call inherit-product, device/softwinner/common/ril_modem/huawei/mu509/huawei_mu509.mk) #$(call inherit-product, device/softwinner/common/ril_modem/Oviphone/em55/oviphone_em55.mk) #PRODUCT_PROPERTY_OVERRIDES += \ # limit dex2oat threads to improve thermals PRODUCT_PROPERTY_OVERRIDES += \ dalvik.vm.boot-dex2oat-threads=4 \ dalvik.vm.dex2oat-threads=3 \ dalvik.vm.image-dex2oat-threads=4 # Realtek wifi efuse map #PRODUCT_COPY_FILES += \ # device/softwinner/astar-d7/wifi_efuse_8723bs-vq0.map:system/etc/wifi/wifi_efuse_8723bs-vq0.map PRODUCT_PROPERTY_OVERRIDES += \ dalvik.vm.dex2oat-flags=--no-watch-dog \ dalvik.vm.jit.codecachesize=0 \ ro.am.reschedule_service=true PRODUCT_PROPERTY_OVERRIDES += \ ro.frp.pst=/dev/block/by-name/frp PRODUCT_PROPERTY_OVERRIDES += \ persist.sys.usb.config=mass_storage,adb \ ro.adb.secure=0 \ ro.sys.mutedrm=true \ rw.logger=0 # A33 Media PRODUCT_PROPERTY_OVERRIDES += \ ro.config.media=1 PRODUCT_PROPERTY_OVERRIDES += \ dalvik.vm.heapsize=384m \ dalvik.vm.heapstartsize=8m \ dalvik.vm.heapgrowthlimit=80m \ dalvik.vm.heaptargetutilization=0.75 \ dalvik.vm.heapminfree=512k \ dalvik.vm.heapmaxfree=8m \ ro.zygote.disable_gl_preload=false #PRODUCT_PROPERTY_OVERRIDES += \ # ro.config.low_ram=true PRODUCT_PROPERTY_OVERRIDES += \ ro.sf.lcd_density=213 PRODUCT_PROPERTY_OVERRIDES += \ persist.sys.timezone=Asia/Shanghai \ persist.sys.country=CN \ persist.sys.language=zh # stoarge PRODUCT_PROPERTY_OVERRIDES += \ persist.fw.force_adoptable=true PRODUCT_CHARACTERISTICS := tablet PRODUCT_AAPT_CONFIG := mdpi PRODUCT_AAPT_PREF_CONFIG := mdpi #$(call inherit-product-if-exists, vendor/google/products/gms_base.mk) #for 8723bs-vq0,should setmacaddr #PRODUCT_PACKAGES += setmacaddr PRODUCT_BRAND := Allwinner PRODUCT_NAME := astar_evb30 PRODUCT_DEVICE := astar-evb30 PRODUCT_MODEL := QUAD-CORE R16 evb30 PRODUCT_MANUFACTURER := Allwinner 3、在这里配置你所使用的WIFI+BT: Q:\r16m\rtl8189es_r16m\android\device\softwinner\astar-evb30\BoardConfig.mk # wifi and bt configuration # 1. Wifi Configuration # 1.1 realtek wifi support # 1.1 realtek wifi configuration # BOARD_USR_WIFI: rtl8188eu/rtl8723bs/rtl8723bs_vq0/rtl8723cs BOARD_WIFI_VENDOR := realtek ifeq ($(BOARD_WIFI_VENDOR), realtek) WPA_SUPPLICANT_VERSION := VER_0_8_X BOARD_WPA_SUPPLICANT_DRIVER := NL80211 BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_rtl BOARD_HOSTAPD_DRIVER := NL80211 BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_rtl #BOARD_USR_WIFI := rtl8723bs_vq0 #BOARD_USR_WIFI := rtl8188eu BOARD_USR_WIFI := rtl8189es include hardware/realtek/wlan/config/config.mk endif # 1.2 broadcom wifi support #BOARD_WIFI_VENDOR := broadcom ifeq ($(BOARD_WIFI_VENDOR), broadcom) BOARD_WPA_SUPPLICANT_DRIVER := NL80211 WPA_SUPPLICANT_VERSION := VER_0_8_X BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_bcmdhd BOARD_HOSTAPD_DRIVER := NL80211 BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_bcmdhd BOARD_WLAN_DEVICE := bcmdhd WIFI_DRIVER_FW_PATH_PARAM := "/sys/module/bcmdhd/parameters/firmware_path" BOARD_USR_WIFI := ap6212 include hardware/broadcom/wlan/bcmdhd/firmware/$(BOARD_USR_WIFI)/device-bcm.mk endif ## 2. Bluetooth Configuration ## make sure BOARD_HAVE_BLUETOOTH is true for every bt vendor #BOARD_HAVE_BLUETOOTH := true #BOARD_HAVE_BLUETOOTH_BCM := true #BOARD_HAVE_BLUETOOTH_NAME := ap6212 #BOARD_BLUETOOTH_BDROID_BUILDCFG_INCLUDE_DIR := device/softwinner/astar-evb30/bluetooth TARGET_USE_BOOSTUP_OPZ := true 4、 Q:\r16m\rtl8189es_r16m\android\device\softwinner\astar-evb30\init.sun8i.rc ## bluetooth # # UART device # chmod 0660 /dev/ttyS1 # chown bluetooth net_bt_stack /dev/ttyS1 # # # power up/down interface # chmod 0660 /sys/class/rfkill/rfkill0/state # chmod 0660 /sys/class/rfkill/rfkill0/type # chown bluetooth net_bt_stack /sys/class/rfkill/rfkill0/state # chown bluetooth net_bt_stack /sys/class/rfkill/rfkill0/type # # # bluetooth MAC address programming # chown bluetooth net_bt_stack ro.bt.bdaddr_path # chown bluetooth net_bt_stack /system/etc/bluetooth # chown bluetooth net_bt_stack /data/misc/bluetooth # setprop ro.bt.bdaddr_path "/data/misc/bluetooth/bdaddr" # # # bluetooth LPM # chmod 0220 /proc/bluetooth/sleep/lpm # chmod 0220 /proc/bluetooth/sleep/btwrite # chown bluetooth net_bt_stack /proc/bluetooth/sleep/lpm # chown bluetooth net_bt_stack /proc/bluetooth/sleep/btwrite ## broadcom wifi service ## 1 broadcom wifi sta service #service wpa_supplicant /system/bin/wpa_supplicant \ # -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \ # -I/system/etc/wifi/wpa_supplicant_overlay.conf \ # -O/data/misc/wifi/sockets \ # -e/data/misc/wifi/entropy.bin -g@android:wpa_wlan0 # # we will start as root and wpa_supplicant will switch to user wifi # # after setting up the capabilities required for WEXT # # user wifi # # group wifi inet keystore # class main # socket wpa_wlan0 dgram 660 wifi wifi # disabled # oneshot # ## 2 broadcom wifi sta p2p concurrent service #service p2p_supplicant /system/bin/wpa_supplicant \ # -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \ # -I/system/etc/wifi/wpa_supplicant_overlay.conf \ # -O/data/misc/wifi/sockets -N \ # -ip2p0 -Dnl80211 -c/data/misc/wifi/p2p_supplicant.conf \ # -I/system/etc/wifi/p2p_supplicant_overlay.conf \ # -puse_p2p_group_interface=1 -e/data/misc/wifi/entropy.bin \ # -g@android:wpa_wlan0 # # we will start as root and wpa_supplicant will switch to user wifi # # after setting up the capabilities required for WEXT # # user wifi # # group wifi inet keystore # class main # socket wpa_wlan0 dgram 660 wifi wifi # disabled # oneshot # realtek wifi service service wpa_supplicant /system/bin/logwrapper /system/bin/wpa_supplicant \ -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \ -O/data/misc/wifi/sockets \ -e/data/misc/wifi/entropy.bin -g@android:wpa_wlan0 class main socket wpa_wlan0 dgram 660 wifi wifi disabled oneshot # 1.2 realtek wifi sta p2p concurrent service service p2p_supplicant /system/bin/logwrapper /system/bin/wpa_supplicant \ -ip2p0 -Dnl80211 -c/data/misc/wifi/p2p_supplicant.conf \ -e/data/misc/wifi/entropy.bin -N \ -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \ -O/data/misc/wifi/sockets \ -g@android:wpa_wlan0 class main socket wpa_wlan0 dgram 660 wifi wifi disabled oneshot 5、可选:为了调试方便 Q:\r16m\rtl8189es_r16m\android\frameworks\base\packages\SettingsProvider\res\values\defaults.xml 60000 false 修改为: 1800000 true 6、解决编译不过的问题。rtl8189es没有BT: Q:\r16m\rtl8189es_r16m\android\hardware\realtek\bluetooth\firmware\rtlbtfw_cfg.mk PRODUCT_COPY_FILES += \ $(LOCAL_PATH)/rtl8723a_fw:system/etc/firmware/rtl8723as_fw \ $(LOCAL_PATH)/rtl8723a_config:system/etc/firmware/rtl8723as_config \ $(LOCAL_PATH)/rtl8723b_fw:system/etc/firmware/rtl8723bs_fw \ $(LOCAL_PATH)/rtl8723b_config:system/etc/firmware/rtl8723bs_config \ $(LOCAL_PATH)/rtl8723b_VQ0_fw:system/etc/firmware/rtl8723bs_VQ0_fw \ $(LOCAL_PATH)/rtl8723b_VQ0_config:system/etc/firmware/rtl8723bs_VQ0_config \ $(LOCAL_PATH)/rtl8723cs_xx_fw:system/etc/firmware/rtl8723cs_xx_fw \ $(LOCAL_PATH)/rtl8723cs_xx_config:system/etc/firmware/rtl8723cs_xx_config \ $(LOCAL_PATH)/rtl8723cs_cg_fw:system/etc/firmware/rtl8723cs_cg_fw \ $(LOCAL_PATH)/rtl8723cs_cg_config:system/etc/firmware/rtl8723cs_cg_config \ $(LOCAL_PATH)/rtl8723cs_vf_fw:system/etc/firmware/rtl8723cs_vf_fw \ $(LOCAL_PATH)/rtl8723cs_vf_config:system/etc/firmware/rtl8723cs_vf_config \ $(LOCAL_PATH)/rtl8703b_fw:system/etc/firmware/rtl8703bs_fw \ $(LOCAL_PATH)/rtl8703b_config:system/etc/firmware/rtl8703bs_config #$(TOP_DIR)device/softwinner/$(basename $(TARGET_DEVICE))/bluetooth/rtkbt.conf:system/etc/bluetooth/rtkbt.conf \ 7、默认的BSP没有加载rtl8189es Q:\r16m\rtl8189es_r16m\android\hardware\libhardware_legacy\wifi\Android.mk # realtek sdio wifi module ifeq ($(BOARD_USR_WIFI), rtl8189fs) LOCAL_CFLAGS += -DRTL_8189FS_WIFI_USED LOCAL_CFLAGS += -DRTL_WIFI_VENDOR endif # realtek sdio wifi module ifeq ($(BOARD_USR_WIFI), rtl8189es) LOCAL_CFLAGS += -DRTL_8189ES_WIFI_USED LOCAL_CFLAGS += -DRTL_WIFI_VENDOR endif Q:\r16m\rtl8189es_r16m\android\hardware\libhardware_legacy\wifi\wifi.c #elif defined RTL_8189FS_WIFI_USED /* rtl8189FS sdio wifi */ #ifndef WIFI_DRIVER_MODULE_PATH #define WIFI_DRIVER_MODULE_PATH "/system/vendor/modules/8189fs.ko" #endif #ifndef WIFI_DRIVER_MODULE_NAME #define WIFI_DRIVER_MODULE_NAME "8189fs" #endif #ifndef WIFI_DRIVER_MODULE_ARG #define WIFI_DRIVER_MODULE_ARG "ifname=wlan0 if2name=p2p0" #endif #elif defined RTL_8189ES_WIFI_USED /* rtl8189ES sdio wifi */ #ifndef WIFI_DRIVER_MODULE_PATH #define WIFI_DRIVER_MODULE_PATH "/system/vendor/modules/8189es.ko" #endif #ifndef WIFI_DRIVER_MODULE_NAME #define WIFI_DRIVER_MODULE_NAME "8189es" #endif #ifndef WIFI_DRIVER_MODULE_ARG #define WIFI_DRIVER_MODULE_ARG "ifname=wlan0 if2name=p2p0" #endif #elif defined ESPRESSIF_ESP8089_WIFI_USED /* esp8089 sdio wifi */ #ifndef WIFI_DRIVER_MODULE_PATH #define WIFI_DRIVER_MODULE_PATH "/system/vendor/modules/esp8089.ko" #endif #ifndef WIFI_DRIVER_MODULE_NAME #define WIFI_DRIVER_MODULE_NAME "esp8089" #endif #ifndef WIFI_DRIVER_MODULE_ARG #define WIFI_DRIVER_MODULE_ARG "" #endif #endif 8、WIFI+BT的驱动识别: Q:\r16m\rtl8189es_r16m\lichee\Linux-3.4\drivers\misc\rf_pm\bt_pm.c static int rfkill_set_power(void *data, bool blocked) { unsigned int mod_sel = get_rf_mod_type(); RF_MSG("rfkill set power %d\n", !blocked); switch (mod_sel){ case 2: /* ap6210 */ case 5: /* rtl8723bs */ case 7: /* ap6476 */ case 8: /* ap6330 */ case 9: /* gb9663 */ case 10: /* ap6212 */ if (!blocked) { if(bt_rst_n != -1) gpio_set_value(bt_rst_n, 1); } else { if(bt_rst_n != -1) gpio_set_value(bt_rst_n, 0); } break; default: RF_MSG("no bt module matched !!\n"); } bt_state = !blocked; msleep(10); return 0; } Q:\r16m\rtl8189es_r16m\lichee\linux-3.4\drivers\misc\rf_pm\rf_pm.c char *module_list[] = { " ", "ap6181", "ap6210", "rtl8188eu", "rtl8723au", "rtl8723bs", "esp8089", "ap6476", "ap6330", "gb9663", "ap6212", "rtl8189es" }; static int rf_pm_probe(struct platform_device *pdev) { get_module_res(); if (mod_info.num 0){ on_off = 1; } else { on_off = 0; } wifi_pm_msg("wifi power %s\n", on?"on":"off"); switch(mod_num){ case 1: /* ap6181 */ case 2: /* ap6210 */ case 5: /* rtl8723bs */ case 6: /* esp8089 */ case 7: /* ap6476 */ case 8: /* ap6330 */ case 9: /* gb9663*/ case 10: /* ap6212 */ case 11: /* rtl8189es */ if (wl_info.wl_reg_on != -1) gpio_set_value(wl_info.wl_reg_on, on_off); break; case 3: /* rtl8188eu */ rf_module_power(on_off); break; case 4: /* rtl8723au */ break; default: wifi_pm_msg("wrong module select %d !\n", mod_num); } wl_info.wl_power_state = on_off; wifi_state = on_off; } EXPORT_SYMBOL(wifi_pm_power); 9、直接使用全志R16平台的parrot v1.1系统下的rtl8189es驱动代替。Android6.0.1自带的驱动貌似有问题! Q:\r16m\rtl8189es_r16m\lichee\linux-3.4\drivers\net\wireless\rtl8189es\ rootroot@rootroot-E400:~/wyb/rtl8189es_r16m$ 7za x rtl8189es_r16m验证通过20170818_1659没有外层目录.7z -r -o./ rootroot@rootroot-E400:~/wyb/rtl8189es_r16m$ cd lichee/linux-3.4/drivers/net/wireless/ rootroot@rootroot-E400:~/wyb/rtl8189es_r16m/lichee/linux-3.4/drivers/net/wireless$ rootroot@rootroot-E400:~/wyb/rtl8189es_r16m/lichee/linux-3.4/drivers/net/wireless$ rm rtl8189es -rf rootroot@rootroot-E400:~/wyb/rtl8189es_r16m/lichee/linux-3.4/drivers/net/wireless$ tar zxvf rtl8189es4.tar.gz 10、可选操作:为了调试方便 Q:\r16m\rtl8189es_r16m\lichee\tools\pack\chips\sun8iw5p1\configs\default\env.cfg #kernel command arguments console=ttyS0,115200 nand_root=/dev/nandd mmc_root=/dev/mmcblk0p7 init=/init loglevel=8 #set kernel cmdline if boot.img or recovery.img has no cmdline we will use this setargs_nand=setenv bootargs console=${console} root=${nand_root} init=${init} ion_cma_list="120m,256m" loglevel=${loglevel} partitions=${partitions} setargs_mmc=setenv bootargs console=${console} root=${mmc_root} init=${init} ion_cma_list="120m,256m" loglevel=${loglevel} partitions=${partitions} #nand command syntax: sunxi_flash read address partition_name read_bytes #0x40007800 = 0x40008000(kernel entry) - 0x800(boot.img header 2k) boot_normal=sunxi_flash read 40007800 boot;boota 40007800 boot_recovery=sunxi_flash read 40007800 recovery;boota 40007800 boot_fastboot=fastboot #recovery key recovery_key_value_max=0x13 recovery_key_value_min=0x10 #fastboot key fastboot_key_value_max=0x8 fastboot_key_value_min=0x2 #uboot system env config bootdelay=3 #default bootcmd, will change at runtime according to key press bootcmd=run setargs_nand boot_normal#default nand boot 11、 Q:\r16m\rtl8189es_r16m\lichee\tools\pack\chips\sun8iw5p1\configs\evb-30\sys_config.fex ;--------------------------------------------------------------------------------------------------------- ; wakeup_src_para: ; sometimes, u would like to add more wakeup src in standby mode, these para will be ; help; ; u need to make sure the standby mode support the wakeup src. Also, some hw ; condition must be guaranteed. ; including: ; cpu_en: power on or off. ; 1: mean power on ; 0: mean power off ; cpu_freq: indicating lowest freq. unit is Mhz; ; dram selfresh_en: selfresh or not. ; 1: enable enter selfresh ; 0: disable enter selfresh ; dram_pll: if not enter selfresh, indicating lowest freq. unit is Mhz; ; wakeup_src: to make the scenario work, the wakeup src is needed. ;--------------------------------------------------------------------------------------------------------- [wakeup_src_para] cpu_en = 0 cpu_freq = 48 ; (cpu:apb:ahb) pll_ratio = 0x111 dram_selfresh_en= 1 dram_freq = 36 wakeup_src_wl = port:PL07 ;wakeup_src_bt = port:PL09 bb_wake_ap = port:PL02 ;-------------------------------------------------------------------------------- ;wifi/bt/fm/gps/nfc modules configuration ;module_num: ; 0- none ; 1- ap6181(wifi) ; 2- ap6210/ap6212(wifi+bt) ; 3- rtl8188eu(wifi) ; 4- rtl8723au(wifi+bt) ; 5- rtl8723bs/rtl8723bs-vq0(wifi+bt) ; 6- esp8089(wifi) ; 7- ap6476(wifi+bt+fm+gps) ; 8- ap6330(wifi+bt+fm) ; 9- gb9663(wifi+bt+fm) ; 10- ap6212(wifi+bt) ; 11- rtl8189es(wifi) ;module_power1: ""- bat, "axp_dldo1"- axp dldo1 ;module_power1_vol: power1 voltage, mv; not used for module_power1 is "" ;module_power2: ""- bat, "axp_dldo2"- axp dldo2 ;module_power2_vol: power2 voltage, mv; not used for module_power2 is "" ;module_power3: ""- bat, "axp_dldo2"- axp dldo2 ;module_power3_vol: power3 voltage, mv; not used for module_power3 is "" ;power_switch: module power switch io when bat supply ;chip_en: enable chip io ;lpo_use_apclk: ""- not use, "losc_out"- a23/33, "ac10032k1"?"ac10032k2"?"ac10032k3"- a80/a83 ;-------------------------------------------------------------------------------- [rf_para] module_num = 11 module_power1 = "axp22_dldo1" module_power1_vol = 3300000 module_power2 = "axp22_dldo2" module_power2_vol = 3300000 module_power3 = "axp22_aldo1" module_power3_vol = 3300000 power_switch = chip_en = lpo_use_apclk = "losc_out" ;-------------------------------------------------------------------------------- ;wifi configuration ;wifi_used: 0-not use, 1- use ;wifi_sdc_id: 0- SDC0, 1- SDC1, 2- SDC2, 3- SDC3 ;wifi_usbc_id: 0- USB0, 1- USB1, 2- USB2 ;wifi_usbc_type: 1- EHCI(speed 2.0), 2- OHCI(speed 1.0) ;wl_reg_on: wifi function enable io ;wl_host_wake: wifi device wake-up host ;wl_host_wake_invert: whether wl_host_wake use inverter between ap and module ; 0: not used, 1: used ;-------------------------------------------------------------------------------- [wifi_para] wifi_used = 1 wifi_sdc_id = 1 wifi_usbc_id = 1 wifi_usbc_type = 1 wl_reg_on = port:PL06 wl_host_wake = port:PL07 rtl8189es_host_wake = port:PL07 wl_host_wake_invert = 0 ;-------------------------------------------------------------------------------- ;bluetooth configuration ;bt_used: 0- no used, 1- used ;bt_uard_id: 0- uart0, 1- uart1, 2- uart2 ;bt_rst_n: bt function enable io ;bt_wake: host wake-up bluetooth device ;bt_wak_host: bt device wake-up host ;bt_host_wake_invert: whether bt_host_wake use inverter between ap and module ; 0: not used, 1: used ;-------------------------------------------------------------------------------- [bt_para] bt_used = 0 ;bt_uart_id = 1 ;bt_rst_n = port:PL08 ;bt_wake = port:PL10 ;bt_host_wake = port:PL09 ;bt_host_wake_invert = 0 power_start = 3 pmu_temp_enable = 0
调通sina33下的AP6212A0版本的BT 大文实验室/大文哥 壹捌陆捌零陆捌捌陆捌贰 wb4916 AT qq.com 完成时间:2017/6/26 11:01 版本:V1.0 本文参照: 《A33 wifi移植说明书.pdf》 还有就是全志R16的parrotv1.1的官方SDK(Android4.4.2) 1、打开AP6212的BT,关闭rtl8723bs的BT: [ 3.141273] Bluetooth: HCI UART driver ver 2.2 [ 3.146210] Bluetooth: HCI H4 protocol initialized [ 3.151563] Bluetooth: HCI BCSP protocol initialized [ 3.157154] usbcore: registered new interface driver btusb [ 3.163282] Bluetooth: Generic Bluetooth SDIO driver ver 0.1 [ 3.169599] Bluetooth: BlueSleep Mode Driver Ver 1.1 [ 3.175402] Bluetooth: get rtl8723bs rtl8723bs_bt_host_wake gpio failed [ 3.953017] Bluetooth: RFCOMM TTY layer initialized [ 3.958456] Bluetooth: RFCOMM socket layer initialized [ 3.964183] Bluetooth: RFCOMM ver 1.11 [ 3.968340] Bluetooth: BNEP (Ethernet Emulation) ver 1.3 [ 3.968638] [mmc]: sdc2 set ios: clk 25000000Hz bm PP pm ON vdd 3.3V width 1 timing LEGACY(SDR12) dt B [ 3.968734] [mmc]: mclk 0xf1c20090 0xc100000b [ 3.989421] Bluetooth: BNEP filters: protocol multicast [ 3.995242] Bluetooth: HIDP (Human Interface Emulation) ver 1.2 [ 4.001921] L2TP core driver, V2.0 [ 4.005706] PPPoL2TP kernel driver, V2.0 [ 4.010070] L2TP IP encapsulation support (L2TPv3) [ 4.015468] L2TP netlink interface [ 4.019264] L2TP ethernet pseudowire support (L2TPv3) [ 4.023860] [mmc]: sdc2 set ios: clk 25000000Hz bm PP pm ON vdd 3.3V width 1 timing MMC-HS(SDR20) dt B [ 4.023929] [mmc]: mclk 0xf1c20090 0xc100000b [ 4.040272] VFP support v0.3: implementor 41 architecture 2 part 30 variant 7 rev 5 [ 4.048780] ThumbEE CPU extension supported. [ 4.053550] Registering SWP/SWPB emulation handler [ 4.059269] [rfkill]: rfkill set power 1 [ 4.063652] gpio ap6xxx_bt_regon set val 0, act val 0 正常启动的BT加载: [ 3.207764] Bluetooth: HCI UART driver ver 2.2 [ 3.212725] Bluetooth: HCI H4 protocol initialized [ 3.218045] Bluetooth: HCI BCSP protocol initialized [ 3.223671] usbcore: registered new interface driver btusb [ 3.229766] Bluetooth: Generic Bluetooth SDIO driver ver 0.1 [ 3.236243] Bluetooth: MSM Sleep Mode Driver Ver 1.2 rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r$ ll rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee$ ./build.sh config Welcome to mkscript setup progress All available chips: 0. sun8iw5p1 Choice: 0 All available platforms: 0. android 1. dragonboard 2. linux Choice: 0 All available kernel: 0. linux-3.4 Choice: 0 All available boards: 0. evb 1. maple 2. redwood 3. y2 4. y3 Choice: 4 rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee$ cd linux-3.4/ rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4$ make ARCH=arm menuconfig [*] Networking support ---> Bluetooth subsystem support ---> Bluetooth device drivers ---> Broadcom Bluetooth Low Power Manager Support Realtek Bluesleep driver support 修改为: Broadcom Bluetooth Low Power Manager Support An inverter between bt hostwake pin and cpu (NEW) Realtek Bluesleep driver support 2、(这个不修改:) R:\wyb\ap6212a0_a33_sc3817r\android\device\softwinner\astar-y3\overlay\frameworks\base\core\res\res\values\config.xml "wlan0" "bt-pan" 3、 R:\wyb\ap6212a0_a33_sc3817r\android\device\softwinner\astar-y3\astar_y3.mk # ap6181/6210/6330 sdio wifi fw and nvram #$(call inherit-product-if-exists, hardware/broadcom/wlan/firmware/ap6181/device-bcm.mk) #$(call inherit-product-if-exists, hardware/broadcom/wlan/firmware/ap6210/device-bcm.mk) $(call inherit-product-if-exists, hardware/broadcom/wlan/firmware/ap6212/device-bcm.mk) #$(call inherit-product-if-exists, hardware/broadcom/wlan/firmware/ap6330/device-bcm.mk) #rtl8723bs bt fw and config #$(call inherit-product, hardware/realtek/bluetooth/rtl8723bs/firmware/rtlbtfw_cfg.mk) # camera config for camera detector #PRODUCT_COPY_FILES += \ # device/softwinner/astar-y3/hawkview/sensor_list_cfg.ini:system/etc/hawkview/sensor_list_cfg.ini #add gms features #PRODUCT_COPY_FILES += \ # frameworks/native/data/etc/android.hardware.faketouch.xml:system/etc/permissions/android.hardware.faketouch.xml \ # frameworks/native/data/etc/android.hardware.touchscreen.multitouch.jazzhand.xml:system/etc/permissions/android.hardware.touchscreen.multitouch.jazzhand.xml \ # frameworks/native/data/etc/android.hardware.usb.host.xml:system/etc/permissions/android.hardware.usb.host.xml # 3G Data Card Packages #PRODUCT_PACKAGES += \ # u3gmonitor \ # chat \ # rild \ # pppd # 3G Data Card Configuration Flie #PRODUCT_COPY_FILES += \ # device/softwinner/polaris-common/rild/ip-down:system/etc/ppp/ip-down \ # device/softwinner/polaris-common/rild/ip-up:system/etc/ppp/ip-up \ # device/softwinner/polaris-common/rild/3g_dongle.cfg:system/etc/3g_dongle.cfg \ # device/softwinner/polaris-common/rild/usb_modeswitch:system/bin/usb_modeswitch \ # device/softwinner/polaris-common/rild/call-pppd:system/xbin/call-pppd \ # device/softwinner/polaris-common/rild/usb_modeswitch.sh:system/xbin/usb_modeswitch.sh \ # device/softwinner/polaris-common/rild/apns-conf_sdk.xml:system/etc/apns-conf.xml \ # device/softwinner/polaris-common/rild/libsoftwinner-ril.so:system/lib/libsoftwinner-ril.so #PRODUCT_COPY_FILES += \ # device/softwinner/polaris-common/rild/init.3gdongle.rc:root/init.sunxi.3gdongle.rc # 3G Data Card usb modeswitch File #PRODUCT_COPY_FILES += \ # $(call find-copy-subdir-files,*,device/softwinner/polaris-common/rild/usb_modeswitch.d,system/etc/usb_modeswitch.d) PRODUCT_PROPERTY_OVERRIDES += \ ro.sw.embeded.telephony = false PRODUCT_PROPERTY_OVERRIDES += \ persist.sys.timezone=Asia/Shanghai \ persist.sys.language=zh \ persist.sys.country=CN PRODUCT_PACKAGES += Bluetooth #PRODUCT_PROPERTY_OVERRIDES += \ # ro.product.8723b_bt.used=true #GPS Feature #PRODUCT_PACKAGES += gps.polaris #BOARD_USES_GPS_TYPE := simulator #PRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.location.xml:system/etc/permissions/android.hardware.location.xml # evb logger PRODUCT_COPY_FILES += \ device/softwinner/astar-y3/tools/logger.sh:system/bin/logger.sh PRODUCT_PROPERTY_OVERRIDES += \ persist.sys.usb.config=mass_storage,adb \ ro.adb.secure=0 ro.udisk.lable=Polaris \ ro.font.scale=1.0 \ ro.hwa.force=false \ rw.logger=0 \ ro.sys.bootfast=true \ debug.hwc.showfps=0 \ debug.hwui.render_dirty_regions=false #ro.sys.storage_type = emulated \ #for gms #PRODUCT_PROPERTY_OVERRIDES += \ # ro.sys.mutedrm=true \ # ro.adb.secure=1 PRODUCT_PROPERTY_OVERRIDES += \ ro.sf.lcd_density=213 \ ro.product.firmware=v2.0 $(call inherit-product-if-exists, device/softwinner/astar-y3/modules/modules.mk) DEVICE_PACKAGE_OVERLAYS := device/softwinner/astar-y3/overlay PRODUCT_CHARACTERISTICS := tablet # Overrides PRODUCT_AAPT_CONFIG := xlarge hdpi xhdpi large PRODUCT_AAPT_PREF_CONFIG := xhdpi PRODUCT_BRAND := Allwinner PRODUCT_NAME := astar_y3 PRODUCT_DEVICE := astar-y3 PRODUCT_MODEL := QUAD-CORE A33 y3 PRODUCT_MANUFACTURER := softwinner #include device/softwinner/polaris-common/prebuild/google/products/gms_base.mk 4、 R:\wyb\ap6212a0_a33_sc3817r\android\device\softwinner\astar-y3\BoardConfig.mk # wifi and bt configuration # 1. Wifi Configuration # 1.1 realtek wifi support # 1.1 realtek wifi configuration #BOARD_WIFI_VENDOR := realtek ifeq ($(BOARD_WIFI_VENDOR), realtek) WPA_SUPPLICANT_VERSION := VER_0_8_X BOARD_WPA_SUPPLICANT_DRIVER := NL80211 BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_rtl BOARD_HOSTAPD_DRIVER := NL80211 BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_rtl SW_BOARD_USR_WIFI := rtl8188eu BOARD_WLAN_DEVICE := rtl8188eu #SW_BOARD_USR_WIFI := rtl8723au #BOARD_WLAN_DEVICE := rtl8723au #SW_BOARD_USR_WIFI := rtl8723bs #BOARD_WLAN_DEVICE := rtl8723bs endif # 1.2 broadcom wifi support BOARD_WIFI_VENDOR := broadcom ifeq ($(BOARD_WIFI_VENDOR), broadcom) BOARD_WPA_SUPPLICANT_DRIVER := NL80211 WPA_SUPPLICANT_VERSION := VER_0_8_X BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_bcmdhd BOARD_HOSTAPD_DRIVER := NL80211 BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_bcmdhd BOARD_WLAN_DEVICE := bcmdhd WIFI_DRIVER_FW_PATH_PARAM := "/sys/module/bcmdhd/parameters/firmware_path" #SW_BOARD_USR_WIFI := AP6181 #SW_BOARD_USR_WIFI := AP6210 #WIFI_DRIVER_FW_PATH_STA := "/system/vendor/modules/fw_bcm40181a2.bin" #WIFI_DRIVER_FW_PATH_P2P := "/system/vendor/modules/fw_bcm40181a2_p2p.bin" #WIFI_DRIVER_FW_PATH_AP := "/system/vendor/modules/fw_bcm40181a2_apsta.bin" # 2017/6/21 15:11 wenyuanbo configure ap6212 use ap6210 SW_BOARD_USR_WIFI := AP6212 WIFI_DRIVER_FW_PATH_STA := "/system/vendor/modules/fw_bcm43438a0.bin" WIFI_DRIVER_FW_PATH_P2P := "/system/vendor/modules/fw_bcm43438a0_p2p.bin" WIFI_DRIVER_FW_PATH_AP := "/system/vendor/modules/fw_bcm43438a0_apsta.bin" #SW_BOARD_USR_WIFI := AP6330 #WIFI_DRIVER_FW_PATH_STA := "/system/vendor/modules/fw_bcm40183b2_ag.bin" #WIFI_DRIVER_FW_PATH_P2P := "/system/vendor/modules/fw_bcm40183b2_ag_p2p.bin" #WIFI_DRIVER_FW_PATH_AP := "/system/vendor/modules/fw_bcm40183b2_ag_apsta.bin" endif #1.3 eag wifi config #BOARD_WIFI_VENDOR := eagle ifeq ($(BOARD_WIFI_VENDOR), eagle) WPA_SUPPLICANT_VERSION := VER_0_8_X BOARD_WPA_SUPPLICANT_DRIVER := NL80211 BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_eagle BOARD_HOSTAPD_DRIVER := NL80211 BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_eagle SW_BOARD_USR_WIFI := esp8089 BOARD_WLAN_DEVICE := esp8089 endif # 2. Bluetooth Configuration # make sure BOARD_HAVE_BLUETOOTH is true for every bt vendor BOARD_HAVE_BLUETOOTH := true BOARD_HAVE_BLUETOOTH_BCM := true #SW_BOARD_HAVE_BLUETOOTH_NAME := ap6210 SW_BOARD_HAVE_BLUETOOTH_NAME := ap6212 #SW_BOARD_HAVE_BLUETOOTH_NAME := ap6330 #BOARD_HAVE_BLUETOOTH_RTK := true #BLUETOOTH_HCI_USE_RTK_H5 := true #SW_BOARD_HAVE_BLUETOOTH_NAME := rtl8723bs 5、 R:\wyb\ap6212a0_a33_sc3817r\android\device\softwinner\astar-y3\init.sun8i.rc on early-fs mount_all /fstab.sun8i setprop ro.crypto.fuse_sdcard true insmod /system/vendor/modules/disp.ko insmod /system/vendor/modules/lcd.ko insmod /system/vendor/modules/mali.ko insmod /system/vendor/modules/leds-sunxi.ko insmod /system/vendor/modules/bcmdhd.ko insmod /system/vendor/modules/bcm_btlpm.ko #2G or 3G init.rc # import init.sunxi.3gdongle.rc ## 1. realtek & eagle wifi service ## 1.1 realtek & eagle wifi sta service #service wpa_supplicant /system/bin/wpa_supplicant \ # -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \ # -O/data/misc/wifi/sockets \ # -e/data/misc/wifi/entropy.bin -g@android:wpa_wlan0 # # we will start as root and wpa_supplicant will switch to user wifi # # after setting up the capabilities required for WEXT # # user wifi # # group wifi inet keystore # class main # socket wpa_wlan0 dgram 660 wifi wifi # disabled # oneshot # ## 1.2 realtek & eagle wifi sta p2p concurrent service #service p2p_supplicant /system/bin/wpa_supplicant \ # -ip2p0 -Dnl80211 -c/data/misc/wifi/p2p_supplicant.conf \ # -e/data/misc/wifi/entropy.bin -N \ # -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \ # -O/data/misc/wifi/sockets \ # -g@android:wpa_wlan0 # class main # socket wpa_wlan0 dgram 660 wifi wifi # disabled # oneshot # 2. broadcom wifi service # 2.1 broadcom wifi station and softap service wpa_supplicant /system/bin/wpa_supplicant \ -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \ -I/system/etc/wifi/wpa_supplicant_overlay.conf \ -O/data/misc/wifi/sockets \ -e/data/misc/wifi/entropy.bin -g@android:wpa_wlan0 # we will start as root and wpa_supplicant will switch to user wifi # after setting up the capabilities required for WEXT # user wifi # group wifi inet keystore class main socket wpa_wlan0 dgram 660 wifi wifi disabled oneshot # 2.2 broadcom wifi sta p2p concurrent service service p2p_supplicant /system/bin/wpa_supplicant \ -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \ -I/system/etc/wifi/wpa_supplicant_overlay.conf \ -O/data/misc/wifi/sockets -N \ -ip2p0 -Dnl80211 -c/data/misc/wifi/p2p_supplicant.conf \ -I/system/etc/wifi/p2p_supplicant_overlay.conf \ -puse_p2p_group_interface=1 -e/data/misc/wifi/entropy.bin \ -g@android:wpa_wlan0 # we will start as root and wpa_supplicant will switch to user wifi # after setting up the capabilities required for WEXT # user wifi # group wifi inet keystore class main socket wpa_wlan0 dgram 660 wifi wifi disabled oneshot 6、(不需要修改) R:\wyb\ap6212a0_a33_sc3817r\android\device\softwinner\astar-y3\ueventd.sun8i.rc 7、 R:\wyb\ap6212a0_a33_sc3817r\android\frameworks\base\packages\SettingsProvider\res\values\defaults.xml 1800000 true 8、 R:\wyb\ap6212a0_a33_sc3817r\android\frameworks\base\services\java\com\android\server\BatteryService.java // private static final boolean DEBUG = false; private static final boolean DEBUG = true; private void sendIntentLocked() { // Pack up the values and broadcast them to everyone final Intent intent = new Intent(Intent.ACTION_BATTERY_CHANGED); intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY | Intent.FLAG_RECEIVER_REPLACE_PENDING); int icon = getIconLocked(mBatteryProps.batteryLevel); intent.putExtra(BatteryManager.EXTRA_STATUS, mBatteryProps.batteryStatus); intent.putExtra(BatteryManager.EXTRA_HEALTH, mBatteryProps.batteryHealth); intent.putExtra(BatteryManager.EXTRA_PRESENT, mBatteryProps.batteryPresent); //intent.putExtra(BatteryManager.EXTRA_LEVEL, mBatteryProps.batteryLevel); intent.putExtra(BatteryManager.EXTRA_LEVEL, 100); intent.putExtra(BatteryManager.EXTRA_SCALE, BATTERY_SCALE); intent.putExtra(BatteryManager.EXTRA_ICON_SMALL, icon); intent.putExtra(BatteryManager.EXTRA_PLUGGED, mPlugType); //intent.putExtra(BatteryManager.EXTRA_VOLTAGE, mBatteryProps.batteryVoltage); intent.putExtra(BatteryManager.EXTRA_VOLTAGE, 4200); intent.putExtra(BatteryManager.EXTRA_TEMPERATURE, mBatteryProps.batteryTemperature); intent.putExtra(BatteryManager.EXTRA_TECHNOLOGY, mBatteryProps.batteryTechnology); intent.putExtra(BatteryManager.EXTRA_INVALID_CHARGER, mInvalidCharger); if (DEBUG) { Slog.d(TAG, "2016/12/05 10:41 wenyuanbo **** Sending ACTION_BATTERY_CHANGED. level:" + mBatteryProps.batteryLevel + ", scale:" + BATTERY_SCALE + ", status:" + mBatteryProps.batteryStatus + ", health:" + mBatteryProps.batteryHealth + ", present:" + mBatteryProps.batteryPresent + ", voltage: " + mBatteryProps.batteryVoltage + ", temperature: " + mBatteryProps.batteryTemperature + ", technology: " + mBatteryProps.batteryTechnology + ", AC powered:" + mBatteryProps.chargerAcOnline + ", USB powered:" + mBatteryProps.chargerUsbOnline + ", Wireless powered:" + mBatteryProps.chargerWirelessOnline + ", icon:" + icon + ", invalid charger:" + mInvalidCharger); } mHandler.post(new Runnable() { @Override public void run() { ActivityManagerNative.broadcastStickyIntent(intent, null, UserHandle.USER_ALL); } }); } 9、(直接拷贝同目录下的ap6210:) R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\libbt\conf\softwinner\ap6212\Android.mk LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := bt_vendor.conf LOCAL_MODULE_CLASS := ETC LOCAL_MODULE_PATH := $(TARGET_OUT)/etc/bluetooth LOCAL_MODULE_TAGS := eng LOCAL_SRC_FILES := $(LOCAL_MODULE) include $(BUILD_PREBUILT) R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\libbt\conf\softwinner\ap6212\bt_vendor.conf # UART device port where Bluetooth controller is attached UartPort = /dev/ttyS1 # Firmware patch file location FwPatchFilePath = /system/vendor/modules/ # Firmware Name FwPatchFileName = bcm43438a0.hcd 10、新增:vnd_astar-y3-ap6212.txt,直接拷贝:vnd_astar-y2-ap6210.txt R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\libbt\include\vnd_astar-y3-ap6212.txt R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\libbt\include\vnd_astar-y2-ap6210.txt BLUETOOTH_UART_DEVICE_PORT = "/dev/ttyS1" FW_PATCHFILE_LOCATION = "/system/vendor/modules/" LPM_IDLE_TIMEOUT_MULTIPLE = 5 UART_TARGET_BAUD_RATE = 1500000 BT_WAKE_VIA_PROC = TRUE #LPM_SLEEP_MODE = FALSE BTVND_DBG = TRUE BTHW_DBG = TRUE VNDUSERIAL_DBG = TRUE UPIO_DBG = TRUE 11、 R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\libbt\src\userial_vendor.c //#ifdef USE_AP6210_BT_MODULE #if defined(USE_AP6210_BT_MODULE) || defined(USE_AP6212_BT_MODULE) /* PATCH for AP6210. Will detect CTS(module side) to select transport mode*/ ALOGE("userial vendor open: USE AP6210 BT MODULE."); usleep(100000); close(vnd_userial.fd); if ((vnd_userial.fd = open(vnd_userial.port_name, O_RDWR)) == -1) { ALOGE("userial vendor open: unable to open %s", vnd_userial.port_name); return -1; } #endif //USE_AP6210_BT_MODULE 12、 R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\libbt\Android.mk ifeq ($(SW_BOARD_HAVE_BLUETOOTH_NAME), ap6210) LOCAL_CFLAGS += -DUSE_AP6210_BT_MODULE endif ifeq ($(SW_BOARD_HAVE_BLUETOOTH_NAME), ap6212) LOCAL_CFLAGS += -DUSE_AP6212_BT_MODULE endif ifeq ($(SW_BOARD_HAVE_BLUETOOTH_NAME), ap6330) include $(LOCAL_PATH)/conf/softwinner/ap6330/Android.mk endif ifeq ($(SW_BOARD_HAVE_BLUETOOTH_NAME), ap6210) include $(LOCAL_PATH)/conf/softwinner/ap6210/Android.mk endif ifeq ($(SW_BOARD_HAVE_BLUETOOTH_NAME), ap6212) include $(LOCAL_PATH)/conf/softwinner/ap6212/Android.mk endif 13、 R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\libbt\vnd_buildcfg.mk ifeq ($(SW_BOARD_HAVE_BLUETOOTH_NAME), ap6210) SRC := $(call my-dir)/include/$(addprefix vnd_, $(addsuffix -ap6210.txt,$(basename $(TARGET_DEVICE)))) endif ifeq ($(SW_BOARD_HAVE_BLUETOOTH_NAME), ap6212) SRC := $(call my-dir)/include/$(addprefix vnd_, $(addsuffix -ap6212.txt,$(basename $(TARGET_DEVICE)))) endif 14、(这些AP6212的WIFI的bin文件和BT的hcd文件来自全志R16的SDK,当然也可以找正基原厂/代理商索取:) R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\wlan\firmware\ap6212\bcm43438a0.hcd (根据ap6210修改:) R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\wlan\firmware\ap6212\device-bcm.mk # # Copyright (C) 2008 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # ######################## -include hardware/broadcom/wlan/bcmdhd/config/config-bcm.mk PRODUCT_COPY_FILES += \ hardware/broadcom/wlan/firmware/ap6212/fw_bcm43438a0.bin:system/vendor/modules/fw_bcm43438a0.bin \ hardware/broadcom/wlan/firmware/ap6212/fw_bcm43438a0_apsta.bin:system/vendor/modules/fw_bcm43438a0_apsta.bin \ hardware/broadcom/wlan/firmware/ap6212/fw_bcm43438a0_p2p.bin:system/vendor/modules/fw_bcm43438a0_p2p.bin \ hardware/broadcom/wlan/firmware/ap6212/nvram_ap6212.txt:system/vendor/modules/nvram_ap6212.txt \ hardware/broadcom/wlan/firmware/ap6212/bcm43438a0.hcd:system/vendor/modules/bcm43438a0.hcd #hardware/broadcom/wlan/firmware/ap6212/config.txt:system/vendor/modules/config.txt ######################## R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\wlan\firmware\ap6212\fw_bcm43438a0.bin R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\wlan\firmware\ap6212\fw_bcm43438a0_apsta.bin R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\wlan\firmware\ap6212\fw_bcm43438a0_p2p.bin R:\wyb\ap6212a0_a33_sc3817r\android\hardware\broadcom\wlan\firmware\ap6212\nvram_ap6212.txt 15、(可选修改:) R:\wyb\ap6212a0_a33_sc3817r\android\packages\apps\Camera2\src\com\android\camera\CameraActivity.java private BroadcastReceiver mBatteryInfoReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (Intent.ACTION_BATTERY_CHANGED.equals(action)) { int Level = intent.getIntExtra("level", 0); int Scale = intent.getIntExtra("scale", 100); Log.w(TAG, "2016/11/29 19:54 &&&& wenyuanbo battery Level" + Level); /* *Logic: *1.the battery level is lower then 5%. *2.if in camera, make sure that not in the snapshot progress. *3.if in videocamera, make sure that not in the videorecording progress. *4.everytime starting the camera activity, the battery level is broadcasted, * if meeting the conditions above, give a dialog, press it and finish the activity. *5.if the conditions are not satisfied when started, play for a moment, in the camera acitvity * or video camera activity, the conditiosn are satisfied, also give a dialog for finishing the activity. * *by fuqiang. */ if(Level < 5) { Runnable runnable_close_camera = new Runnable() { @Override public void run() { //close the camera. // CameraActivity.this.finish(); } }; Log.w(TAG, "2016/11/29 18:20 **** wenyuanbo battery Level" + Level); showLocationDialog(); } /* *Logic: *1.the battery level is lhigher then 5% and lower than 15%. *2.if in camera, make sure that not in the snapshot progress. *3.if in videocamera, make sure that not in the videorecording progress. *4.whether in camera or in videocamera, make sure that the flash mode is supported. *5.everytime starting the camera activity, the battery level is broadcasted, * if meeting the conditions above, forbidden the flash(gray icon), give a dialog to notise user. *6.if the conditions are not satisfied when started, play for a moment, in the camera acitvity * or video camera activity, the conditiosn are satisfied, forbidden the flash and give a notice dialog. *7.the dialog is only given once for each camera activity starting. * *by fuqiang. */ else if(Level < 16) { //close the flash mode. /* if (mIsLowBatteryDialogShown == false) { mRotateDialog.showAlertDialog( getString(R.string.warning), getString(R.string.low_battery_15), null, null, getString(R.string.close), null); mIsLowBatteryDialogShown = true; } */ } } } }; 16、(可选:) R:\wyb\ap6212a0_a33_sc3817r\lichee\tools\pack\chips\sun8iw5p1\configs\default\env.cfg bootdelay=3 loglevel=8 17、 R:\wyb\ap6212a0_a33_sc3817r\lichee\tools\pack\chips\sun8iw5p1\configs\y3\sys_config.fex [power_sply] dcdc1_vol = 3000 dcdc2_vol = 1100 dcdc3_vol = 1200 dcdc4_vol = 0 dcdc5_vol = 1500 aldo1_vol = 3300 aldo2_vol = 2500 aldo3_vol = 3000 dldo1_vol = 3300 dldo2_vol = 3300 dldo3_vol = 2800 ;gpio0_vol = 2800 ldoio0_vol = 2800 ;---------------------------------------------------------------------------------- ;uart configuration ;uart_used = uart x enable ;uart_type = 2:2 wire,4:4 wire,8:8 wire, full function ;---------------------------------------------------------------------------------- [uart0] uart_used = 1 uart_port = 0 uart_type = 2 uart_tx = port:PF02 uart_rx = port:PF04 [uart1] uart_used = 1 uart_port = 1 uart_type = 4 uart_tx = port:PG06 uart_rx = port:PG07 uart_rts = port:PG08 uart_cts = port:PG09 [uart2] uart_used = 1 uart_type = 4 uart_tx = port:PB00 uart_rx = port:PB01 uart_rts = port:PB02 uart_cts = port:PB03 [uart3] uart_used = 0 uart_type = 4 uart_tx = port:PH06 uart_rx = port:PH07 uart_rts = port:PH08 uart_cts = port:PH09 [uart4] uart_used = 0 uart_port = 4 uart_type = 2 uart_tx = port:PA04 uart_rx = port:PA05 uart_rts = port:PA06 uart_cts = port:PA07 ;---------------------------------------------------------------------------------- ;capacitor tp configuration ;ctp_twi_id : twi controller ID ;ctp_twi_addr : I2C slave address, 7bit ;ctp_screen_max_x/_y : resolution of touch panel ;ctp_revert_x/_y_flag : whether need to revert x/y ;ctp_exchange_x_y_flag: whether need to exchange the value of x and y ;ctp_int_port : port for tp's interrupt signal ;ctp_wakeup : port for wakeup tp ;---------------------------------------------------------------------------------- [ctp_para] ctp_used = 1 ctp_name = "gt82x" ctp_twi_id = 0 ctp_twi_addr = 0x5d ctp_screen_max_x = 1280 ctp_screen_max_y = 800 ctp_revert_x_flag = 1 ctp_revert_y_flag = 1 ctp_exchange_x_y_flag = 1 ctp_int_port = port:PL04 ctp_wakeup = port:PL03 ctp_power_ldo = ctp_power_ldo_vol = ctp_power_io = ;-------------------------------------------------------------------------------- ; CTP automatic detection configuration ;ctp_detect_used --- Whether startup automatic inspection function. 1:used,0:unused ;Module name postposition 1 said detection, 0 means no detection. ;-------------------------------------------------------------------------------- [ctp_list_para] ctp_det_used = 1 ft5x_ts = 1 gt82x = 1 gslX680 = 1 gslX680new = 0 gt9xx_ts = 1 gt9xxf_ts = 0 tu_ts = 0 gt818_ts = 1 zet622x = 1 aw5306_ts = 1 icn83xx_ts = 0 [lcd0_para] lcd_used = 1 lcd_driver_name = "default_lcd" lcd_if = 3 lcd_x = 1280 lcd_y = 800 lcd_width = 150 lcd_height = 94 lcd_dclk_freq = 71 lcd_pwm_used = 1 lcd_pwm_ch = 0 lcd_pwm_freq = 50000 lcd_pwm_pol = 1 lcd_hbp = 20 lcd_ht = 1418 lcd_hspw = 10 lcd_vbp = 10 lcd_vt = 830 lcd_vspw = 5 lcd_lvds_if = 0 lcd_lvds_colordepth = 1 lcd_lvds_mode = 0 lcd_frm = 1 lcd_gamma_en = 0 lcd_bright_curve_en = 0 lcd_cmap_en = 0 deu_mode = 0 lcdgamma4iep = 22 smart_color = 90 lcd_bl_en = port:PD13 ;ap6xxx_wl_regon = port:PL06 ;lcd_bl_en = port:PL06 lcd_power = "axp22_dc1sw" lcdd0 = port:PD18 lcdd1 = port:PD19 lcdd2 = port:PD20 lcdd3 = port:PD21 lcdd4 = port:PD22 lcdd5 = port:PD23 lcdd6 = port:PD24 lcdd7 = port:PD25 lcdd8 = port:PD26 lcdd9 = port:PD27 ;---------------------------------------------------------------------------------- ;pwm config ;---------------------------------------------------------------------------------- [pwm0_para] pwm_used = 0 pwm_positive = port:PH00 [pwm1_para] pwm_used = 1 pwm_positive = port:PH01 ;-------------------------------------------------------------------------------- ;wifi configuration ;wifi_sdc_id: 0- SDC0, 1- SDC1, 2- SDC2, 3- SDC3 ;wifi_usbc_id: 0- USB0, 1- USB1, 2- USB2 ;wifi_usbc_type: 1- EHCI(speed 2.0), 2- OHCI(speed 1.0) ;wifi_mod_sel: 0- none, 1- ap6181, 2- ap6210(wifi+bt), ; 3 - rtl8188eu, 4- rtl8723au(wifi+bt), ; 5 - rtl8723bs, 6- esp8089 ;-------------------------------------------------------------------------------- [wifi_para] wifi_used = 1 wifi_sdc_id = 1 wifi_usbc_id = 1 wifi_usbc_type = 1 wifi_mod_sel = 2 wifi_power = "axp22_dldo1" wifi_power_ext1 = "axp22_dldo2" wifi_power_ext2 = "axp22_aldo1" wifi_power_switch = ;wifi_power_switch = port:power0 ; 1 - ap6181 sdio wifi gpio config ;ap6xxx_wl_regon = port:PL06 ;ap6xxx_wl_host_wake = port:PL07 ;ap6xxx_lpo_use_apclk = 1 ; 2 - ap6210 sdio wifi gpio config ap6xxx_wl_regon = port:PL06 ;ap6xxx_wl_regon = port:PD13 ap6xxx_wl_host_wake = port:PL07 ap6xxx_bt_regon = port:PL08 ap6xxx_bt_wake = port:PL10 ap6xxx_bt_host_wake = port:PL09 ap6xxx_lpo_use_apclk = 1 ; 3 - rtl8188eu usb wifi gpio conifg ; 4 - rtl8723au usb wifi + bt ; 5 - rtl8723bs sdio wifi + bt ;rtl8723bs_chip_en = port:PL11 ;rtl8723bs_wl_regon = port:PL06 ;rtl8723bs_wl_host_wake = port:PL07 ;rtl8723bs_bt_regon = port:PL08 ;rtl8723bs_bt_wake = port:PL10 ;rtl8723bs_bt_host_wake = port:PL09 ;rtl8723bs_lpo_use_apclk = 0 ; 6 - eagle sdio wifi ;esp_wl_chip_en = port:PL03 ;esp_wl_rst = port:PL02 ;-------------------------------------------------------------------------------- ;blue tooth ;bt_used ---- blue tooth used (0- no used, 1- used) ;bt_uard_id ---- uart index ;-------------------------------------------------------------------------------- [bt_para] bt_used = 1 bt_uart_id = 1 power_start = 3 pmu_temp_enable = 0 18、 刷机之后,BT可以用。 传输4.5MB的JPG图片大概需要2分钟。 WIFI: 在设置→WLAN(打开之后): shell@astar-y3:/ $ shell@astar-y3:/ $ [ 469.609956] init: computing context for service '/system/bin/wpa_supplicant' [ 469.618386] init: starting 'p2p_supplicant' [ 469.625739] init: Created socket '/dev/socket/wpa_wlan0' with mode '660', user '1010', group '1010' [ 469.673379] init: waitpid returned pid 2065, status = 0000ff00 [ 469.679923] init: process 'p2p_supplicant', pid 2065 exited [ 476.197334] sndpcm_unmute,line:1099 [ 451.464755] CPU1: Booted secondary processor [ 478.459403] CPU1: shutdown [ 478.462947] [hotplug]: cpu(0) try to kill cpu(1) [ 478.468478] [hotplug]: cpu1 is killed! . shell@astar-y3:/ $ 分析启动的log: [ 17.526849] gpio ap6xxx_wl_regon set val 1, act val 1 [ 17.632508] [ap6xxx]: sdio wifi power state: on [ 17.637576] [mmc]: sdc1 set ios: clk 0Hz bm PP pm UP vdd 3.3V width 1 timing LEGACY(SDR12) dt B [ 17.637751] =========== WLAN placed in POWER ON ======== [ 17.654651] [mmc]: sdc1 card_power_on start... [ 17.659576] [mmc]: sdc1 power_supply is null [ 17.664322] [mmc]: sdc1 card_power_on ok [ 17.680039] [mmc]: sdc1 set ios: clk 400000Hz bm PP pm ON vdd 3.3V width 1 timing LEGACY(SDR12) dt B [ 17.690275] [mmc]: mclk 0xf1c2008c 0x8002000e [ 17.772361] [mmc]: *** sunxi_mci_dump_errinfo(L773): smc 1 err, cmd 52, RTO !! [ 17.781309] [mmc]: *** sunxi_mci_dump_errinfo(L773): smc 1 err, cmd 52, RTO !! [ 17.789448] [mmc]: sdc1 set ios: clk 400000Hz bm PP pm ON vdd 3.3V width 1 timing LEGACY(SDR12) dt B [ 17.799714] [mmc]: mclk 0xf1c2008c 0x8002000e [ 17.862032] [mmc]: sdc1 set ios: clk 400000Hz bm PP pm ON vdd 3.3V width 1 timing LEGACY(SDR12) dt B [ 17.872262] [mmc]: mclk 0xf1c2008c 0x8002000e [ 17.933953] [mmc]: *** sunxi_mci_dump_errinfo(L773): smc 1 err, cmd 8, RTO !! [ 17.941997] *******************Try sdio******************* [ 17.948400] [mmc]: sdc1 set ios: clk 400000Hz bm PP pm ON vdd 3.3V width 1 timing LEGACY(SDR12) dt B [ 17.958630] [mmc]: mclk 0xf1c2008c 0x8002000e [ 18.027775] mmc1: queuing unknown CIS tuple 0x80 (2 bytes) [ 18.035416] mmc1: queuing unknown CIS tuple 0x80 (3 bytes) [ 18.043087] mmc1: queuing unknown CIS tuple 0x80 (3 bytes) [ 18.051920] mmc1: queuing unknown CIS tuple 0x80 (7 bytes) [ 18.145287] [mmc]: sdc1 set ios: clk 400000Hz bm PP pm ON vdd 3.3V width 1 timing SD-HS(SDR25) dt B [ 18.155436] [mmc]: mclk 0xf1c2008c 0x8002000e [ 18.215346] [mmc]: sdc1 set ios: clk 50000000Hz bm PP pm ON vdd 3.3V width 1 timing SD-HS(SDR25) dt B [ 18.225736] [mmc]: mclk 0xf1c2008c 0x8100000b [ 18.285675] [mmc]: sdc1 set ios: clk 50000000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B [ 18.296021] [mmc]: mclk 0xf1c2008c 0x8140030b [ 18.357915] mmc1: new high speed SDIO card at address 0001 [ 18.364532] bcmsdh_register: Linux Kernel SDIO/MMC Driver [ 18.364575] *******************sdio init ok******************* [ 18.377207] bcm_wlan_get_oob_irq enter. [ 18.381537] gpio [359] map to virq [7] ok [ 18.388851] F1 signature OK, socitype:0x1 chip:0xa9a6 rev:0x0 pkg:0x4 [ 18.396019] dhdsdio_probe_attach: unsupported chip: 0xa9a6 [ 18.402155] dhdsdio_probe: dhdsdio_probe_attach failed [ 18.407899] bcmsdh_probe: device attach failed [ 18.412981] [ 18.412984] Dongle Host Driver, version 1.88.45.3 (r420671) [ 18.412989] Compiled in drivers/net/wireless/bcmdhd on Jun 26 2017 at 12:06:39 [ 18.428835] dhd_module_init: sdio_register_driver timeout or error [ 18.435928] gpio ap6xxx_wl_regon set val 0, act val 0 [ 18.541549] [ap6xxx]: sdio wifi power state: off [ 18.546679] =========== WLAN placed in POWER OFF ======== [ 18.546915] mmc1: card 0001 removed [ 18.546995] [mmc]: mmc not poweroff notifiy [ 18.547007] [mmc]: sdc1 set ios: clk 0Hz bm OD pm OFF vdd 3.3V width 1 timing LEGACY(SDR12) dt B [ 18.547160] [mmc]: sdc1 card_power_off start... [ 18.547166] [mmc]: sdc1 power_supply is null [ 18.547173] [mmc]: sdc1 card_power_off ok [ 18.631655] init: command 'insmod' r=-1 [ 18.636066] init: command 'insmod' r=-1 [ 18.658010] fs_mgr: swapon failed for /dev/block/zram0 [ 18.663804] init: command 'swapon_all' r=-1 [ 18.668504] init: processing action 0x58e70 (console_init) [ 18.675396] init: width = 1280 [ 18.678788] init: height = 800 [ 18.682224] init: s.st_size = 3145728 [ 18.686308] init: logo match failed!fbsize = 4096000 [ 18.718811] init: command 'console_init' r=0 [ 18.723628] init: processing action 0x55bf0 (fs) [ 18.730640] init: command 'mkdir' r=-2 [ 18.741901] init: command 'insmod' r=0 [ 18.752227] init: command 'insmod' r=0 [ 18.756491] init: command 'insmod' r=-1 [ 18.771211] init: command 'insmod' r=0 [ 18.779731] init: command 'insmod' r=0 [ 18.791739] init: command 'insmod' r=0 [ 18.803941] init: command 'insmod' r=0 [ 18.816178] init: command 'insmod' r=0 19、查找:(dhdsdio_probe_attach: unsupported chip: 0xa9a6) rootroot@rootroot-E400:~$ cd wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd/ rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd$ rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd$ grep "unsupported chip" . -R ./dhd_sdio.c: DHD_ERROR(("%s: unsupported chip: 0xx\n", ./sbutils.c: SI_ERROR(("sb_chip2numcores: unsupported chip 0x%x\n", 匹配到二进制文件 ./dhd_sdio.o 匹配到二进制文件 ./bcmdhd.o 匹配到二进制文件 ./bcmdhd.ko 匹配到二进制文件 ./sbutils.o rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd$ 经过确认: R:\wyb\ap6212a0_a33_sc3817r\lichee\linux-3.4\drivers\net\wireless\bcmdhd\dhd_sdio.c static bool dhdsdio_probe_attach(struct dhd_bus *bus, osl_t *osh, void *sdh, void *regsva, uint16 devid) { …… bcmsdh_chipinfo(sdh, bus->sih->chip, bus->sih->chiprev); if (!dhdsdio_chipmatch((uint16)bus->sih->chip)) { DHD_ERROR(("%s: unsupported chip: 0xx\n", __FUNCTION__, bus->sih->chip)); goto fail; } …… } 继续追踪: static bool dhdsdio_chipmatch(uint16 chipid) { if (chipid == BCM4325_CHIP_ID) return TRUE; if (chipid == BCM4329_CHIP_ID) return TRUE; if (chipid == BCM4315_CHIP_ID) return TRUE; if (chipid == BCM4319_CHIP_ID) return TRUE; if (chipid == BCM4336_CHIP_ID) return TRUE; if (chipid == BCM4330_CHIP_ID) return TRUE; if (chipid == BCM43237_CHIP_ID) return TRUE; if (chipid == BCM43362_CHIP_ID) return TRUE; if (chipid == BCM4314_CHIP_ID) return TRUE; if (chipid == BCM43242_CHIP_ID) return TRUE; if (chipid == BCM43340_CHIP_ID) return TRUE; if (chipid == BCM43341_CHIP_ID) return TRUE; if (chipid == BCM43143_CHIP_ID) return TRUE; if (chipid == BCM43342_CHIP_ID) return TRUE; if (chipid == BCM4334_CHIP_ID) return TRUE; if (chipid == BCM43239_CHIP_ID) return TRUE; if (chipid == BCM4324_CHIP_ID) return TRUE; if (chipid == BCM4335_CHIP_ID) return TRUE; if (chipid == BCM4339_CHIP_ID) return TRUE; if (chipid == BCM43349_CHIP_ID) return TRUE; if (chipid == BCM4345_CHIP_ID) return TRUE; if (chipid == BCM4350_CHIP_ID) return TRUE; if (chipid == BCM4354_CHIP_ID) return TRUE; if (chipid == BCM4356_CHIP_ID) return TRUE; if (chipid == BCM4358_CHIP_ID) return TRUE; if (chipid == BCM4371_CHIP_ID) return TRUE; if (chipid == BCM43430_CHIP_ID) return TRUE; if (BCM4349_CHIP(chipid)) return TRUE; return FALSE; } 20、 rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee$ ll 总用量 40 drwxr-xr-x 7 rootroot rootroot 4096 6月 26 12:02 ./ drwx------ 6 rootroot rootroot 4096 6月 26 14:16 ../ drwxr-xr-x 10 rootroot rootroot 4096 9月 4 2014 brandy/ -rw-rw-r-- 1 rootroot rootroot 116 6月 26 12:02 .buildconfig drwxr-xr-x 15 rootroot rootroot 4096 9月 4 2014 buildroot/ -r-xr-xr-x 1 rootroot rootroot 55 9月 4 2014 build.sh* drwxr-xr-x 28 rootroot rootroot 4096 6月 26 14:30 linux-3.4/ drwxrwxr-x 3 rootroot rootroot 4096 6月 26 12:02 out/ -r--r--r-- 1 rootroot rootroot 232 9月 4 2014 README drwxr-xr-x 7 rootroot rootroot 4096 6月 7 19:33 tools/ rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee$ ./build.sh config Welcome to mkscript setup progress All available chips: 0. sun8iw5p1 Choice: 0 All available platforms: 0. android 1. dragonboard 2. linux Choice: 0 All available kernel: 0. linux-3.4 Choice: 0 All available boards: 0. evb 1. maple 2. redwood 3. y2 4. y3 Choice: 4 rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee$ ./build.sh INFO: ---------------------------------------- INFO: build lichee ... INFO: chip: sun8iw5p1 INFO: platform: android INFO: kernel: linux-3.4 INFO: board: y3 INFO: output: out/sun8iw5p1/android/y3 INFO: ---------------------------------------- INFO: build buildroot ... external toolchain has been installed INFO: build buildroot OK. INFO: build kernel ... INFO: prepare toolchain ... Building kernel CHK include/linux/version.h CHK include/generated/utsrelease.h make[1]: “include/generated/mach-types.h”是最新的。 CALL scripts/checksyscalls.sh CHK include/generated/compile.h CC arch/arm/mach-sunxi/pm/standby/common.o CC arch/arm/mach-sunxi/pm/standby/standby_clock.o CC arch/arm/mach-sunxi/pm/standby/standby_ir.o CC arch/arm/mach-sunxi/pm/standby/standby_key.o CC arch/arm/mach-sunxi/pm/standby/standby_power.o CC arch/arm/mach-sunxi/pm/standby/standby_twi.o CC arch/arm/mach-sunxi/pm/standby/standby_usb.o AS arch/arm/mach-sunxi/pm/standby/standby_delay.o CC arch/arm/mach-sunxi/pm/standby/./arisc/standby_arisc.o CC arch/arm/mach-sunxi/pm/standby/./arisc/arisc_hwmsgbox.o CHK kernel/config_data.h CC arch/arm/mach-sunxi/pm/standby/./arisc/arisc_hwspinlock.o CC arch/arm/mach-sunxi/pm/standby/./arisc/arisc_message_manager.o CC arch/arm/mach-sunxi/pm/standby/./../pm_debug.o CC arch/arm/mach-sunxi/pm/standby/./../mem_timing.o CC arch/arm/mach-sunxi/pm/standby/./../mem_mmu_pc.o AS arch/arm/mach-sunxi/pm/standby/./../mem_mmu_pc_asm.o CC arch/arm/mach-sunxi/pm/standby/./../mem_serial.o CC arch/arm/mach-sunxi/pm/standby/./../mem_printk.o AS arch/arm/mach-sunxi/pm/standby/./../mem_divlib.o CC arch/arm/mach-sunxi/pm/standby/./../mem_divlibc.o CC arch/arm/mach-sunxi/pm/standby/./../mem_int.o CC arch/arm/mach-sunxi/pm/standby/./../mem_tmr.o CC arch/arm/mach-sunxi/pm/standby/./../mem_tmstmp.o CC arch/arm/mach-sunxi/pm/standby/./../mem_clk.o CC arch/arm/mach-sunxi/pm/standby/./../mem_hwspinlock.o CC arch/arm/mach-sunxi/pm/standby/standby.o rm -rf *.o arch/arm/mach-sunxi/pm/standby/../*.o CC arch/arm/mach-sunxi/pm/standby/super/common.o CC arch/arm/mach-sunxi/pm/standby/super/super_twi.o CC [M] drivers/net/wireless/bcmdhd/dhd_sdio.o AS arch/arm/mach-sunxi/pm/standby/super/super_delay.o CC arch/arm/mach-sunxi/pm/standby/super/super_clock.o CC arch/arm/mach-sunxi/pm/standby/super/super_power.o CC arch/arm/mach-sunxi/pm/standby/super/super_cpus.o AS arch/arm/mach-sunxi/pm/standby/super/resume/resume1.o CC arch/arm/mach-sunxi/pm/standby/super/resume/resume_head.o CC arch/arm/mach-sunxi/pm/standby/super/resume/resume1_c_part.o CC arch/arm/mach-sunxi/pm/standby/../pm_debug.o CC arch/arm/mach-sunxi/pm/standby/../mem_timing.o CC arch/arm/mach-sunxi/pm/standby/../mem_mmu_pc.o AS arch/arm/mach-sunxi/pm/standby/../mem_mmu_pc_asm.o CC arch/arm/mach-sunxi/pm/standby/../mem_cpu.o CC arch/arm/mach-sunxi/pm/standby/../mem_serial.o CC arch/arm/mach-sunxi/pm/standby/../mem_printk.o CC [M] drivers/net/wireless/bcmdhd/dhd_cdc.o CC [M] drivers/net/wireless/bcmdhd/bcmsdh_linux.o CC [M] drivers/net/wireless/bcmdhd/dhd_common.o AS arch/arm/mach-sunxi/pm/standby/../mem_divlib.o CC arch/arm/mach-sunxi/pm/standby/../mem_divlibc.o drivers/net/wireless/bcmdhd/dhd_sdio.c: In function ‘dhdsdio_chipmatch’: drivers/net/wireless/bcmdhd/dhd_sdio.c:6936:16: error: ‘BCM43430_CHIP_ID’ undeclared (first use in this function) drivers/net/wireless/bcmdhd/dhd_sdio.c:6936:16: note: each undeclared identifier is reported only once for each function it appears in CC arch/arm/mach-sunxi/pm/standby/../mem_int.o make[4]: *** [drivers/net/wireless/bcmdhd/dhd_sdio.o] 错误 1 make[4]: *** 正在等待未完成的任务.... CC arch/arm/mach-sunxi/pm/standby/../mem_tmr.o CC arch/arm/mach-sunxi/pm/standby/../mem_tmstmp.o CC arch/arm/mach-sunxi/pm/standby/../mem_hwspinlock.o CC arch/arm/mach-sunxi/pm/standby/../mem_clk.o Source file is open Destination file is created. Source file is open Destination file is open. temp value is 400. 0 soure_file size is 9496. destination_file size is 0x2800. check sum generated is 0x68D92007. Everything is ok. rm -rf *.o arch/arm/mach-sunxi/pm/standby/../*.o CC arch/arm/mach-sunxi/pm/mem_mapping.o CC arch/arm/mach-sunxi/pm/mem_divlibc.o CC arch/arm/mach-sunxi/pm/mem_cpu.o AS arch/arm/mach-sunxi/pm/mem_cpu_asm.o AS arch/arm/mach-sunxi/pm/mem_mmu_pc_asm.o CC arch/arm/mach-sunxi/pm/mem_mmu_pc.o CC arch/arm/mach-sunxi/pm/mem_int.o CC arch/arm/mach-sunxi/pm/mem_clk.o CC arch/arm/mach-sunxi/pm/mem_tmr.o CC arch/arm/mach-sunxi/pm/mem_tmstmp.o CC arch/arm/mach-sunxi/pm/mem_twi.o CC arch/arm/mach-sunxi/pm/mem_gpio.o CC arch/arm/mach-sunxi/pm/mem_sram.o CC arch/arm/mach-sunxi/pm/mem_ccu.o CC arch/arm/mach-sunxi/pm/mem_cci400.o CC arch/arm/mach-sunxi/pm/mem_gtbus.o CC arch/arm/mach-sunxi/pm/pm_debug.o CC arch/arm/mach-sunxi/pm/mem_timing.o CC arch/arm/mach-sunxi/pm/mem_hwspinlock.o CC arch/arm/mach-sunxi/pm/pm.o CC arch/arm/mach-sunxi/pm/extended_standby.o CC arch/arm/mach-sunxi/pm/standby/super/super_power.o CC arch/arm/mach-sunxi/pm/standby/super/super_twi.o CC arch/arm/mach-sunxi/pm/standby/super/super_clock.o AS arch/arm/mach-sunxi/pm/standby.o AS arch/arm/mach-sunxi/pm/mem.o LD arch/arm/mach-sunxi/pm/pm_tmp.o LD arch/arm/mach-sunxi/pm/built-in.o LD arch/arm/mach-sunxi/built-in.o make[3]: *** [drivers/net/wireless/bcmdhd] 错误 2 make[2]: *** [drivers/net/wireless] 错误 2 make[1]: *** [drivers/net] 错误 2 make: *** [drivers] 错误 2 ERROR: build kernel Failed rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee$ 21、(dhdsdio_probe_attach: unsupported chip: 0xa9a6) R:\wyb\ap6212a0_a33_sc3817r\lichee\linux-3.4\drivers\net\wireless\bcmdhd\include\bcmdevs.h #define BCM4350_CHIP_ID 0x4350 #define BCM43430_CHIP_ID 43430 /* 43430 chipcommon chipid 0xa9a6 */ #define BCM4342_CHIP_ID 4342 可以编译通过了。 (查看属性:) shell@astar-y3:/ $ shell@astar-y3:/ $ cd /system/vendor/modules/ shell@astar-y3:/system/vendor/modules $ ll bcm* -rw-r--r-- root root 26020 2017-06-26 12:46 bcm43438a0.hcd -rw-r--r-- root root 748856 2017-06-26 12:46 bcmdhd.ko shell@astar-y3:/system/vendor/modules $ Microsoft Windows [版本 6.1.7600] 版权所有 (c) 2009 Microsoft Corporation。保留所有权利。 C:\Users\Administrator>cd R:\wyb\ap6212a0_a33_sc3817r\lichee\linux-3.4\drivers\n et\wireless\bcmdhd C:\Users\Administrator>r: R:\wyb\ap6212a0_a33_sc3817r\lichee\linux-3.4\drivers\net\wireless\bcmdhd>adb remount * daemon not running. starting it now on port 5037 * * daemon started successfully * remount succeeded R:\wyb\ap6212a0_a33_sc3817r\lichee\linux-3.4\drivers\net\wireless\bcmdhd> R:\wyb\ap6212a0_a33_sc3817r\lichee\linux-3.4\drivers\net\wireless\bcmdhd>adb push bcmdhd.ko /system/vendor/modules/ 1677 KB/s (748864 bytes in 0.436s) R:\wyb\ap6212a0_a33_sc3817r\lichee\linux-3.4\drivers\net\wireless\bcmdhd> 继续查看属性: shell@astar-y3:/system/vendor/modules $ ll bcm* -rw-r--r-- root root 26020 2017-06-26 12:46 bcm43438a0.hcd -rw-rw-rw- root root 748864 2017-06-26 14:34 bcmdhd.ko shell@astar-y3:/system/vendor/modules $ shell@astar-y3:/system/vendor/modules $ shell@astar-y3:/system/vendor/modules $ chmod 644 bcmdhd.ko Unable to chmod bcmdhd.ko: Operation not permitted 10|shell@astar-y3:/system/vendor/modules $ (必须在su下才能够修改属性:) shell@astar-y3:/system/vendor/modules $ su shell@astar-y3:/system/vendor/modules # chmod 644 bcmdhd.ko shell@astar-y3:/system/vendor/modules # shell@astar-y3:/system/vendor/modules # sync shell@astar-y3:/system/vendor/modules # reboot 22、 [ 0.658241] [wifi]: select wifi: ap6210 !! [ 0.658587] [ap6xxx]: module power name axp22_dldo1 [ 0.658601] [ap6xxx]: module power ext1 name axp22_dldo2 [ 0.658613] [ap6xxx]: module power ext2 name axp22_aldo1 [ 0.658721] [ap6xxx]: get ap6xxx wifi_power_switch failed [ 0.658731] [ap6xxx]: ap6xxx module power set by axp. [ 0.658930] [ap6xxx]: first time [ 0.659285] [ap6xxx]: regulator on. [ 0.661306] [wifi_pm]: wifi gpio init is OK !! (重启之后,WIFI模块要想办法配置为ap6212,现阶段借用的是AP6210!) [ 8.517657] gpio ap6xxx_wl_regon set val 1, act val 1 [ 8.623325] [ap6xxx]: sdio wifi power state: on [ 8.628389] [mmc]: sdc1 set ios: clk 0Hz bm PP pm UP vdd 3.3V width 1 timing LEGACY(SDR12) dt B [ 8.628566] =========== WLAN placed in POWER ON ======== [ 8.645459] [mmc]: sdc1 card_power_on start... [ 8.650397] [mmc]: sdc1 power_supply is null [ 8.655129] [mmc]: sdc1 card_power_on ok [ 8.680031] [mmc]: sdc1 set ios: clk 400000Hz bm PP pm ON vdd 3.3V width 1 timing LEGACY(SDR12) dt B [ 8.690267] [mmc]: mclk 0xf1c2008c 0x8002000e [ 8.772360] [mmc]: *** sunxi_mci_dump_errinfo(L773): smc 1 err, cmd 52, RTO !! [ 8.781316] [mmc]: *** sunxi_mci_dump_errinfo(L773): smc 1 err, cmd 52, RTO !! [ 8.789448] [mmc]: sdc1 set ios: clk 400000Hz bm PP pm ON vdd 3.3V width 1 timing LEGACY(SDR12) dt B [ 8.799684] [mmc]: mclk 0xf1c2008c 0x8002000e [ 8.861971] [mmc]: sdc1 set ios: clk 400000Hz bm PP pm ON vdd 3.3V width 1 timing LEGACY(SDR12) dt B [ 8.872189] [mmc]: mclk 0xf1c2008c 0x8002000e [ 8.933887] [mmc]: *** sunxi_mci_dump_errinfo(L773): smc 1 err, cmd 8, RTO !! [ 8.941921] *******************Try sdio******************* [ 8.948329] [mmc]: sdc1 set ios: clk 400000Hz bm PP pm ON vdd 3.3V width 1 timing LEGACY(SDR12) dt B [ 8.958545] [mmc]: mclk 0xf1c2008c 0x8002000e [ 9.027690] mmc1: queuing unknown CIS tuple 0x80 (2 bytes) [ 9.035325] mmc1: queuing unknown CIS tuple 0x80 (3 bytes) [ 9.043192] mmc1: queuing unknown CIS tuple 0x80 (3 bytes) [ 9.052046] mmc1: queuing unknown CIS tuple 0x80 (7 bytes) [ 9.145358] [mmc]: sdc1 set ios: clk 400000Hz bm PP pm ON vdd 3.3V width 1 timing SD-HS(SDR25) dt B [ 9.155486] [mmc]: mclk 0xf1c2008c 0x8002000e [ 9.215398] [mmc]: sdc1 set ios: clk 50000000Hz bm PP pm ON vdd 3.3V width 1 timing SD-HS(SDR25) dt B [ 9.225785] [mmc]: mclk 0xf1c2008c 0x8100000b [ 9.285721] [mmc]: sdc1 set ios: clk 50000000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B [ 9.296049] [mmc]: mclk 0xf1c2008c 0x8140030b [ 9.357922] mmc1: new high speed SDIO card at address 0001 [ 9.364523] bcmsdh_register: Linux Kernel SDIO/MMC Driver [ 9.364563] *******************sdio init ok******************* [ 9.377203] bcm_wlan_get_oob_irq enter. [ 9.381534] gpio [359] map to virq [7] ok [ 9.388816] F1 signature OK, socitype:0x1 chip:0xa9a6 rev:0x0 pkg:0x4 [ 9.396740] DHD: dongle ram size is set to 524288(orig 524288) at 0x0 [ 9.404660] dhdsdio_probe: Disable prop_txstatus [ 9.410903] wl_create_event_handler(): thread:wl_event_handler:5d started [ 9.410914] tsk Enter, tsk = 0xddca13d8 [ 9.423788] p2p0: P2P Interface Registered [ 9.428464] dhd_attach(): thread:dhd_watchdog_thread:5e started [ 9.435144] dhd_attach(): thread:dhd_dpc:5f started [ 9.440653] dhd_attach(): thread:dhd_sysioc:60 started [ 9.447276] Broadcom Dongle Host Driver: register interface [wlan0] MAC: 00:90:4c:11:22:33 [ 9.456558] [ 9.456561] Dongle Host Driver, version 1.88.45.3 (r420671) [ 9.456565] Compiled in drivers/net/wireless/bcmdhd on Jun 26 2017 at 14:34:04 [ 9.472427] gpio ap6xxx_wl_regon set val 0, act val 0 [ 9.578054] [ap6xxx]: sdio wifi power state: off [ 9.583186] =========== WLAN placed in RESET ======== (WIFI启动加载正常) shell@astar-y3:/ $ lsmod gt82x 9849 0 - Live 0x00000000 sunxi_schw 12559 0 - Live 0x00000000 (O) cdc_ether 5099 0 - Live 0x00000000 rtl8150 9023 0 - Live 0x00000000 mcs7830 6292 0 - Live 0x00000000 qf9700 7805 0 - Live 0x00000000 asix 17150 0 - Live 0x00000000 usbnet 17700 4 cdc_ether,mcs7830,qf9700,asix, Live 0x00000000 sunxi_keyboard 3021 0 - Live 0x00000000 sw_device 13604 0 - Live 0x00000000 vfe_v4l2 445364 0 - Live 0x00000000 gc2035 12696 0 - Live 0x00000000 gc0308 10702 0 - Live 0x00000000 vfe_subdev 4523 3 vfe_v4l2,gc2035,gc0308, Live 0x00000000 vfe_os 4099 2 vfe_v4l2,vfe_subdev, Live 0x00000000 cci 21594 2 gc2035,gc0308, Live 0x00000000 videobuf_dma_contig 5535 1 vfe_v4l2, Live 0x00000000 videobuf_core 16520 2 vfe_v4l2,videobuf_dma_contig, Live 0x00000000 bcmdhd 556965 0 - Live 0x00000000 leds_sunxi 1351 0 - Live 0x00000000 mali 209914 20 - Live 0x00000000 (O) lcd 38180 0 - Live 0x00000000 disp 993096 8 mali,lcd, Live 0x00000000 nand 280622 0 - Live 0x00000000 (O) shell@astar-y3:/ $ (bcmdhd.ko这个驱动模块加载正常:) (BT没有打开,但是不停地打印BT超时出错,不知道是何解?) shell@astar-y3:/ $ [ 511.880344] [BT_LPM] bluesleep_tx_timer_expire: Tx timer expired [ 511.887326] [BT_LPM] bluesleep_tx_timer_expire: Tx has been idle 23、 由于此时WIFI出于记住上一次的状态的状态(打不开),所以需要重新刷镜像IMG,然后替换:bcmdhd.ko shell@astar-y3:/ $ shell@astar-y3:/ $ lsmod gt82x 9849 0 - Live 0x00000000 sunxi_schw 12559 0 - Live 0x00000000 (O) cdc_ether 5099 0 - Live 0x00000000 rtl8150 9023 0 - Live 0x00000000 mcs7830 6292 0 - Live 0x00000000 qf9700 7805 0 - Live 0x00000000 asix 17150 0 - Live 0x00000000 usbnet 17700 4 cdc_ether,mcs7830,qf9700,asix, Live 0x00000000 sunxi_keyboard 3021 0 - Live 0x00000000 sw_device 13604 0 - Live 0x00000000 vfe_v4l2 445364 0 - Live 0x00000000 gc2035 12696 0 - Live 0x00000000 gc0308 10702 0 - Live 0x00000000 vfe_subdev 4523 3 vfe_v4l2,gc2035,gc0308, Live 0x00000000 vfe_os 4099 2 vfe_v4l2,vfe_subdev, Live 0x00000000 cci 21594 2 gc2035,gc0308, Live 0x00000000 videobuf_dma_contig 5535 1 vfe_v4l2, Live 0x00000000 videobuf_core 16520 2 vfe_v4l2,videobuf_dma_contig, Live 0x00000000 bcmdhd 556965 0 - Live 0x00000000 leds_sunxi 1351 0 - Live 0x00000000 mali 209914 15 - Live 0x00000000 (O) lcd 38180 0 - Live 0x00000000 disp 993096 8 mali,lcd, Live 0x00000000 nand 280622 0 - Live 0x00000000 (O) shell@astar-y3:/ $ shell@astar-y3:/ $ shell@astar-y3:/ $ [ 110.012176] init: computing context for service '/system/bin/wpa_supplicant' [ 110.025400] init: starting 'p2p_supplicant' [ 110.039886] init: Created socket '/dev/socket/wpa_wlan0' with mode '660', user '1010', group '1010' [ 110.119751] dhd_conf_set_fw_name_by_chip: firmware_path=/system/vendor/modules/fw_bcm43438a0.bin [ 110.140144] [ 110.140153] Dongle Host Driver, version 1.88.45.3 (r420671) [ 110.140158] Compiled in drivers/net/wireless/bcmdhd on Jun 26 2017 at 14:34:04 [ 110.173523] wl_android_wifi_on in 1 [ 110.177409] wl_android_wifi_on in 2: g_wifi_on=0 [ 110.200103] gpio ap6xxx_wl_regon set val 1, act val 1 [ 110.280025] [BT_LPM] bluesleep_tx_timer_expire: Tx timer expired [ 110.286694] [BT_LPM] bluesleep_tx_timer_expire: Tx has been idle [ 110.355684] [ap6xxx]: sdio wifi power state: on [ 110.360930] =========== WLAN going back to live ======== [ 110.366925] sdio_reset_comm(): [ 110.370346] [mmc]: sdc1 set ios: clk 50000000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B [ 110.380773] [mmc]: mclk 0xf1c2008c 0x8140030b [ 110.443029] [mmc]: sdc1 set ios: clk 50000000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B [ 110.454758] [mmc]: mclk 0xf1c2008c 0x8140030b [ 110.516097] [mmc]: sdc1 set ios: clk 150000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B [ 110.530958] [mmc]: mclk 0xf1c2008c 0x80430309 [ 110.592013] [mmc]: sdc1 set ios: clk 150000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B [ 110.603518] [mmc]: mclk 0xf1c2008c 0x80030009 [ 110.681418] mmc1: queuing unknown CIS tuple 0x80 (2 bytes) [ 110.690726] mmc1: queuing unknown CIS tuple 0x80 (3 bytes) [ 110.700331] mmc1: queuing unknown CIS tuple 0x80 (3 bytes) [ 110.712218] mmc1: queuing unknown CIS tuple 0x80 (7 bytes) [ 110.894520] [mmc]: sdc1 set ios: clk 150000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B [ 110.904933] [mmc]: mclk 0xf1c2008c 0x80030009 [ 110.964907] [mmc]: sdc1 set ios: clk 50000000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B [ 110.975514] [mmc]: mclk 0xf1c2008c 0x8100000b [ 111.035618] [mmc]: sdc1 set ios: clk 50000000Hz bm PP pm ON vdd 3.3V width 4 timing SD-HS(SDR25) dt B [ 111.046398] [mmc]: mclk 0xf1c2008c 0x8140030b [ 111.108547] [ 111.108566] [ 111.108579] dhd_bus_devreset: == WLAN ON == [ 111.116882] dhd_bus_devreset called when dongle is not in reset [ 111.123683] Will call dhd_bus_start instead [ 111.128637] dhd_conf_set_fw_name_by_chip: firmware_path=/system/vendor/modules/fw_bcm43438a0.bin [ 111.140963] dhd_conf_download_config: Ignore config file /system/vendor/modules/config.txt [ 111.151802] Final fw_path=/system/vendor/modules/fw_bcm43438a0.bin [ 111.158689] Final nv_path=/system/vendor/modules/nvram_ap6210.txt [ 111.165542] Final conf_path=/system/vendor/modules/config.txt [ 111.257577] dhdsdio_download_nvram: Open nvram file failed /system/vendor/modules/nvram_ap6210.txt [ 111.268309] _dhdsdio_download_firmware: dongle nvram file download failed [ 111.276022] dhd_bus_start: dhdsdio_probe_download failed. firmware = /system/vendor/modules/fw_bcm43438a0.bin nvram = /system/vendor/modules/nvram_ap6210.txt config = /system/vendor/modules/config.txt [ 111.295979] dhd_bus_devreset: dhd_bus_start fail with -1 [ 111.304154] dhd_dev_reset: dhd_bus_devreset: -1 [ 111.309190] dhd_prot_ioctl : bus is down. we have nothing to do [ 111.330328] dhd_bus_devreset: WLAN OFF DONE [ 111.335225] gpio ap6xxx_wl_regon set val 0, act val 0 [ 111.472499] [ap6xxx]: sdio wifi power state: off [ 111.477661] =========== WLAN placed in RESET ======== [ 111.483304] wl_android_wifi_on: Failed [ 111.487473] wl_android_wifi_off in 1 [ 111.491478] wl_android_wifi_off in 2: g_wifi_on=0 [ 111.496711] wl_android_wifi_off out [ 111.509335] init: waitpid returned pid 1211, status = 0000ff00 [ 111.516072] init: process 'p2p_supplicant', pid 1211 exited shell@astar-y3:/ $ shell@astar-y3:/ $ 24、定位问题:dhd_bus_devreset: dhd_bus_start fail with -1 rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee$ rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee$ rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee$ cd linux-3.4/drivers/net/wireless/bcmdhd/ rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd$ rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd$ rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd$ grep "dhd_bus_start fail with" . -R ./dhd_sdio.c: DHD_ERROR(("%s: dhd_bus_start fail with %d\n", 匹配到二进制文件 ./dhd_sdio.o 匹配到二进制文件 ./bcmdhd.o 匹配到二进制文件 ./bcmdhd.ko rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd$ rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee$ rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee$ rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee$ cd linux-3.4/drivers/net/wireless/bcmdhd/ rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd$ rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd$ rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd$ grep "dhd_bus_start fail with" . -R ./dhd_sdio.c: DHD_ERROR(("%s: dhd_bus_start fail with %d\n", 匹配到二进制文件 ./dhd_sdio.o 匹配到二进制文件 ./bcmdhd.o 匹配到二进制文件 ./bcmdhd.ko rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd$ int dhd_bus_devreset(dhd_pub_t *dhdp, uint8 flag) { …… dhd_conf_set_fw_name_by_chip(dhdp, fw_path, firmware_path); if ((bcmerror = dhd_bus_start(dhdp)) != 0) DHD_ERROR(("%s: dhd_bus_start fail with %d\n", __FUNCTION__, bcmerror)); } } return bcmerror; } rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd$ rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd$ grep dhd_bus_start . -R ./dhd_sdio.c: if ((ret = dhd_bus_start(bus->dhd)) != 0) { ./dhd_sdio.c: DHD_ERROR(("%s: dhd_bus_start failed\n", __FUNCTION__)); ./dhd_sdio.c: DHD_ERROR(("Will call dhd_bus_start instead\n")); ./dhd_sdio.c: if ((bcmerror = dhd_bus_start(dhdp)) != 0) ./dhd_sdio.c: DHD_ERROR(("%s: dhd_bus_start fail with %d\n", ./dhd_sdio - 副本.c: if ((ret = dhd_bus_start(bus->dhd)) != 0) { ./dhd_sdio - 副本.c: DHD_ERROR(("%s: dhd_bus_start failed\n", __FUNCTION__)); ./dhd_sdio - 副本.c: DHD_ERROR(("Will call dhd_bus_start instead\n")); ./dhd_sdio - 副本.c: if ((bcmerror = dhd_bus_start(dhdp)) != 0) ./dhd_sdio - 副本.c: DHD_ERROR(("%s: dhd_bus_start fail with %d\n", ./dhd_sdio - 副本 (2).c: if ((ret = dhd_bus_start(bus->dhd)) != 0) { ./dhd_sdio - 副本 (2).c: DHD_ERROR(("%s: dhd_bus_start failed\n", __FUNCTION__)); ./dhd_sdio - 副本 (2).c: DHD_ERROR(("Will call dhd_bus_start instead\n")); ./dhd_sdio - 副本 (2).c: if ((bcmerror = dhd_bus_start(dhdp)) != 0) ./dhd_sdio - 副本 (2).c: DHD_ERROR(("%s: dhd_bus_start fail with %d\n", ./dhd.h:extern int dhd_bus_start(dhd_pub_t *dhdp); ./wl_android.c:/* Initialize g_wifi_on to 1 so dhd_bus_start will be called for the first ./dhd_linux.c: if ((ret = dhd_bus_start(&dhd->pub)) != 0) { ./dhd_linux.c: /* dhd_prot_init has been called in dhd_bus_start or wl_android_wifi_on */ ./dhd_linux.c:dhd_bus_start(dhd_pub_t *dhdp) rootroot@rootroot-E400:~/wyb/ap6212a0_a33_sc3817r/lichee/linux-3.4/drivers/net/wireless/bcmdhd$ 定位到这里: int dhd_bus_start(dhd_pub_t *dhdp) { …… /* try to download image and nvram to the dongle */ if ((dhd->pub.busstate == DHD_BUS_DOWN) && (fw_path[0] != '\0') && (nv_path[0] != '\0')) { #ifdef SHOW_NVRAM_TYPE { /* Show nvram type in the kernel log */ int i; for (i = 0; nv_path[i] != '\0'; ++i) { if (nv_path[i] == '.') { ++i; break; } } DHD_ERROR(("%s: nvram_type = [%s]\n", __FUNCTION__, &nv_path[i])); } #endif /* SHOW_NVRAM_TYPE */ /* wake lock moved to dhdsdio_download_firmware */ if (!(dhd_bus_download_firmware(dhd->pub.bus, dhd->pub.osh, fw_path, nv_path, conf_path))) { DHD_ERROR(("%s: dhdsdio_probe_download failed. firmware = %s nvram = %s config = %s\n", __FUNCTION__, fw_path, nv_path, conf_path)); #ifdef DHDTHREAD if (dhd->threads_only) dhd_os_sdunlock(dhdp); #endif /* DHDTHREAD */ // 2017/6/23 18:40 wenyuanbo download ap6212 fail not return error!!!! //return -1; } } …… return 0; } 由于ap6212没有config.txt文件,下载肯定会出错,比对全志R16平台去AP6212的处理,关闭这里: //return -1; 25、 shell@astar-y3:/ $ shell@astar-y3:/ $ [ 110.012176] init: computing context for service '/system/bin/wpa_supplicant' [ 110.025400] init: starting 'p2p_supplicant' [ 110.039886] init: Created socket '/dev/socket/wpa_wlan0' with mode '660', user '1010', group '1010' [ 110.119751] dhd_conf_set_fw_name_by_chip: firmware_path=/system/vendor/modules/fw_bcm43438a0.bin [ 110.140144] [ 110.140153] Dongle Host Driver, version 1.88.45.3 (r420671) [ 110.140158] Compiled in drivers/net/wireless/bcmdhd on Jun 26 2017 at 14:34:04 [ 110.173523] wl_android_wifi_on in 1 [ 110.177409] wl_android_wifi_on in 2: g_wifi_on=0 [ 110.200103] gpio ap6xxx_wl_regon set val 1, act val 1 [ 110.280025] [BT_LPM] bluesleep_tx_timer_expire: Tx timer expired [ 110.286694] [BT_LPM] bluesleep_tx_timer_expire: Tx has been idle [ 110.355684] [ap6xxx]: sdio wifi power state: on [ 110.3
调通sina33m下的ap6181版本 大文实验室/大文哥 壹捌陆捌零陆捌捌陆捌贰 wb4916 AT qq.com 完成时间:2017/7/7 18:11 版本:V1.0 SDK:Android6.0.1 开发板:SC3817R 1、关闭“设置”中的“蓝牙”选项: R:\wyb\ap6181_sina33m_sc3817r\android\device\softwinner\astar-d7\overlay\frameworks\base\core\res\res\values\config.xml (干掉这里:) <!-- List of regexpressions describing the interface (if any) that represent tetherable bluetooth interfaces. If the device doesn't want to support tethering over bluetooth this should be empty. --> <!-- default: disable Bluetooth PAN feature --> <string-array translatable="false" name="config_tether_bluetooth_regexs"> <item>"bt-pan"</item> </string-array> 2、打开WIFI,关闭BT: R:\wyb\ap6181_sina33m_sc3817r\android\device\softwinner\astar-d7\astar_d7.mk PRODUCT_PACKAGES += Launcher3 PRODUCT_PACKAGES += \ ESFileExplorer \ VideoPlayer #Bluetooth PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.hardware.camera.xml:system/etc/permissions/android.hardware.camera.xml \ frameworks/native/data/etc/android.hardware.camera.front.xml:system/etc/permissions/android.hardware.camera.front.xml \ frameworks/native/data/etc/android.hardware.ethernet.xml:system/etc/permissions/android.hardware.ethernet.xml \ frameworks/native/data/etc/android.hardware.wifi.xml:system/etc/permissions/android.hardware.wifi.xml \ frameworks/native/data/etc/android.hardware.wifi.direct.xml:system/etc/permissions/android.hardware.wifi.direct.xml #frameworks/native/data/etc/android.hardware.bluetooth.xml:system/etc/permissions/android.hardware.bluetooth.xml \ #frameworks/native/data/etc/android.hardware.bluetooth_le.xml:system/etc/permissions/android.hardware.bluetooth_le.xml #PRODUCT_COPY_FILES += \ # device/softwinner/astar-d7/bluetooth/bt_vendor.conf:system/etc/bluetooth/bt_vendor.conf # bootanimation PRODUCT_COPY_FILES += \ device/softwinner/astar-d7/media/bootanimation.zip:system/media/bootanimation.zip # camera config for camera detector #PRODUCT_COPY_FILES += \ # device/softwinner/astar-d7/hawkview/sensor_list_cfg.ini:system/etc/hawkview/sensor_list_cfg.ini # Realtek wifi efuse map #PRODUCT_COPY_FILES += \ #device/softwinner/astar-d7/wifi_efuse_8723bs-vq0.map:system/etc/wifi/wifi_efuse_8723bs-vq0.map PRODUCT_PROPERTY_OVERRIDES += \ persist.sys.usb.config=mass_storage,adb \ ro.adb.secure=0 \ ro.sys.mutedrm=true \ rw.logger=0 #$(call inherit-product-if-exists, vendor/google/products/gms_base.mk) #for 8723bs-vq0,should setmacaddr #PRODUCT_PACKAGES += setmacaddr #for 8723bs-vq0,should setbtmacaddr #PRODUCT_PACKAGES += setbtmacaddr 3、修改WIFI为AP6181: R:\wyb\ap6181_sina33m_sc3817r\android\device\softwinner\astar-d7\BoardConfig.mk # 1.2 broadcom wifi support # BOARD_USR_WIFI:ap6181/ap6210/ap6212/ap6330/ap6335 BOARD_WIFI_VENDOR := broadcom ifeq ($(BOARD_WIFI_VENDOR), broadcom) BOARD_WPA_SUPPLICANT_DRIVER := NL80211 WPA_SUPPLICANT_VERSION := VER_0_8_X BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_bcmdhd BOARD_HOSTAPD_DRIVER := NL80211 BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_bcmdhd BOARD_WLAN_DEVICE := bcmdhd WIFI_DRIVER_FW_PATH_PARAM := "/sys/module/bcmdhd/parameters/firmware_path" BOARD_USR_WIFI := ap6181 include hardware/broadcom/wlan/bcmdhd/firmware/$(BOARD_USR_WIFI)/device-bcm.mk endif # 2. Bluetooth Configuration # make sure BOARD_HAVE_BLUETOOTH is true for every bt vendor # BOARD_HAVE_BLUETOOTH_NAME:rtl8723bs/rtl8723bs_vq0/rtl8723cs/ap6210/ap6212/ap6330/ap6335/ #BOARD_HAVE_BLUETOOTH := true # #BOARD_HAVE_BLUETOOTH_BCM := true #BOARD_HAVE_BLUETOOTH_NAME := ap6212 #BOARD_HAVE_BLUETOOTH_RTK_COEX := true #BOARD_HAVE_BLUETOOTH_RTK := true #BLUETOOTH_HCI_USE_RTK_H5 := true #BOARD_BLUETOOTH_BDROID_BUILDCFG_INCLUDE_DIR := device/softwinner/astar-d7/bluetooth 4、关闭BT: R:\wyb\ap6181_sina33m_sc3817r\android\device\softwinner\astar-d7\init.sun8i.rc # tp & sensors init_dev_detect # network insmod /system/vendor/modules/bcmdhd.ko #insmod /system/vendor/modules/bcm_btlpm.ko insmod /system/vendor/modules/usbnet.ko insmod /system/vendor/modules/asix.ko insmod /system/vendor/modules/qf9700.ko #insmod /system/vendor/modules/mcs7830.ko #insmod /system/vendor/modules/smsc95xx.ko insmod /system/vendor/modules/rtl8152.ko #insmod /system/vendor/modules/cdc_ether.ko # GPS # chmod 777 /system/bin/glgps # chown root system /system/bin/glgps # chmod 777 /system/lib/hw/gps.default.so # chown root system /system/lib/hw/gps.default.so # mkdir /data/gps # chmod 770 /data/gps # chown system net_bt_stack /data/gps # to observe dnsmasq.leases file for dhcp information of soft ap. chown dhcp system /data/misc/dhcp on post-fs-data mkdir /data/media 0770 media_rw media_rw # bluetooth MAC address programming #chown bluetooth net_bt_stack ro.bt.bdaddr_path #chown bluetooth net_bt_stack /system/etc/bluetooth #chown bluetooth net_bt_stack /data/misc/bluetooth #setprop ro.bt.bdaddr_path "/data/misc/bluetooth/bdaddr" # Set indication (checked by vold) that we have finished this action setprop vold.post_fs_data_done 1 # to force to start sdcard # class_start late_start # This module write data to /data should insmod in post-fs-data # due to encryption on boot chown system system /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor chmod 0660 /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor chown system system /sys/kernel/autohotplug/enable chmod 0660 /sys/kernel/autohotplug/enable chown system system /sys/devices/system/cpu/cpu0/cpufreq/boot_lock chmod 0660 /sys/devices/system/cpu/cpu0/cpufreq/boot_lock chown system system /sys/devices/platform/sunxi-budget-cooling/roomage chmod 0660 /sys/devices/platform/sunxi-budget-cooling/roomage chown system system /sys/class/devfreq/sunxi-ddrfreq/dsm/scene chmod 0660 /sys/class/devfreq/sunxi-ddrfreq/dsm/scene on charger insmod disp.ko insmod lcd.ko class_start charger write /sys/module/printk/parameters/console_suspend N write /proc/sys/kernel/printk 0 on fs # UDISK would be mounted as data partition when multiple user enabled. #format_userdata /dev/block/by-name/UDISK ASTAR #bluesleep #insmod /system/vendor/modules/rtl_bluesleep.ko ## bluetooth ## UART device #chmod 0660 /dev/ttyS1 #chown bluetooth net_bt_stack /dev/ttyS1 # ## power up/down interface #chmod 0660 /sys/class/rfkill/rfkill0/state #chmod 0660 /sys/class/rfkill/rfkill0/type #chown bluetooth net_bt_stack /sys/class/rfkill/rfkill0/state #chown bluetooth net_bt_stack /sys/class/rfkill/rfkill0/type # # ## bluetooth LPM #chmod 0220 /proc/bluetooth/sleep/lpm #chmod 0220 /proc/bluetooth/sleep/btwrite #chown bluetooth net_bt_stack /proc/bluetooth/sleep/lpm #chown bluetooth net_bt_stack /proc/bluetooth/sleep/btwrite #write /proc/bluetooth/sleep/lpm 1 5、可选: R:\wyb\ap6181_sina33m_sc3817r\android\device\softwinner\astar-d7\ueventd.sun8i.rc #/dev/video1 0777 media media /dev/snd/pcmC0D0c 0777 media media /dev/snd/pcmC0D0p 0777 media media #/dev/ttyS1 0660 bluetooth bluetooth 6、可选: R:\wyb\ap6181_sina33m_sc3817r\android\frameworks\base\packages\SettingsProvider\res\values\defaults.xml <integer name="def_screen_off_timeout">1800000</integer> <bool name="def_lockscreen_disabled">true</bool> 7、请严重注意,全志在这里埋坑了!(坑爹无敌!) Android里面调入配置文件:nvram.txt,里面里面调入:nvram_ap6181.txt。 R:\wyb\ap6181_sina33m_sc3817r\android\hardware\broadcom\wlan\bcmdhd\firmware\ap6181\config.txt R:\wyb\ap6181_sina33m_sc3817r\android\hardware\broadcom\wlan\bcmdhd\firmware\ap6181\device-bcm.mk # # Copyright (C) 2008 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # -include hardware/broadcom/wlan/bcmdhd/config/config-bcm.mk WIFI_DRIVER_FW_PATH_STA := "/system/vendor/modules/fw_bcm40181a2.bin" WIFI_DRIVER_FW_PATH_P2P := "/system/vendor/modules/fw_bcm40181a2_p2p.bin" WIFI_DRIVER_FW_PATH_AP := "/system/vendor/modules/fw_bcm40181a2_apsta.bin" PRODUCT_COPY_FILES += \ hardware/broadcom/wlan/bcmdhd/firmware/ap6181/fw_bcm40181a2_p2p.bin:system/vendor/modules/fw_bcm40181a2_p2p.bin \ hardware/broadcom/wlan/bcmdhd/firmware/ap6181/fw_bcm40181a2_apsta.bin:system/vendor/modules/fw_bcm40181a2_apsta.bin \ hardware/broadcom/wlan/bcmdhd/firmware/ap6181/fw_bcm40181a2.bin:system/vendor/modules/fw_bcm40181a2.bin \ hardware/broadcom/wlan/bcmdhd/firmware/ap6181/nvram_ap6181.txt:system/vendor/modules/nvram_ap6181.txt \ hardware/broadcom/wlan/bcmdhd/firmware/ap6181/config.txt:system/vendor/modules/config.txt R:\wyb\ap6181_sina33m_sc3817r\android\hardware\broadcom\wlan\bcmdhd\firmware\ap6181\fw_bcm40181a2.bin R:\wyb\ap6181_sina33m_sc3817r\android\hardware\broadcom\wlan\bcmdhd\firmware\ap6181\fw_bcm40181a2_apsta.bin R:\wyb\ap6181_sina33m_sc3817r\android\hardware\broadcom\wlan\bcmdhd\firmware\ap6181\fw_bcm40181a2_p2p.bin R:\wyb\ap6181_sina33m_sc3817r\android\hardware\broadcom\wlan\bcmdhd\firmware\ap6181\nvram_ap6181.txt 8、可选: R:\wyb\ap6181_sina33m_sc3817r\android\packages\apps\Camera2\src\com\android\camera\CameraActivity.java 9、可选: R:\wyb\ap6181_sina33m_sc3817r\lichee\linux-3.4\arch\arm\mach-sunxi\rf\bt_pm.c static int rfkill_set_power(void *data, bool blocked) { unsigned int mod_sel = wifi_pm_get_mod_type(); RF_MSG("rfkill set power %d\n", blocked); switch (mod_sel) { case 2: /* ap6210 */ if (!blocked) { wifi_pm_gpio_ctrl("ap6xxx_bt_regon", 1); } else { wifi_pm_gpio_ctrl("ap6xxx_bt_regon", 0); } break; case 4: /* realtek rtl8723au */ if (!blocked) { wifi_pm_gpio_ctrl("rtl8723au_bt", 1); } else { wifi_pm_gpio_ctrl("rtl8723au_bt", 0); } break; case 5: /* realtek rtl8723bs */ if (!blocked) { wifi_pm_gpio_ctrl("rtl8723bs_bt_regon", 1); } else { wifi_pm_gpio_ctrl("rtl8723bs_bt_regon", 0); } break; case 7: /* ap6476 */ if (!blocked) { wifi_pm_gpio_ctrl("ap6xxx_bt_regon", 1); } else { wifi_pm_gpio_ctrl("ap6xxx_bt_regon", 0); } break; case 9: /* ap6212 */ if (!blocked) { wifi_pm_gpio_ctrl("ap6xxx_bt_regon", 1); } else { wifi_pm_gpio_ctrl("ap6xxx_bt_regon", 0); } break; default: RF_MSG("no bt module matched !!\n"); } msleep(10); return 0; } 10、可选: R:\wyb\ap6181_sina33m_sc3817r\lichee\linux-3.4\arch\arm\mach-sunxi\rf\wifi_pm.c struct wifi_pm_ops wifi_select_pm_ops; static char* wifi_mod[] = {" ", "ap6181", /* 1 - AP6181*/ "ap6210", /* 2 - AP6210*/ "rtl8188eu", /* 3 - RTL8188EU*/ "rtl8723au", /* 4 - RTL8723AU*/ "rtl8723bs", /* 5 - RTL8723BS*/ "esp8089", /* 6 - ESP8089*/ "ap6476", /* 7 - AP6476*/ "rtl8189es", /* 8 - rtl8189es*/ "ap6212", /* 9 - AP6212*/ "ap6330", /* 10- AP6330*/ "gb9663", /* 11- GB9663*/ }; static int __devinit wifi_pm_probe(struct platform_device *pdev) { struct wifi_pm_ops *ops = &wifi_select_pm_ops; switch (ops->module_sel.val) { case 1: /* AP6181 */ ap6xxx_gpio_init(); break; case 2: /* AP6210 */ ap6xxx_gpio_init(); break; case 3: /* RTL8188EU */ rtl8188eu_gpio_init(); break; case 4: /* RTL8723AU */ rtl8723au_gpio_init(); break; case 5: /* RTL8723BS */ rtl8723bs_gpio_init(); break; case 6: /* ESP8089 */ esp8089_gpio_init(); break; case 7: /* AP6476 */ ap6xxx_gpio_init(); break; case 8: /* rtl8189es */ rtl8189es_gpio_init(); break; case 9: /* AP6212 */ ap6xxx_gpio_init(); break; default: wifi_pm_msg("wrong sdio module select %d !\n", ops->module_sel.val); } awwifi_procfs_attach(); wifi_pm_msg("wifi gpio init is OK !!\n"); return 0; } 11、可选: R:\wyb\ap6181_sina33m_sc3817r\lichee\linux-3.4\drivers\net\wireless\bcmdhd\include\bcmdevs.h #define BCM4350_CHIP_ID 0x4350 #define BCM43430_CHIP_ID 43430 /* 43430 chipcommon chipid 0xa9a6 */ #define BCM4342_CHIP_ID 4342 R:\wyb\ap6181_sina33m_sc3817r\lichee\linux-3.4\drivers\net\wireless\bcmdhd\dhd_common.c void dhd_common_init(osl_t *osh) { int select_type = 0; //aw checkout which wifi had select //select_type = wifi_pm_get_mod_type(); select_type = 1; #ifdef CONFIG_BCMDHD_FW_PATH //select ap6181 or ap6210 or ap6476 if (select_type == 1 || select_type == 2 || select_type == 7) { bcm_strncpy_s(fw_path, sizeof(fw_path), "/system/vendor/modules/fw_bcm40181a2.bin", MOD_PARAM_PATHLEN-1); } #else /* CONFIG_BCMDHD_FW_PATH */ fw_path[0] = '\0'; #endif /* CONFIG_BCMDHD_FW_PATH */ #ifdef CONFIG_BCMDHD_NVRAM_PATH switch (select_type) { //ap6181 case 1: bcm_strncpy_s(nv_path, sizeof(nv_path), "/system/vendor/modules/nvram_ap6181.txt", MOD_PARAM_PATHLEN-1); break; //ap6210 case 2: bcm_strncpy_s(nv_path, sizeof(nv_path), "/system/vendor/modules/nvram_ap6210.txt", MOD_PARAM_PATHLEN-1); break; //ap6476 case 7: bcm_strncpy_s(nv_path, sizeof(nv_path), "/system/vendor/modules/nvram_ap6476.txt", MOD_PARAM_PATHLEN-1); break; //ap6212 case 9: bcm_strncpy_s(nv_path, sizeof(nv_path), "/system/vendor/modules/nvram.txt", MOD_PARAM_PATHLEN-1); break; default: break; } #else /* CONFIG_BCMDHD_NVRAM_PATH */ nv_path[0] = '\0'; #endif /* CONFIG_BCMDHD_NVRAM_PATH */ #ifdef CONFIG_BCMDHD_CONFIG_PATH bcm_strncpy_s(conf_path, sizeof(conf_path), "/system/vendor/modules/config.txt", MOD_PARAM_PATHLEN-1); #else /* CONFIG_BCMDHD_CONFIG_PATH */ conf_path[0] = '\0'; #endif /* CONFIG_BCMDHD_CONFIG_PATH */ #ifdef SOFTAP fw_path2[0] = '\0'; #endif } R:\wyb\ap6181_sina33m_sc3817r\lichee\linux-3.4\drivers\net\wireless\bcmdhd\dhd_linux.c int dhd_bus_start(dhd_pub_t *dhdp) { int ret = -1; dhd_info_t *dhd = (dhd_info_t*)dhdp->info; unsigned long flags; ASSERT(dhd); DHD_TRACE(("Enter %s:\n", __FUNCTION__)); #ifdef DHDTHREAD if (dhd->threads_only) dhd_os_sdlock(dhdp); #endif /* DHDTHREAD */ /* try to download image and nvram to the dongle */ if ((dhd->pub.busstate == DHD_BUS_DOWN) && (fw_path[0] != '\0') && (nv_path[0] != '\0')) { #ifdef SHOW_NVRAM_TYPE { /* Show nvram type in the kernel log */ int i; for (i = 0; nv_path[i] != '\0'; ++i) { if (nv_path[i] == '.') { ++i; break; } } DHD_ERROR(("%s: nvram_type = [%s]\n", __FUNCTION__, &nv_path[i])); } #endif /* SHOW_NVRAM_TYPE */ /* wake lock moved to dhdsdio_download_firmware */ if (!(dhd_bus_download_firmware(dhd->pub.bus, dhd->pub.osh, fw_path, nv_path, conf_path))) { DHD_ERROR(("%s: dhdsdio_probe_download failed. firmware = %s nvram = %s config = %s\n", __FUNCTION__, fw_path, nv_path, conf_path)); #ifdef DHDTHREAD if (dhd->threads_only) dhd_os_sdunlock(dhdp); #endif /* DHDTHREAD */ // 2017/6/23 18:40 wenyuanbo download ap6212 fail not return error!!!! //return -1; } } if (dhd->pub.busstate != DHD_BUS_LOAD) { #ifdef DHDTHREAD if (dhd->threads_only) dhd_os_sdunlock(dhdp); #endif /* DHDTHREAD */ return -ENETDOWN; } /* Start the watchdog timer */ dhd->pub.tickcnt = 0; dhd_os_wd_timer(&dhd->pub, dhd_watchdog_ms); /* Bring up the bus */ if ((ret = dhd_bus_init(&dhd->pub, FALSE)) != 0) { DHD_ERROR(("%s, dhd_bus_init failed %d\n", __FUNCTION__, ret)); #ifdef DHDTHREAD if (dhd->threads_only) dhd_os_sdunlock(dhdp); #endif /* DHDTHREAD */ return ret; } bcmsdh_set_drvdata(dhdp); // terence 20130427: fix for null pointer issue #if defined(OOB_INTR_ONLY) /* Host registration for OOB interrupt */ if (bcmsdh_register_oob_intr(dhdp)) { /* deactivate timer and wait for the handler to finish */ flags = dhd_os_spin_lock(&dhd->pub); dhd->wd_timer_valid = FALSE; dhd_os_spin_unlock(&dhd->pub, flags); del_timer_sync(&dhd->timer); DHD_ERROR(("%s Host failed to register for OOB\n", __FUNCTION__)); #ifdef DHDTHREAD if (dhd->threads_only) dhd_os_sdunlock(dhdp); #endif /* DHDTHREAD */ DHD_OS_WD_WAKE_UNLOCK(&dhd->pub); return -ENODEV; } /* Enable oob at firmware */ dhd_enable_oob_intr(dhd->pub.bus, TRUE); #endif /* If bus is not ready, can't come up */ if (dhd->pub.busstate != DHD_BUS_DATA) { flags = dhd_os_spin_lock(&dhd->pub); dhd->wd_timer_valid = FALSE; dhd_os_spin_unlock(&dhd->pub, flags); del_timer_sync(&dhd->timer); DHD_ERROR(("%s failed bus is not ready\n", __FUNCTION__)); #ifdef DHDTHREAD if (dhd->threads_only) dhd_os_sdunlock(dhdp); #endif /* DHDTHREAD */ DHD_OS_WD_WAKE_UNLOCK(&dhd->pub); return -ENODEV; } #ifdef DHDTHREAD if (dhd->threads_only) dhd_os_sdunlock(dhdp); #endif /* DHDTHREAD */ dhd_process_cid_mac(dhdp, TRUE); /* Bus is ready, do any protocol initialization */ if ((ret = dhd_prot_init(&dhd->pub)) < 0) return ret; dhd_process_cid_mac(dhdp, FALSE); #ifdef ARP_OFFLOAD_SUPPORT if (dhd->pend_ipaddr) { #ifdef AOE_IP_ALIAS_SUPPORT aoe_update_host_ipv4_table(&dhd->pub, dhd->pend_ipaddr, TRUE, 0); #endif /* AOE_IP_ALIAS_SUPPORT */ dhd->pend_ipaddr = 0; } #endif /* ARP_OFFLOAD_SUPPORT */ return 0; } R:\wyb\ap6181_sina33m_sc3817r\lichee\linux-3.4\drivers\net\wireless\bcmdhd\dhd_sdio.c static bool dhdsdio_chipmatch(uint16 chipid) { if (chipid == BCM4325_CHIP_ID) return TRUE; if (chipid == BCM4329_CHIP_ID) return TRUE; if (chipid == BCM4315_CHIP_ID) return TRUE; if (chipid == BCM4319_CHIP_ID) return TRUE; if (chipid == BCM4336_CHIP_ID) return TRUE; if (chipid == BCM4330_CHIP_ID) return TRUE; if (chipid == BCM43237_CHIP_ID) return TRUE; if (chipid == BCM43362_CHIP_ID) return TRUE; if (chipid == BCM4314_CHIP_ID) return TRUE; if (chipid == BCM43242_CHIP_ID) return TRUE; if (chipid == BCM43340_CHIP_ID) return TRUE; if (chipid == BCM43341_CHIP_ID) return TRUE; if (chipid == BCM43143_CHIP_ID) return TRUE; if (chipid == BCM43342_CHIP_ID) return TRUE; if (chipid == BCM4334_CHIP_ID) return TRUE; if (chipid == BCM43239_CHIP_ID) return TRUE; if (chipid == BCM4324_CHIP_ID) return TRUE; if (chipid == BCM4335_CHIP_ID) return TRUE; if (chipid == BCM4339_CHIP_ID) return TRUE; if (chipid == BCM4350_CHIP_ID) return TRUE; if (chipid == BCM43430_CHIP_ID) return TRUE; return FALSE; } R:\wyb\ap6181_sina33m_sc3817r\lichee\tools\pack\chips\sun8iw5p1\configs\d7\sys_config.fex [power_sply] dcdc1_vol = 3000 dcdc2_vol = 1100 dcdc3_vol = 1200 dcdc4_vol = 0 dcdc5_vol = 1500 aldo1_vol = 3300 aldo2_vol = 2500 aldo3_vol = 3000 dldo1_vol = 3300 dldo2_vol = 3300 dldo3_vol = 2800 ;gpio0_vol = 2800 ldoio0_vol = 2800 [jtag_para] jtag_enable = 0 ;***************************************************************************** ;sdram configuration ; ;***************************************************************************** [dram_para] dram_clk = 552 [wakeup_src_para] cpu_en = 0 cpu_freq = 48 ; (cpu:apb:ahb) pll_ratio = 0x111 dram_selfresh_en= 1 dram_freq = 36 wakeup_src_wl = port:PL07<4><default><default><0> ;wakeup_src_bt = port:PL09<4><default><default><0> ;bb_wake_ap = port:PL02<4><default><default><0> [uart0] uart_used = 1 uart_port = 0 uart_type = 2 uart_tx = port:PF02<3><1><default><default> uart_rx = port:PF04<3><1><default><default> ;---------------------------------------------------------------------------------- ;capacitor tp configuration ;ctp_twi_id : twi controller ID ;ctp_twi_addr : I2C slave address, 7bit ;ctp_screen_max_x/_y : resolution of touch panel ;ctp_revert_x/_y_flag : whether need to revert x/y ;ctp_exchange_x_y_flag: whether need to exchange the value of x and y ;ctp_int_port : port for tp's interrupt signal ;ctp_wakeup : port for wakeup tp ;---------------------------------------------------------------------------------- [ctp_para] ctp_used = 1 ctp_name = "gt82x" ctp_twi_id = 0 ctp_twi_addr = 0x5d ctp_screen_max_x = 1280 ctp_screen_max_y = 800 ctp_revert_x_flag = 1 ctp_revert_y_flag = 1 ctp_exchange_x_y_flag = 1 ctp_int_port = port:PL04<4><default><default><default> ctp_wakeup = port:PL03<1><default><default><1> ctp_power_ldo = ctp_power_ldo_vol = ctp_power_io = ;-------------------------------------------------------------------------------- ; CTP automatic detection configuration ;ctp_detect_used --- Whether startup automatic inspection function. 1:used,0:unused ;Module name postposition 1 said detection, 0 means no detection. ;-------------------------------------------------------------------------------- [ctp_list_para] ctp_det_used = 1 ft5x_ts = 1 gt82x = 1 gslX680 = 1 gslX680new = 0 gt9xx_ts = 1 gt9xxf_ts = 0 tu_ts = 0 gt818_ts = 1 zet622x = 1 aw5306_ts = 1 icn83xx_ts = 0 [motor_para] motor_used = 0 ;---------------------------------------------------------------------------------- ;lcd0 configuration ;lcd_if: 0:hv(sync+de); 1:8080; 2:ttl; 3:lvds; 4:dsi; 5:edp; 6:extend dsi ;lcd_x: lcd horizontal resolution ;lcd_y: lcd vertical resolution ;lcd_width: width of lcd in mm ;lcd_height: height of lcd in mm ;lcd_dclk_freq: in MHZ unit ;lcd_pwm_freq: in HZ unit ;lcd_pwm_pol: lcd backlight PWM polarity ;lcd_pwm_max_limit lcd backlight PWM max limit(<=255) ;lcd_hbp: hsync back porch ;lcd_ht: hsync total cycle ;lcd_vbp: vsync back porch ;lcd_vt: vysnc total cycle ;lcd_hspw: hsync plus width ;lcd_vspw: vysnc plus width ;lcd_lvds_if: 0:single link; 1:dual link ;lcd_lvds_colordepth: 0:8bit; 1:6bit ;lcd_lvds_mode: 0:NS mode; 1:JEIDA mode ;lcd_frm: 0:disable; 1:enable rgb666 dither; 2:enable rgb656 dither ;lcd_io_phase: 0:noraml; 1:intert phase(0~3bit: vsync phase; 4~7bit:hsync phase; ; 8~11bit:dclk phase; 12~15bit:de phase) ;lcd_gamma_en lcd gamma correction enable ;lcd_bright_curve_en lcd bright curve correction enable ;lcd_cmap_en lcd color map function enable ;deu_mode 0:smoll lcd screen; 1:large lcd screen(larger than 10inch) ;lcdgamma4iep: Smart Backlight parameter, lcd gamma vale * 10; ; decrease it while lcd is not bright enough; increase while lcd is too bright ;smart_color 90:normal lcd screen 65:retina lcd screen(9.7inch) ;---------------------------------------------------------------------------------- [lcd0_para] lcd_used = 1 lcd_driver_name = "default_lcd" lcd_if = 3 lcd_x = 1280 lcd_y = 800 lcd_width = 150 lcd_height = 94 lcd_dclk_freq = 71 lcd_pwm_used = 1 lcd_pwm_ch = 0 lcd_pwm_freq = 50000 lcd_pwm_pol = 1 lcd_hbp = 20 lcd_ht = 1418 lcd_hspw = 10 lcd_vbp = 10 lcd_vt = 830 lcd_vspw = 5 lcd_lvds_if = 0 lcd_lvds_colordepth = 1 lcd_lvds_mode = 0 lcd_frm = 1 lcd_gamma_en = 0 lcd_bright_curve_en = 0 lcd_cmap_en = 0 deu_mode = 0 lcdgamma4iep = 22 smart_color = 90 lcd_bl_en = port:PD13<1><0><default><1> ;ap6xxx_wl_regon = port:PL06<1><default><default><0> ;lcd_bl_en = port:PL06<1><0><default><1> lcd_power = "axp22_dc1sw" lcdd0 = port:PD18<3><0><default><default> lcdd1 = port:PD19<3><0><default><default> lcdd2 = port:PD20<3><0><default><default> lcdd3 = port:PD21<3><0><default><default> lcdd4 = port:PD22<3><0><default><default> lcdd5 = port:PD23<3><0><default><default> lcdd6 = port:PD24<3><0><default><default> lcdd7 = port:PD25<3><0><default><default> lcdd8 = port:PD26<3><0><default><default> lcdd9 = port:PD27<3><0><default><default> ;---------------------------------------------------------------------------------- ;pwm config ;---------------------------------------------------------------------------------- [pwm0_para] pwm_used = 0 pwm_positive = port:PH00<2><0><default><default> [pwm1_para] pwm_used = 1 pwm_positive = port:PH01<2><0><default><default> [usbc0] usb_used = 1 usb_port_type = 2 usb_detect_type = 1 usb_id_gpio = port:PD10<0><1><default><default> usb_det_vbus_gpio = "axp_ctrl" usb_drv_vbus_gpio = port:power4<1><0><default><0> usb_restrict_gpio = usb_host_init_state = 0 usb_restric_flag = 0 usb_restric_voltage = 3550000 usb_restric_capacity= 5 usb_regulator_io = "nocare" usb_regulator_vol = 0 usb_regulator_id_vbus = "axp22_dcdc1" usb_regulator_id_vbus_vol = 3000000 [usbc1] usb_used = 1 usb_drv_vbus_gpio = port:PD12<1><0><default><0> usb_restrict_gpio = usb_host_init_state = 1 usb_restric_flag = 0 usb_regulator_io = "nocare" usb_regulator_vol = 0 usb_not_suspend = 0 ;-------------------------------------------------------------------------------- ;wifi/bt/fm/gps/nfc modules configuration ;module_num: ; 0- none ; 1- ap6181(wifi) ; 2- ap6210(wifi+bt) ; 3- rtl8188eu(wifi) ; 4- rtl8723au(wifi+bt) ; 5- rtl8723bs(wifi+bt) ; 6- esp8089(wifi) ; 7- ap6476(wifi+bt+fm+gps) ; 8- rtl8189es(wifi) ; 9- ap6212(wifi+bt+fm) ; 10- ap6330(wifi+bt+fm) ; 11- gb9663(wifi+bt+fm) ;module_power1: ""- bat, "axp_dldo1"- axp dldo1 ;module_power1_vol: power1 voltage, mv; not used for module_power1 is "" ;module_power2: ""- bat, "axp_dldo2"- axp dldo2 ;module_power2_vol: power2 voltage, mv; not used for module_power2 is "" ;module_power3: ""- bat, "axp_dldo2"- axp dldo2 ;module_power3_vol: power3 voltage, mv; not used for module_power3 is "" ;power_switch: module power switch io when bat supply ;chip_en: enable chip io ;lpo_use_apclk: ""- not use, "losc_out"- a23/33, "ac10032k1"、"ac10032k2"、"ac10032k3"- a80/a83 ;-------------------------------------------------------------------------------- [rf_para] module_num = 1 module_power1 = "axp22_aldo1" module_power1_vol = 3000000 module_power2 = "" module_power2_vol = 3000000 module_power3 = "" module_power3_vol = 3000000 power_switch = chip_en = lpo_use_apclk = "losc_out" ;-------------------------------------------------------------------------------- ;wifi configuration ;wifi_used: 0-not use, 1- use ;wifi_sdc_id: 0- SDC0, 1- SDC1, 2- SDC2, 3- SDC3 ;wifi_usbc_id: 0- USB0, 1- USB1, 2- USB2 ;wifi_usbc_type: 1- EHCI(speed 2.0), 2- OHCI(speed 1.0) ;wl_reg_on: wifi function enable io ;wl_host_wake: wifi device wake-up host ;wl_host_wake_invert: whether wl_host_wake use inverter between ap and module ; 0: not used, 1: used ;-------------------------------------------------------------------------------- [wifi_para] wifi_used = 1 wifi_sdc_id = 1 wifi_usbc_id = 1 wifi_usbc_type = 1 wifi_mod_sel = 1 wifi_power = "" wifi_power_ext1 = "" wifi_power_ext2 = "" ; 1 - ap6181 sdio wifi gpio config ;ap6xxx_wl_regon = port:PL06<1><default><default><0> ;ap6xxx_wl_host_wake = port:PL07<4><default><default><0> ;ap6xxx_lpo_use_apclk = 1 ; 2 - ap6210 sdio wifi gpio config ap6xxx_wl_regon = port:PL06<1><default><default><0> ap6xxx_wl_host_wake = port:PL07<4><default><default><0> ;ap6xxx_bt_regon = port:PL08<1><default><default><0> ;ap6xxx_bt_wake = port:PL10<1><default><default><0> ;ap6xxx_bt_host_wake = port:PL09<4><default><default><0> ap6xxx_lpo_use_apclk = 1 ; 3 - rtl8188eu usb wifi gpio conifg ; 4 - rtl8723au usb wifi + bt ; 5 - rtl8723bs sdio wifi + bt ;rtl8723bs_chip_en = port:PL11<1><default><default><0> ;rtl8723bs_wl_regon = port:PL06<1><default><default><0> ;rtl8723bs_wl_host_wake = port:PL07<4><default><default><0> ;rtl8723bs_bt_regon = port:PL08<1><default><default><0> ;rtl8723bs_bt_wake = port:PL10<1><default><default><0> ;rtl8723bs_bt_host_wake = port:PL09<4><default><default><0> ;rtl8723bs_lpo_use_apclk = 0 ; 6 - eagle sdio wifi ;esp_wl_chip_en = port:PL03<1><default><default><0> ;esp_wl_rst = port:PL02<1><default><default><0> ; 7 - ap6476 sdio wifi gpio config ;ap6xxx_wl_regon = port:PL06<1><default><default><0> ;ap6xxx_wl_host_wake = port:PL07<4><default><default><0> ;ap6xxx_bt_regon = port:PL08<1><default><default><0> ;ap6xxx_bt_wake = port:PL10<1><default><default><0> ;ap6xxx_bt_host_wake = port:PL09<4><default><default><0> ;ap6xxx_lpo_use_apclk = 1 ; 8 - rtl8189es sdio wifi gpio conifg ;rtl8189es_shdn = port:PL06<1><default><default><0> ;rtl8189es_host_wake = port:PL07<4><default><default><0> usb_vbus_power_ctrl = port:PL11<1><default><default><1> usb_eth_power_ctrl = port:PL04<1><default><default><1> ;-------------------------------------------------------------------------------- ;bluetooth configuration ;bt_used: 0- no used, 1- used ;bt_uard_id: 0- uart0, 1- uart1, 2- uart2 ;bt_rst_n: bt function enable io ;bt_wake: host wake-up bluetooth device ;bt_wak_host: bt device wake-up host ;bt_wake_invert: whether bt_wake use inverter between ap and module ; 0: not used, 1: used ;bt_host_wake_invert: whether bt_host_wake use inverter between ap and module ; 0: not used, 1: used ;-------------------------------------------------------------------------------- [bt_para] bt_used = 0 bt_uart_id = 1 bt_rst_n = port:PL08<1><default><default><0> bt_wake = port:PL10<1><default><default><0> bt_host_wake = port:PL09<4><default><default><0> bt_wake_invert = 0 bt_host_wake_invert = 0 ls_int = port:PB07<1><default><default><0> pcm_ch = port:PB05<1><default><default><0> [gy_list_para] gy_det_used = 0 [ls_list_para] ls_det_used = 0 power_start = 3 pmu_temp_enable = 0

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值