svn commit: r323641 - head/sys/arm/allwinner (BananapiM3 [an A83T] and USB: BPI-M3 historically had usb nodes listed in ofwdump -a)
Mark Millard
markmi at dsl-only.net
Sun Sep 17 19:44:16 UTC 2017
[I went looking in the tree for head -r323676
and found *.dts* files listing usb things for
the BPI-M3 and a83t. So I add notes about that.]
On 2017-Sep-17, at 11:50 AM, Mark Millard <markmi at dsl-only.net> wrote:
>> Author: manu
>> Date: Sat Sep 16 15:58:20 2017
>> New Revision: 323641
>> URL:
>> https://svnweb.freebsd.org/changeset/base/323641
>>
>>
>> Log:
>> Allwinner usb phy: Rework resource allocation
>>
>> . . .
>>
>> While here remove A83T code as upstream and FreeBSD dts don't have
>> nodes for USB.
>>
>> . . .
>>
>> EHCI is still buggy on Pine64 (hang the board) so do not enable it for now.
>>
>> Tested On: Bananapi (A20), BananapiM2 (A31S), OrangePi One (H3) Pine64 (A64)
>
> I have a BPI-M3 (A83T based) that has not been updated
> since head -r317015M. It has the root file system on a
> USB SSD for how I normally boot it. The ubldr and
> ubldr.bin go back to 2016-Oct-24 or before (file
> system date).
>
> sysutils/u-boot-sinovoip-bpi-m3/files/ has not
> been updated since then. Nor has the distinfo
> or pkg-descr files. The Makefile has had only
> one change since then:
>
> Revision 430454 - (view) (download) (annotate) - [select for diffs]
> Modified Tue Jan 3 11:01:05 2017 UTC (8 months, 1 week ago) by mat
> File length: 1369 byte(s)
> Diff to previous 419007
> Cleanup BROKEN/IGNORE for 10.3-
>
> Sponsored by: Absolight
>
>
>
> The BPI-M3 has usb nodes show in ofwdump. . .
>
> # uname -apKU
> FreeBSD bpim3 12.0-CURRENT FreeBSD 12.0-CURRENT r317015M arm armv6 1200028 1200028
>
> ofwdump -a shows usb nodes:
>
> Node 0x38:
> . . .
> Node 0x19e0: soc
> . . .
> Node 0x1e80: pinctrl at 01c20800
> . . .
> Node 0x21f0: usb0_vbus_pin at 0
> Node 0x2270: usb1_vbus_pin at 0
> Node 0x22f4: usb2_vbus_pin at 0
> . . .
> Node 0x32ec: phy at 01c19400
> Node 0x3458: usb at 01c1a000
> Node 0x3550: usb at 01c1b000
> . . .
> Node 0x39fc: usb0-vbus
> Node 0x3ae8: usb1-vbus
> Node 0x3bdc: usb2-vbus
>
> More fully (followed by usb specific
> ofwdump -p listings):
>
> # ofwdump -a
> Node 0x38:
> Node 0xcc: chosen
> Node 0x108: aliases
> Node 0x13c: memory
> Node 0x174: cpus
> Node 0x1a0: cpu at 0
> Node 0x248: cpu at 1
> Node 0x294: cpu at 2
> Node 0x2e0: cpu at 3
> Node 0x32c: cpu at 100
> Node 0x3d4: cpu at 101
> Node 0x420: cpu at 102
> Node 0x46c: cpu at 103
> Node 0x4bc: timer
> Node 0x524: clocks
> Node 0x55c: osc24M_clk
> Node 0x5dc: osc16M_clk
> Node 0x65c: osc16Md512_clk
> Node 0x70c: clk at 01c20028
> Node 0x7b8: pll6d2_clk
> Node 0x860: clk at 01c20054
> Node 0x918: apb1_clk at 01c20054
> Node 0x9c8: clk at 01c20058
> Node 0xa80: clk at 01c2005c
> Node 0xb2c: clk at 01c20060
> Node 0xe18: clk at 01c20088
> Node 0xedc: clk at 01c2008c
> Node 0xfa0: clk at 01c20090
> Node 0x1064: clk at 01f01400
> Node 0x111c: ahb0_clk
> Node 0x11c4: clk at 01f0140c
> Node 0x1270: clk at 01f01428
> Node 0x1384: clk at 01c20000
> Node 0x1438: clk at 01c20004
> Node 0x14ec: c0clk at 01c20050
> Node 0x159c: c1clk at 01c20050
> Node 0x164c: clk at 01c20044
> Node 0x16fc: clk at 01c200cc
> Node 0x180c: clk at 1
> Node 0x188c: clk at 2
> Node 0x190c: clk at 01c00030
> Node 0x19e0: soc
> Node 0x1a2c: mmc at 01c0f000
> Node 0x1bcc: mmc at 01c10000
> Node 0x1d00: mmc at 01c11000
> Node 0x1e80: pinctrl at 01c20800
> Node 0x1f74: mmc0 at 0
> Node 0x1ffc: mmc0_cd_pin at 0
> Node 0x2078: uart0 at 0
> Node 0x20f0: uart0 at 1
> Node 0x216c: ahci_pwr_pin at 0
> Node 0x21f0: usb0_vbus_pin at 0
> Node 0x2270: usb1_vbus_pin at 0
> Node 0x22f4: usb2_vbus_pin at 0
> Node 0x2374: mmc2_8bit
> Node 0x241c: emac_rgmii at 0
> Node 0x24e0: i2c0 at 0
> Node 0x2558: i2c1 at 0
> Node 0x25d0: i2c2 at 0
> Node 0x264c: reset at 01c202c0
> Node 0x26d4: reset at 01c202d0
> Node 0x275c: reset at 01c202d8
> Node 0x27e4: timer at 01c20c00
> Node 0x286c: watchdog at 01c20ca0
> Node 0x28e8: serial at 01c28000
> Node 0x29ec: interrupt-controller at 01c81000
> Node 0x2ac8: reset at 01f014b0
> Node 0x2b50: pinctrl at 01f02c00
> Node 0x2c40: r_rsb
> Node 0x2cbc: i2c at 01f03400
> Node 0x2dd0: pmic at 3a3
> Node 0x2e6c: regulators
> Node 0x2e7c: dcdc2
> Node 0x2ec0: dcdc3
> Node 0x2f10: interrupt-controller at 01f00c0c
> Node 0x2fc8: i2c at 01c2ac00
> Node 0x30d4: i2c at 01c2b000
> Node 0x31e0: i2c at 01c2b400
> Node 0x32ec: phy at 01c19400
> Node 0x3458: usb at 01c1a000
> Node 0x3550: usb at 01c1b000
> Node 0x3648: ethernet at 01c30000
> Node 0x37b4: ethernet-phy at 1
> Node 0x3800: eeprom at 01c14000
> Node 0x3874: rtp at 01f04000
> Node 0x3910: ahci-5v
> Node 0x39fc: usb0-vbus
> Node 0x3ae8: usb1-vbus
> Node 0x3bdc: usb2-vbus
> Node 0x3cd4: vcc3v0
> Node 0x3d54: vcc3v3
> Node 0x3dd4: vcc5v0
> Node 0x3e54: pmu
> Node 0x3ed0: leds
> Node 0x3ef4: green_led
> Node 0x3f34: blue_led
> Node 0x3f78: __symbols__
>
> # ofwdump -p /soc/pinctrl at 01c20800/usb0_vbus_pin at 0
> Node 0x21f0: usb0_vbus_pin at 0
> allwinner,pins:
> 50 42 39 00
> 'PB9'
> allwinner,function:
> 67 70 69 6f 5f 6f 75 74 00
> 'gpio_out'
> allwinner,drive:
> 00 00 00 00
> allwinner,pull:
> 00 00 00 00
> linux,phandle:
> 00 00 00 32
> phandle:
> 00 00 00 32
>
> # ofwdump -p /soc/pinctrl at 01c20800/usb1_vbus_pin at 0
> Node 0x2270: usb1_vbus_pin at 0
> allwinner,pins:
> 50 44 32 34 00
> 'PD24'
> allwinner,function:
> 67 70 69 6f 5f 6f 75 74 00
> 'gpio_out'
> allwinner,drive:
> 00 00 00 00
> allwinner,pull:
> 00 00 00 00
> linux,phandle:
> 00 00 00 33
> phandle:
> 00 00 00 33
>
> # ofwdump -p /soc/pinctrl at 01c20800/usb2_vbus_pin at 0
> Node 0x22f4: usb2_vbus_pin at 0
> allwinner,pins:
> 50 48 33 00
> 'PH3'
> allwinner,function:
> 67 70 69 6f 5f 6f 75 74 00
> 'gpio_out'
> allwinner,drive:
> 00 00 00 00
> allwinner,pull:
> 00 00 00 00
> linux,phandle:
> 00 00 00 34
> phandle:
> 00 00 00 34
>
> # ofwdump -p /soc/phy at 01c19400
> Node 0x32ec: phy at 01c19400
> compatible:
> 61 6c 6c 77 69 6e 6e 65 72 2c 73 75 6e 38 69 2d 61 38 33 74
> 2d 75 73 62 2d 70 68 79 00
> 'allwinner,sun8i-a83t-usb-phy'
> reg:
> 01 c1 94 00 00 00 00 2c 01 c1 a8 00 00 00 00 04 01 c1 b8 00
> 00 00 00 04
> clocks:
> 00 00 00 2b 00 00 00 08 00 00 00 2b 00 00 00 09 00 00 00 2b
> 00 00 00 0a 00 00 00 2b 00 00 00 0b
> clock-names:
> 75 73 62 30 5f 70 68 79 00 75 73 62 31 5f 70 68 79 00 68 73
> 69 63 5f 70 6c 6c 00 68 73 69 63 5f 31 32 6d 00
> resets:
> 00 00 00 2b 00 00 00 00 00 00 00 2b 00 00 00 01 00 00 00 2b
> 00 00 00 02
> reset-names:
> 75 73 62 30 5f 72 65 73 65 74 00 75 73 62 31 5f 72 65 73 65
> 74 00 75 73 62 32 5f 72 65 73 65 74 00
> status:
> 6f 6b 61 79 00
> 'okay'
> #phy-cells:
> 00 00 00 01
> usb1_vbus-supply:
> 00 00 00 2c
> linux,phandle:
> 00 00 00 2d
> phandle:
> 00 00 00 2d
>
> # ofwdump -p /soc/usb at 01c1a000
> Node 0x3458: usb at 01c1a000
> compatible:
> 61 6c 6c 77 69 6e 6e 65 72 2c 73 75 6e 38 69 2d 61 38 33 74
> 2d 65 68 63 69 00 67 65 6e 65 72 69 63 2d 65 68 63 69 00
> reg:
> 01 c1 a0 00 00 00 01 00
> interrupts:
> 00 00 00 00 00 00 00 48 00 00 00 04
> clocks:
> 00 00 00 17 00 00 00 1a
> resets:
> 00 00 00 19 00 00 00 1a
> phys:
> 00 00 00 2d 00 00 00 01
> phy-names:
> 75 73 62 00
> 'usb'
> status:
> 6f 6b 61 79 00
> 'okay'
> linux,phandle:
> 00 00 00 41
> phandle:
> 00 00 00 41
>
> # ofwdump -p /soc/usb at 01c1b000
> Node 0x3550: usb at 01c1b000
> compatible:
> 61 6c 6c 77 69 6e 6e 65 72 2c 73 75 6e 38 69 2d 61 38 33 74
> 2d 65 68 63 69 00 67 65 6e 65 72 69 63 2d 65 68 63 69 00
> reg:
> 01 c1 b0 00 00 00 01 00
> interrupts:
> 00 00 00 00 00 00 00 4a 00 00 00 04
> clocks:
> 00 00 00 17 00 00 00 1b
> resets:
> 00 00 00 19 00 00 00 1b
> phys:
> 00 00 00 2d 00 00 00 02
> phy-names:
> 75 73 62 00
> 'usb'
> status:
> 6f 6b 61 79 00
> 'okay'
> linux,phandle:
> 00 00 00 42
> phandle:
> 00 00 00 42
>
> # ofwdump -p /usb0-vbus
> Node 0x39fc: usb0-vbus
> compatible:
> 72 65 67 75 6c 61 74 6f 72 2d 66 69 78 65 64 00
> 'regulator-fixed'
> pinctrl-names:
> 64 65 66 61 75 6c 74 00
> 'default'
> pinctrl-0:
> 00 00 00 32
> regulator-name:
> 75 73 62 30 2d 76 62 75 73 00
> 'usb0-vbus'
> regulator-min-microvolt:
> 00 4c 4b 40
> regulator-max-microvolt:
> 00 4c 4b 40
> enable-active-high:
> gpio:
> 00 00 00 1d 00 00 00 01 00 00 00 09 00 00 00 00
> status:
> 64 69 73 61 62 6c 65 64 00
> 'disabled'
> linux,phandle:
> 00 00 00 47
> phandle:
> 00 00 00 47
>
> # ofwdump -p /usb1-vbus
> Node 0x3ae8: usb1-vbus
> compatible:
> 72 65 67 75 6c 61 74 6f 72 2d 66 69 78 65 64 00
> 'regulator-fixed'
> pinctrl-names:
> 64 65 66 61 75 6c 74 00
> 'default'
> pinctrl-0:
> 00 00 00 33
> regulator-name:
> 75 73 62 31 2d 76 62 75 73 00
> 'usb1-vbus'
> regulator-min-microvolt:
> 00 4c 4b 40
> regulator-max-microvolt:
> 00 4c 4b 40
> regulator-boot-on:
> enable-active-high:
> gpio:
> 00 00 00 1d 00 00 00 03 00 00 00 18 00 00 00 00
> status:
> 6f 6b 61 79 00
> 'okay'
> linux,phandle:
> 00 00 00 2c
> phandle:
> 00 00 00 2c
>
> # ofwdump -p /usb2-vbus
> Node 0x3bdc: usb2-vbus
> compatible:
> 72 65 67 75 6c 61 74 6f 72 2d 66 69 78 65 64 00
> 'regulator-fixed'
> pinctrl-names:
> 64 65 66 61 75 6c 74 00
> 'default'
> pinctrl-0:
> 00 00 00 34
> regulator-name:
> 75 73 62 32 2d 76 62 75 73 00
> 'usb2-vbus'
> regulator-min-microvolt:
> 00 4c 4b 40
> regulator-max-microvolt:
> 00 4c 4b 40
> regulator-boot-on:
> enable-active-high:
> gpio:
> 00 00 00 1d 00 00 00 07 00 00 00 03 00 00 00 00
> status:
> 64 69 73 61 62 6c 65 64 00
> 'disabled'
> linux,phandle:
> 00 00 00 48
> phandle:
> 00 00 00 48
I might not have found all the usb references
but the below is a start.
/usr/src/sys/boot/fdt/dts/arm/sinovoip-bpi-m3.dts has:
&ehci0 {
status = "okay";
};
&ehci1 {
status = "okay";
};
. . .
®_usb1_vbus {
gpio = <&pio 3 24 GPIO_ACTIVE_HIGH>; /* PD24 */
status = "okay";
};
&usb1_vbus_pin_a {
allwinner,pins = "PD24";
};
&usbphy {
usb1_vbus-supply = <®_usb1_vbus>;
status = "okay";
};
Via #include there is:
/usr/src/sys/boot/fdt/dts/arm/sun8i-a83t.dtsi has:
bus_gates: clk at 01c20060 {
. . .
clock-output-names = . . .
"bus_spi1", "bus_usb_otg",
"bus_ehci0", "bus_ehci1",
"bus_ohci0", "bus_ve",
. . .
};
/usr/src/sys/gnu/dts/arm/sunxi-common-regulators.dtsi has:
&pio {
. . .
usb0_vbus_pin_a: usb0_vbus_pin at 0 {
pins = "PB9";
function = "gpio_out";
};
usb1_vbus_pin_a: usb1_vbus_pin at 0 {
pins = "PH6";
function = "gpio_out";
};
usb2_vbus_pin_a: usb2_vbus_pin at 0 {
pins = "PH3";
function = "gpio_out";
};
};
/ {
. . .
reg_usb0_vbus: usb0-vbus {
compatible = "regulator-fixed";
pinctrl-names = "default";
pinctrl-0 = <&usb0_vbus_pin_a>;
regulator-name = "usb0-vbus";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
enable-active-high;
gpio = <&pio 1 9 GPIO_ACTIVE_HIGH>;
status = "disabled";
};
reg_usb1_vbus: usb1-vbus {
compatible = "regulator-fixed";
pinctrl-names = "default";
pinctrl-0 = <&usb1_vbus_pin_a>;
regulator-name = "usb1-vbus";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
regulator-boot-on;
enable-active-high;
gpio = <&pio 7 6 GPIO_ACTIVE_HIGH>;
status = "disabled";
};
reg_usb2_vbus: usb2-vbus {
compatible = "regulator-fixed";
pinctrl-names = "default";
pinctrl-0 = <&usb2_vbus_pin_a>;
regulator-name = "usb2-vbus";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
regulator-boot-on;
enable-active-high;
gpio = <&pio 7 3 GPIO_ACTIVE_HIGH>;
status = "disabled";
};
. . .
/usr/src/sys/boot/fdt/dts/arm/a83t.dtsi has:
clocks {
. . .
usb_clk: clk at 01c200cc {
#clock-cells = <1>;
#reset-cells = <1>;
compatible = "allwinner,sun8i-a83t-usb-clk";
reg = <0x01c200cc 0x4>;
clocks = <&osc24M>, <&pll_hsic>;
clock-indices = <8>, <9>,
<10>, <11>,
<16>;
clock-output-names = "usb_phy0", "usb_phy1",
"usb_hsic_pll", "usb_hsic_12m",
"usb_ohci0";
};
. . .
soc {
. . .
usbphy: phy at 01c19400 {
compatible = "allwinner,sun8i-a83t-usb-phy";
reg = <0x01c19400 0x2c>,
<0x01c1a800 0x4>,
<0x01c1b800 0x4>;
clocks = <&usb_clk 8>,
<&usb_clk 9>,
<&usb_clk 10>,
<&usb_clk 11>;
clock-names = "usb0_phy",
"usb1_phy",
"hsic_pll",
"hsic_12m";
resets = <&usb_clk 0>,
<&usb_clk 1>,
<&usb_clk 2>;
reset-names = "usb0_reset",
"usb1_reset",
"usb2_reset";
status = "disabled";
#phy-cells = <1>;
};
ehci0: usb at 01c1a000 {
compatible = "allwinner,sun8i-a83t-ehci", "generic-ehci";
reg = <0x01c1a000 0x100>;
interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&bus_gates 26>;
resets = <&ahb_reset 26>;
phys = <&usbphy 1>;
phy-names = "usb";
status = "disabled";
};
ehci1: usb at 01c1b000 {
compatible = "allwinner,sun8i-a83t-ehci", "generic-ehci";
reg = <0x01c1b000 0x100>;
interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&bus_gates 27>;
resets = <&ahb_reset 27>;
phys = <&usbphy 2>;
phy-names = "usb";
status = "disabled";
};
===
Mark Millard
markmi at dsl-only.net
More information about the freebsd-arm
mailing list