/* * linux/include/asm-mips/mach-jz4750/board-apus.h * * JZ4750-based APUS board ver 1.x definition. * * Copyright (C) 2008 Ingenic Semiconductor Inc. * * Author: * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ #ifndef __ASM_JZ4750_APUS_H__ #define __ASM_JZ4750_APUS_H__ /*====================================================================== * Frequencies of on-board oscillators */ #define JZ_EXTAL 24000000 /* Main extal freq: 24 MHz */ #define JZ_EXTAL2 32768 /* RTC extal freq: 32.768 KHz */ /*====================================================================== * GPIO */ #define GPIO_DISP_OFF_N (32*4+25) /* GPE25 */ #define GPIO_SD0_VCC_EN_N (32*2+10) /* GPC10 */ #define GPIO_SD0_CD_N (32*2+11) /* GPC11 */ #define GPIO_SD0_WP (32*2+12) /* GPC12 */ #define GPIO_SD1_VCC_EN_N (32*2+13) /* GPC13 */ #define GPIO_SD1_CD_N (32*2+14) /* GPC14 */ #define GPIO_USB_DETE (32*2+15) /* GPC15 */ #define GPIO_DC_DETE_N (32*2+8) /* GPC8 */ #define GPIO_CHARG_STAT_N (32*2+9) /* GPC9 */ #define GPIO_LCD_VCC_EN_N (32*3+30) /* GPC10 */ #define GPIO_LCD_PWM (32*4+24) /* GPE24 */ #define GPIO_UDC_HOTPLUG GPIO_USB_DETE #define GPIO_NET_INT (32*2+6) /* GPC6 */ #define GPIO_AMPEN_N (32*2+7) /*==================================================================== * GPIO KEYS and ADKEYS */ #define GPIO_HOME (32*5+22) // SW3-GPF22 #define GPIO_MENU (32*5+20) // SW5-GPF20 #define GPIO_CALL (32*5+23) // SW2-GPF23 #define GPIO_ENDCALL (32*2+31) // SW6-boot_sel1-GPC31 #define GPIO_BACK (32*5+21) // SW4-GPF21 #define GPIO_SW7 (32*2+30) // SW7-boot_sel0-GPC30 #define GPIO_ADKEY_INT (32+30) // GPB30 /*==================================================================== * ADKEYS LEVEL */ #define DPAD_LEFT_LEVEL 225 //0.18105V, 225=0.18105/3.3*4096 #define DPAD_DOWN_LEVEL 535 //0.4314V #define DPAD_UP_LEVEL 887 //0.7143V #define DPAD_CENTER_LEVEL 1422 //1.1456V #define DPAD_RIGHT_LEVEL 2333 //1.88V /*====================================================================== * Analog input for VBAT is the battery voltage divided by CFG_PBAT_DIV. */ #define CFG_PBAT_DIV 4 /*====================================================================== * MMC/SD */ #define MSC0_WP_PIN GPIO_SD0_WP #define MSC0_HOTPLUG_PIN GPIO_SD0_CD_N #define MSC0_HOTPLUG_IRQ (IRQ_GPIO_0 + GPIO_SD0_CD_N) #define MSC1_WP_PIN GPIO_SD1_WP #define MSC1_HOTPLUG_PIN GPIO_SD1_CD_N #define MSC1_HOTPLUG_IRQ (IRQ_GPIO_0 + GPIO_SD1_CD_N) /*====================================================================== * LCD backlight */ #define LCD_PWM_CHN 4 /* pwm channel */ #define LCD_PWM_FULL 256 /* 100 level: 0,1,...,100 */ #define __lcd_set_backlight_level(n) \ do { \ __gpio_as_pwm(4); \ __tcu_disable_pwm_output(LCD_PWM_CHN); \ __tcu_stop_counter(LCD_PWM_CHN); \ __tcu_init_pwm_output_high(LCD_PWM_CHN); \ __tcu_set_pwm_output_shutdown_abrupt(LCD_PWM_CHN); \ __tcu_select_clk_div1(LCD_PWM_CHN); \ __tcu_mask_full_match_irq(LCD_PWM_CHN); \ __tcu_mask_half_match_irq(LCD_PWM_CHN); \ __tcu_set_count(LCD_PWM_CHN,0); \ __tcu_set_full_data(LCD_PWM_CHN,__cpm_get_extalclk()/30000); \ __tcu_set_half_data(LCD_PWM_CHN,__cpm_get_extalclk()/30000*n/(LCD_PWM_FULL-1)); \ __tcu_enable_pwm_output(LCD_PWM_CHN); \ __tcu_select_extalclk(LCD_PWM_CHN); \ __tcu_start_counter(LCD_PWM_CHN); \ } while (0) #define __lcd_close_backlight() \ do { \ __gpio_as_output(GPIO_LCD_PWM); \ __gpio_clear_pin(GPIO_LCD_PWM); \ } while (0) /* * The key interrupt pin is low voltage or fall edge acitve */ #define ACTIVE_LOW_HOME 1 #define ACTIVE_LOW_MENU 1 #define ACTIVE_LOW_BACK 1 #define ACTIVE_LOW_CALL 1 #define ACTIVE_LOW_ENDCALL 0 #define ACTIVE_LOW_SW10 1 #define ACTIVE_LOW_ADKEY 0 #define ACTIVE_LOW_MSC0_CD 1 /* work when GPIO_SD1_CD_N is low */ #define ACTIVE_LOW_MSC1_CD 0 /* work when GPIO_SD1_CD_N is high */ #endif /* __ASM_JZ4750_APUS_H__ */