Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/powerpc/sysdev/cpm_gpio.c
26424 views
1
// SPDX-License-Identifier: GPL-2.0
2
/*
3
* Common CPM GPIO wrapper for the CPM GPIO ports
4
*
5
* Author: Christophe Leroy <[email protected]>
6
*
7
* Copyright 2017 CS Systemes d'Information.
8
*
9
*/
10
11
#include <linux/module.h>
12
#include <linux/of.h>
13
#include <linux/platform_device.h>
14
15
#include <asm/cpm.h>
16
#ifdef CONFIG_8xx_GPIO
17
#include <asm/cpm1.h>
18
#endif
19
20
static int cpm_gpio_probe(struct platform_device *ofdev)
21
{
22
struct device *dev = &ofdev->dev;
23
int (*gp_add)(struct device *dev) = of_device_get_match_data(dev);
24
25
if (!gp_add)
26
return -ENODEV;
27
28
return gp_add(dev);
29
}
30
31
static const struct of_device_id cpm_gpio_match[] = {
32
#ifdef CONFIG_8xx_GPIO
33
{
34
.compatible = "fsl,cpm1-pario-bank-a",
35
.data = cpm1_gpiochip_add16,
36
},
37
{
38
.compatible = "fsl,cpm1-pario-bank-b",
39
.data = cpm1_gpiochip_add32,
40
},
41
{
42
.compatible = "fsl,cpm1-pario-bank-c",
43
.data = cpm1_gpiochip_add16,
44
},
45
{
46
.compatible = "fsl,cpm1-pario-bank-d",
47
.data = cpm1_gpiochip_add16,
48
},
49
/* Port E uses CPM2 layout */
50
{
51
.compatible = "fsl,cpm1-pario-bank-e",
52
.data = cpm2_gpiochip_add32,
53
},
54
#endif
55
{
56
.compatible = "fsl,cpm2-pario-bank",
57
.data = cpm2_gpiochip_add32,
58
},
59
{},
60
};
61
MODULE_DEVICE_TABLE(of, cpm_gpio_match);
62
63
static struct platform_driver cpm_gpio_driver = {
64
.probe = cpm_gpio_probe,
65
.driver = {
66
.name = "cpm-gpio",
67
.of_match_table = cpm_gpio_match,
68
},
69
};
70
71
static int __init cpm_gpio_init(void)
72
{
73
return platform_driver_register(&cpm_gpio_driver);
74
}
75
arch_initcall(cpm_gpio_init);
76
77
MODULE_AUTHOR("Christophe Leroy <[email protected]>");
78
MODULE_DESCRIPTION("Driver for CPM GPIO");
79
MODULE_LICENSE("GPL");
80
MODULE_ALIAS("platform:cpm-gpio");
81
82