本文整理汇总了C++中smsm_get_state函数的典型用法代码示例。如果您正苦于以下问题:C++ smsm_get_state函数的具体用法?C++ smsm_get_state怎么用?C++ smsm_get_state使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了smsm_get_state函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: modem_fatal_fn
static void modem_fatal_fn(struct work_struct *work)
{
u32 modem_state;
u32 panic_smsm_states = SMSM_RESET | SMSM_SYSTEM_DOWNLOAD;
u32 reset_smsm_states = SMSM_SYSTEM_REBOOT_USR | SMSM_SYSTEM_PWRDWN_USR;
struct modem_data *drv;
drv = container_of(work, struct modem_data, fatal_work);
pr_err("Watchdog bite received from modem!\n");
modem_state = smsm_get_state(SMSM_MODEM_STATE);
pr_err("Modem SMSM state = 0x%x!\n", modem_state);
if (modem_state == 0 || modem_state & panic_smsm_states) {
subsystem_restart_dev(drv->subsys);
enable_irq(drv->irq);
} else if (modem_state & reset_smsm_states) {
pr_err("User-invoked system reset/powerdown.");
kernel_restart(NULL);
} else {
unsigned long timeout = msecs_to_jiffies(6000);
pr_err("Modem AHB locked up. Trying to free up modem!\n");
writel_relaxed(0x3, drv->cbase + MSS_MODEM_RESET);
/*
* If we are still alive (allowing for the 5 second
* delayed-panic-reboot), the modem is either still wedged or
* SMSM didn't come through. Force panic in that case.
*/
schedule_delayed_work(&drv->unlock_work, timeout);
}
}
开发者ID:miing,项目名称:lmkp_msm,代码行数:34,代码来源:pil-modem.c
示例2: modem_shutdown
static int modem_shutdown(const struct subsys_desc *subsys)
{
struct modem_data *drv;
drv = container_of(subsys, struct modem_data, subsys_desc);
/*
* If the modem didn't already crash, setting SMSM_RESET here will help
* flush caches etc. The ignore_smsm_ack flag is set to ignore the
* SMSM_RESET notification that is generated due to the modem settings
* its own SMSM_RESET bit in response to the apps setting the apps
* SMSM_RESET bit.
*/
if (!(smsm_get_state(SMSM_MODEM_STATE) & SMSM_RESET)) {
drv->ignore_smsm_ack = 1;
smsm_reset_modem(SMSM_RESET);
}
/* Disable the modem watchdog to allow clean modem bootup */
writel_relaxed(0x0, drv->wdog + 0x8);
/*
* The write above needs to go through before the modem is powered up
* again.
*/
mb();
/* Wait here to allow the modem to clean up caches, etc. */
msleep(20);
pil_shutdown(&drv->pil_desc);
disable_irq_nosync(drv->irq);
return 0;
}
开发者ID:miing,项目名称:lmkp_msm,代码行数:32,代码来源:pil-modem.c
示例3: modem_sw_fatal_fn
static void modem_sw_fatal_fn(struct work_struct *work)
{
uint32_t panic_smsm_states = SMSM_RESET | SMSM_SYSTEM_DOWNLOAD;
uint32_t reset_smsm_states = SMSM_SYSTEM_REBOOT_USR |
SMSM_SYSTEM_PWRDWN_USR;
uint32_t modem_state;
pr_err("Watchdog bite received from modem SW!\n");
modem_state = smsm_get_state(SMSM_MODEM_STATE);
if (modem_state & panic_smsm_states) {
pr_err("Modem SMSM state changed to SMSM_RESET.\n"
"Probable err_fatal on the modem. "
"Calling subsystem restart...\n");
subsystem_restart("modem");
} else if (modem_state & reset_smsm_states) {
pr_err("%s: User-invoked system reset/powerdown. "
"Resetting the SoC now.\n",
__func__);
kernel_restart(NULL);
} else {
/* TODO: Bus unlock code/sequence goes _here_ */
subsystem_restart("modem");
}
}
开发者ID:throwaway17,项目名称:inspirational,代码行数:29,代码来源:modem-8960.c
示例4: msm_irq_exit_sleep3
/*
* Restore interrupt subsystem from sleep -- phase 3.
* Print debug information.
*/
void msm_irq_exit_sleep3(uint32_t irq_mask, uint32_t wakeup_reason,
uint32_t pending_irqs)
{
if (msm_irq_debug_mask & IRQ_DEBUG_SLEEP)
DPRINT_REGS(VIC_IRQ_STATUS, "%s %x %x %x state %x now",
__func__, irq_mask, pending_irqs, wakeup_reason,
smsm_get_state(SMSM_MODEM_STATE));
}
开发者ID:yxsh,项目名称:ZTE-Blade-2.6.38.6,代码行数:12,代码来源:irq-vic.c
示例5: is_modem_smsm_inited
static uint32_t is_modem_smsm_inited(void)
{
uint32_t modem_state;
uint32_t ready_state = (SMSM_INIT | SMSM_SMDINIT);
modem_state = smsm_get_state(SMSM_MODEM_STATE);
return (modem_state & ready_state) == ready_state;
}
开发者ID:NooNameR,项目名称:QSD3.0,代码行数:8,代码来源:smd_tty.c
示例6: msm_gic_irq_exit_sleep3
/*
* Restore interrupt subsystem from sleep -- phase 3
* Print debug information
*/
void msm_gic_irq_exit_sleep3(uint32_t irq_mask, uint32_t wakeup_reason,
uint32_t pending_irqs)
{
if (msm_gic_irq_debug_mask & IRQ_DEBUG_SLEEP)
pr_info("%s, irq_mask %x pending_irqs %x, wakeup_reason %x,"
"state %x now\n", __func__, irq_mask,
pending_irqs, wakeup_reason,
smsm_get_state(SMSM_MODEM_STATE));
}
开发者ID:fell978,项目名称:android_kernel_huawai_Y300-J1,代码行数:13,代码来源:mpm-8625.c
示例7: msm_irq_exit_sleep3
/*
* Restore interrupt subsystem from sleep -- phase 3.
* Print debug information.
*/
void msm_irq_exit_sleep3(uint32_t irq_mask, uint32_t wakeup_reason,
uint32_t pending_irqs)
{
if (msm_irq_debug_mask & IRQ_DEBUG_SLEEP)
printk(KERN_INFO "%s %x %x %x now %x %x state %x\n",
__func__, irq_mask, pending_irqs, wakeup_reason,
readl(VIC_IRQ_STATUS0), readl(VIC_IRQ_STATUS1),
smsm_get_state(SMSM_MODEM_STATE));
}
开发者ID:drakaz,项目名称:GalaxoKernel,代码行数:13,代码来源:irq.c
示例8: msm_pm_modem_busy
static int msm_pm_modem_busy(void)
{
if (!(smsm_get_state(SMSM_POWER_MASTER_DEM) & DEM_MASTER_SMSM_READY)) {
MSM_PM_DPRINTK(MSM_PM_DEBUG_POWER_COLLAPSE,
KERN_INFO, "%s(): master not ready\n", __func__);
return -EBUSY;
}
return 0;
}
开发者ID:18712886438,项目名称:NewWorld-F160-JB-Kernel,代码行数:10,代码来源:pm2.c
示例9: modem_crash_shutdown
static void modem_crash_shutdown(const struct subsys_desc *subsys)
{
struct modem_data *drv;
/* If modem hasn't already crashed, send SMSM_RESET. */
drv = container_of(subsys, struct modem_data, subsys_desc);
if (!(smsm_get_state(SMSM_MODEM_STATE) & SMSM_RESET)) {
modem_unregister_notifier(&drv->notifier);
smsm_reset_modem(SMSM_RESET);
}
/* Wait to allow the modem to clean up caches etc. */
mdelay(5);
}
开发者ID:miing,项目名称:lmkp_msm,代码行数:14,代码来源:pil-modem.c
示例10: modem_crash_shutdown
static void modem_crash_shutdown(const struct subsys_desc *subsys)
{
struct modem_data *drv;
drv = container_of(subsys, struct modem_data, subsys_desc);
if (!(smsm_get_state(SMSM_MODEM_STATE) & SMSM_RESET)) {
modem_unregister_notifier(&drv->notifier);
smsm_reset_modem(SMSM_RESET);
}
mdelay(5);
}
开发者ID:Blackburn29,项目名称:PsycoKernel,代码行数:14,代码来源:pil-modem.c
示例11: msm_irq_exit_sleep3
void msm_irq_exit_sleep3(void)
{
if (!smsm_int_info) {
printk(KERN_ERR "msm_irq_exit_sleep <SM NO INT_INFO>\n");
return;
}
if (msm_irq_debug_mask & IRQ_DEBUG_SLEEP)
printk(KERN_INFO "msm_irq_exit_sleep3 %x %x %x now %x %x "
"state %x\n", smsm_int_info->interrupt_mask,
smsm_int_info->pending_interrupts,
smsm_int_info->wakeup_reason, readl(VIC_IRQ_STATUS0),
readl(VIC_IRQ_STATUS1),
smsm_get_state(SMSM_STATE_MODEM));
}
开发者ID:0-t,项目名称:samsung-kernel-msm7x30,代码行数:14,代码来源:irq.c
示例12: modem_shutdown
static int modem_shutdown(const struct subsys_data *subsys)
{
void __iomem *q6_fw_wdog_addr;
void __iomem *q6_sw_wdog_addr;
int smsm_notif_unregistered = 0;
if (!(smsm_get_state(SMSM_MODEM_STATE) & SMSM_RESET)) {
smsm_state_cb_deregister(SMSM_MODEM_STATE, SMSM_RESET,
smsm_state_cb, 0);
smsm_notif_unregistered = 1;
smsm_reset_modem(SMSM_RESET);
}
/*
* Cancel any pending wdog_check work items, since we're shutting
* down anyway.
*/
cancel_delayed_work(&modem_wdog_check_work);
/*
* Disable the modem watchdog since it keeps running even after the
* modem is shutdown.
*/
q6_fw_wdog_addr = ioremap_nocache(Q6_FW_WDOG_ENABLE, 4);
if (!q6_fw_wdog_addr)
return -ENOMEM;
q6_sw_wdog_addr = ioremap_nocache(Q6_SW_WDOG_ENABLE, 4);
if (!q6_sw_wdog_addr) {
iounmap(q6_fw_wdog_addr);
return -ENOMEM;
}
writel_relaxed(0x0, q6_fw_wdog_addr);
writel_relaxed(0x0, q6_sw_wdog_addr);
mb();
iounmap(q6_sw_wdog_addr);
iounmap(q6_fw_wdog_addr);
pil_force_shutdown("modem");
pil_force_shutdown("modem_fw");
disable_irq_nosync(Q6FW_WDOG_EXPIRED_IRQ);
disable_irq_nosync(Q6SW_WDOG_EXPIRED_IRQ);
if (smsm_notif_unregistered)
smsm_state_cb_register(SMSM_MODEM_STATE, SMSM_RESET,
smsm_state_cb, 0);
return 0;
}
开发者ID:DAGr8,项目名称:gp-peak-kernel,代码行数:50,代码来源:modem-8960.c
示例13: msm_irq_exit_sleep3
void msm_irq_exit_sleep3(void)
{
if (!smsm_int_info) {
printk(KERN_ERR "msm_irq_exit_sleep <SM NO INT_INFO>\n");
return;
}
if (msm_irq_debug_mask & IRQ_DEBUG_SLEEP) {
printk(KERN_INFO "%s %x %x %x state %x now", __func__,
smsm_int_info->interrupt_mask,
smsm_int_info->pending_interrupts,
smsm_int_info->wakeup_reason,
smsm_get_state(SMSM_STATE_MODEM));
print_vic_irq_stat();
}
}
开发者ID:Adjustxx,项目名称:Savaged-Zen,代码行数:15,代码来源:irq.c
示例14: modem_fatal_fn
static void modem_fatal_fn(struct work_struct *work)
{
uint32_t modem_state;
uint32_t panic_smsm_states = SMSM_RESET | SMSM_SYSTEM_DOWNLOAD;
uint32_t reset_smsm_states = SMSM_SYSTEM_REBOOT_USR |
SMSM_SYSTEM_PWRDWN_USR;
pr_err("%s: Watchdog bite received from modem!\n", MODULE_NAME);
modem_state = smsm_get_state(SMSM_MODEM_STATE);
pr_err("%s: Modem SMSM state = 0x%x!", MODULE_NAME, modem_state);
if (modem_state == 0 || modem_state & panic_smsm_states) {
subsystem_restart("modem");
enable_irq(MARM_WDOG_EXPIRED);
} else if (modem_state & reset_smsm_states) {
pr_err("%s: User-invoked system reset/powerdown.",
MODULE_NAME);
soc_restart(RESTART_MODE_MODEM_WATCHDOG_BITE, "MODEM DOG!");
} else {
int ret;
void *hwio_modem_reset_addr =
ioremap_nocache(MODEM_HWIO_MSS_RESET_ADDR, 8);
pr_err("%s: Modem AHB locked up.\n", MODULE_NAME);
pr_err("%s: Trying to free up modem!\n", MODULE_NAME);
/* We don't want it happens */
BUG_ON(!hwio_modem_reset_addr);
writel(0x3, hwio_modem_reset_addr);
/* If we are still alive after 6 seconds (allowing for
* the 5-second-delayed-panic-reboot), modem is either
* still wedged or SMSM didn't come through. Force panic
* in that case.
*/
ret = schedule_delayed_work(&modem_unlock_timeout_work,
msecs_to_jiffies(6000));
iounmap(hwio_modem_reset_addr);
}
}
开发者ID:84506232,项目名称:htc-rider-ics-kernel,代码行数:47,代码来源:subsystem-fatal-8x60.c
示例15: msm_pm_wait_state
static int
msm_pm_wait_state(uint32_t wait_all_set, uint32_t wait_all_clear,
uint32_t wait_any_set, uint32_t wait_any_clear)
{
int i;
uint32_t state;
for (i = 0; i < 100000; i++) {
state = smsm_get_state(PM_SMSM_READ_STATE);
if (((wait_all_set || wait_all_clear) &&
!(~state & wait_all_set) && !(state & wait_all_clear)) ||
(state & wait_any_set) || (~state & wait_any_clear))
return 0;
udelay(1);
}
pr_err("msm_pm_wait_state(%x, %x, %x, %x) failed %x\n", wait_all_set,
wait_all_clear, wait_any_set, wait_any_clear, state);
return -ETIMEDOUT;
}
开发者ID:WeiEast,项目名称:g2root-kmod,代码行数:19,代码来源:pm6.c
示例16: modem_fatal_fn
static void modem_fatal_fn(struct work_struct *work)
{
uint32_t modem_state;
uint32_t panic_smsm_states = SMSM_RESET | SMSM_SYSTEM_DOWNLOAD;
uint32_t reset_smsm_states = SMSM_SYSTEM_REBOOT_USR |
SMSM_SYSTEM_PWRDWN_USR;
pr_err("%s: Watchdog bite received from modem!\n", MODULE_NAME);
modem_state = smsm_get_state(SMSM_MODEM_STATE);
pr_err("%s: Modem SMSM state = 0x%x!", MODULE_NAME, modem_state);
if (modem_state == 0 || modem_state & panic_smsm_states) {
subsystem_restart("modem");
} else if (modem_state & reset_smsm_states) {
pr_err("%s: User-invoked system reset/powerdown.",
MODULE_NAME);
do_soc_restart();
} else {
int ret;
pr_err("%s: Modem AHB locked up.\n", MODULE_NAME);
pr_err("%s: Trying to free up modem!\n", MODULE_NAME);
if ( hwio_modem_reset_addr )
writel(0x3, hwio_modem_reset_addr);
/* If we are still alive after 6 seconds (allowing for
* the 5-second-delayed-panic-reboot), modem is either
* still wedged or SMSM didn't come through. Force panic
* in that case.
*/
ret = schedule_delayed_work(&modem_unlock_timeout_work,
msecs_to_jiffies(6000));
iounmap(hwio_modem_reset_addr);
}
}
开发者ID:glitschi,项目名称:kernel_P7320,代码行数:43,代码来源:subsystem-fatal-8x60.c
示例17: modem_shutdown
static int modem_shutdown(const struct subsys_desc *subsys)
{
struct modem_data *drv;
drv = container_of(subsys, struct modem_data, subsys_desc);
if (!(smsm_get_state(SMSM_MODEM_STATE) & SMSM_RESET)) {
drv->ignore_smsm_ack = 1;
smsm_reset_modem(SMSM_RESET);
}
writel_relaxed(0x0, drv->wdog + 0x8);
mb();
msleep(20);
pil_shutdown(&drv->pil_desc);
disable_irq_nosync(drv->irq);
return 0;
}
开发者ID:Blackburn29,项目名称:PsycoKernel,代码行数:21,代码来源:pil-modem.c
示例18: dsps_restart_handler
/**
* Fatal error handler
* Resets DSPS.
*/
static void dsps_restart_handler(struct work_struct *work)
{
uint32_t dsps_state;
int restart_level;
char *smem_reset_reason;
unsigned smem_reset_size;
const char dflt_reason[] = "Died too early due to unknown reason";
dsps_state = smsm_get_state(SMSM_DSPS_STATE);
restart_level = get_restart_level();
pr_debug("%s: DSPS state 0x%x. Restart lvl %d\n",
__func__, dsps_state, restart_level);
if ((dsps_state & SMSM_RESET) ||
(atomic_read(&drv->wd_crash) == 1)) {
smem_reset_reason = smem_get_entry(SMEM_SSR_REASON_DSPS0,
&smem_reset_size);
if (smem_reset_reason != NULL && smem_reset_reason[0] != 0) {
smem_reset_reason[smem_reset_size-1] = 0;
pr_err("%s: DSPS failure: %s\nResetting DSPS\n",
__func__, smem_reset_reason);
memset(smem_reset_reason, 0, smem_reset_size);
wmb();
} else
pr_err("%s: DSPS failure: %s\nResetting DSPS\n",
__func__, dflt_reason);
} else
pr_err("%s: User-initiated DSPS reset.\nResetting DSPS\n",
__func__);
if (atomic_add_return(1, &drv->crash_in_progress) > 1) {
pr_err("%s: DSPS already resetting. Count %d\n", __func__,
atomic_read(&drv->crash_in_progress));
} else {
subsystem_restart("dsps");
}
}
开发者ID:DAGr8,项目名称:gp-peak-kernel,代码行数:42,代码来源:msm_dsps.c
示例19: modem_sw_fatal_fn
static void modem_sw_fatal_fn(struct work_struct *work)
{
uint32_t panic_smsm_states = SMSM_RESET | SMSM_SYSTEM_DOWNLOAD;
uint32_t reset_smsm_states = SMSM_SYSTEM_REBOOT_USR |
SMSM_SYSTEM_PWRDWN_USR;
uint32_t modem_state;
pr_err("Watchdog bite received from modem SW!\n");
modem_state = smsm_get_state(SMSM_MODEM_STATE);
if (modem_state & panic_smsm_states) {
pr_err("Modem SMSM state changed to SMSM_RESET.\n"
"Probable err_fatal on the modem. "
"Calling subsystem restart...\n");
#ifdef FEATURE_PANTECH_WLAN_QCOM_PATCH //lee.eunsuk 20120423, SSR
panic(MODULE_NAME "Modem crashed.");
#else
subsystem_restart("modem");
#endif
} else if (modem_state & reset_smsm_states) {
pr_err("%s: User-invoked system reset/powerdown. "
"Resetting the SoC now.\n",
__func__);
kernel_restart(NULL);
} else {
/* TODO: Bus unlock code/sequence goes _here_ */
#ifdef FEATURE_PANTECH_WLAN_QCOM_PATCH //lee.eunsuk 20120423, SSR
panic(MODULE_NAME "Modem crashed.");
#else
subsystem_restart("modem");
#endif
}
}
开发者ID:NieNs,项目名称:IM-A840S-kernel-1,代码行数:37,代码来源:modem-8960.c
示例20: MSM_PM_DPRINTK
/*
* Power collapse the Apps processor. This function executes the handshake
* protocol with Modem.
*
* Return value:
* -EAGAIN: modem reset occurred or early exit from power collapse
* -EBUSY: modem not ready for our power collapse -- no power loss
* -ETIMEDOUT: timed out waiting for modem's handshake -- no power loss
* 0: success
*/
static int msm_pm_power_collapse
(bool from_idle, uint32_t sleep_delay, uint32_t sleep_limit)
{
struct msm_pm_polled_group state_grps[2];
unsigned long saved_acpuclk_rate;
int collapsed = 0;
int ret;
int val;
int modem_early_exit = 0;
MSM_PM_DPRINTK(MSM_PM_DEBUG_SUSPEND|MSM_PM_DEBUG_POWER_COLLAPSE,
KERN_INFO, "%s(): idle %d, delay %u, limit %u\n", __func__,
(int)from_idle, sleep_delay, sleep_limit);
if (!(smsm_get_state(SMSM_POWER_MASTER_DEM) & DEM_MASTER_SMSM_READY)) {
MSM_PM_DPRINTK(
MSM_PM_DEBUG_SUSPEND | MSM_PM_DEBUG_POWER_COLLAPSE,
KERN_INFO, "%s(): master not ready\n", __func__);
ret = -EBUSY;
goto power_collapse_bail;
}
memset(msm_pm_smem_data, 0, sizeof(*msm_pm_smem_data));
if (cpu_is_msm8625()) {
/* Program the SPM */
ret = msm_spm_set_low_power_mode(MSM_SPM_MODE_POWER_COLLAPSE,
false);
WARN_ON(ret);
}
/* Call CPR suspend only for "idlePC" case */
if (msm_cpr_ops && from_idle)
msm_cpr_ops->cpr_suspend();
msm_pm_irq_extns->enter_sleep1(true, from_idle,
&msm_pm_smem_data->irq_mask);
msm_sirc_enter_sleep();
msm_gpio_enter_sleep(from_idle);
msm_pm_smem_data->sleep_time = sleep_delay;
msm_pm_smem_data->resources_used = sleep_limit;
/* Enter PWRC/PWRC_SUSPEND */
if (from_idle)
smsm_change_state(SMSM_APPS_DEM, DEM_SLAVE_SMSM_RUN,
DEM_SLAVE_SMSM_PWRC);
else
smsm_change_state(SMSM_APPS_DEM, DEM_SLAVE_SMSM_RUN,
DEM_SLAVE_SMSM_PWRC | DEM_SLAVE_SMSM_PWRC_SUSPEND);
MSM_PM_DEBUG_PRINT_STATE("msm_pm_power_collapse(): PWRC");
MSM_PM_DEBUG_PRINT_SLEEP_INFO();
memset(state_grps, 0, sizeof(state_grps));
state_grps[0].group_id = SMSM_POWER_MASTER_DEM;
state_grps[0].bits_all_set = DEM_MASTER_SMSM_RSA;
state_grps[1].group_id = SMSM_MODEM_STATE;
state_grps[1].bits_all_set = SMSM_RESET;
ret = msm_pm_poll_state(ARRAY_SIZE(state_grps), state_grps);
if (ret < 0) {
printk(KERN_EMERG "%s(): power collapse entry "
"timed out waiting for Modem's response\n", __func__);
msm_pm_timeout();
}
if (ret == 1) {
MSM_PM_DPRINTK(
MSM_PM_DEBUG_SUSPEND|MSM_PM_DEBUG_POWER_COLLAPSE,
KERN_INFO,
"%s(): msm_pm_poll_state detected Modem reset\n",
__func__);
goto power_collapse_early_exit;
}
/* DEM Master in RSA */
MSM_PM_DEBUG_PRINT_STATE("msm_pm_power_collapse(): PWRC RSA");
ret = msm_pm_irq_extns->enter_sleep2(true, from_idle);
if (ret < 0) {
MSM_PM_DPRINTK(
MSM_PM_DEBUG_SUSPEND|MSM_PM_DEBUG_POWER_COLLAPSE,
KERN_INFO,
"%s(): msm_irq_enter_sleep2 aborted, %d\n", __func__,
ret);
goto power_collapse_early_exit;
//.........这里部分代码省略.........
开发者ID:18712886438,项目名称:NewWorld-F160-JB-Kernel,代码行数:101,代码来源:pm2.c
注:本文中的smsm_get_state函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论