static ssize_t brcm_switch_read(struct file *file, char *buf, int count, loff_t *ppos) { int val, len, err; if (g_check_usb_mode) { g_check_usb_mode = 0; pr_info("checking the current USB mod\n"); #ifdef CONFIG_USB_ANDROID val = Android_switch_usb_conf(CHECK_USB_MODE - 1) + 1; #endif len = sizeof(val); pr_info("val = %d \n",val); err = copy_to_user(buf, &val, len); if (err != 0) return -EFAULT; return len; } else { pr_info("\nTest Modes:\n"); pr_info("MSC_ONLY_MODE: echo 1 > /proc/brcm_switch\n"); pr_info("ADB_MSC_MODE: echo 2 > /proc/brcm_switch\n"); pr_info("RNDIS_ETH_MODE: echo 3 > /proc/brcm_switch\n"); pr_info("ACM_ONLY_MODE: echo 6 > /proc/brcm_switch\n"); pr_info("ACM_MSC_MODE: echo 7 > /proc/brcm_switch\n"); pr_info("LOOPBACK_TEST_MODE: echo 8 > /proc/brcm_switch\n"); return 0; } }
static int brcm_switch_adb_rndis_off(void* data) { #ifdef CONFIG_USB_ANDROID Android_switch_usb_conf(ADB_RNDIS_MOD_OFF - 1); #endif return 0; }
static int brcm_switch_acm_only(void* data) { #ifdef CONFIG_USB_ANDROID Android_switch_usb_conf(ACM_ONLY_MODE); #endif return 0; }
static int brcm_switch_restore_adb(void* data) { #ifdef CONFIG_USB_ANDROID Android_switch_usb_conf(RESTORE_ADB_MODE - 1); #endif return 0; }
static int brcm_switch_eth(void* data) { #ifdef CONFIG_USB_ANDROID Android_switch_usb_conf(RNDIS_ETHER_USB_CONF - 1); #endif return 0; }
static int brcm_switch_adb_msc(void* data) { #ifdef CONFIG_USB_ANDROID Android_switch_usb_conf(ADB_MSC_USB_CONF - 1); #endif return 0; }
//Test the APIs static int brcm_switch_msc_only(void* data) { #ifdef CONFIG_USB_ANDROID Android_switch_usb_conf(MSC_ONLY_USB_CONF - 1); #endif return 0; }
static int brcm_switch_disable_adb(void* data) { #ifdef CONFIG_USB_ANDROID Android_switch_usb_conf(ADB_DISABLE_MODE); #endif return 0; }
static void brcm_switch_acm_obex(void* data) { #ifdef CONFIG_USB_ANDROID Android_switch_usb_conf(ACM_OBEX_MODE); #endif }