GSOC hardware interface - mdubinko/gsoc-contrib GitHub Wiki

A good analysis of the GSOC/G90 head-to-body connection and protocol can be found here: https://github.com/zeroping/xiegu-g90-headprotocol/

Notes and observations for interacting with the GSOC onboard hardware. The devicetree is a good guide to much of this.

# cat /sys/bus/i2c/devices/i2c-0/name
mv64xxx_i2c adapter

# cat /sys/bus/i2c/devices/i2c-1/name
mv64xxx_i2c adapter

# cat /sys/bus/i2c/devices/i2c-2/name
mv64xxx_i2c adapter

# cat /sys/bus/i2c/devices/i2c-3/name
mv64xxx_i2c adapter

# cat /sys/bus/i2c/devices/i2c-4/name
sun4i_hdmi_i2c adapter

## Einstein A20 power management
# cat /sys/bus/i2c/devices/0-0034/name
axp209

## Keyscan a la https://www.ti.com/lit/ds/symlink/lm8323.pdf
# cat /sys/bus/i2c/devices/1-0042/name
lm8323

## Realtime clock
# cat /sys/bus/i2c/devices/1-0051/name
pcf8563

## Touchscreen
# cat /sys/bus/i2c/devices/2-005d/name
gt911

## Cirrus sound card
# cat /sys/bus/i2c/devices/3-0010/name
cs4271

## RF oscilator
# cat /sys/bus/i2c/devices/3-0060/name
si5351-msop

Front panel buttons

Interfaced via LRADC (Low rate Analog/Digital converter). Each button has a different-valued resistor so all buttons can be scanned (though only supporting one-pressed-at-a-time) through a single ADC channel.

https://github.com/torvalds/linux/blob/master/Documentation/devicetree/bindings/input/allwinner%2Csun4i-a10-lradc-keys.yaml

Buttons: (linux,code is the keycode, and voltage is in microvolts)

button-191 {
    label = "Volume Up";
    linux,code = <0x73>;
    channel = <0x00>;
    voltage = <0x2eb2a>; /* 0.2V */
};
button-392 {
    label = "Volume Down";
    linux,code = <0x72>;
    channel = <0x00>;
    voltage = <0x5fdc4>; /* 0.4V */
};
button-601 {
    label = "Menu";
    linux,code = <0x8b>;
    channel = <0x00>;
    voltage = <0x92c3f>; /* 0.6V */
};
button-795 {
    label = "Search";
    linux,code = <0xd9>;
    channel = <0x00>;
    voltage = <0xc21d2>; /* 0.8V */
};
button-987 {
    label = "Home";
    linux,code = <0xac>;
    channel = <0x00>;
    voltage = <0xf10fb>; /* 1.0V */
};
button-1184 {
    label = "Esc";
    linux,code = <0x01>;
    channel = <0x00>;
    voltage = <0x1213a6>; /* 1.2V */
};
button-1398 {
    label = "Enter";
    linux,code = <0x1c>;
    channel = <0x00>;
    voltage = <0x155814>; /* 1.4V */
};

Si5351 Clock generator

https://github.com/torvalds/linux/blob/master/Documentation/devicetree/bindings/clock/silabs%2Csi5351.txt

Cirrus sound card

TODO

⚠️ **GitHub.com Fallback** ⚠️