Subject: Support reading BT address from OTP file Some customers want to put wifi or BT address in OTP file for manufactory process. This patch will support this feature.
ps: this patch is based on kernel-2.6.37.6-151.5 and ar6003_skip_unnecessary_scan.patch due to the change is in the same ar6000_drv.c. Signed-off-by: Samuel Chang <samu...@qca.qualcomm.com> diff -ruN kernel-2.6.37.6-151.5_skip_unnecessasy_scan_patch_P1/drivers/staging/ar6003/os/linux/ar6000_drv.c kernel-2.6.37.6-151.5_bdaddress_otp_patch_P2/drivers/staging/ar6003/os/linux/ar6000_drv.c --- kernel-2.6.37.6-151.5_skip_unnecessasy_scan_patch_P1/drivers/staging/ar6003/os/linux/ar6000_drv.c 2011-07-18 16:16:07.816871251 +0800 +++ kernel-2.6.37.6-151.5_bdaddress_otp_patch_P2/drivers/staging/ar6003/os/linux/ar6000_drv.c 2011-07-22 12:55:41.505195148 +0800 @@ -1384,6 +1384,33 @@ #endif /* INIT_MODE_DRV_ENABLED */ A_STATUS +ar6000_update_bdaddr(AR_SOFTC_T *ar) +{ + + if (setupbtdev != 0) { + A_UINT32 address; + + if (BMIReadMemory(ar->arHifDevice, + HOST_INTEREST_ITEM_ADDRESS(ar->arTargetType, hi_board_data), (A_UCHAR *)&address, 4) != A_OK) + { + AR_DEBUG_PRINTF(ATH_DEBUG_ERR,("BMIReadMemory for hi_board_data failed\n")); + return A_ERROR; + } + + if (BMIReadMemory(ar->arHifDevice, address + BDATA_BDADDR_OFFSET, (A_UCHAR *)ar->bdaddr, 6) != A_OK) + { + AR_DEBUG_PRINTF(ATH_DEBUG_ERR,("BMIReadMemory for BD address failed\n")); + return A_ERROR; + } + AR_DEBUG_PRINTF(ATH_DEBUG_INFO,("BDADDR 0x%x:0x%x:0x%x:0x%x:0x%x:0x%x\n", ar->bdaddr[0], + ar->bdaddr[1], ar->bdaddr[2], ar->bdaddr[3], + ar->bdaddr[4], ar->bdaddr[5])); + } + +return A_OK; +} + +A_STATUS ar6000_sysfs_bmi_get_config(AR_SOFTC_T *ar, A_UINT32 mode) { AR_DEBUG_PRINTF(ATH_DEBUG_INFO,("BMI: Requesting device specific configuration\n")); @@ -2896,6 +2923,10 @@ ar = arPriv->arSoftc; + if (wlaninitmode == WLAN_INIT_MODE_USR || wlaninitmode == WLAN_INIT_MODE_DRV) { + + ar6000_update_bdaddr(ar); + } if (enablerssicompensation) { ar6000_copy_cust_data_from_target(ar->arHifDevice, ar->arTargetType); read_rssi_compensation_param(ar); diff -ruN kernel-2.6.37.6-151.5_skip_unnecessasy_scan_patch_P1/drivers/staging/ar6003/os/linux/hci_bridge.c kernel-2.6.37.6-151.5_bdaddress_otp_patch_P2/drivers/staging/ar6003/os/linux/hci_bridge.c --- kernel-2.6.37.6-151.5_skip_unnecessasy_scan_patch_P1/drivers/staging/ar6003/os/linux/hci_bridge.c 2011-07-03 12:29:58.000000000 +0800 +++ kernel-2.6.37.6-151.5_bdaddress_otp_patch_P2/drivers/staging/ar6003/os/linux/hci_bridge.c 2011-07-22 11:41:28.051111664 +0800 @@ -225,7 +225,6 @@ { AR6K_HCI_BRIDGE_INFO *pHcidevInfo = (AR6K_HCI_BRIDGE_INFO *)pContext; A_STATUS status; - AR_SOFTC_DEV_T *arDev = pHcidevInfo->ar->arDev[0]; pHcidevInfo->pHCIDev = HCIHandle; @@ -295,7 +294,7 @@ } /* configure the AR3K device */ - memcpy(ar3kconfig.bdaddr,arDev->bdaddr,6); + memcpy(ar3kconfig.bdaddr,pHcidevInfo->ar->bdaddr,6); status = AR3KConfigure(&ar3kconfig); if (A_FAILED(status)) { extern unsigned int setuphci; diff -ruN kernel-2.6.37.6-151.5_skip_unnecessasy_scan_patch_P1/drivers/staging/ar6003/os/linux/include/ar6000_drv.h kernel-2.6.37.6-151.5_bdaddress_otp_patch_P2/drivers/staging/ar6003/os/linux/include/ar6000_drv.h --- kernel-2.6.37.6-151.5_skip_unnecessasy_scan_patch_P1/drivers/staging/ar6003/os/linux/include/ar6000_drv.h 2011-07-15 23:59:29.000000000 +0800 +++ kernel-2.6.37.6-151.5_bdaddress_otp_patch_P2/drivers/staging/ar6003/os/linux/include/ar6000_drv.h 2011-07-22 11:43:11.851626382 +0800 @@ -620,6 +620,8 @@ A_UINT8 gNumSta; /* AP-STA Concurrency */ struct ar6_softc_dev *arDev[NUM_DEV]; + /* Bluetooth Address to be read from OTP */ + A_UINT8 bdaddr[6]; } AR_SOFTC_T; typedef struct ar6_softc_ap { @@ -718,7 +720,6 @@ WMI_GET_WAC_INFO wacInfo; #define AR_MCAST_FILTER_MAC_ADDR_SIZE 6 A_UINT8 mcast_filters[MAC_MAX_FILTERS_PER_LIST][AR_MCAST_FILTER_MAC_ADDR_SIZE]; - A_UINT8 bdaddr[ATH_MAC_LEN]; #ifdef ADAPTIVE_POWER_THROUGHPUT_CONTROL APTC_TRAFFIC_RECORD aptcTR; #endif _______________________________________________ MeeGo-kernel mailing list MeeGo-kernel@lists.meego.com http://lists.meego.com/listinfo/meego-kernel