// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include <soc/aml-s912/s912-gpio.h>

#include "aml-gxl-gpio.h"

namespace gpio {

constexpr AmlGpioBlock s912_gpio_blocks[] = {
    // GPIOX Block
    {
        .pin_count = S912_GPIOX_PINS,
        .oen_offset = S912_GPIOX_0EN,
        .input_offset = S912_GPIOX_IN,
        .output_offset = S912_GPIOX_OUT,
        .output_shift = 0,
        .mmio_index = 0,
        .pull_offset = S912_PULL_UP_REG4,
        .pull_en_offset = S912_PULL_UP_EN_REG4,
        .pin_start = S912_GPIOX_PIN_START,
    },
    // GPIODV Block
    {
        .pin_count = S912_GPIODV_PINS,
        .oen_offset = S912_GPIODV_0EN,
        .input_offset = S912_GPIODV_IN,
        .output_offset = S912_GPIODV_OUT,
        .output_shift = 0,
        .mmio_index = 0,
        .pull_offset = S912_PULL_UP_REG0,
        .pull_en_offset = S912_PULL_UP_EN_REG0,
        .pin_start = S912_GPIODV_PIN_START,
    },
    // GPIOH Block
    {
        .pin_count = S912_GPIOH_PINS,
        .oen_offset = S912_GPIOH_0EN,
        .input_offset = S912_GPIOH_IN,
        .output_offset = S912_GPIOH_OUT,
        .output_shift = 20,
        .mmio_index = 0,
        .pull_offset = S912_PULL_UP_REG1,
        .pull_en_offset = S912_PULL_UP_EN_REG1,
        .pin_start = S912_GPIOH_PIN_START,
    },
    // GPIOBOOT Block
    {
        .pin_count = S912_GPIOBOOT_PINS,
        .oen_offset = S912_GPIOBOOT_0EN,
        .input_offset = S912_GPIOBOOT_IN,
        .output_offset = S912_GPIOBOOT_OUT,
        .output_shift = 0,
        .mmio_index = 0,
        .pull_offset = S912_PULL_UP_REG2,
        .pull_en_offset = S912_PULL_UP_EN_REG2,
        .pin_start = S912_GPIOBOOT_PIN_START,
    },
    // GPIOCARD Block
    {
        .pin_count = S912_GPIOCARD_PINS,
        .oen_offset = S912_GPIOCARD_0EN,
        .input_offset = S912_GPIOCARD_IN,
        .output_offset = S912_GPIOCARD_OUT,
        .output_shift = 20,
        .mmio_index = 0,
        .pull_offset = S912_PULL_UP_REG2,
        .pull_en_offset = S912_PULL_UP_EN_REG2,
        .pin_start = S912_GPIOCARD_PIN_START,
    },
    // GPIOCLK Block
    {
        .pin_count = S912_GPIOCLK_PINS,
        .oen_offset = S912_GPIOCLK_0EN,
        .input_offset = S912_GPIOCLK_IN,
        .output_offset = S912_GPIOCLK_OUT,
        .output_shift = 28,
        .mmio_index = 0,
        .pull_offset = S912_PULL_UP_REG3,
        .pull_en_offset = S912_PULL_UP_EN_REG3,
        .pin_start = S912_GPIOCLK_PIN_START,
    },
    // GPIOZ Block
    {
        .pin_count = S912_GPIOZ_PINS,
        .oen_offset = S912_GPIOZ_0EN,
        .input_offset = S912_GPIOZ_IN,
        .output_offset = S912_GPIOZ_OUT,
        .output_shift = 0,
        .mmio_index = 0,
        .pull_offset = S912_PULL_UP_REG3,
        .pull_en_offset = S912_PULL_UP_EN_REG3,
        .pin_start = S912_GPIOZ_PIN_START,
    },
    // GPIOAO Block
    {
        .pin_count = S912_GPIOAO_PINS,
        .oen_offset = S912_AO_GPIO_OEN_OUT,
        .input_offset = S912_AO_GPIO_IN,
        .output_offset = S912_AO_GPIO_OEN_OUT,
        .output_shift = 0,
        .output_write_shift = 16, //OUT/EN share reg
        .mmio_index = 1,
        .pull_offset = 0, // not supported
        .pull_en_offset = 0, // not supported
        .pin_start = S912_GPIOA0_PIN_START,
    },
};

#define REG_0 S912_PERIPHS_PIN_MUX_0
#define REG_1 S912_PERIPHS_PIN_MUX_1
#define REG_2 S912_PERIPHS_PIN_MUX_2
#define REG_3 S912_PERIPHS_PIN_MUX_3
#define REG_4 S912_PERIPHS_PIN_MUX_4
#define REG_5 S912_PERIPHS_PIN_MUX_5
#define REG_6 S912_PERIPHS_PIN_MUX_6
#define REG_7 S912_PERIPHS_PIN_MUX_7
#define REG_8 S912_PERIPHS_PIN_MUX_8
#define REG_9 S912_PERIPHS_PIN_MUX_9
#define AO_REG S912_AO_RTI_PIN_MUX_REG
#define AO_REG_2 S912_AO_RTI_PIN_MUX_REG2

constexpr AmlGpioInterrupt s912_interrupt_block = {
    .pin_0_3_select_offset =    S912_GPIO_0_3_PIN_SELECT,
    .pin_4_7_select_offset =    S912_GPIO_4_7_PIN_SELECT,
    .edge_polarity_offset =     S912_GPIO_INT_EDGE_POLARITY,
    .filter_select_offset =     S912_GPIO_FILTER_SELECT,
    .status_offset =            S912_GPIO_INT_STATUS,
    .mask_offset =              S912_GPIO_INT_MASK,
};

constexpr AmlPinMuxBlock s912_pinmux_blocks[] = {
    // GPIOX Block
    {
        .mux = {
            { .regs = { REG_5 }, .bits = { 31 }, },
            { .regs = { REG_5 }, .bits = { 30 }, },
            { .regs = { REG_5 }, .bits = { 29 }, },
            { .regs = { REG_5 }, .bits = { 28 }, },
            { .regs = { REG_5 }, .bits = { 27 }, },
            { .regs = { REG_5 }, .bits = { 26 }, },
            { .regs = { REG_5 }, .bits = { 25 }, },
            { .regs = { REG_5, REG_5 }, .bits = { 24, 14 }, },
            { .regs = { REG_5, REG_5, 0, REG_5 }, .bits = { 23, 13, 0, 3 }, },
            { .regs = { REG_5, REG_5, 0, REG_5 }, .bits = { 22, 12, 0, 2 }, },
            { .regs = { REG_5, REG_5, REG_5, REG_5 }, .bits = { 21, 11, 5, 1 }, },
            { .regs = { REG_5, REG_5, REG_5, REG_5 }, .bits = { 20, 10, 4, 0 }, },
            { .regs = { REG_5 }, .bits = { 19 }, },
            { .regs = { REG_5 }, .bits = { 18 }, },
            { .regs = { REG_5 }, .bits = { 17 }, },
            { .regs = { REG_5 }, .bits = { 16 }, },
            { .regs = { REG_5 }, .bits = { 15 }, },
            // pinmux not specified for GPIOX_17 and GPIOX_18.
        },
    },
    // GPIODV Block
    {
        .mux = {
            { .regs = { REG_3, 0, 0, REG_2, REG_1 }, .bits = { 10, 0, 0, 4, 8 }, },
            { .regs = { REG_3, 0, 0, REG_2 }, .bits = { 10, 0, 0, 3 }, },
            { .regs = { REG_3, 0, 0, REG_2 }, .bits = { 9, 0, 0, 3 }, },
            { .regs = { REG_3, 0, 0, REG_2 }, .bits = { 9, 0, 0, 3 }, },
            { .regs = { REG_3, 0, 0, REG_2 }, .bits = { 9, 0, 0, 3 }, },
            { .regs = { REG_3, 0, 0, REG_2 }, .bits = { 9, 0, 0, 3 }, },
            { .regs = { REG_3, 0, 0, REG_2 }, .bits = { 9, 0, 0, 3 }, },
            { .regs = { REG_3, 0, 0, REG_2 }, .bits = { 9, 0, 0, 3 }, },
            { .regs = { REG_3, 0, 0, REG_2 }, .bits = { 8, 0, 0, 2 }, },
            { .regs = { REG_3, 0, 0, REG_2 }, .bits = { 8, 0, 0, 1 }, },
            { .regs = { REG_3, 0, 0, REG_2 }, .bits = { 7, 0, 0, 0 }, },
            { .regs = { REG_3, 0, 0, REG_1 }, .bits = { 7, 0, 0, 31 }, },
            { .regs = { REG_3, 0, 0, REG_1 }, .bits = { 7, 0, 0, 30 }, },
            { .regs = { REG_3, 0, 0, REG_1 }, .bits = { 7, 0, 0, 29 }, },
            { .regs = { REG_3, 0, 0, REG_1 }, .bits = { 7, 0, 0, 28 }, },
            { .regs = { REG_3, 0, 0, REG_1 }, .bits = { 7, 0, 0, 27 }, },
            { .regs = { REG_3, 0, 0, REG_1, REG_1 }, .bits = { 6, 0, 0, 26, 24 }, },
            { .regs = { REG_3, 0, 0, REG_1, REG_1 }, .bits = { 6, 0, 0, 25, 23 }, },
            { .regs = { REG_3, REG_1, 0, REG_1 }, .bits = { 5, 17, 0, 25 }, },
            { .regs = { REG_3, REG_1, 0, REG_1 }, .bits = { 5, 16, 0, 25 }, },
            { .regs = { REG_3, 0, 0, REG_1 }, .bits = { 5, 0, 0, 25 }, },
            { .regs = { REG_3, 0, 0, REG_1 }, .bits = { 5, 0, 0, 25 }, },
            { .regs = { REG_3, 0, REG_2, REG_1 }, .bits = { 5, 0, 18, 25 }, },
            { .regs = { REG_3, 0, REG_2, REG_1 }, .bits = { 5, 0, 17, 25 }, },
            { .regs = { REG_3, REG_1, REG_2, REG_2, REG_1 }, .bits = { 4, 15, 16, 7, 22 }, },
            { .regs = { REG_3, REG_1, REG_2, REG_2, REG_1 }, .bits = { 3, 14, 15, 6, 21 }, },
            { .regs = { REG_1, REG_1, REG_2 }, .bits = { 20, 13, 14 }, },
            { .regs = { REG_1, REG_1, REG_2, 0, REG_1 }, .bits = { 18, 12, 13, 0, 19 }, },
            { .regs = { REG_2, REG_1, 0, REG_1 }, .bits = { 12, 11, 0, 9 }, },
            { .regs = { REG_2, REG_1, REG_2 }, .bits = { 11, 10, 5 }, },
        },
    },
    // GPIOH Block
    {
        .mux = {
            { .regs = { REG_6 }, .bits = { 31 }, },
            { .regs = { REG_6 }, .bits = { 30 }, },
            { .regs = { REG_6 }, .bits = { 29 }, },
            {},
            { .regs = { REG_6, REG_6 }, .bits = { 28, 27 }, },
            {},
            { .regs = { 0, 0, REG_6, 0, REG_6 }, .bits = { 0, 0, 26, 0, 20 }, },
            { .regs = { 0, 0, REG_6, REG_6, REG_6 }, .bits = { 0, 0, 25, 22, 19 }, },
            { .regs = { 0, 0, REG_6, REG_6, REG_6 }, .bits = { 0, 0, 24, 21, 18 }, },
            { .regs = { 0, 0, REG_6, 0, REG_6 }, .bits = { 0, 0, 23, 0, 17 }, },
        },
    },
    // GPIOBOOT Block
    {
        .mux = {
            { .regs = { REG_7 }, .bits = { 31 }, },
            { .regs = { REG_7 }, .bits = { 31 }, },
            { .regs = { REG_7 }, .bits = { 31 }, },
            { .regs = { REG_7 }, .bits = { 31 }, },
            { .regs = { REG_7 }, .bits = { 31 }, },
            { .regs = { REG_7 }, .bits = { 31 }, },
            { .regs = { REG_7 }, .bits = { 31 }, },
            { .regs = { REG_7 }, .bits = { 31 }, },
            { .regs = { REG_7, REG_7 }, .bits = { 30, 7 }, },
            { .regs = { 0, REG_7 }, .bits = { 0, 6 }, },
            { .regs = { REG_7, REG_7 }, .bits = { 29, 5 }, },
            { .regs = { 0, REG_7, REG_7 }, .bits = { 0, 4, 13 }, },
            { .regs = { 0, REG_7, REG_7 }, .bits = { 0, 3, 12 }, },
            { .regs = { 0, REG_7, REG_7 }, .bits = { 0, 2, 11 }, },
            { .regs = { 0, REG_7 }, .bits = { 0, 1 }, },
            { .regs = { REG_7, REG_7, REG_7 }, .bits = { 28, 0, 10 }, },
        },
    },
    // GPIOCARD Block
    {
        .mux = {
            { .regs = { REG_6 }, .bits = { 5 }, },
            { .regs = { REG_6 }, .bits = { 4 }, },
            { .regs = { REG_6 }, .bits = { 3 }, },
            { .regs = { REG_6 }, .bits = { 2 }, },
            { .regs = { REG_6, REG_6, REG_6 }, .bits = { 1, 9, 11 }, },
            { .regs = { REG_6, REG_6, REG_6 }, .bits = { 0, 8, 10 }, },
        },
    },
    // GPIOCLK Block
    {
        .mux = {
           { .regs = { 0, 0, REG_8 }, .bits = { 0, 0, 31 }, },
           { .regs = { 0, REG_8, REG_8 }, .bits = { 0, 30, 29 }, },
        },
    },
    // GPIOZ Block
    {
        .mux = {
            { .regs = { REG_4, REG_3, REG_3, REG_3 }, .bits = { 23, 14, 31, 19 }, },
            { .regs = { REG_4, REG_3, REG_3, REG_3 }, .bits = { 22, 13, 30, 18 }, },
            { .regs = { REG_4, 0, REG_3, REG_3 }, .bits = { 21, 0, 29, 17 }, },
            { .regs = { REG_4, REG_3, REG_3, REG_3 }, .bits = { 20, 12, 28, 16 }, },
            { .regs = { REG_4, REG_3, REG_3, REG_3 }, .bits = { 19, 11, 27, 15 }, },
            { .regs = { REG_4, REG_3, REG_3 }, .bits = { 18, 11, 26 }, },
            { .regs = { REG_4, REG_3, REG_3, REG_4 }, .bits = { 17, 11, 25, 9 }, },
            { .regs = { REG_4, REG_3, REG_3, REG_4 }, .bits = { 16, 11, 24, 8 }, },
            { .regs = { REG_4, REG_3, 0, REG_3, REG_4 }, .bits = { 15, 11, 0, 23, 7 }, },
            { .regs = { REG_4, REG_3, 0, REG_3, REG_4 }, .bits = { 14, 11, 0, 22, 6 }, },
            { .regs = { REG_4, REG_3, 0, 0, REG_4 }, .bits = { 13, 11, 0, 0, 5 }, },
            { .regs = { REG_4, REG_3, 0, 0, REG_4 }, .bits = { 12, 11, 0, 0, 4 }, },
            { .regs = { REG_4, 0, 0, 0, REG_4 }, .bits = { 11, 0, 0, 0, 3 }, },
            { .regs = { REG_4, 0, 0, 0, REG_4 }, .bits = { 10, 0, 0, 0, 2 }, },
            { .regs = { REG_4, REG_3 }, .bits = { 25, 21 }, },
            { .regs = { REG_4, 0, REG_3 }, .bits = { 24, 0, 20 }, },
        },
    },
    // GPIOAO Block
    {
        .mux = {
            { .regs = { AO_REG, AO_REG }, .bits = { 12, 26 }, },
            { .regs = { AO_REG, AO_REG }, .bits = { 11, 25 }, },
            { .regs = { AO_REG, AO_REG }, .bits = { 10, 8 }, },
            { .regs = { AO_REG, AO_REG, 0, AO_REG }, .bits = { 9, 7, 0, 22 }, },
            { .regs = { AO_REG, AO_REG, AO_REG }, .bits = { 24, 6, 2 }, },
            { .regs = { AO_REG, AO_REG, AO_REG }, .bits = { 23, 5, 1 }, },
            { .regs = { 0, 0, AO_REG, AO_REG }, .bits = { 0, 0, 16, 18 }, },
            { .regs = { AO_REG, AO_REG }, .bits = { 0, 21 }, },
            { .regs = { AO_REG, AO_REG, AO_REG_2, AO_REG }, .bits = { 15, 14, 0, 17 }, },
            { .regs = { AO_REG, AO_REG, AO_REG_2, AO_REG }, .bits = { 31, 4, 1, 3 }, },
        },
    },
};

static_assert(countof(s912_gpio_blocks) == countof(s912_pinmux_blocks), "");

#undef REG_0
#undef REG_1
#undef REG_2
#undef REG_3
#undef REG_4
#undef REG_5
#undef REG_6
#undef REG_7
#undef REG_8
#undef REG_9
#undef AO_REG
#undef AO_REG_2

}  // namespace gpio
