static int modem_reset_notify_misc(struct notifier_block *nb, unsigned long event, void *ptr) { switch (event) { case MDM_EVT_NOTIFY_RESET_ON: modem_signal_user(ASC_USER_MDM_RESET_ON); break; case MDM_EVT_NOTIFY_RESET_OFF: modem_signal_user(ASC_USER_MDM_RESET_OFF); break; default: ; } return NOTIFY_OK; }
static int modem_userspace_notifier(int msg, void *data) { int ret = 0; int wake, sleep; char *hd = (char *)data; if(!hd) { printk(KERN_ERR "%s:error sync user\n", __FUNCTION__); return -ENODEV; } if(!strncmp(hd, USB_RX_HD_NAME, ASC_NAME_LEN)){ wake = ASC_USER_USB_WAKE; sleep = ASC_USER_USB_SLEEP; }else if(!strncmp(hd, UART_RX_HD_NAME, ASC_NAME_LEN)){ wake = ASC_USER_UART_WAKE; sleep = ASC_USER_UART_SLEEP; }else if(!strncmp(hd, SDIO_RX_HD_NAME, ASC_NAME_LEN)){ wake = ASC_USER_SDIO_WAKE; sleep = ASC_USER_SDIO_SLEEP; }else{ return -ENODEV; } if(!atomic_read(&vmdata->count)){ return 0; } switch(msg){ case ASC_NTF_RX_PREPARE: modem_signal_user(wake); break; case ASC_NTF_RX_POST: modem_signal_user(sleep); break; default: printk("%s unknow message %d\n", __FUNCTION__, msg); } return ret; }
static int modem_reset_notify_misc(struct notifier_block *nb, unsigned long event, void *ptr) { int ret = 0; if(via_ignore_notifier) { printk("Warnning: via ignore notifer just return NOTIFY_OK.\n"); return NOTIFY_OK; } switch (event) { case MDM_EVT_NOTIFY_RESET_ON: modem_signal_user(ASC_USER_MDM_RESET_ON); break; case MDM_EVT_NOTIFY_RESET_OFF: modem_signal_user(ASC_USER_MDM_RESET_OFF); break; default: ; } return ret ? NOTIFY_DONE : NOTIFY_OK; }
static int modem_err_notify_misc(struct notifier_block *nb, unsigned long event, void *ptr) { printk("%s %d event=%d\n",__func__,__LINE__,event); switch (event) { case MDM_EVT_NOTIFY_HD_ERR: printk("%s %d ASC_USER_MDM_ERR\n",__func__,__LINE__); modem_signal_user(ASC_USER_MDM_ERR); break; case MDM_EVT_NOTIFY_HD_ENHANCE: printk("%s %d ASC_USER_MDM_ERR_ENHANCE\n",__func__,__LINE__); modem_signal_user(ASC_USER_MDM_ERR_ENHANCE); break; case MDM_EVT_NOTIFY_IPOH: printk("%s %d MDM_EVT_NOTIFY_IPOH\n",__func__,__LINE__); modem_signal_user(ASC_USER_MDM_IPOH); break; default: ; } return NOTIFY_OK; }