int determine_lpm(void) { if (exynos_check_aud_pwr() != AUD_PWR_LPA) return SYS_AFTR; if (check_hw_status(lpm_regs, lpm_reg_num)) { lpa_blocking_counter(1); return SYS_AFTR; } if (exynos_lpa_prepare()) { lpa_blocking_counter(0); return SYS_AFTR; } #if defined(CONFIG_GPS_BCMxxxxx) if (check_gps_op()) return SYS_AFTR; #endif if (check_cp_status()) { lpa_blocking_counter(2); return SYS_AFTR; } return SYS_LPA; }
bool is_lpc_available(unsigned int target_residency) { if (!lpc_enabled) return false; if (is_busy(target_residency, cpu_online_mask)) return false; if (check_hw_status(lpc_regs, lpc_reg_num)) return false; if (exynos_lpc_prepare()) return false; if (pwm_check_enable_cnt()) return false; #if defined(CONFIG_GPS_BCMxxxxx) if (check_gps_op()) return false; #endif if (check_cp_status()) return false; return true; }
static long spi_boot_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) { int ret = 0; struct modem_firmware img; struct modem_boot_spi *loader = filp->private_data; mutex_lock(&loader->lock); switch (cmd) { case IOCTL_MODEM_XMIT_BOOT: ret = copy_from_user(&img, (const void __user *)arg, sizeof(struct modem_firmware)); if (ret) { mif_err("ERR! copy_from_user fail (err %d)\n", ret); ret = -EFAULT; goto exit_err; } mif_info("IOCTL_MODEM_XMIT_BOOT (size %d)\n", img.size); ret = spi_boot_write(loader, img.binary, img.size); if (ret < 0) { mif_err("ERR! spi_boot_write fail (err %d)\n", ret); break; } if (!loader->gpio_cp_status) break; ret = check_cp_status(loader->gpio_cp_status, 100); if (ret < 0) { mif_err("ERR! check_cp_status fail (err %d)\n", ret); c2c_reload(); } break; default: mif_err("ioctl cmd error\n"); ret = -ENOIOCTLCMD; break; } mutex_unlock(&loader->lock); exit_err: return ret; }