![Linus Walleij](/assets/img/avatar_default.png)
The Snowball gyro and magnetometer DRDY (data ready) lines are used as interrupt triggers by the IIO subsystem, triggering new data retrieveal on edges on this signal. Thus assign them as the primary interrupt in the device tree. The "other interrupt" coming out of the sensors is for alarms and similar complex events, the DRDY is for periodic measures, which is what we want. After this the generic_buffer tool from IIO tools gives a nice stream of readings after enabling the desired channels in sysfs. Cc: Denis Ciocca <denis.ciocca@st.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
580 lines
13 KiB
Plaintext
580 lines
13 KiB
Plaintext
/*
|
|
* Copyright 2011 ST-Ericsson AB
|
|
*
|
|
* The code contained herein is licensed under the GNU General Public
|
|
* License. You may obtain a copy of the GNU General Public License
|
|
* Version 2 or later at the following locations:
|
|
*
|
|
* http://www.opensource.org/licenses/gpl-license.html
|
|
* http://www.gnu.org/copyleft/gpl.html
|
|
*/
|
|
|
|
/dts-v1/;
|
|
#include "ste-dbx5x0.dtsi"
|
|
#include "ste-href-ab8500.dtsi"
|
|
#include "ste-href-family-pinctrl.dtsi"
|
|
|
|
/ {
|
|
model = "Calao Systems Snowball platform with device tree";
|
|
compatible = "calaosystems,snowball-a9500", "st-ericsson,u9500";
|
|
|
|
/* This stablilizes the serial port enumeration */
|
|
aliases {
|
|
serial0 = &ux500_serial0;
|
|
serial1 = &ux500_serial1;
|
|
serial2 = &ux500_serial2;
|
|
};
|
|
|
|
memory {
|
|
reg = <0x00000000 0x20000000>;
|
|
};
|
|
|
|
en_3v3_reg: en_3v3 {
|
|
compatible = "regulator-fixed";
|
|
regulator-name = "en-3v3-fixed-supply";
|
|
regulator-min-microvolt = <3300000>;
|
|
regulator-max-microvolt = <3300000>;
|
|
/* AB8500 GPIOs start from 1 - offset 25 is GPIO26. */
|
|
gpio = <&ab8500_gpio 25 0x4>;
|
|
startup-delay-us = <5000>;
|
|
enable-active-high;
|
|
};
|
|
|
|
gpio_keys {
|
|
compatible = "gpio-keys";
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
button@1 {
|
|
debounce_interval = <50>;
|
|
wakeup-source;
|
|
linux,code = <2>;
|
|
label = "userpb";
|
|
gpios = <&gpio1 0 0x4>;
|
|
};
|
|
button@2 {
|
|
debounce_interval = <50>;
|
|
wakeup-source;
|
|
linux,code = <3>;
|
|
label = "extkb1";
|
|
gpios = <&gpio4 23 0x4>;
|
|
};
|
|
button@3 {
|
|
debounce_interval = <50>;
|
|
wakeup-source;
|
|
linux,code = <4>;
|
|
label = "extkb2";
|
|
gpios = <&gpio4 24 0x4>;
|
|
};
|
|
button@4 {
|
|
debounce_interval = <50>;
|
|
wakeup-source;
|
|
linux,code = <5>;
|
|
label = "extkb3";
|
|
gpios = <&gpio5 1 0x4>;
|
|
};
|
|
button@5 {
|
|
debounce_interval = <50>;
|
|
wakeup-source;
|
|
linux,code = <6>;
|
|
label = "extkb4";
|
|
gpios = <&gpio5 2 0x4>;
|
|
};
|
|
};
|
|
|
|
leds {
|
|
compatible = "gpio-leds";
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&gpioled_snowball_mode>;
|
|
used-led {
|
|
label = "user_led";
|
|
gpios = <&gpio4 14 0x4>;
|
|
default-state = "on";
|
|
linux,default-trigger = "heartbeat";
|
|
};
|
|
};
|
|
|
|
soc {
|
|
usb_per5@a03e0000 {
|
|
pinctrl-names = "default", "sleep";
|
|
pinctrl-0 = <&musb_default_mode>;
|
|
pinctrl-1 = <&musb_sleep_mode>;
|
|
};
|
|
|
|
sound {
|
|
compatible = "stericsson,snd-soc-mop500";
|
|
|
|
stericsson,cpu-dai = <&msp1 &msp3>;
|
|
stericsson,audio-codec = <&codec>;
|
|
};
|
|
|
|
msp0: msp@80123000 {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&msp0_default_mode>;
|
|
status = "okay";
|
|
};
|
|
|
|
msp1: msp@80124000 {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&msp1_default_mode>;
|
|
status = "okay";
|
|
};
|
|
|
|
msp2: msp@80117000 {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&msp2_default_mode>;
|
|
};
|
|
|
|
msp3: msp@80125000 {
|
|
status = "okay";
|
|
};
|
|
|
|
external-bus@50000000 {
|
|
status = "okay";
|
|
|
|
ethernet@0 {
|
|
compatible = "smsc,lan9115";
|
|
reg = <0 0x10000>;
|
|
interrupts = <12 IRQ_TYPE_EDGE_RISING>;
|
|
interrupt-parent = <&gpio4>;
|
|
vdd33a-supply = <&en_3v3_reg>;
|
|
vddvario-supply = <&db8500_vape_reg>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <ð_snowball_mode>;
|
|
|
|
reg-shift = <1>;
|
|
reg-io-width = <2>;
|
|
smsc,force-internal-phy;
|
|
smsc,irq-active-high;
|
|
smsc,irq-push-pull;
|
|
|
|
clocks = <&prcc_pclk 3 0>;
|
|
};
|
|
};
|
|
|
|
vmmci: regulator-gpio {
|
|
compatible = "regulator-gpio";
|
|
|
|
gpios = <&gpio7 4 0x4>;
|
|
enable-gpio = <&gpio6 25 0x4>;
|
|
|
|
regulator-min-microvolt = <1800000>;
|
|
regulator-max-microvolt = <2900000>;
|
|
regulator-name = "mmci-reg";
|
|
regulator-type = "voltage";
|
|
|
|
startup-delay-us = <100>;
|
|
enable-active-high;
|
|
|
|
states = <1800000 0x1
|
|
2900000 0x0>;
|
|
};
|
|
|
|
// External Micro SD slot
|
|
sdi0_per1@80126000 {
|
|
arm,primecell-periphid = <0x10480180>;
|
|
max-frequency = <100000000>;
|
|
bus-width = <4>;
|
|
cap-mmc-highspeed;
|
|
vmmc-supply = <&ab8500_ldo_aux3_reg>;
|
|
vqmmc-supply = <&vmmci>;
|
|
pinctrl-names = "default", "sleep";
|
|
pinctrl-0 = <&sdi0_default_mode>;
|
|
pinctrl-1 = <&sdi0_sleep_mode>;
|
|
|
|
cd-gpios = <&gpio6 26 0x4>; // 218
|
|
cd-inverted;
|
|
|
|
status = "okay";
|
|
};
|
|
|
|
// WLAN SDIO channel
|
|
sdi1_per2@80118000 {
|
|
arm,primecell-periphid = <0x10480180>;
|
|
max-frequency = <100000000>;
|
|
bus-width = <4>;
|
|
pinctrl-names = "default", "sleep";
|
|
pinctrl-0 = <&sdi1_default_mode>;
|
|
pinctrl-1 = <&sdi1_sleep_mode>;
|
|
|
|
status = "okay";
|
|
};
|
|
|
|
// Unused PoP eMMC - register and put it to sleep by default */
|
|
sdi2_per3@80005000 {
|
|
arm,primecell-periphid = <0x10480180>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&sdi2_sleep_mode>;
|
|
|
|
status = "okay";
|
|
};
|
|
|
|
// On-board eMMC
|
|
sdi4_per2@80114000 {
|
|
arm,primecell-periphid = <0x10480180>;
|
|
max-frequency = <100000000>;
|
|
bus-width = <8>;
|
|
cap-mmc-highspeed;
|
|
vmmc-supply = <&ab8500_ldo_aux2_reg>;
|
|
pinctrl-names = "default", "sleep";
|
|
pinctrl-0 = <&sdi4_default_mode>;
|
|
pinctrl-1 = <&sdi4_sleep_mode>;
|
|
|
|
status = "okay";
|
|
};
|
|
|
|
uart@80120000 {
|
|
pinctrl-names = "default", "sleep";
|
|
pinctrl-0 = <&uart0_default_mode>;
|
|
pinctrl-1 = <&uart0_sleep_mode>;
|
|
status = "okay";
|
|
};
|
|
|
|
/* This UART is unused and thus left disabled */
|
|
uart@80121000 {
|
|
pinctrl-names = "default", "sleep";
|
|
pinctrl-0 = <&uart1_default_mode>;
|
|
pinctrl-1 = <&uart1_sleep_mode>;
|
|
};
|
|
|
|
uart@80007000 {
|
|
pinctrl-names = "default", "sleep";
|
|
pinctrl-0 = <&uart2_default_mode>;
|
|
pinctrl-1 = <&uart2_sleep_mode>;
|
|
status = "okay";
|
|
};
|
|
|
|
i2c@80004000 {
|
|
pinctrl-names = "default","sleep";
|
|
pinctrl-0 = <&i2c0_default_mode>;
|
|
pinctrl-1 = <&i2c0_sleep_mode>;
|
|
};
|
|
|
|
i2c@80122000 {
|
|
pinctrl-names = "default","sleep";
|
|
pinctrl-0 = <&i2c1_default_mode>;
|
|
pinctrl-1 = <&i2c1_sleep_mode>;
|
|
};
|
|
|
|
i2c@80128000 {
|
|
pinctrl-names = "default","sleep";
|
|
pinctrl-0 = <&i2c2_default_mode>;
|
|
pinctrl-1 = <&i2c2_sleep_mode>;
|
|
lsm303dlh@18 {
|
|
/* Accelerometer */
|
|
compatible = "st,lsm303dlh-accel";
|
|
st,drdy-int-pin = <1>;
|
|
reg = <0x18>;
|
|
vdd-supply = <&ab8500_ldo_aux1_reg>;
|
|
vddio-supply = <&db8500_vsmps2_reg>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&accel_snowball_mode>;
|
|
interrupt-parent = <&gpio5>;
|
|
interrupts = <3 IRQ_TYPE_EDGE_RISING>, /* INT1 */
|
|
<4 IRQ_TYPE_EDGE_RISING>; /* INT2 */
|
|
};
|
|
lsm303dlh@1e {
|
|
/* Magnetometer */
|
|
compatible = "st,lsm303dlh-magn";
|
|
reg = <0x1e>;
|
|
vdd-supply = <&ab8500_ldo_aux1_reg>;
|
|
vddio-supply = <&db8500_vsmps2_reg>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&magneto_snowball_mode>;
|
|
interrupt-parent = <&gpio5>;
|
|
interrupts = <5 IRQ_TYPE_EDGE_RISING>; /* DRDY line */
|
|
};
|
|
l3g4200d@68 {
|
|
/* Gyroscope */
|
|
compatible = "st,l3g4200d-gyro";
|
|
st,drdy-int-pin = <2>;
|
|
reg = <0x68>;
|
|
vdd-supply = <&ab8500_ldo_aux1_reg>;
|
|
vddio-supply = <&db8500_vsmps2_reg>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&gyro_snowball_mode>;
|
|
interrupt-parent = <&gpio5>;
|
|
interrupts = <6 IRQ_TYPE_EDGE_RISING>, /* DRDY line */
|
|
<9 IRQ_TYPE_EDGE_RISING>; /* INT1 */
|
|
};
|
|
lsp001wm@5c {
|
|
/* Barometer/pressure sensor */
|
|
compatible = "st,lps001wp-press";
|
|
reg = <0x5c>;
|
|
vdd-supply = <&ab8500_ldo_aux1_reg>;
|
|
vddio-supply = <&db8500_vsmps2_reg>;
|
|
};
|
|
};
|
|
|
|
i2c@80110000 {
|
|
pinctrl-names = "default","sleep";
|
|
pinctrl-0 = <&i2c3_default_mode>;
|
|
pinctrl-1 = <&i2c3_sleep_mode>;
|
|
};
|
|
|
|
ssp@80002000 {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&ssp0_snowball_mode>;
|
|
};
|
|
|
|
cpufreq-cooling {
|
|
status = "okay";
|
|
};
|
|
|
|
prcmu@80157000 {
|
|
cpufreq {
|
|
status = "okay";
|
|
};
|
|
|
|
thermal@801573c0 {
|
|
num-trips = <4>;
|
|
|
|
trip0-temp = <70000>;
|
|
trip0-type = "active";
|
|
trip0-cdev-num = <1>;
|
|
trip0-cdev-name0 = "thermal-cpufreq-0";
|
|
|
|
trip1-temp = <75000>;
|
|
trip1-type = "active";
|
|
trip1-cdev-num = <1>;
|
|
trip1-cdev-name0 = "thermal-cpufreq-0";
|
|
|
|
trip2-temp = <80000>;
|
|
trip2-type = "active";
|
|
trip2-cdev-num = <1>;
|
|
trip2-cdev-name0 = "thermal-cpufreq-0";
|
|
|
|
trip3-temp = <85000>;
|
|
trip3-type = "critical";
|
|
trip3-cdev-num = <0>;
|
|
|
|
status = "okay";
|
|
};
|
|
|
|
ab8500 {
|
|
ab8500-gpio {
|
|
compatible = "stericsson,ab8500-gpio";
|
|
};
|
|
|
|
ext_regulators: ab8500-ext-regulators {
|
|
ab8500_ext1_reg: ab8500_ext1 {
|
|
regulator-name = "ab8500-ext-supply1";
|
|
};
|
|
|
|
ab8500_ext2_reg_reg: ab8500_ext2 {
|
|
regulator-name = "ab8500-ext-supply2";
|
|
};
|
|
|
|
ab8500_ext3_reg_reg: ab8500_ext3 {
|
|
regulator-name = "ab8500-ext-supply3";
|
|
};
|
|
};
|
|
|
|
ab8500-regulators {
|
|
ab8500_ldo_aux1_reg: ab8500_ldo_aux1 {
|
|
regulator-name = "V-DISPLAY";
|
|
};
|
|
|
|
ab8500_ldo_aux2_reg: ab8500_ldo_aux2 {
|
|
regulator-name = "V-eMMC1";
|
|
};
|
|
|
|
ab8500_ldo_aux3_reg: ab8500_ldo_aux3 {
|
|
regulator-name = "V-MMC-SD";
|
|
};
|
|
|
|
ab8500_ldo_intcore_reg: ab8500_ldo_intcore {
|
|
regulator-name = "V-INTCORE";
|
|
};
|
|
|
|
ab8500_ldo_tvout_reg: ab8500_ldo_tvout {
|
|
regulator-name = "V-TVOUT";
|
|
};
|
|
|
|
ab8500_ldo_usb_reg: ab8500_ldo_usb {
|
|
regulator-name = "dummy";
|
|
};
|
|
|
|
ab8500_ldo_audio_reg: ab8500_ldo_audio {
|
|
regulator-name = "V-AUD";
|
|
};
|
|
|
|
ab8500_ldo_anamic1_reg: ab8500_ldo_anamic1 {
|
|
regulator-name = "V-AMIC1";
|
|
};
|
|
|
|
ab8500_ldo_anamic2_reg: ab8500_ldo_anamic2 {
|
|
regulator-name = "V-AMIC2";
|
|
};
|
|
|
|
ab8500_ldo_dmic_reg: ab8500_ldo_dmic {
|
|
regulator-name = "V-DMIC";
|
|
};
|
|
|
|
ab8500_ldo_ana_reg: ab8500_ldo_ana {
|
|
regulator-name = "V-CSI/DSI";
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
pinctrl {
|
|
/*
|
|
* Set this up using hogs, as time goes by and as seems fit, these
|
|
* can be moved over to being controlled by respective device.
|
|
*/
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&gbf_snowball_mode>,
|
|
<&wlan_snowball_mode>;
|
|
|
|
ethernet {
|
|
/*
|
|
* Mux in "SM" which is used for the
|
|
* SMSC911x Ethernet adapter
|
|
*/
|
|
eth_snowball_mode: eth_snowball {
|
|
snowball_mux {
|
|
function = "sm";
|
|
groups = "sm_b_1";
|
|
};
|
|
/* LAN IRQ pin */
|
|
snowball_cfg1 {
|
|
pins = "GPIO140_B11";
|
|
ste,config = <&in_nopull>;
|
|
};
|
|
/* LAN reset pin */
|
|
snowball_cfg2 {
|
|
pins = "GPIO141_C12";
|
|
ste,config = <&gpio_out_hi>;
|
|
};
|
|
|
|
};
|
|
};
|
|
sdi0 {
|
|
sdi0_default_mode: sdi0_default {
|
|
snowball_mux {
|
|
function = "mc0";
|
|
groups = "mc0dat31dir_a_1";
|
|
};
|
|
snowball_cfg1 {
|
|
pins = "GPIO21_AB3"; /* DAT31DIR */
|
|
ste,config = <&out_hi>;
|
|
};
|
|
/* SD card detect GPIO pin, extend default state */
|
|
snowball_cfg2 {
|
|
pins = "GPIO218_AH11";
|
|
ste,config = <&gpio_in_pu>;
|
|
};
|
|
/* VMMCI level-shifter enable */
|
|
snowball_cfg3 {
|
|
pins = "GPIO217_AH12";
|
|
ste,config = <&gpio_out_lo>;
|
|
};
|
|
/* VMMCI level-shifter voltage select */
|
|
snowball_cfg4 {
|
|
pins = "GPIO228_AJ6";
|
|
ste,config = <&gpio_out_hi>;
|
|
};
|
|
};
|
|
};
|
|
ssp0 {
|
|
ssp0_snowball_mode: ssp0_snowball_default {
|
|
snowball_mux {
|
|
function = "ssp0";
|
|
groups = "ssp0_a_1";
|
|
};
|
|
snowball_cfg1 {
|
|
pins = "GPIO144_B13"; /* FRM */
|
|
ste,config = <&gpio_out_hi>;
|
|
};
|
|
snowball_cfg2 {
|
|
pins = "GPIO145_C13"; /* RXD */
|
|
ste,config = <&in_pd>;
|
|
};
|
|
snowball_cfg3 {
|
|
pins =
|
|
"GPIO146_D13", /* TXD */
|
|
"GPIO143_D12"; /* CLK */
|
|
ste,config = <&out_lo>;
|
|
};
|
|
|
|
};
|
|
};
|
|
gpio_led {
|
|
gpioled_snowball_mode: gpioled_default {
|
|
snowball_cfg1 {
|
|
pins = "GPIO142_C11";
|
|
ste,config = <&gpio_out_hi>;
|
|
};
|
|
|
|
};
|
|
};
|
|
accelerometer {
|
|
accel_snowball_mode: accel_snowball {
|
|
/* Accelerometer lines */
|
|
snowball_cfg1 {
|
|
pins =
|
|
"GPIO163_C20", /* ACCEL_IRQ1 */
|
|
"GPIO164_B21"; /* ACCEL_IRQ2 */
|
|
ste,config = <&gpio_in_pu>;
|
|
};
|
|
};
|
|
};
|
|
gyro {
|
|
gyro_snowball_mode: gyro_snowball {
|
|
snowball_cfg1 {
|
|
pins =
|
|
"GPIO166_A22", /* DRDY */
|
|
"GPIO169_D22"; /* INT */
|
|
ste,config = <&gpio_in_pu>;
|
|
};
|
|
};
|
|
};
|
|
magnetometer {
|
|
magneto_snowball_mode: magneto_snowball {
|
|
snowball_cfg1 {
|
|
pins = "GPIO165_C21"; /* MAG_DRDY */
|
|
ste,config = <&gpio_in_pu>;
|
|
};
|
|
};
|
|
};
|
|
gbf {
|
|
gbf_snowball_mode: gbf_snowball {
|
|
/*
|
|
* GBF (GPS, Bluetooth, FM-radio) interface,
|
|
* pull low to reset state
|
|
*/
|
|
snowball_cfg1 {
|
|
pins = "GPIO171_D23"; /* GBF_ENA_RESET */
|
|
ste,config = <&gpio_out_lo>;
|
|
};
|
|
};
|
|
};
|
|
wlan {
|
|
wlan_snowball_mode: wlan_snowball {
|
|
/*
|
|
* Activate this mode with the WLAN chip.
|
|
* These are plain GPIO pins used by WLAN
|
|
*/
|
|
snowball_cfg1 {
|
|
pins =
|
|
"GPIO161_D21", /* WLAN_PMU_EN */
|
|
"GPIO215_AH13"; /* WLAN_ENA */
|
|
ste,config = <&gpio_out_lo>;
|
|
};
|
|
snowball_cfg2 {
|
|
pins = "GPIO216_AG12"; /* WLAN_IRQ */
|
|
ste,config = <&gpio_in_pu>;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
mcde@a0350000 {
|
|
pinctrl-names = "default", "sleep";
|
|
pinctrl-0 = <&lcd_default_mode>;
|
|
pinctrl-1 = <&lcd_sleep_mode>;
|
|
};
|
|
};
|
|
};
|