OpenCores
URL https://opencores.org/ocsvn/or1k_soc_on_altera_embedded_dev_kit/or1k_soc_on_altera_embedded_dev_kit/trunk

Subversion Repositories or1k_soc_on_altera_embedded_dev_kit

[/] [or1k_soc_on_altera_embedded_dev_kit/] [trunk/] [linux-2.6/] [linux-2.6.24/] [arch/] [mips/] [bcm47xx/] [gpio.c] - Blame information for rev 3

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 3 xianfeng
/*
2
 * This file is subject to the terms and conditions of the GNU General Public
3
 * License.  See the file "COPYING" in the main directory of this archive
4
 * for more details.
5
 *
6
 * Copyright (C) 2007 Aurelien Jarno <aurelien@aurel32.net>
7
 */
8
 
9
#include <linux/ssb/ssb.h>
10
#include <linux/ssb/ssb_driver_chipcommon.h>
11
#include <linux/ssb/ssb_driver_extif.h>
12
#include <asm/mach-bcm47xx/bcm47xx.h>
13
#include <asm/mach-bcm47xx/gpio.h>
14
 
15
int bcm47xx_gpio_to_irq(unsigned gpio)
16
{
17
        if (ssb_bcm47xx.chipco.dev)
18
                return ssb_mips_irq(ssb_bcm47xx.chipco.dev) + 2;
19
        else if (ssb_bcm47xx.extif.dev)
20
                return ssb_mips_irq(ssb_bcm47xx.extif.dev) + 2;
21
        else
22
                return -EINVAL;
23
}
24
EXPORT_SYMBOL_GPL(bcm47xx_gpio_to_irq);
25
 
26
int bcm47xx_gpio_get_value(unsigned gpio)
27
{
28
        if (ssb_bcm47xx.chipco.dev)
29
                return ssb_chipco_gpio_in(&ssb_bcm47xx.chipco, 1 << gpio);
30
        else if (ssb_bcm47xx.extif.dev)
31
                return ssb_extif_gpio_in(&ssb_bcm47xx.extif, 1 << gpio);
32
        else
33
                return 0;
34
}
35
EXPORT_SYMBOL_GPL(bcm47xx_gpio_get_value);
36
 
37
void bcm47xx_gpio_set_value(unsigned gpio, int value)
38
{
39
        if (ssb_bcm47xx.chipco.dev)
40
                ssb_chipco_gpio_out(&ssb_bcm47xx.chipco,
41
                                    1 << gpio,
42
                                    value ? 1 << gpio : 0);
43
        else if (ssb_bcm47xx.extif.dev)
44
                ssb_extif_gpio_out(&ssb_bcm47xx.extif,
45
                                   1 << gpio,
46
                                   value ? 1 << gpio : 0);
47
}
48
EXPORT_SYMBOL_GPL(bcm47xx_gpio_set_value);
49
 
50
int bcm47xx_gpio_direction_input(unsigned gpio)
51
{
52
        if (ssb_bcm47xx.chipco.dev && (gpio < BCM47XX_CHIPCO_GPIO_LINES))
53
                ssb_chipco_gpio_outen(&ssb_bcm47xx.chipco,
54
                                      1 << gpio, 0);
55
        else if (ssb_bcm47xx.extif.dev && (gpio < BCM47XX_EXTIF_GPIO_LINES))
56
                ssb_extif_gpio_outen(&ssb_bcm47xx.extif,
57
                                     1 << gpio, 0);
58
        else
59
                return -EINVAL;
60
        return 0;
61
}
62
EXPORT_SYMBOL_GPL(bcm47xx_gpio_direction_input);
63
 
64
int bcm47xx_gpio_direction_output(unsigned gpio, int value)
65
{
66
        bcm47xx_gpio_set_value(gpio, value);
67
 
68
        if (ssb_bcm47xx.chipco.dev && (gpio < BCM47XX_CHIPCO_GPIO_LINES))
69
                ssb_chipco_gpio_outen(&ssb_bcm47xx.chipco,
70
                                      1 << gpio, 1 << gpio);
71
        else if (ssb_bcm47xx.extif.dev && (gpio < BCM47XX_EXTIF_GPIO_LINES))
72
                ssb_extif_gpio_outen(&ssb_bcm47xx.extif,
73
                                     1 << gpio, 1 << gpio);
74
        else
75
                return -EINVAL;
76
        return 0;
77
}
78
EXPORT_SYMBOL_GPL(bcm47xx_gpio_direction_output);
79
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.