void spm_sodi_init(void) { #if SPM_USE_TWAM_DEBUG unsigned long flags; struct twam_sig twamsig = { .sig0 = 10, /* disp_req */ .sig1 = 23, /* self-refresh */ .sig2 = 25, /* md2_srcclkena */ .sig3 = 21, /* md2_apsrc_req_mux */ }; #endif #if SPM_AEE_RR_REC spm_sodi_aee_init(); #endif #if SPM_USE_TWAM_DEBUG #if 0 spin_lock_irqsave(&__spm_lock, flags); spm_write(SPM_AP_STANBY_CON, spm_read(SPM_AP_STANBY_CON) | ASC_MD_DDR_EN_SEL); spin_unlock_irqrestore(&__spm_lock, flags); #endif spm_twam_register_handler(twam_handler); spm_twam_enable_monitor(&twamsig, false,SPM_TWAM_MONITOR_TICK); #endif } MODULE_DESCRIPTION("SPM-SODI Driver v0.1");
static inline void reset_driver_stat(void) { spm_twam_register_handler(0); met_spmtwam.mode = 0; used_count = 0; start = 0; }
static int spm_talking_late_init(void) { unsigned long flags; struct twam_sig twamsig = { .sig0 = 28, /* md1_apsrc_req or md_ddr_en */ .sig1 = 26, /* md32_apsrc_req */ }; spin_lock_irqsave(&__spm_lock, flags); spm_write(SPM_AP_STANBY_CON, spm_read(SPM_AP_STANBY_CON) | ASC_MD_DDR_EN_SEL); spin_unlock_irqrestore(&__spm_lock, flags); spm_twam_register_handler(twam_handler); spm_twam_enable_monitor(&twamsig, true); return 0; } late_initcall(spm_talking_late_init); #endif void spm_talking_init(void) { if (mt_get_chip_sw_ver() == CHIP_SW_VER_01 && SPM_CTRL_BIG_CPU) __spm_talking.pcmdesc = &talking_pcm_big; } MODULE_DESCRIPTION("SPM-Talking Driver v1.0");
void spm_sodi_init(void) { #if SPM_USE_TWAM_DEBUG unsigned long flags; struct twam_sig twamsig = { .sig0 = 10, /* disp_req */ .sig1 = 23, /* self-refresh */ .sig2 = 25, /* md2_srcclkena */ .sig3 = 21, /* md2_apsrc_req_mux */ }; #endif #if defined (CONFIG_OF) struct device_node *node; struct resource r; /* mcucfg */ node = of_find_compatible_node(NULL, NULL, MCUCFG_NODE); if (!node) { spm_err("error: cannot find node " MCUCFG_NODE); BUG(); } if (of_address_to_resource(node, 0, &r)) { spm_err("error: cannot get phys addr" MCUCFG_NODE); BUG(); } mcucfg_phys_base = r.start; mcucfg_base = (unsigned long)of_iomap(node, 0); if(!mcucfg_base) { spm_err("error: cannot iomap " MCUCFG_NODE); BUG(); } printk("mcucfg_base = 0x%u\n", (unsigned int)mcucfg_base); #endif #if SPM_AEE_RR_REC spm_sodi_aee_init(); #endif #if SPM_USE_TWAM_DEBUG #if 0 spin_lock_irqsave(&__spm_lock, flags); spm_write(SPM_AP_STANBY_CON, spm_read(SPM_AP_STANBY_CON) | ASC_MD_DDR_EN_SEL); spin_unlock_irqrestore(&__spm_lock, flags); #endif spm_twam_register_handler(twam_handler); spm_twam_enable_monitor(&twamsig, false,SPM_TWAM_MONITOR_TICK); #endif } MODULE_DESCRIPTION("SPM-SODI Driver v0.1");
void spm_deepidle_init(void) { #if SPM_USE_TWAM_DEBUG unsigned long flags; struct twam_sig twamsig = { .sig0 = 26, /* md1_srcclkena */ .sig1 = 22, /* md_apsrc_req_mux */ .sig2 = 25, /* md2_srcclkena */ .sig3 = 21, /* md2_apsrc_req_mux */ //.sig2 = 23, /* conn_srcclkena */ //.sig3 = 20, /* conn_apsrc_req */ }; #if 0 spin_lock_irqsave(&__spm_lock, flags); spm_write(SPM_AP_STANBY_CON, spm_read(SPM_AP_STANBY_CON) | ASC_MD_DDR_EN_SEL); spin_unlock_irqrestore(&__spm_lock, flags); #endif spm_twam_register_handler(twam_handler); spm_twam_enable_monitor(&twamsig, false,SPM_TWAM_MONITOR_TICK); #endif } MODULE_DESCRIPTION("SPM-DPIdle Driver v0.1");
static void spmtwam_delete_subfs(void) { spm_twam_register_handler(0); }
static int spmtwam_create_subfs(struct kobject *parent) { spm_twam_register_handler(spmtwam); return 0; }