Lines Matching +full:- +full:gp
1 // SPDX-License-Identifier: GPL-2.0
5 * Copyright (c) 2012 Dmitry Eremin-Solenikov
80 agp->orig[offset] = ioread8(agp->pm + AMD_REG_GPIO(offset)) &
83 dev_dbg(&agp->pdev->dev, "Requested gpio %d, data %x\n", offset, agp->orig[offset]);
92 dev_dbg(&agp->pdev->dev, "Freed gpio %d, data %x\n", offset, agp->orig[offset]);
94 iowrite8(agp->orig[offset], agp->pm + AMD_REG_GPIO(offset));
103 spin_lock_irqsave(&agp->lock, flags);
104 temp = ioread8(agp->pm + AMD_REG_GPIO(offset));
106 iowrite8(temp, agp->pm + AMD_REG_GPIO(offset));
107 spin_unlock_irqrestore(&agp->lock, flags);
109 dev_dbg(&agp->pdev->dev, "Setting gpio %d, value %d, reg=%02x\n", offset, !!value, temp);
119 temp = ioread8(agp->pm + AMD_REG_GPIO(offset));
121 dev_dbg(&agp->pdev->dev, "Getting gpio %d, reg=%02x\n", offset, temp);
132 spin_lock_irqsave(&agp->lock, flags);
133 temp = ioread8(agp->pm + AMD_REG_GPIO(offset));
135 iowrite8(temp, agp->pm + AMD_REG_GPIO(offset));
136 spin_unlock_irqrestore(&agp->lock, flags);
138 dev_dbg(&agp->pdev->dev, "Dirout gpio %d, value %d, reg=%02x\n", offset, !!value, temp);
149 spin_lock_irqsave(&agp->lock, flags);
150 temp = ioread8(agp->pm + AMD_REG_GPIO(offset));
152 iowrite8(temp, agp->pm + AMD_REG_GPIO(offset));
153 spin_unlock_irqrestore(&agp->lock, flags);
155 dev_dbg(&agp->pdev->dev, "Dirin gpio %d, reg=%02x\n", offset, temp);
160 static struct amd_gpio gp = {
164 .base = -1,
177 int err = -ENODEV;
181 /* We look for our device - AMD South Bridge
199 err = pci_read_config_dword(pdev, 0x58, &gp.pmbase);
204 err = -EIO;
205 gp.pmbase &= 0x0000FF00;
206 if (gp.pmbase == 0)
208 if (!devm_request_region(&pdev->dev, gp.pmbase + PMBASE_OFFSET,
210 dev_err(&pdev->dev, "AMD GPIO region 0x%x already in use!\n",
211 gp.pmbase + PMBASE_OFFSET);
212 err = -EBUSY;
215 gp.pm = ioport_map(gp.pmbase + PMBASE_OFFSET, PMBASE_SIZE);
216 if (!gp.pm) {
217 dev_err(&pdev->dev, "Couldn't map io port into io memory\n");
218 err = -ENOMEM;
221 gp.pdev = pdev;
222 gp.chip.parent = &pdev->dev;
224 spin_lock_init(&gp.lock);
226 dev_info(&pdev->dev, "AMD-8111 GPIO detected\n");
227 err = gpiochip_add_data(&gp.chip, &gp);
229 dev_err(&pdev->dev, "GPIO registering failed (%d)\n", err);
230 ioport_unmap(gp.pm);
242 gpiochip_remove(&gp.chip);
243 ioport_unmap(gp.pm);
244 pci_dev_put(gp.pdev);