Exemple #1
0
static void __axp_irq_work(struct work_struct *work)
{
	u32 i;
	u8 addr[5];
	u8 data[5];
	
	printk("axp irq work running...\n");
	
	//read out irq status and dump irq status
	printk("read axp irq status\n");
	for (i = 0; i < 5; i++) {
		addr[i] = 0x48 + i;
	}
	ar100_axp_read_reg(addr, data, 5);
	printk("axp irq status information:\n");
	for (i = 0; i < 5; i++) {
		printk("addr:0x%x, data:0x%x\n", addr[i], data[i]);
	}
	
	printk("clear axp status\n");
	ar100_axp_write_reg(addr, data, 5);
	
	printk("re-enable axp irq of ar100\n");
	ar100_enable_axp_irq();
	
	printk("axp irq handle end\n");
}
Exemple #2
0
//voltage(7~33): 0.1v,   e.g. 1 voltage = 0.1v
__s32 LCD_POWER_DLDO1_EN(__u32 sel, __bool b_en, __u32 voltage)
{
#if 0
    __u8 data;
    __u32 ret;
    __u8 addr;

    voltage = (voltage < 7)? 7 :voltage;
    voltage = (voltage > 33)?33:voltage;
    data = voltage - 7;
    addr = 0x15;
    ret = ar100_axp_write_reg(&addr, &data, 1);
    if(ret != 0)
    {
        DE_WRN("set dldo1 to %d.%dv fail\n", voltage/10, voltage%10);
    }
    addr = 0x12;
    ret = ar100_axp_read_reg(&addr, &data, 1);
    if(ret != 0)
    {
        DE_WRN("axp read reg fail\n");
    }
    addr = 0x12;
    data = (b_en)? (data | 0x08):(data & 0xf7);
    ar100_axp_write_reg(&addr, &data, 1);
    if(ret != 0)
    {
        DE_WRN("%s dldo1 fail\n", (b_en)? "enable":"disable");
    }
#endif
    return 0;
}
Exemple #3
0
__s32 LCD_POWER_EN(__u32 sel, __bool b_en)
{
#if 0
    disp_gpio_set_t  gpio_info[1];
    __hdle hdl;

	if(b_en)
	{
		if(gdisp.screen[sel].lcd_cfg.lcd_power_used)
        {
            if(gpanel_info[sel].lcd_if == LCD_IF_EXT_DSI)
	        {
	            LCD_POWER_ELDO3_EN(sel, 1, 12);
	            msleep(10);
	        }

            memcpy(gpio_info, &(gdisp.screen[sel].lcd_cfg.lcd_power), sizeof(disp_gpio_set_t));
		        
	        if(!b_en)
	        {
	            gpio_info->data = (gpio_info->data==0)?1:0;
	        }

	        hdl = OSAL_GPIO_Request(gpio_info, 1);
	        OSAL_GPIO_Release(hdl, 2);
	        udelay(200);
	        
	        if((gpanel_info[sel].lcd_if == LCD_IF_EDP) && (gpanel_info[sel].lcd_edp_tx_ic == 0))
	        {
				__u8 data;
				__u32 ret;
				__u8 addr;
				
				addr = 0x1b;
				data = 0x0b;
				ret = ar100_axp_write_reg(&addr, &data, 1); //set eldo3 to 1.8v
				if(ret != 0)
				{
					DE_WRN("set eldo3 to 1.8v fail\n");	
				}
				addr = 0x12;
				ret = ar100_axp_read_reg(&addr, &data, 1);
				if(ret != 0)
				{
					DE_WRN("axp read reg fail\n");	
				}
				addr = 0x12;
				data |= 0x04;
				ar100_axp_write_reg(&addr, &data, 1); //enable eldo3
				if(ret != 0)
				{
					DE_WRN("enable eldo3 fail\n");	
				}
	        }
            else if((gpanel_info[sel].lcd_if == LCD_IF_EDP) && (gpanel_info[sel].lcd_edp_tx_ic == 1))
	        {
				__u8 data;
				__u32 ret;
				__u8 addr;

				addr = 0x15;
				data = 0x12;
				ret = ar100_axp_write_reg(&addr, &data, 1); //set dldo1 to 2.5v
				if(ret != 0)
				{
					DE_WRN("set dldo1 to 2.5v fail\n");
				}
				addr = 0x12;
				ret = ar100_axp_read_reg(&addr, &data, 1);
				if(ret != 0)
				{
					DE_WRN("axp read reg fail\n");
				}
				addr = 0x12;
				data |= 0x08;
				ar100_axp_write_reg(&addr, &data, 1); //enable dldo1
				if(ret != 0)
				{
					DE_WRN("enable dldo1 fail\n");
				}

                addr = 0x1b;
				data = 0x05;
				ret = ar100_axp_write_reg(&addr, &data, 1); //set eldo3 to 1.2v
				if(ret != 0)
				{
					DE_WRN("set eldo3 to 1.2v fail\n");
				}
				addr = 0x12;
				ret = ar100_axp_read_reg(&addr, &data, 1);
				if(ret != 0)
				{
					DE_WRN("axp read reg fail\n");
				}
				addr = 0x12;
				data |= 0x04;
				ar100_axp_write_reg(&addr, &data, 1); //enable eldo3
				if(ret != 0)
				{
					DE_WRN("enable eldo3 fail\n");
				}
	        }
            msleep(50);
        }
        Disp_lcdc_pin_cfg(sel, DISP_OUTPUT_TYPE_LCD, 1);
        msleep(2);
	}
	else
	{
		Disp_lcdc_pin_cfg(sel, DISP_OUTPUT_TYPE_LCD, 0);
        msleep(2);
        if(gdisp.screen[sel].lcd_cfg.lcd_power_used)
        {
            if((gpanel_info[sel].lcd_if == LCD_IF_EDP) && (gpanel_info[sel].lcd_edp_tx_ic == 0))
            {
    			__u8 data;
    			__u32 ret;
    			__u8 addr;
    		
    			addr = 0x12;
    			ret = ar100_axp_read_reg(&addr, &data, 1);
    			if(ret != 0)
    			{
                    DE_WRN("axp read reg fail\n");
    			}
    			data &= 0xfb;
    			ar100_axp_write_reg(&addr, &data, 1); //enable eldo3
    			if(ret != 0)
    			{
                    DE_WRN("disable eldo3 fail\n");
    			}
           }
           else if((gpanel_info[sel].lcd_if == LCD_IF_EDP) && (gpanel_info[sel].lcd_edp_tx_ic == 1))
           {
                __u8 data;
                __u32 ret;
                __u8 addr;

                addr = 0x12;
                ret = ar100_axp_read_reg(&addr, &data, 1);
                if(ret != 0)
                {
                    DE_WRN("axp read reg fail\n");
                }
                data &= 0xfb;
                ar100_axp_write_reg(&addr, &data, 1); //disable eldo3
                if(ret != 0)
                {
                    DE_WRN("disable eldo3 fail\n");
                }

                addr = 0x12;
                ret = ar100_axp_read_reg(&addr, &data, 1);
                if(ret != 0)
                {
                    DE_WRN("axp read reg fail\n");
                }
                data &= 0xf7;
                ar100_axp_write_reg(&addr, &data, 1); //disable dldo1
                if(ret != 0)
                {
                    DE_WRN("disable dldo1 fail\n");
                }
           }

    		udelay(200);
    		memcpy(gpio_info, &(gdisp.screen[sel].lcd_cfg.lcd_power), sizeof(disp_gpio_set_t));
            
            if(!b_en)
            {
                gpio_info->data = (gpio_info->data==0)?1:0;
            }
            hdl = OSAL_GPIO_Request(gpio_info, 1);
            OSAL_GPIO_Release(hdl, 2);

            if(gpanel_info[sel].lcd_if == LCD_IF_EXT_DSI)
	        {
	            LCD_POWER_ELDO3_EN(sel, 0, 7);
	        }
        }
	}
#endif
    return 0;
}
Exemple #4
0
static void __ar100_axp_test(void)
{
	unsigned char addr_table[AXP_TRANS_BYTE_MAX];
	unsigned char data_table[AXP_TRANS_BYTE_MAX];
	unsigned int  len;
	int           ret;
	int           i;
	u32 total_time;
	u32 begin_time;
	
	/* test write regs */
	printk("test axp write regs begin...\n");
	len = AXP_TRANS_BYTE_MAX;
	for (i = 0; i < AXP_TRANS_BYTE_MAX; i++) {
		addr_table[i] = 0xc0 + i;
		data_table[i] = 0x20;
	}
	for (len = 1; len <= AXP_TRANS_BYTE_MAX; len++) {
		printk("write axp regs data:\n");
		for (i = 0; i < len; i++) {
			printk("addr%x : %x\n", (unsigned int)addr_table[i], 
									(unsigned int)data_table[i]);
		}
		begin_time = __ar100_counter_read();
		ret = ar100_axp_write_reg(addr_table, data_table, len);
		total_time = (__ar100_counter_read() - begin_time);
		if (ret) {
			printk("test axp write failed, len = %d, ret = %d\n", len, ret);
		}
		printk("write axp regs data [len = %d] succeeded\n", len);
		printk("write axp regs time: %dus\n", total_time);
	}
	printk("test axp write regs succeeded\n");
	
	/* test read regs */
	printk("test axp read regs begin...\n");
	len = AXP_TRANS_BYTE_MAX;
	for (i = 0; i < AXP_TRANS_BYTE_MAX; i++) {
		addr_table[i] = 0xc0 + i;
	}
	for (len = 1; len <= AXP_TRANS_BYTE_MAX; len++) {
		begin_time = __ar100_counter_read();
		ret = ar100_axp_read_reg(addr_table, data_table, len);
		total_time = (__ar100_counter_read() - begin_time);
		if (ret) {
			printk("test axp read failed, len = %d, ret = %d\n", len, ret);
		}
		printk("read axp regs data:\n");
		for (i = 0; i < len; i++) {
			printk("addr%x : %x\n", (unsigned int)addr_table[i], 
									(unsigned int)data_table[i]);
		}
		printk("read axp regs data [len = %d] succeeded\n", len);
		printk("read axp regs time: %dus\n", total_time);
	}
	printk("test axp read regs succeeded\n");
	
	/* test axp interrupt call-back */
	printk("test axp call-back begin...\n");
	INIT_WORK(&axp_work, __axp_irq_work);
	if(ar100_axp_cb_register(__ar100_axp_cb, NULL)) {
		printk("test axp reg cb failed\n");
	}
	printk("test axp call-back succeeded\n");
	
	printk("axp test succeeded\n");
}