• Home
  • Raw
  • Download

Lines Matching refs:chip

112 	struct pch_gpio *chip =	container_of(gpio, struct pch_gpio, gpio);  in pch_gpio_set()  local
115 spin_lock_irqsave(&chip->spinlock, flags); in pch_gpio_set()
116 reg_val = ioread32(&chip->reg->po); in pch_gpio_set()
122 iowrite32(reg_val, &chip->reg->po); in pch_gpio_set()
123 spin_unlock_irqrestore(&chip->spinlock, flags); in pch_gpio_set()
128 struct pch_gpio *chip = container_of(gpio, struct pch_gpio, gpio); in pch_gpio_get() local
130 return ioread32(&chip->reg->pi) & (1 << nr); in pch_gpio_get()
136 struct pch_gpio *chip = container_of(gpio, struct pch_gpio, gpio); in pch_gpio_direction_output() local
141 spin_lock_irqsave(&chip->spinlock, flags); in pch_gpio_direction_output()
143 reg_val = ioread32(&chip->reg->po); in pch_gpio_direction_output()
148 iowrite32(reg_val, &chip->reg->po); in pch_gpio_direction_output()
150 pm = ioread32(&chip->reg->pm) & ((1 << gpio_pins[chip->ioh]) - 1); in pch_gpio_direction_output()
152 iowrite32(pm, &chip->reg->pm); in pch_gpio_direction_output()
154 spin_unlock_irqrestore(&chip->spinlock, flags); in pch_gpio_direction_output()
161 struct pch_gpio *chip = container_of(gpio, struct pch_gpio, gpio); in pch_gpio_direction_input() local
165 spin_lock_irqsave(&chip->spinlock, flags); in pch_gpio_direction_input()
166 pm = ioread32(&chip->reg->pm) & ((1 << gpio_pins[chip->ioh]) - 1); in pch_gpio_direction_input()
168 iowrite32(pm, &chip->reg->pm); in pch_gpio_direction_input()
169 spin_unlock_irqrestore(&chip->spinlock, flags); in pch_gpio_direction_input()
178 static void pch_gpio_save_reg_conf(struct pch_gpio *chip) in pch_gpio_save_reg_conf() argument
180 chip->pch_gpio_reg.ien_reg = ioread32(&chip->reg->ien); in pch_gpio_save_reg_conf()
181 chip->pch_gpio_reg.imask_reg = ioread32(&chip->reg->imask); in pch_gpio_save_reg_conf()
182 chip->pch_gpio_reg.po_reg = ioread32(&chip->reg->po); in pch_gpio_save_reg_conf()
183 chip->pch_gpio_reg.pm_reg = ioread32(&chip->reg->pm); in pch_gpio_save_reg_conf()
184 chip->pch_gpio_reg.im0_reg = ioread32(&chip->reg->im0); in pch_gpio_save_reg_conf()
185 if (chip->ioh == INTEL_EG20T_PCH) in pch_gpio_save_reg_conf()
186 chip->pch_gpio_reg.im1_reg = ioread32(&chip->reg->im1); in pch_gpio_save_reg_conf()
187 if (chip->ioh == OKISEMI_ML7223n_IOH) in pch_gpio_save_reg_conf()
188 chip->pch_gpio_reg.gpio_use_sel_reg =\ in pch_gpio_save_reg_conf()
189 ioread32(&chip->reg->gpio_use_sel); in pch_gpio_save_reg_conf()
195 static void pch_gpio_restore_reg_conf(struct pch_gpio *chip) in pch_gpio_restore_reg_conf() argument
197 iowrite32(chip->pch_gpio_reg.ien_reg, &chip->reg->ien); in pch_gpio_restore_reg_conf()
198 iowrite32(chip->pch_gpio_reg.imask_reg, &chip->reg->imask); in pch_gpio_restore_reg_conf()
200 iowrite32(chip->pch_gpio_reg.po_reg, &chip->reg->po); in pch_gpio_restore_reg_conf()
202 iowrite32(chip->pch_gpio_reg.pm_reg, &chip->reg->pm); in pch_gpio_restore_reg_conf()
203 iowrite32(chip->pch_gpio_reg.im0_reg, &chip->reg->im0); in pch_gpio_restore_reg_conf()
204 if (chip->ioh == INTEL_EG20T_PCH) in pch_gpio_restore_reg_conf()
205 iowrite32(chip->pch_gpio_reg.im1_reg, &chip->reg->im1); in pch_gpio_restore_reg_conf()
206 if (chip->ioh == OKISEMI_ML7223n_IOH) in pch_gpio_restore_reg_conf()
207 iowrite32(chip->pch_gpio_reg.gpio_use_sel_reg, in pch_gpio_restore_reg_conf()
208 &chip->reg->gpio_use_sel); in pch_gpio_restore_reg_conf()
214 struct pch_gpio *chip = container_of(gpio, struct pch_gpio, gpio); in pch_gpio_to_irq() local
215 return chip->irq_base + offset; in pch_gpio_to_irq()
218 static void pch_gpio_setup(struct pch_gpio *chip) in pch_gpio_setup() argument
220 struct gpio_chip *gpio = &chip->gpio; in pch_gpio_setup()
222 gpio->label = dev_name(chip->dev); in pch_gpio_setup()
223 gpio->dev = chip->dev; in pch_gpio_setup()
231 gpio->ngpio = gpio_pins[chip->ioh]; in pch_gpio_setup()
239 struct pch_gpio *chip = gc->private; in pch_irq_type() local
245 ch = irq - chip->irq_base; in pch_irq_type()
246 if (irq <= chip->irq_base + 7) { in pch_irq_type()
247 im_reg = &chip->reg->im0; in pch_irq_type()
250 im_reg = &chip->reg->im1; in pch_irq_type()
253 dev_dbg(chip->dev, "%s:irq=%d type=%d ch=%d pos=%d\n", in pch_irq_type()
256 spin_lock_irqsave(&chip->spinlock, flags); in pch_irq_type()
289 spin_unlock_irqrestore(&chip->spinlock, flags); in pch_irq_type()
296 struct pch_gpio *chip = gc->private; in pch_irq_unmask() local
298 iowrite32(1 << (d->irq - chip->irq_base), &chip->reg->imaskclr); in pch_irq_unmask()
304 struct pch_gpio *chip = gc->private; in pch_irq_mask() local
306 iowrite32(1 << (d->irq - chip->irq_base), &chip->reg->imask); in pch_irq_mask()
312 struct pch_gpio *chip = gc->private; in pch_irq_ack() local
314 iowrite32(1 << (d->irq - chip->irq_base), &chip->reg->iclr); in pch_irq_ack()
319 struct pch_gpio *chip = dev_id; in pch_gpio_handler() local
320 u32 reg_val = ioread32(&chip->reg->istatus); in pch_gpio_handler()
323 for (i = 0; i < gpio_pins[chip->ioh]; i++) { in pch_gpio_handler()
325 dev_dbg(chip->dev, "%s:[%d]:irq=%d status=0x%x\n", in pch_gpio_handler()
327 generic_handle_irq(chip->irq_base + i); in pch_gpio_handler()
334 static void pch_gpio_alloc_generic_chip(struct pch_gpio *chip, in pch_gpio_alloc_generic_chip() argument
340 gc = irq_alloc_generic_chip("pch_gpio", 1, irq_start, chip->base, in pch_gpio_alloc_generic_chip()
342 gc->private = chip; in pch_gpio_alloc_generic_chip()
345 ct->chip.irq_ack = pch_irq_ack; in pch_gpio_alloc_generic_chip()
346 ct->chip.irq_mask = pch_irq_mask; in pch_gpio_alloc_generic_chip()
347 ct->chip.irq_unmask = pch_irq_unmask; in pch_gpio_alloc_generic_chip()
348 ct->chip.irq_set_type = pch_irq_type; in pch_gpio_alloc_generic_chip()
358 struct pch_gpio *chip; in pch_gpio_probe() local
362 chip = kzalloc(sizeof(*chip), GFP_KERNEL); in pch_gpio_probe()
363 if (chip == NULL) in pch_gpio_probe()
366 chip->dev = &pdev->dev; in pch_gpio_probe()
379 chip->base = pci_iomap(pdev, 1, 0); in pch_gpio_probe()
380 if (!chip->base) { in pch_gpio_probe()
387 chip->ioh = INTEL_EG20T_PCH; in pch_gpio_probe()
389 chip->ioh = OKISEMI_ML7223m_IOH; in pch_gpio_probe()
391 chip->ioh = OKISEMI_ML7223n_IOH; in pch_gpio_probe()
393 chip->reg = chip->base; in pch_gpio_probe()
394 pci_set_drvdata(pdev, chip); in pch_gpio_probe()
395 spin_lock_init(&chip->spinlock); in pch_gpio_probe()
396 pch_gpio_setup(chip); in pch_gpio_probe()
397 ret = gpiochip_add(&chip->gpio); in pch_gpio_probe()
403 irq_base = irq_alloc_descs(-1, 0, gpio_pins[chip->ioh], NUMA_NO_NODE); in pch_gpio_probe()
406 chip->irq_base = -1; in pch_gpio_probe()
409 chip->irq_base = irq_base; in pch_gpio_probe()
412 msk = (1 << gpio_pins[chip->ioh]) - 1; in pch_gpio_probe()
413 iowrite32(msk, &chip->reg->imask); in pch_gpio_probe()
414 iowrite32(msk, &chip->reg->ien); in pch_gpio_probe()
417 IRQF_SHARED, KBUILD_MODNAME, chip); in pch_gpio_probe()
424 pch_gpio_alloc_generic_chip(chip, irq_base, gpio_pins[chip->ioh]); in pch_gpio_probe()
430 irq_free_descs(irq_base, gpio_pins[chip->ioh]); in pch_gpio_probe()
431 gpiochip_remove(&chip->gpio); in pch_gpio_probe()
434 pci_iounmap(pdev, chip->base); in pch_gpio_probe()
443 kfree(chip); in pch_gpio_probe()
450 struct pch_gpio *chip = pci_get_drvdata(pdev); in pch_gpio_remove() local
452 if (chip->irq_base != -1) { in pch_gpio_remove()
453 free_irq(pdev->irq, chip); in pch_gpio_remove()
455 irq_free_descs(chip->irq_base, gpio_pins[chip->ioh]); in pch_gpio_remove()
458 gpiochip_remove(&chip->gpio); in pch_gpio_remove()
459 pci_iounmap(pdev, chip->base); in pch_gpio_remove()
462 kfree(chip); in pch_gpio_remove()
469 struct pch_gpio *chip = pci_get_drvdata(pdev); in pch_gpio_suspend() local
472 spin_lock_irqsave(&chip->spinlock, flags); in pch_gpio_suspend()
473 pch_gpio_save_reg_conf(chip); in pch_gpio_suspend()
474 spin_unlock_irqrestore(&chip->spinlock, flags); in pch_gpio_suspend()
493 struct pch_gpio *chip = pci_get_drvdata(pdev); in pch_gpio_resume() local
506 spin_lock_irqsave(&chip->spinlock, flags); in pch_gpio_resume()
507 iowrite32(0x01, &chip->reg->reset); in pch_gpio_resume()
508 iowrite32(0x00, &chip->reg->reset); in pch_gpio_resume()
509 pch_gpio_restore_reg_conf(chip); in pch_gpio_resume()
510 spin_unlock_irqrestore(&chip->spinlock, flags); in pch_gpio_resume()