Lines Matching refs:sch

50 static unsigned int sch_gpio_offset(struct sch_gpio *sch, unsigned int gpio,
55 if (gpio >= sch->resume_base) {
56 gpio -= sch->resume_base;
63 static unsigned int sch_gpio_bit(struct sch_gpio *sch, unsigned int gpio)
65 if (gpio >= sch->resume_base)
66 gpio -= sch->resume_base;
70 static int sch_gpio_reg_get(struct sch_gpio *sch, unsigned int gpio, unsigned int reg)
75 offset = sch_gpio_offset(sch, gpio, reg);
76 bit = sch_gpio_bit(sch, gpio);
78 reg_val = !!(ioread8(sch->regs + offset) & BIT(bit));
83 static void sch_gpio_reg_set(struct sch_gpio *sch, unsigned int gpio, unsigned int reg,
89 offset = sch_gpio_offset(sch, gpio, reg);
90 bit = sch_gpio_bit(sch, gpio);
92 reg_val = ioread8(sch->regs + offset);
99 iowrite8(reg_val, sch->regs + offset);
104 struct sch_gpio *sch = gpiochip_get_data(gc);
107 spin_lock_irqsave(&sch->lock, flags);
108 sch_gpio_reg_set(sch, gpio_num, GIO, 1);
109 spin_unlock_irqrestore(&sch->lock, flags);
115 struct sch_gpio *sch = gpiochip_get_data(gc);
117 return sch_gpio_reg_get(sch, gpio_num, GLV);
122 struct sch_gpio *sch = gpiochip_get_data(gc);
125 spin_lock_irqsave(&sch->lock, flags);
126 sch_gpio_reg_set(sch, gpio_num, GLV, val);
127 spin_unlock_irqrestore(&sch->lock, flags);
135 struct sch_gpio *sch = gpiochip_get_data(gc);
138 spin_lock_irqsave(&sch->lock, flags);
139 sch_gpio_reg_set(sch, gpio_num, GIO, 0);
140 spin_unlock_irqrestore(&sch->lock, flags);
156 struct sch_gpio *sch = gpiochip_get_data(gc);
158 if (sch_gpio_reg_get(sch, gpio_num, GIO))
177 struct sch_gpio *sch = gpiochip_get_data(gc);
199 spin_lock_irqsave(&sch->lock, flags);
201 sch_gpio_reg_set(sch, gpio_num, GTPE, rising);
202 sch_gpio_reg_set(sch, gpio_num, GTNE, falling);
206 spin_unlock_irqrestore(&sch->lock, flags);
214 struct sch_gpio *sch = gpiochip_get_data(gc);
218 spin_lock_irqsave(&sch->lock, flags);
219 sch_gpio_reg_set(sch, gpio_num, GTS, 1);
220 spin_unlock_irqrestore(&sch->lock, flags);
225 struct sch_gpio *sch = gpiochip_get_data(gc);
228 spin_lock_irqsave(&sch->lock, flags);
229 sch_gpio_reg_set(sch, gpio_num, GGPE, val);
230 spin_unlock_irqrestore(&sch->lock, flags);
263 struct sch_gpio *sch = context;
264 struct gpio_chip *gc = &sch->chip;
271 spin_lock_irqsave(&sch->lock, flags);
273 core_status = ioread32(sch->regs + CORE_BANK_OFFSET + GTS);
274 resume_status = ioread32(sch->regs + RESUME_BANK_OFFSET + GTS);
276 spin_unlock_irqrestore(&sch->lock, flags);
278 pending = (resume_status << sch->resume_base) | core_status;
279 for_each_set_bit(offset, &pending, sch->chip.ngpio)
293 struct sch_gpio *sch = data;
295 acpi_disable_gpe(NULL, sch->gpe);
296 acpi_remove_gpe_handler(NULL, sch->gpe, sch->gpe_handler);
299 static int sch_gpio_install_gpe_handler(struct sch_gpio *sch)
301 struct device *dev = sch->chip.parent;
304 status = acpi_install_gpe_handler(NULL, sch->gpe, ACPI_GPE_LEVEL_TRIGGERED,
305 sch->gpe_handler, sch);
308 sch->gpe, acpi_format_exception(status));
312 status = acpi_enable_gpe(NULL, sch->gpe);
315 sch->gpe, acpi_format_exception(status));
316 acpi_remove_gpe_handler(NULL, sch->gpe, sch->gpe_handler);
320 return devm_add_action_or_reset(dev, sch_gpio_remove_gpe_handler, sch);
327 struct sch_gpio *sch;
332 sch = devm_kzalloc(dev, sizeof(*sch), GFP_KERNEL);
333 if (!sch)
344 sch->regs = regs;
346 spin_lock_init(&sch->lock);
347 sch->chip = sch_gpio_chip;
348 sch->chip.label = dev_name(dev);
349 sch->chip.parent = dev;
353 sch->resume_base = 10;
354 sch->chip.ngpio = 14;
361 sch_gpio_reg_set(sch, 8, GEN, 1);
362 sch_gpio_reg_set(sch, 9, GEN, 1);
367 sch_gpio_reg_set(sch, 13, GEN, 1);
371 sch->resume_base = 5;
372 sch->chip.ngpio = 14;
376 sch->resume_base = 21;
377 sch->chip.ngpio = 30;
381 sch->resume_base = 2;
382 sch->chip.ngpio = 8;
389 girq = &sch->chip.irq;
398 sch->gpe = GPE0E_GPIO;
399 sch->gpe_handler = sch_gpio_gpe_handler;
401 ret = sch_gpio_install_gpe_handler(sch);
405 return devm_gpiochip_add_data(dev, &sch->chip, sch);