mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-18 02:38:56 +00:00
144cb06083
There are two PCB designs in the wild which use the opposite signaling for SD card detection. This makes U-Boot working in one case and failing in the other. Quirk this out by disconnecting SD card detection pin from the PCB by switching it to mode 3. In the disconnected state the read value is always the same and inverted to what we are expecting in the code. BugLink: https://github.com/edison-fw/meta-intel-edison/issues/136 Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
198 lines
3.6 KiB
Text
198 lines
3.6 KiB
Text
// SPDX-License-Identifier: GPL-2.0+
|
|
/*
|
|
* Copyright (c) 2017 Intel Corporation
|
|
*/
|
|
|
|
/dts-v1/;
|
|
|
|
#include <dt-bindings/gpio/x86-gpio.h>
|
|
#include <dt-bindings/interrupt-router/intel-irq.h>
|
|
|
|
/include/ "skeleton.dtsi"
|
|
/include/ "rtc.dtsi"
|
|
|
|
#include "tsc_timer.dtsi"
|
|
#include "smbios.dtsi"
|
|
|
|
/ {
|
|
model = "Intel Edison";
|
|
compatible = "intel,edison", "intel,tangier";
|
|
|
|
aliases {
|
|
serial0 = &serial0;
|
|
serial1 = &serial1;
|
|
serial2 = &serial2;
|
|
};
|
|
|
|
binman: binman {
|
|
multiple-images;
|
|
};
|
|
|
|
chosen {
|
|
stdout-path = &serial2;
|
|
};
|
|
|
|
cpus {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
cpu@0 {
|
|
device_type = "cpu";
|
|
compatible = "cpu-x86";
|
|
reg = <0>;
|
|
intel,apic-id = <0>;
|
|
};
|
|
|
|
cpu@1 {
|
|
device_type = "cpu";
|
|
compatible = "cpu-x86";
|
|
reg = <1>;
|
|
intel,apic-id = <2>;
|
|
};
|
|
};
|
|
|
|
pci {
|
|
compatible = "pci-x86";
|
|
#address-cells = <3>;
|
|
#size-cells = <2>;
|
|
u-boot,dm-pre-reloc;
|
|
ranges = <0x02000000 0x0 0x80000000 0x80000000 0 0x40000000
|
|
0x42000000 0x0 0xc0000000 0xc0000000 0 0x20000000
|
|
0x01000000 0x0 0x2000 0x2000 0 0xe000>;
|
|
};
|
|
|
|
serial0: serial@ff010080 {
|
|
compatible = "intel,mid-uart";
|
|
reg = <0xff010080 0x100>;
|
|
reg-shift = <0>;
|
|
clock-frequency = <29491200>;
|
|
current-speed = <115200>;
|
|
};
|
|
|
|
serial1: serial@ff010100 {
|
|
compatible = "intel,mid-uart";
|
|
reg = <0xff010100 0x100>;
|
|
reg-shift = <0>;
|
|
clock-frequency = <29491200>;
|
|
current-speed = <115200>;
|
|
};
|
|
|
|
serial2: serial@ff010180 {
|
|
compatible = "intel,mid-uart";
|
|
reg = <0xff010180 0x100>;
|
|
reg-shift = <0>;
|
|
clock-frequency = <29491200>;
|
|
current-speed = <115200>;
|
|
};
|
|
|
|
emmc: mmc@ff3fc000 {
|
|
compatible = "intel,sdhci-tangier";
|
|
reg = <0xff3fc000 0x1000>;
|
|
non-removable;
|
|
};
|
|
|
|
sdcard: mmc@ff3fa000 {
|
|
compatible = "intel,sdhci-tangier";
|
|
reg = <0xff3fa000 0x1000>;
|
|
/*
|
|
* In the disconnected state of the SD Card Detection pin
|
|
* the read value is always the same and inverted to what
|
|
* we are expecting in the code.
|
|
*/
|
|
cd-inverted;
|
|
};
|
|
|
|
pmu: power@ff00b000 {
|
|
compatible = "intel,pmu-mid";
|
|
reg = <0xff00b000 0x1000>;
|
|
};
|
|
|
|
scu: ipc@ff009000 {
|
|
compatible = "intel,scu-ipc";
|
|
reg = <0xff009000 0x1000>;
|
|
};
|
|
|
|
usb: usb@f9100000 {
|
|
compatible = "intel,tangier-dwc3";
|
|
#address-cells = <1>;
|
|
#size-cells = <1>;
|
|
|
|
dwc3: dwc3 {
|
|
reg = <0xf9100000 0x100000>;
|
|
maximum-speed = "high-speed";
|
|
dr_mode = "peripheral";
|
|
};
|
|
};
|
|
|
|
watchdog: wdt@0 {
|
|
compatible = "intel,tangier-wdt";
|
|
};
|
|
|
|
reset {
|
|
compatible = "intel,reset-tangier";
|
|
u-boot,dm-pre-reloc;
|
|
};
|
|
|
|
pinctrl {
|
|
compatible = "intel,pinctrl-tangier";
|
|
reg = <0xff0c0000 0x8000>;
|
|
|
|
/*
|
|
* Disconnect SD card detection pin, so it won't affect
|
|
* the reality on two different PCB designs where it's
|
|
* using the opposite signaling: Edison/Arduino uses
|
|
* Active Low, while SparkFun went with Active High.
|
|
*/
|
|
sd_cd@0 {
|
|
pad-offset = <37>;
|
|
mode-func = <3>;
|
|
};
|
|
|
|
/*
|
|
* Initial configuration came from the firmware.
|
|
* Which quite likely has been used in the phones, where I2C #8,
|
|
* that is not part of Atom peripheral, is in use.
|
|
* Thus we need to override the leftover.
|
|
*/
|
|
i2c6_scl@0 {
|
|
pad-offset = <111>;
|
|
mode-func = <1>;
|
|
protected;
|
|
};
|
|
i2c6_sda@0 {
|
|
pad-offset = <112>;
|
|
mode-func = <1>;
|
|
protected;
|
|
};
|
|
};
|
|
};
|
|
|
|
&binman {
|
|
u-boot-edison {
|
|
filename = "u-boot-edison.img";
|
|
|
|
/* This is the OSIP */
|
|
blob {
|
|
filename = "edison-osip.dat";
|
|
};
|
|
|
|
u-boot {
|
|
offset = <0x200>;
|
|
};
|
|
|
|
u-boot-env {
|
|
offset = <0x200200>;
|
|
filename = "edison-environment.txt";
|
|
size = <0x10000>;
|
|
fill-byte = [ff];
|
|
};
|
|
|
|
u-boot-env2 {
|
|
type = "u-boot-env";
|
|
offset = <0x500200>;
|
|
filename = "edison-environment.txt";
|
|
size = <0x10000>;
|
|
fill-byte = [ff];
|
|
};
|
|
};
|
|
};
|