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 GPIO9, GPIO10, 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:
-
Checked GPIO Availability:
-
Used
gpiodetect
to list available GPIO chips. -
Used
gpioinfo
to check if the GPIOs are reserved or available.
-
-
Attempted to Export GPIOs:
-
Tried exporting the GPIOs using
sysfs
:echo 9 > /sys/class/gpio/export
-
Received a "Permission denied" or "Invalid argument" error.
-
-
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:
-
Checked I2C Buses:
-
Used
i2cdetect
to scan all available I2C buses:i2cdetect -l i2cdetect -y <bus_number>
-
No devices were detected on any bus.
-
-
Reviewed ACPI Tables:
-
Disassembled the DSDT and found multiple I2C controllers (e.g.,
I2C1
,I2C2
, etc.). -
However, our hardware designer couldn’t confirm which I2C bus corresponds to the physical pins used for the DS1307.
-
-
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
andiasl
for ACPI table extraction and disassembly. -
gpiodetect
,gpioinfo
, andi2cdetect
for GPIO and I2C debugging.
-
What We’ve Tried
-
GPIO:
-
Verified GPIO pins in the schematic and PCB layout.
-
Checked ACPI tables for GPIO controller definitions.
-
-
I2C:
-
Scanned all I2C buses for devices.
-
Reviewed ACPI tables for I2C controller definitions.
-
Request for Help
We’re looking for guidance on:
-
How to properly define and enable GPIO9, GPIO10, and GPIO11 in the ACPI tables.
-
How to identify the correct I2C bus for the DS1307 RTC and add it to the DSDT.
-
Any known issues or best practices for GPIO and I2C configuration on LEC-AL/LEC-Base 2 designs.
- 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