Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/arm/mach-pxa/mfp-pxa3xx.c
29266 views
1
// SPDX-License-Identifier: GPL-2.0-only
2
/*
3
* linux/arch/arm/mach-pxa/mfp.c
4
*
5
* PXA3xx Multi-Function Pin Support
6
*
7
* Copyright (C) 2007 Marvell Internation Ltd.
8
*
9
* 2007-08-21: eric miao <[email protected]>
10
* initial version
11
*/
12
13
#include <linux/module.h>
14
#include <linux/kernel.h>
15
#include <linux/init.h>
16
#include <linux/io.h>
17
#include <linux/syscore_ops.h>
18
19
#include "mfp-pxa3xx.h"
20
#include "pxa3xx-regs.h"
21
22
#ifdef CONFIG_PM
23
/*
24
* Configure the MFPs appropriately for suspend/resume.
25
* FIXME: this should probably depend on which system state we're
26
* entering - for instance, we might not want to place MFP pins in
27
* a pull-down mode if they're an active low chip select, and we're
28
* just entering standby.
29
*/
30
static int pxa3xx_mfp_suspend(void)
31
{
32
mfp_config_lpm();
33
return 0;
34
}
35
36
static void pxa3xx_mfp_resume(void)
37
{
38
mfp_config_run();
39
40
/* clear RDH bit when MFP settings are restored
41
*
42
* NOTE: the last 3 bits DxS are write-1-to-clear so carefully
43
* preserve them here in case they will be referenced later
44
*/
45
ASCR &= ~(ASCR_RDH | ASCR_D1S | ASCR_D2S | ASCR_D3S);
46
}
47
#else
48
#define pxa3xx_mfp_suspend NULL
49
#define pxa3xx_mfp_resume NULL
50
#endif
51
52
struct syscore_ops pxa3xx_mfp_syscore_ops = {
53
.suspend = pxa3xx_mfp_suspend,
54
.resume = pxa3xx_mfp_resume,
55
};
56
57