Lines Matching refs:gpio

13 #include <ddk/protocol/gpio-impl.h>
29 readl((uint32_t*)gpio->mmios[index].vaddr + offset)
31 writel(value, (uint32_t*)gpio->mmios[index].vaddr + offset)
34 readl((uint32_t*)gpio->mmio_interrupt.vaddr + offset)
36 writel(value, (uint32_t*)gpio->mmio_interrupt.vaddr + offset)
70 gpio_impl_protocol_t gpio;
79 // MMIO indices (based on aml-gpio.c gpio_mmios)
88 static zx_status_t aml_pin_to_block(aml_gpio_t* gpio, const uint32_t pin, aml_gpio_block_t** result) {
91 for (size_t i = 0; i < gpio->block_count; i++) {
92 aml_gpio_block_t* gpio_block = &gpio->gpio_blocks[i];
104 aml_gpio_t* gpio = ctx;
108 if ((status = aml_pin_to_block(gpio, index, &block)) != ZX_OK) {
146 aml_gpio_t* gpio = ctx;
150 if ((status = aml_pin_to_block(gpio, index, &block)) != ZX_OK) {
181 aml_gpio_t* gpio = ctx;
192 if (((status = aml_pin_to_block(gpio, pin, &block)) != ZX_OK) != ZX_OK) {
222 aml_gpio_t* gpio = ctx;
226 if ((status = aml_pin_to_block(gpio, index, &block)) != ZX_OK) {
250 aml_gpio_t* gpio = ctx;
254 if ((status = aml_pin_to_block(gpio, index, &block)) != ZX_OK) {
287 aml_gpio_t* gpio = ctx;
289 aml_gpio_interrupt_t* interrupt = gpio->gpio_interrupt;
311 if ((status = aml_pin_to_block(gpio, pin, &block)) != ZX_OK) {
324 status = pdev_get_interrupt(&gpio->pdev, index, flags_,
376 aml_gpio_t* gpio = ctx;
377 aml_gpio_interrupt_t* interrupt = gpio->gpio_interrupt;
393 aml_gpio_t* gpio = ctx;
394 aml_gpio_interrupt_t* interrupt = gpio->gpio_interrupt;
435 aml_gpio_t* gpio = ctx;
436 mmio_buffer_release(&gpio->mmios[MMIO_GPIO]);
437 mmio_buffer_release(&gpio->mmios[MMIO_GPIO_A0]);
438 mmio_buffer_release(&gpio->mmio_interrupt);
439 free(gpio->gpio_interrupt->irq_info);
440 free(gpio);
452 aml_gpio_t* gpio = calloc(1, sizeof(aml_gpio_t));
453 if (!gpio) {
457 if ((status = device_get_protocol(parent, ZX_PROTOCOL_PLATFORM_DEV, &gpio->pdev)) != ZX_OK) {
468 status = pdev_map_mmio_buffer2(&gpio->pdev, MMIO_GPIO, ZX_CACHE_POLICY_UNCACHED_DEVICE,
469 &gpio->mmios[MMIO_GPIO]);
475 status = pdev_map_mmio_buffer2(&gpio->pdev, MMIO_GPIO_A0, ZX_CACHE_POLICY_UNCACHED_DEVICE,
476 &gpio->mmios[MMIO_GPIO_A0]);
482 status = pdev_map_mmio_buffer2(&gpio->pdev, MMIO_GPIO_INTERRUPTS, ZX_CACHE_POLICY_UNCACHED_DEVICE,
483 &gpio->mmio_interrupt);
490 status = pdev_get_device_info(&gpio->pdev, &info);
498 gpio->gpio_blocks = a113_gpio_blocks;
499 gpio->block_count = countof(a113_gpio_blocks);
500 gpio->gpio_interrupt = &a113_interrupt_block;
503 gpio->gpio_blocks = s905d2_gpio_blocks;
504 gpio->block_count = countof(s905d2_gpio_blocks);
505 gpio->gpio_interrupt = &s905d2_interrupt_block;
515 .name = "aml-axg-gpio",
516 .ctx = gpio,
521 status = device_add(parent, &args, &gpio->zxdev);
527 gpio->gpio_interrupt->irq_count = info.irq_count;
528 gpio->gpio_interrupt->irq_status = 0;
529 gpio->gpio.ops = &gpio_ops;
530 gpio->gpio.ctx = gpio;
531 pbus_register_protocol(&pbus, ZX_PROTOCOL_GPIO_IMPL, &gpio->gpio, NULL, NULL);
532 gpio->gpio_interrupt->irq_info = calloc(gpio->gpio_interrupt->irq_count,
534 if (!gpio->gpio_interrupt->irq_info) {
542 aml_gpio_release(gpio);