logo       

[patch 07/19] chardev: pc8736x_gpio -: msg#00016

Subject: [patch 07/19] chardev: pc8736x_gpio -
GPIO SUPPORT FOR SCx200 & PC8736x

This patch-set reworks the 2.4 vintage scx200_gpio driver for modern
2.6, and refactors GPIO support to reuse it in a new driver for the
GPIO on PC-8736x chips.

07/19. patch.init-refactor

Pull shadow-reg initialization into separate function now, rather than
doing it 2x later (scx200, pc8736x).  When we revisit 2nd drvr below,
it will be to reimplement an init function, rather than another
refactor.

Signed-off-by:  Jim Cromie <jim.cromie@xxxxxxxxx>

diffstat patch.init-refactor
scx200.c |   15 ++++++++++-----
1 files changed, 10 insertions(+), 5 deletions(-)

diff -ruNp -X dontdiff -X exclude-diffs k16r-7/arch/i386/kernel/scx200.c 
k16r-8/arch/i386/kernel/scx200.c
--- k16r-7/arch/i386/kernel/scx200.c    2006-05-28 12:20:50.000000000 -0600
+++ k16r-8/arch/i386/kernel/scx200.c    2006-05-28 12:21:07.000000000 -0600
@@ -47,9 +47,17 @@ static struct pci_driver scx200_pci_driv

static DEFINE_SPINLOCK(scx200_gpio_config_lock);

-static int __devinit scx200_probe(struct pci_dev *pdev, const struct 
pci_device_id *ent)
+static void __devinit scx200_init_shadow(void)
{
        int bank;
+
+       /* read the current values driven on the GPIO signals */
+       for (bank = 0; bank < 2; ++bank)
+               scx200_gpio_shadow[bank] = inl(scx200_gpio_base + 0x10 * bank);
+}
+
+static int __devinit scx200_probe(struct pci_dev *pdev, const struct 
pci_device_id *ent)
+{
        unsigned base;

        if (pdev->device == PCI_DEVICE_ID_NS_SCx200_BRIDGE ||
@@ -63,10 +71,7 @@ static int __devinit scx200_probe(struct
                }

                scx200_gpio_base = base;
-
-               /* read the current values driven on the GPIO signals */
-               for (bank = 0; bank < 2; ++bank)
-                       scx200_gpio_shadow[bank] = inl(scx200_gpio_base + 0x10 
* bank);
+               scx200_init_shadow();

        } else {
                /* find the base of the Configuration Block */


<Prev in Thread] Current Thread [Next in Thread>