blob: 6e1fbee8e42db75223342c33145167160932ef43 [file] [log] [blame]
/*
* Copyright (C) 2016 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <base/logging.h>
#include <hardware/hardware.h>
#include <hardware/peripheral_io.h>
static int register_device(const peripheral_io_module_t* dev __unused,
const peripheral_registration_cb_t* callbacks) {
LOG(INFO) << "register_device creatorci41";
// If a jumper (JPx) is mentioned in the comment, it must be set correctly to
// route the SOC pin to the output connector
// Register GPIO Pins
callbacks->register_gpio_sysfs("MFIO_22", 22); // RPi[7] (JP1) / MIK1 AN (JP1)
callbacks->register_gpio_sysfs("MFIO_14", 14); // RPi[8] (JP7) / MIK1 RX (JP7)
callbacks->register_gpio_sysfs("MFIO_75", 75); // RPi[10] (JP8) / MIK1 TX (JP8)
callbacks->register_gpio_sysfs("MFIO_25", 25); // RPi[11] (JP9) / MIK2 AN (JP9)
callbacks->register_gpio_sysfs("MFIO_23", 23); // RPi[13] / MIK1 RST
callbacks->register_gpio_sysfs("MFIO_24", 24); // RPi[15] / MIK2 INT (JP11)
callbacks->register_gpio_sysfs("MFIO_88", 88); // RPi[19] (JP4) / MIK2 MOSI (JP4)
callbacks->register_gpio_sysfs("MFIO_89", 89); // RPi[21] (JP5) / MIK2 MISO (JP5)
callbacks->register_gpio_sysfs("MFIO_21", 21); // RPi[22] (JP3) / MIK1 INT (JP3)
callbacks->register_gpio_sysfs("MFIO_31", 31); // RPi[23] (JP6) / MIK1 CS (JP6)
callbacks->register_gpio_sysfs("MFIO_28", 28); // RPi[24] (JP2) / MIK1 CS (JP2)
callbacks->register_gpio_sysfs("MFIO_27", 27); // RPi[29] / MIK2 RST
callbacks->register_gpio_sysfs("MFIO_72", 72); // RPi[31]
callbacks->register_gpio_sysfs("MFIO_80", 80); // RPi[33]
callbacks->register_gpio_sysfs("MFIO_81", 81); // RPi[35]
callbacks->register_gpio_sysfs("MFIO_82", 82); // RPi[36]
callbacks->register_gpio_sysfs("MFIO_83", 83); // RPi[37]
callbacks->register_gpio_sysfs("MFIO_84", 84); // RPi[38]
callbacks->register_gpio_sysfs("MFIO_85", 85); // RPi[40]
callbacks->register_gpio_sysfs("MFIO_73", 73); // MIK1 PWM
callbacks->register_gpio_sysfs("MFIO_74", 74); // MIK2 PWM
// Register the SPI bus
// For RPi and MIK2 the MOSI (JP4), MISO (JP5) and MCLK (JP3) outputs
// must be correctly configured in addition to the chip selects mentioned below
callbacks->register_spi_dev_bus("SPI0", 0, 2); // RPi[24] (JP2) / MIK1 CS (JP2)
callbacks->register_spi_dev_bus("SPI1", 1, 3); // RPi[26] / MIK2 CS (JP10)
// Register the I2C bus
callbacks->register_i2c_dev_bus("I2C0", 0); // RPi[3,5] / MIK2 SCL/SDA
callbacks->register_i2c_dev_bus("I2C1", 1); // RPi[12,16] / MIK1 SCL/SDA
// Register sysfs leds
callbacks->register_led_sysfs("LED1", "marduk:red:user1");
callbacks->register_led_sysfs("LED2", "marduk:red:user2");
callbacks->register_led_sysfs("LED3", "marduk:red:user3");
callbacks->register_led_sysfs("LED4", "marduk:red:user4");
callbacks->register_led_sysfs("LED5", "marduk:red:user5");
callbacks->register_led_sysfs("LED6", "marduk:red:user6");
callbacks->register_led_sysfs("LED7", "marduk:red:user7");
return 0;
}
static struct hw_module_methods_t hal_module_methods = {};
peripheral_io_module_t HAL_MODULE_INFO_SYM = {
.common =
{
.tag = HARDWARE_MODULE_TAG,
.module_api_version = 0,
.hal_api_version = HARDWARE_HAL_API_VERSION,
.id = PERIPHERAL_IO_HARDWARE_MODULE_ID,
.name = "periperal IO HAL",
.author = "The Android Open Source Project",
.methods = &hal_module_methods,
},
.register_devices = register_device,
};