Need Help with GPIO and I2C Configuration on Custom x86 Carrier Board (Based on LEC-AL and LEC-Base 2 Design Guide)


  • Hello everyone,

    We recently designed a custom x86 carrier board based on the LEC-AL and LEC-Base 2 design guides. While the board is functional, we’re facing two key issues related to GPIO and I2C configuration, and we’re hoping to get some guidance from the community.


    Issue 1: GPIO Configuration

    We used GPIO9GPIO10, and GPIO11 (which were marked as free in the LEC-Base 2 design guide) to connect to LEDs. However, we’re unable to export or control these GPIOs in Linux. Here’s what we’ve tried so far:

    1. Checked GPIO Availability:

      • Used gpiodetect to list available GPIO chips.

      • Used gpioinfo to check if the GPIOs are reserved or available.

    2. Attempted to Export GPIOs:

      • Tried exporting the GPIOs using sysfs:

        bash
        Copy
        echo 9 > /sys/class/gpio/export
      • Received a "Permission denied" or "Invalid argument" error.

    3. Verified ACPI Tables:

      • Disassembled the DSDT and checked for GPIO controller definitions.

      • Found that the GPIOs are not explicitly defined in the ACPI tables.

    Questions:

    • How can we properly define and enable GPIO9, GPIO10, and GPIO11 in the ACPI tables?

    • Are there any known issues with these GPIOs on LEC-Base 2 designs?

    • Is there a way to verify if these GPIOs are reserved by the BIOS or firmware?


    Issue 2: I2C Configuration for DS1307 RTC

    We want to use a DS1307 RTC on our board, but we’re unsure which I2C bus to use. The LEC-Base 2 design guide only mentions I2C-GP (General Purpose I2C) without specifying the exact bus. Here’s what we’ve done so far:

    1. Checked I2C Buses:

      • Used i2cdetect to scan all available I2C buses:

        bash
        Copy
        i2cdetect -l
        i2cdetect -y <bus_number>
      • No devices were detected on any bus.

    2. Reviewed ACPI Tables:

      • Disassembled the DSDT and found multiple I2C controllers (e.g., I2C1I2C2, etc.).

      • However, our hardware designer couldn’t confirm which I2C bus corresponds to the physical pins used for the DS1307.

    3. Hardware Design:

      • The DS1307 is connected to what we believe is the I2C-GP bus, but we’re not sure how to map this to the ACPI I2C controllers.

    Questions:

    • How can we determine which I2C bus in the ACPI tables corresponds to the I2C-GP pins on the LEC-Base 2 design?

    • How can we add the DS1307 RTC to the correct I2C bus in the DSDT?

    • Are there any known examples of adding an RTC to a custom x86 board based on LEC-AL/LEC-Base 2?


    Additional Information

    • Board Design: Custom carrier board based on LEC-AL and LEC-Base 2.

    • SoC: Intel Atom E3900

    • Operating System: Linux (latest kernel).

    • Tools Used:

      • acpidump and iasl for ACPI table extraction and disassembly.

      • gpiodetectgpioinfo, and i2cdetect for GPIO and I2C debugging.


    What We’ve Tried

    1. GPIO:

      • Verified GPIO pins in the schematic and PCB layout.

      • Checked ACPI tables for GPIO controller definitions.

    2. I2C:

      • Scanned all I2C buses for devices.

      • Reviewed ACPI tables for I2C controller definitions.


    Request for Help

    We’re looking for guidance on:

    1. How to properly define and enable GPIO9, GPIO10, and GPIO11 in the ACPI tables.

    2. How to identify the correct I2C bus for the DS1307 RTC and add it to the DSDT.

    3. Any known issues or best practices for GPIO and I2C configuration on LEC-AL/LEC-Base 2 designs.

    4. is it possible to share E3900 design guide or datasheet for more clarification ?

    If anyone has experience with these issues or can point us to relevant documentation or examples, we’d greatly appreciate it!


    Thank you in advance for your help!

    Best regards,
    Ali Ghorbanpanah
    MTA Company



Please login to reply this topic!