//int GPS_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg) long GPS_unlocked_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) { int retval = 0; ENUM_WMTHWVER_TYPE_T hw_ver_sym = WMTHWVER_INVALID; GPS_DBG_FUNC("cmd (0x%x)\n", cmd); switch (cmd) { case COMBO_IOC_GPS_HWVER: /*get combo hw version*/ hw_ver_sym = mtk_wcn_wmt_hwver_get(); GPS_INFO_FUNC("get hw version = %d, sizeof(hw_ver_sym) = %d\n", hw_ver_sym, sizeof(hw_ver_sym)); if (copy_to_user((int __user *)arg, &hw_ver_sym, sizeof(hw_ver_sym))) { retval = -EFAULT; } break; default: retval = -EFAULT; GPS_DBG_FUNC(KERN_INFO "GPS_ioctl(): unknown cmd (0x%x)\n", cmd); break; } return retval; }
/* int BT_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg) */ long BT_unlocked_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) { INT32 retval = 0; MTK_WCN_BOOL bRet = MTK_WCN_BOOL_TRUE; ENUM_WMTHWVER_TYPE_T hw_ver_sym = WMTHWVER_INVALID; BT_DBG_FUNC("BT_ioctl(): cmd (%d)\n", cmd); switch (cmd) { #if 0 case 0: /* enable/disable STP */ /* George: STP is controlled by WMT only */ /* mtk_wcn_stp_enable(arg); */ break; #endif case 1: /* send raw data */ BT_DBG_FUNC("BT_ioctl(): disable raw data from BT dev\n"); retval = -EINVAL; break; case COMBO_IOC_BT_HWVER: /*get combo hw version */ hw_ver_sym = mtk_wcn_wmt_hwver_get(); BT_INFO_FUNC("BT_ioctl(): get hw version = %d, sizeof(hw_ver_sym) = %zd\n", hw_ver_sym, sizeof(hw_ver_sym)); if (copy_to_user((int __user *)arg, &hw_ver_sym, sizeof(hw_ver_sym))) retval = -EFAULT; break; case COMBO_IOCTL_FW_ASSERT: /* BT trigger fw assert for debug */ BT_INFO_FUNC("BT Set fw assert......, reason:%lu\n", arg); bRet = mtk_wcn_wmt_assert(WMTDRV_TYPE_BT, arg); if (bRet == MTK_WCN_BOOL_TRUE) { BT_INFO_FUNC("BT Set fw assert OK\n"); retval = 0; } else { BT_INFO_FUNC("BT Set fw assert Failed\n"); retval = (-1000); } break; case COMBO_IOCTL_BT_IC_HW_VER: return mtk_wcn_wmt_ic_info_get(WMTCHIN_HWVER); break; case COMBO_IOCTL_BT_IC_FW_VER: return mtk_wcn_wmt_ic_info_get(WMTCHIN_FWVER); break; default: retval = -EFAULT; BT_DBG_FUNC("BT_ioctl(): unknown cmd (%d)\n", cmd); break; } return retval; }
//int GPS_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg) long GPS_unlocked_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) { int retval = 0; ENUM_WMTHWVER_TYPE_T hw_ver_sym = WMTHWVER_INVALID; printk("GPS_ioctl(): cmd (%d)\n", cmd); switch(cmd) { case 0: // enable/disable STP GPS_INFO_FUNC(KERN_INFO "GPS_ioctl(): disable STP control from GPS dev\n"); retval = -EINVAL; #if 1 #else /* George: STP is controlled by WMT only */ mtk_wcn_stp_enable(arg); #endif break; case 1: // send raw data GPS_INFO_FUNC(KERN_INFO "GPS_ioctl(): disable raw data from GPS dev \n"); retval = -EINVAL; break; case COMBO_IOC_GPS_HWVER: /*get combo hw version*/ hw_ver_sym = mtk_wcn_wmt_hwver_get(); GPS_INFO_FUNC(KERN_INFO "GPS_ioctl(): get hw version = %d, sizeof(hw_ver_sym) = %d\n", hw_ver_sym, sizeof(hw_ver_sym)); if(copy_to_user((int __user *)arg, &hw_ver_sym, sizeof(hw_ver_sym))){ retval = -EFAULT; } break; case COMBO_IOC_RTC_FLAG: retval = rtc_GPS_low_power_detected(); GPS_INFO_FUNC(KERN_INFO "GPS_ioctl(): low power flag (%d)\n", retval); break; case COMBO_IOC_CO_CLOCK_FLAG: retval = mtk_wcn_wmt_co_clock_flag_get(); GPS_INFO_FUNC(KERN_INFO "GPS_ioctl(): GPS co_clock_flag (%d)\n", retval); break; default: retval = -EFAULT; GPS_INFO_FUNC(KERN_INFO "GPS_ioctl(): unknown cmd (%d)\n", cmd); break; } /*OUT:*/ return retval; }
/* int BT_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg) */ long BT_unlocked_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) { INT32 retval = 0; MTK_WCN_BOOL bRet = MTK_WCN_BOOL_TRUE; ENUM_WMTHWVER_TYPE_T hw_ver_sym = WMTHWVER_INVALID; BT_DBG_FUNC("%s: cmd: 0x%x\n", __func__, cmd); switch (cmd) { case COMBO_IOC_BT_HWVER: /* Get combo HW version */ hw_ver_sym = mtk_wcn_wmt_hwver_get(); BT_INFO_FUNC("%s: HW version = %d, sizeof(hw_ver_sym) = %zd\n", __func__, hw_ver_sym, sizeof(hw_ver_sym)); if (copy_to_user((int __user *)arg, &hw_ver_sym, sizeof(hw_ver_sym))) retval = -EFAULT; break; case COMBO_IOCTL_FW_ASSERT: /* Trigger FW assert for debug */ BT_INFO_FUNC("%s: Host trigger FW assert......, reason:%lu\n", __func__, arg); bRet = mtk_wcn_wmt_assert(WMTDRV_TYPE_BT, arg); if (bRet == MTK_WCN_BOOL_TRUE) { BT_INFO_FUNC("Host trigger FW assert succeed\n"); retval = 0; } else { BT_ERR_FUNC("Host trigger FW assert Failed\n"); retval = (-EBUSY); } break; case COMBO_IOCTL_BT_IC_HW_VER: retval = mtk_wcn_wmt_ic_info_get(WMTCHIN_HWVER); break; case COMBO_IOCTL_BT_IC_FW_VER: retval = mtk_wcn_wmt_ic_info_get(WMTCHIN_FWVER); break; default: retval = -EFAULT; BT_ERR_FUNC("Unknown cmd (%d)\n", cmd); break; } return retval; }
//int BT_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg) long BT_unlocked_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) { int retval = 0; ENUM_WMTHWVER_TYPE_T hw_ver_sym = WMTHWVER_INVALID; BT_DBG_FUNC("BT_ioctl(): cmd (%d)\n", cmd); switch(cmd) { #if 0 case 0: // enable/disable STP /* George: STP is controlled by WMT only */ /* mtk_wcn_stp_enable(arg); */ break; #endif case 1: // send raw data BT_DBG_FUNC("BT_ioctl(): disable raw data from BT dev \n"); retval = -EINVAL; break; case COMBO_IOC_BT_HWVER: /*get combo hw version*/ hw_ver_sym = mtk_wcn_wmt_hwver_get(); BT_INFO_FUNC("BT_ioctl(): get hw version = %d, sizeof(hw_ver_sym) = %d\n", hw_ver_sym, sizeof(hw_ver_sym)); if(copy_to_user((int __user *)arg, &hw_ver_sym, sizeof(hw_ver_sym))){ retval = -EFAULT; } break; default: retval = -EFAULT; BT_DBG_FUNC("BT_ioctl(): unknown cmd (%d)\n", cmd); break; } return retval; }
INT32 wmt_dbg_hwver_get(INT32 par1, INT32 par2, INT32 par3) { WMT_INFO_FUNC("query chip version\n"); mtk_wcn_wmt_hwver_get(); return 0; }
/* int GPS_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg) */ long GPS_unlocked_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) { INT32 retval = 0; ENUM_WMTHWVER_TYPE_T hw_ver_sym = WMTHWVER_INVALID; UINT32 hw_version = 0; UINT32 fw_version = 0; pr_warn("GPS_ioctl(): cmd (%d)\n", cmd); switch (cmd) { case 0: /* enable/disable STP */ GPS_DBG_FUNC("GPS_ioctl(): disable STP control from GPS dev\n"); retval = -EINVAL; #if 1 #else /* George: STP is controlled by WMT only */ mtk_wcn_stp_enable(arg); #endif break; case 1: /* send raw data */ GPS_DBG_FUNC("GPS_ioctl(): disable raw data from GPS dev\n"); retval = -EINVAL; break; case COMBO_IOC_GPS_HWVER: /*get combo hw version */ hw_ver_sym = mtk_wcn_wmt_hwver_get(); GPS_DBG_FUNC("GPS_ioctl(): get hw version = %d, sizeof(hw_ver_sym) = %zd\n", hw_ver_sym, sizeof(hw_ver_sym)); if (copy_to_user((int __user *)arg, &hw_ver_sym, sizeof(hw_ver_sym))) retval = -EFAULT; break; case COMBO_IOC_GPS_IC_HW_VERSION: /*get combo hw version from ic, without wmt mapping */ hw_version = mtk_wcn_wmt_ic_info_get(WMTCHIN_HWVER); GPS_DBG_FUNC("GPS_ioctl(): get hw version = 0x%x\n", hw_version); if (copy_to_user((int __user *)arg, &hw_version, sizeof(hw_version))) retval = -EFAULT; break; case COMBO_IOC_GPS_IC_FW_VERSION: /*get combo fw version from ic, without wmt mapping */ fw_version = mtk_wcn_wmt_ic_info_get(WMTCHIN_FWVER); GPS_DBG_FUNC("GPS_ioctl(): get fw version = 0x%x\n", fw_version); if (copy_to_user((int __user *)arg, &fw_version, sizeof(fw_version))) retval = -EFAULT; break; default: retval = -EFAULT; GPS_DBG_FUNC("GPS_ioctl(): unknown cmd (%d)\n", cmd); break; } /*OUT:*/ return retval; }
/* int GPS_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg) */ long GPS_unlocked_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) { int retval = 0; ENUM_WMTHWVER_TYPE_T hw_ver_sym = WMTHWVER_INVALID; pr_debug("GPS_ioctl(): cmd (%d)\n", cmd); switch (cmd) { case 0: /* enable/disable STP */ GPS_INFO_FUNC("disable STP control from GPS dev\n"); retval = -EINVAL; #if 1 #else /* George: STP is controlled by WMT only */ mtk_wcn_stp_enable(arg); #endif break; case 1: /* send raw data */ GPS_INFO_FUNC("disable raw data from GPS dev\n"); retval = -EINVAL; break; case COMBO_IOC_GPS_HWVER: /*get combo hw version */ hw_ver_sym = mtk_wcn_wmt_hwver_get(); GPS_INFO_FUNC("get hw version = %d, sizeof(hw_ver_sym) = %zd\n", hw_ver_sym, sizeof(hw_ver_sym)); if (copy_to_user((int __user *)arg, &hw_ver_sym, sizeof(hw_ver_sym))) retval = -EFAULT; break; case COMBO_IOC_RTC_FLAG: retval = rtc_GPS_low_power_detected(); GPS_INFO_FUNC("low power flag (%d)\n", retval); break; case COMBO_IOC_CO_CLOCK_FLAG: retval = mtk_wcn_wmt_co_clock_flag_get(); GPS_INFO_FUNC("GPS co_clock_flag (%d)\n", retval); break; case COMBO_IOC_D1_EFUSE_GET: #if defined(CONFIG_ARCH_MT6735) do { char *addr = ioremap(0x10206198, 0x4); retval = *(volatile unsigned int *)addr; GPS_INFO_FUNC("D1 efuse (0x%x)\n", retval); iounmap(addr); } while (0); #else GPS_ERR_FUNC("Read Efuse not supported in this platform\n"); #endif break; default: retval = -EFAULT; GPS_INFO_FUNC("unknown cmd (%d)\n", cmd); break; } /*OUT:*/ return retval; }