generic.c (c1f3ee120bb61045b1c0a3ead620d1d65af47130) | generic.c (16dfdbf038706c12c56f327d14c6b901edc376a3) |
---|---|
1/* 2 * linux/arch/arm/mach-pxa/generic.c 3 * 4 * Author: Nicolas Pitre 5 * Created: Jun 15, 2001 6 * Copyright: MontaVista Software Inc. 7 * 8 * Code common to all PXA machines. --- 9 unchanged lines hidden (view full) --- 18 */ 19#include <linux/module.h> 20#include <linux/kernel.h> 21#include <linux/init.h> 22#include <linux/delay.h> 23#include <linux/ioport.h> 24#include <linux/pm.h> 25#include <linux/string.h> | 1/* 2 * linux/arch/arm/mach-pxa/generic.c 3 * 4 * Author: Nicolas Pitre 5 * Created: Jun 15, 2001 6 * Copyright: MontaVista Software Inc. 7 * 8 * Code common to all PXA machines. --- 9 unchanged lines hidden (view full) --- 18 */ 19#include <linux/module.h> 20#include <linux/kernel.h> 21#include <linux/init.h> 22#include <linux/delay.h> 23#include <linux/ioport.h> 24#include <linux/pm.h> 25#include <linux/string.h> |
26#include <linux/sysdev.h> |
|
26 27#include <asm/hardware.h> 28#include <asm/irq.h> 29#include <asm/system.h> 30#include <asm/pgtable.h> 31#include <asm/mach/map.h> 32 33#include <asm/arch/pxa-regs.h> --- 187 unchanged lines hidden (view full) --- 221 } 222}; 223 224void __init pxa_map_io(void) 225{ 226 iotable_init(standard_io_desc, ARRAY_SIZE(standard_io_desc)); 227 get_clk_frequency_khz(1); 228} | 27 28#include <asm/hardware.h> 29#include <asm/irq.h> 30#include <asm/system.h> 31#include <asm/pgtable.h> 32#include <asm/mach/map.h> 33 34#include <asm/arch/pxa-regs.h> --- 187 unchanged lines hidden (view full) --- 222 } 223}; 224 225void __init pxa_map_io(void) 226{ 227 iotable_init(standard_io_desc, ARRAY_SIZE(standard_io_desc)); 228 get_clk_frequency_khz(1); 229} |
230 231#ifdef CONFIG_PM 232 233static unsigned long saved_gplr[4]; 234static unsigned long saved_gpdr[4]; 235static unsigned long saved_grer[4]; 236static unsigned long saved_gfer[4]; 237 238static int pxa_gpio_suspend(struct sys_device *dev, pm_message_t state) 239{ 240 int i, gpio; 241 242 for (gpio = 0, i = 0; gpio < pxa_last_gpio; gpio += 32, i++) { 243 saved_gplr[i] = GPLR(gpio); 244 saved_gpdr[i] = GPDR(gpio); 245 saved_grer[i] = GRER(gpio); 246 saved_gfer[i] = GFER(gpio); 247 248 /* Clear GPIO transition detect bits */ 249 GEDR(gpio) = GEDR(gpio); 250 } 251 return 0; 252} 253 254static int pxa_gpio_resume(struct sys_device *dev) 255{ 256 int i, gpio; 257 258 for (gpio = 0, i = 0; gpio < pxa_last_gpio; gpio += 32, i++) { 259 /* restore level with set/clear */ 260 GPSR(gpio) = saved_gplr[i]; 261 GPCR(gpio) = ~saved_gplr[i]; 262 263 GRER(gpio) = saved_grer[i]; 264 GFER(gpio) = saved_gfer[i]; 265 GPDR(gpio) = saved_gpdr[i]; 266 } 267 return 0; 268} 269#else 270#define pxa_gpio_suspend NULL 271#define pxa_gpio_resume NULL 272#endif 273 274struct sysdev_class pxa_gpio_sysclass = { 275 .name = "gpio", 276 .suspend = pxa_gpio_suspend, 277 .resume = pxa_gpio_resume, 278}; 279 280static int __init pxa_gpio_init(void) 281{ 282 return sysdev_class_register(&pxa_gpio_sysclass); 283} 284 285core_initcall(pxa_gpio_init); |
|