/* kernel/power/userscenelock.c * * Copyright (C) 2013-2014 allwinner. * * By : yanggq * Version : v1.0 * Date : 2014-7-27 09:08 */ #include #include #include "linux/power/aw_pm.h" #include #include "pm.h" unsigned int parse_bitmap_en = 0x0; unsigned int show_gpio_config(char *s, unsigned int size) { char *start = s; char *end = NULL; if(NULL == s || 0 == size){ //buffer is empty s = NULL; }else{ end = s + size; } uk_printf(s, end - s, "\t SUNXI_BANK_SIZE bit 0x%x \n", SUNXI_BANK_SIZE); uk_printf(s, end - s, "\t SUNXI_PA_BASE bit 0x%x \n", SUNXI_PA_BASE ); uk_printf(s, end - s, "\t SUNXI_PB_BASE bit 0x%x \n", SUNXI_PB_BASE ); uk_printf(s, end - s, "\t SUNXI_PC_BASE bit 0x%x \n", SUNXI_PC_BASE ); uk_printf(s, end - s, "\t SUNXI_PD_BASE bit 0x%x \n", SUNXI_PD_BASE ); uk_printf(s, end - s, "\t SUNXI_PE_BASE bit 0x%x \n", SUNXI_PE_BASE ); uk_printf(s, end - s, "\t SUNXI_PF_BASE bit 0x%x \n", SUNXI_PF_BASE ); uk_printf(s, end - s, "\t SUNXI_PG_BASE bit 0x%x \n", SUNXI_PG_BASE ); uk_printf(s, end - s, "\t SUNXI_PH_BASE bit 0x%x \n", SUNXI_PH_BASE ); uk_printf(s, end - s, "\t SUNXI_PI_BASE bit 0x%x \n", SUNXI_PI_BASE ); uk_printf(s, end - s, "\t SUNXI_PJ_BASE bit 0x%x \n", SUNXI_PJ_BASE ); uk_printf(s, end - s, "\t SUNXI_PK_BASE bit 0x%x \n", SUNXI_PK_BASE ); uk_printf(s, end - s, "\t SUNXI_PL_BASE bit 0x%x \n", SUNXI_PL_BASE ); uk_printf(s, end - s, "\t SUNXI_PM_BASE bit 0x%x \n", SUNXI_PM_BASE ); uk_printf(s, end - s, "\t SUNXI_PN_BASE bit 0x%x \n", SUNXI_PN_BASE ); uk_printf(s, end - s, "\t SUNXI_PO_BASE bit 0x%x \n", SUNXI_PO_BASE ); uk_printf(s, end - s, "\t AXP_PIN_BASE bit 0x%x \n", AXP_PIN_BASE ); return (s - start); } static unsigned int parse_bitmap(char *s, unsigned int size, unsigned int bitmap) { char *start = s; char *end = NULL; if(NULL == s || 0 == size){ //buffer is empty if(!(parse_bitmap_en & DEBUG_WAKEUP_GPIO_MAP)) return 0; s = NULL; }else{ end = s + size; } switch(bitmap){ case 1<<0 : uk_printf(s, end - s, "\t\tport 0. \n"); break; case 1<<1 : uk_printf(s, end - s, "\t\tport 1. \n"); break; case 1<<2 : uk_printf(s, end - s, "\t\tport 2. \n"); break; case 1<<3 : uk_printf(s, end - s, "\t\tport 3. \n"); break; case 1<<4 : uk_printf(s, end - s, "\t\tport 4. \n"); break; case 1<<5 : uk_printf(s, end - s, "\t\tport 5. \n"); break; case 1<<6 : uk_printf(s, end - s, "\t\tport 6. \n"); break; case 1<<7 : uk_printf(s, end - s, "\t\tport 7. \n"); break; case 1<<8 : uk_printf(s, end - s, "\t\tport 8. \n"); break; case 1<<9 : uk_printf(s, end - s, "\t\tport 9. \n"); break; case 1<<10 : uk_printf(s, end - s, "\t\tport 10. \n"); break; case 1<<11 : uk_printf(s, end - s, "\t\tport 11. \n"); break; default: break; } return (s - start); } static unsigned int parse_group_bitmap(char *s, unsigned int size, unsigned int group_bitmap) { char *start = s; char *end = NULL; if(NULL == s || 0 == size){ //buffer is empty if(!(parse_bitmap_en & DEBUG_WAKEUP_GPIO_GROUP_MAP)) return 0; s = NULL; }else{ end = s + size; } switch(group_bitmap){ case 1<<0 : uk_printf(s, end - s, "\t\tgroup 'A'. \n"); break; case 1<<1 : uk_printf(s, end - s, "\t\tgroup 'B'. \n"); break; case 1<<2 : uk_printf(s, end - s, "\t\tgroup 'C'. \n"); break; case 1<<3 : uk_printf(s, end - s, "\t\tgroup 'D'. \n"); break; case 1<<4 : uk_printf(s, end - s, "\t\tgroup 'E'. \n"); break; case 1<<5 : uk_printf(s, end - s, "\t\tgroup 'F'. \n"); break; case 1<<6 : uk_printf(s, end - s, "\t\tgroup 'G'. \n"); break; case 1<<7 : uk_printf(s, end - s, "\t\tgroup 'H'. \n"); break; case 1<<8 : uk_printf(s, end - s, "\t\tgroup 'I'. \n"); break; case 1<<9 : uk_printf(s, end - s, "\t\tgroup 'J'. \n"); break; case 1<<10 : uk_printf(s, end - s, "\t\tgroup 'K'. \n"); break; case 1<<11 : uk_printf(s, end - s, "\t\tgroup 'L'. \n"); break; default: break; } return (s - start); } unsigned int parse_wakeup_event(char *s, unsigned int size, unsigned int event, event_cpu_id_e cpu_id) { int i = 0; int count = 0; int counted = 0; unsigned int bit_event = 0; char *start = s; char *end = NULL; if(NULL == s || 0 == size){ //buffer is empty if(!(parse_bitmap_en & DEBUG_WAKEUP_SRC)){ return 0; } s = NULL; }else{ end = s + size; } uk_printf(s, end - s, "WAKEUP_SRC is as follow: \n"); //for cpus parse. if(CPUS_ID == cpu_id){ for(i=0; i<32; i++){ bit_event = (1<>(GPIO_PL_MAX_NUM + 1)); }else if(bit_event <= WAKEUP_GPIO_AXP(GPIO_AXP_MAX_NUM)){ uk_printf(s, end - s, "\tWAKEUP_GPIO_AXP "); s += parse_bitmap(s, end - s, bit_event>>(GPIO_PL_MAX_NUM + 1 + GPIO_PM_MAX_NUM + 1)); }else { uk_printf(s, end - s, "parse err.\n"); } } } return (s - start); } unsigned int parse_wakeup_gpio_group_map(char *s, unsigned int size, unsigned int group_map) { int i = 0; unsigned int bit_event = 0; char *start = s; char *end = NULL; if(NULL == s || 0 == size){ //buffer is empty if(!(parse_bitmap_en & DEBUG_WAKEUP_GPIO_GROUP_MAP)) return 0; s = NULL; }else{ end = s + size; } uk_printf(s, end - s, "WAKEUP_GPIO,for cpux:pa,pb,pc,pd,.., is as follow: \n"); for(i=0; i<32; i++){ bit_event = (1<