mirror of
https://github.com/linux-sunxi/meta-sunxi.git
synced 2025-07-29 20:20:32 +02:00
Compare commits
453 Commits
fido
...
42f4ad510d
Author | SHA1 | Date | |
---|---|---|---|
42f4ad510d | |||
a83a18e526 | |||
33d7e2bb51 | |||
2a408a1350 | |||
31519e547e | |||
a2e503b82e | |||
4a04ddfb3e | |||
20e638ef5f | |||
322843f576 | |||
f70de55509 | |||
2f84e8ff67 | |||
3429331a8c | |||
05ff172139 | |||
608ae0cc0f | |||
f8aeeaeddb | |||
b756926593 | |||
197bc04dac | |||
4afe6a0b17 | |||
9edbede7bc | |||
2f291239fe | |||
0c874c99f7 | |||
916ecc0e9d | |||
17b8e40209 | |||
c19b5742bd | |||
0437a1df6b | |||
96453886e2 | |||
10173513ea | |||
c475a1851a | |||
7cd5e692b7 | |||
089c34a7bc | |||
cc1de9f039 | |||
cd1031613f | |||
e21fd8733d | |||
5257bb2738 | |||
40c6d52123 | |||
c7782f7180 | |||
3ace4df57b | |||
4895ae7bdf | |||
75f21bc538 | |||
af98b13aca | |||
c867cb74e2 | |||
ca39c18cb9 | |||
82965e1bc6 | |||
6c6ef34b69 | |||
6cba9f71bb | |||
8b4609b9dc | |||
5dcf6c40d4 | |||
1407c41748 | |||
533a3ac16d | |||
ea627f0920 | |||
441baea0ef | |||
cd266517ee | |||
5914ca8c1c | |||
776eafbb2e | |||
4bf7be7650 | |||
d1f2121138 | |||
7ab8fb6211 | |||
b55c255f22 | |||
ab649c5d39 | |||
3f1bb863a7 | |||
21d137f559 | |||
c67912122c | |||
0fe08a24d6 | |||
7b951191fb | |||
5723c27da1 | |||
27aadbc9bf | |||
9642c1bf2f | |||
569d314517 | |||
f93ef86045 | |||
9357921fe9 | |||
7540e7cef4 | |||
28b8144df8 | |||
046a1e27ed | |||
8bdb29e399 | |||
c4c91b604b | |||
54a4db9b55 | |||
1a42a71bb1 | |||
be26c5dd90 | |||
f87d85fa2e | |||
6c94abe54d | |||
3bab03d8a2 | |||
34ac6458dd | |||
b25b74412c | |||
48acd228c9 | |||
d28a0b02fe | |||
3276120687 | |||
62f2141df1 | |||
73f3286067 | |||
cf0bf9671a | |||
290a916e69 | |||
b0c81db3de | |||
44040b0ea4 | |||
bb5817fe0e | |||
b5de5d2be4 | |||
8bcf3b3ad4 | |||
d84706872b | |||
7278d3faaf | |||
8b3211e04c | |||
90189dae67 | |||
1b57b51612 | |||
a30c7ec984 | |||
f3bbe9f079 | |||
fdce4f8674 | |||
20822ad769 | |||
e8d39837e2 | |||
3b798310df | |||
910bb165a3 | |||
9895874a29 | |||
7feb76686f | |||
4735c7766f | |||
78c395aab7 | |||
b122bfc272 | |||
752f632e98 | |||
7dcc9a0069 | |||
ef5b9a675b | |||
b9a5f19db2 | |||
13fe88d754 | |||
6ece692e9b | |||
c39a024199 | |||
545d824ccf | |||
45a666ac43 | |||
a508443f52 | |||
0225772064 | |||
3a7f7e1199 | |||
a67a0c58df | |||
8852666a80 | |||
e584cd9084 | |||
deb667015d | |||
503102a841 | |||
02bf3fcd80 | |||
7bc87817a1 | |||
080eb40635 | |||
dcd5790e87 | |||
6a1103b726 | |||
668bc6824c | |||
fd330bbb55 | |||
e66258ad7a | |||
3caf03d9fc | |||
278bd31312 | |||
edb10c82bd | |||
c6161f546b | |||
c03a8988b8 | |||
fe54f61d61 | |||
724d154371 | |||
59b953f341 | |||
ac8695fddf | |||
efc05f66ef | |||
dc5c23908e | |||
5602fb2ff8 | |||
6eb1acdbcb | |||
5fe0f177ab | |||
151ac47fda | |||
f66e6f255f | |||
0b64109569 | |||
3dc99ee663 | |||
c32ee2b4a0 | |||
9e53e57d75 | |||
de575289a3 | |||
1e41b97b5b | |||
efcbd3a2cf | |||
2df608df63 | |||
e20eb9ef85 | |||
18f3e4a016 | |||
11052ea20e | |||
0062d5490a | |||
58d382d598 | |||
4937fc91d5 | |||
370007f1c8 | |||
1f85588709 | |||
3f6dcb3d08 | |||
9396098def | |||
636b3b74d7 | |||
eaf085f87f | |||
bcc500fb65 | |||
d6deb87bd1 | |||
4580f8964d | |||
251d048d0b | |||
cd2ec849a7 | |||
e619a01a21 | |||
9f622c70b8 | |||
9773647ff4 | |||
2e20344575 | |||
ec20258eb5 | |||
250b8652f6 | |||
9828fc2b82 | |||
5eff0296b5 | |||
ee0b2699ee | |||
d46ff454d0 | |||
ee3a551b83 | |||
74a488e2ef | |||
1d6ef084db | |||
fa0846c0eb | |||
e9d4b90576 | |||
620c66eac5 | |||
4b928c5b72 | |||
6eab521310 | |||
c82b2f8612 | |||
02e3e7fba8 | |||
12cbb60a76 | |||
2398d55ad4 | |||
f9060cda38 | |||
f25203c936 | |||
b2f0d28f49 | |||
89be65d931 | |||
802857ee59 | |||
fbf5ac3e31 | |||
c9527c099d | |||
21462a47a2 | |||
7fdbe68c1f | |||
b7b8764c8f | |||
504fa1bb71 | |||
902841dcd4 | |||
9fef250ca8 | |||
0419afad79 | |||
444672b854 | |||
f1378e33af | |||
efe6aef33f | |||
b20940edd0 | |||
63ee6333dc | |||
23acf5bc61 | |||
d0bbc7334d | |||
7964ef28bd | |||
e10f05d494 | |||
1f46cadd4c | |||
a5cecabb42 | |||
d034a64bc4 | |||
6bfa745149 | |||
70d37fa203 | |||
741b6238b6 | |||
917850e01d | |||
5e1a2937bd | |||
be78fab082 | |||
f4e059ee3d | |||
7c6cefcfe6 | |||
5ba77e0981 | |||
e698148963 | |||
c0ece4613d | |||
4921234ed7 | |||
2e5db363c2 | |||
e93d74767e | |||
7983549705 | |||
3bb0abd730 | |||
c4a2923380 | |||
9bcd991e74 | |||
628b14b9fd | |||
abd1463aa9 | |||
84961a9521 | |||
8fcc6136d0 | |||
9b32d6a61c | |||
aa36e417e2 | |||
54c75110b4 | |||
81f6a30ac9 | |||
b6288e15ad | |||
6b9ef7519c | |||
837aeefae3 | |||
bfcf51f595 | |||
efe4acdeff | |||
42fd81b2b8 | |||
064257654a | |||
72ece33639 | |||
a66f824d6f | |||
d57301be50 | |||
4e0c7e2a6c | |||
6b536f1083 | |||
f9ad5fa55b | |||
eb72b91844 | |||
df2236f3f7 | |||
0bc0be4186 | |||
991567e017 | |||
318e609f65 | |||
712229cbe4 | |||
5e1b5a9f86 | |||
a1297419fe | |||
7d770d3061 | |||
0c6e53be97 | |||
a28dffd16d | |||
47c3e21ace | |||
df468d72d7 | |||
fef6da2d86 | |||
85cc70a3fa | |||
f54a652383 | |||
927dd91361 | |||
9bd942ab3b | |||
6759ac4ce6 | |||
cf8eb364a0 | |||
4900e75a6a | |||
d419cfe0a1 | |||
c0f804f573 | |||
8cd113bdd8 | |||
5e61ba92e3 | |||
7df74e3847 | |||
073dbda366 | |||
7bbd1ea6fa | |||
09b67e1d65 | |||
beee11ba81 | |||
c549fc237d | |||
29eb4d3de7 | |||
c83ad689e3 | |||
c351ae2786 | |||
20864bd184 | |||
8875f3cc9a | |||
b5e1851242 | |||
874c9ff224 | |||
1495b5e567 | |||
17c1731264 | |||
418ea17239 | |||
2c85181c92 | |||
f3cba0b6b0 | |||
9e04cc3782 | |||
97ba08e3b6 | |||
72c0f7aa6e | |||
416af351cb | |||
e85a48c611 | |||
684a800c86 | |||
da0e7e0ed1 | |||
3434ae8c66 | |||
4d9466c131 | |||
1af0ae84d1 | |||
6499191c36 | |||
35e264f9fe | |||
cee0b74ce4 | |||
f7169d0855 | |||
7a5d385087 | |||
4b43209a92 | |||
2b4fc8f546 | |||
0c69f0fb5b | |||
fcda1c7baa | |||
77c1026676 | |||
a84d6a40c1 | |||
4740d3fe2d | |||
0ebd445fbd | |||
32aad38a16 | |||
febf35474a | |||
54bc239a3f | |||
6705d227ad | |||
229b714fdf | |||
df1d78041d | |||
912fe78aa3 | |||
7249f90834 | |||
dec3faadd9 | |||
6b0661dff2 | |||
aaf413d6a7 | |||
679053489c | |||
f2db7fb88e | |||
9d34c6f2f6 | |||
7037d13e6a | |||
a6d2bb6b9e | |||
8eb8602a76 | |||
eb6cb19b84 | |||
d47fa32013 | |||
f5756a588e | |||
7fad64eefd | |||
f0efcf45a9 | |||
7bfffa0671 | |||
54164a628a | |||
4b669303a3 | |||
6c696b22d3 | |||
12a0cffe6a | |||
9bfe3ca1ad | |||
ff23db6e55 | |||
1848d697ad | |||
d94f784d4d | |||
7f791bd576 | |||
7f88e6c78e | |||
0a77e55428 | |||
e372befda7 | |||
10f37db26c | |||
2b1cafc104 | |||
fe66ceacb5 | |||
75fe4617ce | |||
3ef9217ad7 | |||
0dcdc4edf9 | |||
0b21d3bd2f | |||
3bd237ac1b | |||
1c38e7fa72 | |||
49f7a659b4 | |||
72d35fc0a6 | |||
11e16d173f | |||
f246bc943a | |||
6dfe134952 | |||
4ab93061c2 | |||
3dc1fc4103 | |||
1a840570a9 | |||
0c6af07690 | |||
54321d7854 | |||
b87043d683 | |||
bb8656b63e | |||
93ec9da1e4 | |||
1c06816a26 | |||
f6417032a0 | |||
26c32a3228 | |||
0da0fd6531 | |||
5564b58b56 | |||
53712dd3bb | |||
63410209ad | |||
a3b6faa731 | |||
b00caff43d | |||
11dee5bc94 | |||
f74be86e4a | |||
7c1e4b303b | |||
9e15c68634 | |||
69f56d3f94 | |||
9b77af849d | |||
3830f90aaa | |||
35d98632f3 | |||
941e978370 | |||
51fe0eecc6 | |||
8c13f0de1b | |||
06828aab99 | |||
5d98843b7d | |||
eb616d74b2 | |||
ae9ea2876a | |||
a5a6479522 | |||
50aaadc70d | |||
3eea4723ba | |||
849a2266d5 | |||
e51d5cfdee | |||
d2ccb1d993 | |||
e238cc158a | |||
07c07fcd78 | |||
b05f2dbb8b | |||
b9acc14280 | |||
b5e93023fb | |||
4f75b81ab2 | |||
14da837096 | |||
b4357af03b | |||
888ddfd531 | |||
72ea1fe7df | |||
54d3993da4 | |||
2f8da55176 | |||
fe162b176d | |||
b660f3a9dc | |||
f6b855d948 | |||
43a6a5ecc8 | |||
17645719ad | |||
08c5a4bfb8 | |||
1cdd083d2b | |||
062c1477cf | |||
7372a11da5 | |||
318e9aa826 | |||
50b4227876 | |||
0a2034bb3c | |||
8f1c8f67cf | |||
9d864e2510 | |||
eac21d7734 | |||
d32866858f | |||
82672a440b | |||
0693369edc | |||
b66da9c3bb | |||
4e261ffb96 | |||
5127517a14 | |||
784e893ac5 | |||
92b8be8139 |
42
README.md
42
README.md
@ -3,9 +3,10 @@ meta-sunxi
|
||||
|
||||
Official sunxi OpenEmbedded layer for Allwinner-based boards.
|
||||
|
||||
This layer depends on the additional layer:
|
||||
This layer depends on the additional layers:
|
||||
|
||||
meta-openembedded: git://git.openembedded.org/meta-openembedded
|
||||
* [meta-openembedded/meta-oe](http://git.openembedded.org/meta-openembedded/tree/meta-oe)
|
||||
* [meta-arm](https://git.yoctoproject.org/meta-arm)
|
||||
|
||||
Tested with core-image-base.
|
||||
|
||||
@ -14,25 +15,46 @@ Maintainers:
|
||||
* Nicolas Aguirre <aguirre.nicolas@gmail.com>
|
||||
* Enrico Butera <ebutera@users.sourceforge.net>
|
||||
* Sergey Lapin <slapin@ossfans.org>
|
||||
* Marek Belisko <marek.belisko@gmail.com>
|
||||
|
||||
Community
|
||||
===========
|
||||
|
||||
You can reach community + ask your question on gitter: https://matrix.to/#/#meta-sunxi:gitter.im
|
||||
|
||||
Kernel / U-Boot Version
|
||||
===========
|
||||
Most Allwinner devices and hardware are supported in mainline kernel and U-Boot, so this layer builds mainline by default.
|
||||
|
||||
Legacy sunxi Kernel / U-Boot
|
||||
-----------
|
||||
|
||||
There is a custom U-Boot and Kernel version for sunxi devices which includes some special drivers not mainlined.
|
||||
These versions are rather old (3.4 for kernel and 2014.04 for U-Boot), but may support more functions and devices than current mainline
|
||||
These versions are rather old (3.4 for kernel and 2014.04 for U-Boot), but may support more functions and devices than current mainline.
|
||||
|
||||
If you want to switch back to sunxi versions for some reasons (no device tree available, unsupported hardware), change the file
|
||||
/conf/machine/include/sunxi.inc and set
|
||||
If you want to switch back to sunxi versions for some reasons (no device tree available, unsupported hardware), either:
|
||||
- change the file conf/machine/include/sunxi.inc to include the following block
|
||||
- edit your conf/local.conf to add the following block
|
||||
|
||||
PREFERRED_PROVIDER_u-boot="u-boot-sunxi"
|
||||
PREFERRED_PROVIDER_virtual/bootloader="u-boot-sunxi"
|
||||
PREFERRED_PROVIDER_virtual/kernel="linux-sunxi"
|
||||
PREFERRED_PROVIDER_u-boot="u-boot-sunxi"
|
||||
PREFERRED_PROVIDER_virtual/bootloader="u-boot-sunxi"
|
||||
PREFERRED_PROVIDER_virtual/kernel="linux-sunxi"
|
||||
KERNEL_DEVICETREE = ""
|
||||
|
||||
If you already have built the mainline versions it might be necessary to reset the build directories with:
|
||||
|
||||
bitbake -c clean linux
|
||||
bitbake -c clean u-boot
|
||||
bitbake -c clean virtual/kernel virtual/bootloader
|
||||
|
||||
Mainline Kernel / U-Boot
|
||||
-----------
|
||||
|
||||
For mainline kernel we have now support for latest LTS and stable.
|
||||
By default we use latest LTS. If you would like to change version please update ```PREFERRED_VERSION_linux-mainline``` in:
|
||||
* [conf/machine/include/sunxi.inc](https://github.com/linux-sunxi/meta-sunxi/blob/fa0846c0eb23e3424b89acb4d5a327e921f73497/conf/machine/include/sunxi.inc#L16)
|
||||
|
||||
When using mainline kernel ≥ 5.2 it is now possible to use the mainline graphics drivers *lima* and *panfrost*, instead of the *mali* driver provided by ARM. To enable open source mainline graphics support add the following line in your `local.conf`:
|
||||
|
||||
MACHINEOVERRIDES .= ":use-mailine-graphics"
|
||||
|
||||
Performance
|
||||
===========
|
||||
|
@ -1,115 +0,0 @@
|
||||
inherit image_types
|
||||
|
||||
#
|
||||
# Create an image that can by written onto a SD card using dd.
|
||||
# Originally written for rasberrypi adapt for the needs of allwinner sunxi based boards
|
||||
#
|
||||
# The disk layout used is:
|
||||
#
|
||||
# 0 -> 8*1024 - reserverd
|
||||
# 8*1024 -> 32*1024 -
|
||||
# 32*1024 -> 2048*1024 -
|
||||
# 2048*1024 -> BOOT_SPACE - bootloader and kernel
|
||||
#
|
||||
#
|
||||
|
||||
# This image depends on the rootfs image
|
||||
IMAGE_TYPEDEP_sunxi-sdimg = "${SDIMG_ROOTFS_TYPE}"
|
||||
|
||||
# Boot partition volume id
|
||||
BOOTDD_VOLUME_ID ?= "${MACHINE}"
|
||||
|
||||
# Boot partition size [in KiB]
|
||||
BOOT_SPACE ?= "20480"
|
||||
|
||||
# First partition begin at sector 2048 : 2048*1024 = 2097152
|
||||
IMAGE_ROOTFS_ALIGNMENT = "2048"
|
||||
|
||||
# Use an uncompressed ext3 by default as rootfs
|
||||
SDIMG_ROOTFS_TYPE ?= "ext3"
|
||||
SDIMG_ROOTFS = "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.${SDIMG_ROOTFS_TYPE}"
|
||||
|
||||
IMAGE_DEPENDS_sunxi-sdimg += " \
|
||||
parted-native \
|
||||
mtools-native \
|
||||
dosfstools-native \
|
||||
virtual/kernel \
|
||||
virtual/bootloader \
|
||||
sunxi-board-fex \
|
||||
"
|
||||
|
||||
rootfs[depends] += "virtual/kernel:do_deploy sunxi-board-fex:do_deploy"
|
||||
|
||||
# SD card image name
|
||||
SDIMG = "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.sunxi-sdimg"
|
||||
|
||||
IMAGEDATESTAMP = "${@time.strftime('%Y.%m.%d',time.gmtime())}"
|
||||
|
||||
IMAGE_CMD_sunxi-sdimg () {
|
||||
|
||||
# Align partitions
|
||||
BOOT_SPACE_ALIGNED=$(expr ${BOOT_SPACE} + ${IMAGE_ROOTFS_ALIGNMENT} - 1)
|
||||
BOOT_SPACE_ALIGNED=$(expr ${BOOT_SPACE_ALIGNED} - ${BOOT_SPACE_ALIGNED} % ${IMAGE_ROOTFS_ALIGNMENT})
|
||||
SDIMG_SIZE=$(expr ${IMAGE_ROOTFS_ALIGNMENT} + ${BOOT_SPACE_ALIGNED} + $ROOTFS_SIZE + ${IMAGE_ROOTFS_ALIGNMENT})
|
||||
|
||||
# Initialize sdcard image file
|
||||
dd if=/dev/zero of=${SDIMG} bs=1 count=0 seek=$(expr 1024 \* ${SDIMG_SIZE})
|
||||
|
||||
# Create partition table
|
||||
parted -s ${SDIMG} mklabel msdos
|
||||
# Create boot partition and mark it as bootable
|
||||
parted -s ${SDIMG} unit KiB mkpart primary fat32 ${IMAGE_ROOTFS_ALIGNMENT} $(expr ${BOOT_SPACE_ALIGNED} \+ ${IMAGE_ROOTFS_ALIGNMENT})
|
||||
parted -s ${SDIMG} set 1 boot on
|
||||
# Create rootfs partition
|
||||
parted -s ${SDIMG} unit KiB mkpart primary ext2 $(expr ${BOOT_SPACE_ALIGNED} \+ ${IMAGE_ROOTFS_ALIGNMENT}) $(expr ${BOOT_SPACE_ALIGNED} \+ ${IMAGE_ROOTFS_ALIGNMENT} \+ ${ROOTFS_SIZE})
|
||||
parted ${SDIMG} print
|
||||
|
||||
# Create a vfat image with boot files
|
||||
BOOT_BLOCKS=$(LC_ALL=C parted -s ${SDIMG} unit b print | awk '/ 1 / { print substr($4, 1, length($4 -1)) / 512 /2 }')
|
||||
rm -f ${WORKDIR}/boot.img
|
||||
mkfs.vfat -n "${BOOTDD_VOLUME_ID}" -S 512 -C ${WORKDIR}/boot.img $BOOT_BLOCKS
|
||||
|
||||
mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${MACHINE}.bin ::uImage
|
||||
|
||||
# Copy device tree file
|
||||
if test -n "${KERNEL_DEVICETREE}"; then
|
||||
for DTS_FILE in ${KERNEL_DEVICETREE}; do
|
||||
DTS_BASE_NAME=`basename ${DTS_FILE} | awk -F "." '{print $1}'`
|
||||
if [ -e "${KERNEL_IMAGETYPE}-${DTS_BASE_NAME}.dtb" ]; then
|
||||
kernel_bin="`readlink ${KERNEL_IMAGETYPE}-${MACHINE}.bin`"
|
||||
kernel_bin_for_dtb="`readlink ${KERNEL_IMAGETYPE}-${DTS_BASE_NAME}.dtb | sed "s,$DTS_BASE_NAME,${MACHINE},g;s,\.dtb$,.bin,g"`"
|
||||
if [ $kernel_bin = $kernel_bin_for_dtb ]; then
|
||||
mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${DTS_BASE_NAME}.dtb ::/${DTS_BASE_NAME}.dtb
|
||||
fi
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
if [ -e "${DEPLOY_DIR_IMAGE}/fex.bin" ]
|
||||
then
|
||||
mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/fex.bin ::script.bin
|
||||
fi
|
||||
if [ -e "${DEPLOY_DIR_IMAGE}/boot.scr" ]
|
||||
then
|
||||
mcopy -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/boot.scr ::boot.scr
|
||||
fi
|
||||
|
||||
|
||||
# Add stamp file
|
||||
echo "${IMAGE_NAME}-${IMAGEDATESTAMP}" > ${WORKDIR}/image-version-info
|
||||
mcopy -i ${WORKDIR}/boot.img -v ${WORKDIR}//image-version-info ::
|
||||
|
||||
# Burn Partitions
|
||||
dd if=${WORKDIR}/boot.img of=${SDIMG} conv=notrunc seek=1 bs=$(expr ${IMAGE_ROOTFS_ALIGNMENT} \* 1024) && sync && sync
|
||||
# If SDIMG_ROOTFS_TYPE is a .xz file use xzcat
|
||||
if echo "${SDIMG_ROOTFS_TYPE}" | egrep -q "*\.xz"
|
||||
then
|
||||
xzcat ${SDIMG_ROOTFS} | dd of=${SDIMG} conv=notrunc seek=1 bs=$(expr 1024 \* ${BOOT_SPACE_ALIGNED} + ${IMAGE_ROOTFS_ALIGNMENT} \* 1024) && sync && sync
|
||||
else
|
||||
dd if=${SDIMG_ROOTFS} of=${SDIMG} conv=notrunc seek=1 bs=$(expr 1024 \* ${BOOT_SPACE_ALIGNED} + ${IMAGE_ROOTFS_ALIGNMENT} \* 1024) && sync && sync
|
||||
fi
|
||||
|
||||
#write u-boot and spl at the beginint of sdcard in one shot
|
||||
dd if=${DEPLOY_DIR_IMAGE}/u-boot-sunxi-with-spl.bin of=${SDIMG} bs=1024 seek=8 conv=notrunc
|
||||
|
||||
}
|
@ -4,6 +4,14 @@ BBPATH .= ":${LAYERDIR}"
|
||||
# We have a recipes directory, add to BBFILES
|
||||
BBFILES += "${LAYERDIR}/recipes*/*/*.bb ${LAYERDIR}/recipes*/*/*.bbappend"
|
||||
|
||||
BBFILE_COLLECTIONS += "meta-sunxi"
|
||||
BBFILE_PATTERN_meta-sunxi := "^${LAYERDIR}/"
|
||||
BBFILE_PRIORITY_meta-sunxi = "10"
|
||||
BBFILE_COLLECTIONS += "sunxi"
|
||||
BBFILE_PATTERN_sunxi := "^${LAYERDIR}/"
|
||||
BBFILE_PRIORITY_sunxi = "10"
|
||||
|
||||
# This should only be incremented on significant changes that will
|
||||
# cause compatibility issues with other layers
|
||||
LAYERVERSION_sunxi = "1"
|
||||
|
||||
LAYERDEPENDS_sunxi = "core meta-python meta-arm"
|
||||
|
||||
LAYERSERIES_COMPAT_sunxi = "styhead"
|
||||
|
10
conf/machine/bananapi-m2-zero.conf
Normal file
10
conf/machine/bananapi-m2-zero.conf
Normal file
@ -0,0 +1,10 @@
|
||||
#@TYPE: Machine
|
||||
#@NAME: bananapi-m2-zero
|
||||
#@DESCRIPTION: Machine configuration for the Banana Pi M2 Zero, base on Allwinner H3 CPU
|
||||
|
||||
require conf/machine/include/sun8i.inc
|
||||
require conf/machine/include/hardware/ap6212a.inc
|
||||
|
||||
KERNEL_DEVICETREE = "sun8i-h2-plus-bananapi-m2-zero.dtb"
|
||||
UBOOT_MACHINE = "bananapi_m2_zero_defconfig"
|
||||
|
9
conf/machine/bananapi-m2m.conf
Normal file
9
conf/machine/bananapi-m2m.conf
Normal file
@ -0,0 +1,9 @@
|
||||
#@TYPE: Machine
|
||||
#@NAME: bananapi-m2m
|
||||
#@DESCRIPTION: Machine configuration for the Banana Pi M2M, base on Allwinner H8 CPU
|
||||
|
||||
require conf/machine/include/sun8i.inc
|
||||
|
||||
KERNEL_DEVICETREE = "sun8i-r16-bananapi-m2m.dtb"
|
||||
UBOOT_MACHINE = "Bananapi_m2m_defconfig"
|
||||
|
9
conf/machine/bananapi-m2plus.conf
Normal file
9
conf/machine/bananapi-m2plus.conf
Normal file
@ -0,0 +1,9 @@
|
||||
#@TYPE: Machine
|
||||
#@NAME: bananapi-m2plus
|
||||
#@DESCRIPTION: Machine configuration for the Banana Pi M2+, base on Allwinner H3 CPU
|
||||
|
||||
require conf/machine/include/sun8i.inc
|
||||
|
||||
KERNEL_DEVICETREE = "sun8i-h3-bananapi-m2-plus.dtb"
|
||||
UBOOT_MACHINE = "bananapi_m2_plus_h3_defconfig"
|
||||
|
8
conf/machine/bananapi-m64.conf
Normal file
8
conf/machine/bananapi-m64.conf
Normal file
@ -0,0 +1,8 @@
|
||||
#@TYPE: Machine
|
||||
#@NAME: pine64-plus
|
||||
#@DESCRIPTION: Machine configuration for the pine64-plus, based on Allwinner A64 CPU
|
||||
|
||||
require conf/machine/include/sun50i.inc
|
||||
|
||||
KERNEL_DEVICETREE = "allwinner/sun50i-a64-bananapi-m64.dtb"
|
||||
UBOOT_MACHINE = "bananapi_m64_defconfig"
|
5
conf/machine/include/hardware/ap6212a.inc
Normal file
5
conf/machine/include/hardware/ap6212a.inc
Normal file
@ -0,0 +1,5 @@
|
||||
# Include for boards with AMPAK 6212A Wifi / Bluetooth module
|
||||
# https://linux-sunxi.org/Wifi#Ampak
|
||||
|
||||
MACHINE_EXTRA_RRECOMMENDS:append = " kernel-module-brcmfmac"
|
||||
MACHINE_EXTRA_RDEPENDS:append = " linux-firmware-bcm43430"
|
@ -1,5 +1,5 @@
|
||||
require conf/machine/include/sunxi.inc
|
||||
require conf/machine/include/sunxi-mali.inc
|
||||
require conf/machine/include/tune-cortexa8.inc
|
||||
require conf/machine/include/arm/armv7a/tune-cortexa8.inc
|
||||
|
||||
SOC_FAMILY = "sun4i"
|
||||
|
8
conf/machine/include/sun50i-h6.inc
Normal file
8
conf/machine/include/sun50i-h6.inc
Normal file
@ -0,0 +1,8 @@
|
||||
require conf/machine/include/sunxi64.inc
|
||||
|
||||
DEFAULTTUNE ?= "cortexa53-crypto"
|
||||
require conf/machine/include/arm/armv8a/tune-cortexa53.inc
|
||||
|
||||
MACHINEOVERRIDES =. "sun50i:"
|
||||
|
||||
SOC_FAMILY = "sun50i-h6"
|
8
conf/machine/include/sun50i-h616.inc
Normal file
8
conf/machine/include/sun50i-h616.inc
Normal file
@ -0,0 +1,8 @@
|
||||
require conf/machine/include/sunxi64.inc
|
||||
|
||||
DEFAULTTUNE ?= "cortexa53-crypto"
|
||||
require conf/machine/include/arm/armv8a/tune-cortexa53.inc
|
||||
|
||||
MACHINEOVERRIDES =. "sun50i:"
|
||||
|
||||
SOC_FAMILY = "sun50i-h616"
|
6
conf/machine/include/sun50i.inc
Normal file
6
conf/machine/include/sun50i.inc
Normal file
@ -0,0 +1,6 @@
|
||||
require conf/machine/include/sunxi64.inc
|
||||
|
||||
DEFAULTTUNE ?= "cortexa53-crypto"
|
||||
require conf/machine/include/arm/armv8a/tune-cortexa53.inc
|
||||
|
||||
SOC_FAMILY = "sun50i"
|
@ -1,5 +1,5 @@
|
||||
require conf/machine/include/sunxi.inc
|
||||
require conf/machine/include/sunxi-mali.inc
|
||||
require conf/machine/include/tune-cortexa8.inc
|
||||
require conf/machine/include/arm/armv7a/tune-cortexa8.inc
|
||||
|
||||
SOC_FAMILY = "sun5i"
|
||||
|
@ -1,5 +1,5 @@
|
||||
require conf/machine/include/sunxi.inc
|
||||
require conf/machine/include/sunxi-mali.inc
|
||||
require conf/machine/include/tune-cortexa7.inc
|
||||
require conf/machine/include/arm/armv7a/tune-cortexa7.inc
|
||||
|
||||
SOC_FAMILY = "sun7i"
|
||||
|
5
conf/machine/include/sun8i.inc
Normal file
5
conf/machine/include/sun8i.inc
Normal file
@ -0,0 +1,5 @@
|
||||
require conf/machine/include/sunxi.inc
|
||||
require conf/machine/include/sunxi-mali.inc
|
||||
require conf/machine/include/arm/armv7a/tune-cortexa7.inc
|
||||
|
||||
SOC_FAMILY = "sun8i"
|
15
conf/machine/include/sunxi-mali-driver.inc
Normal file
15
conf/machine/include/sunxi-mali-driver.inc
Normal file
@ -0,0 +1,15 @@
|
||||
PREFERRED_PROVIDER_virtual/mesa ?= "mesa-gl"
|
||||
PREFERRED_PROVIDER_virtual/libgl ?= "mesa-gl"
|
||||
PREFERRED_PROVIDER_virtual/libgles1 ?= "sunxi-mali"
|
||||
PREFERRED_PROVIDER_virtual/libgles2 ?= "sunxi-mali"
|
||||
PREFERRED_PROVIDER_virtual/egl ?= "sunxi-mali"
|
||||
|
||||
PACKAGECONFIG:remove:pn-xserver-xorg = "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'glamor', '', d)}"
|
||||
|
||||
XSERVER += "sunxi-mali \
|
||||
sunxi-mali-dev"
|
||||
|
||||
MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS += "\
|
||||
kernel-module-mali \
|
||||
kernel-module-mali-drm \
|
||||
"
|
@ -1,13 +1,5 @@
|
||||
PREFERRED_PROVIDER_virtual/mesa ?= "mesa-gl"
|
||||
PREFERRED_PROVIDER_virtual/libgl ?= "mesa-gl"
|
||||
PREFERRED_PROVIDER_virtual/libgles1 ?= "sunxi-mali"
|
||||
PREFERRED_PROVIDER_virtual/libgles2 ?= "sunxi-mali"
|
||||
PREFERRED_PROVIDER_virtual/egl ?= "sunxi-mali"
|
||||
|
||||
XSERVER += "sunxi-mali \
|
||||
sunxi-mali-dev"
|
||||
|
||||
MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS += "\
|
||||
kernel-module-mali \
|
||||
kernel-module-mali-drm \
|
||||
"
|
||||
# The "sunxi-mailine-graphics-drivers.inc" doesn't exist, but it can be created
|
||||
# in the future if needed. Using include directive ensures build doesn't fail
|
||||
# if .inc file doesn't exist:
|
||||
# https://www.yoctoproject.org/pipermail/yocto/2019-August/046484.html
|
||||
include ${@'sunxi-mali-driver.inc' if 'use-mailine-graphics' not in d.getVar("MACHINEOVERRIDES").split(":") else 'sunxi-mailine-graphics-drivers.inc' }
|
||||
|
@ -1,32 +1,47 @@
|
||||
SOC_FAMILY ??= ""
|
||||
include conf/machine/include/soc-family.inc
|
||||
|
||||
MACHINEOVERRIDES =. "sunxi:"
|
||||
|
||||
# Sub-architecture support
|
||||
MACHINE_SOCARCH_SUFFIX ?= ""
|
||||
MACHINE_SOCARCH_SUFFIX_sun4i = "-sun4i"
|
||||
|
||||
PREFERRED_PROVIDER_virtual/xserver = "xserver-xorg"
|
||||
XSERVER = "xserver-xorg \
|
||||
xf86-video-fbturbo \
|
||||
xf86-input-evdev \
|
||||
xf86-input-mouse \
|
||||
xf86-input-keyboard"
|
||||
|
||||
PREFERRED_PROVIDER_virtual/kernel ?= "linux"
|
||||
PREFERRED_PROVIDER_virtual/kernel ?= "linux-mainline"
|
||||
PREFERRED_VERSION_linux-mainline ?= "6.6.%"
|
||||
PREFERRED_PROVIDER_u-boot ?= "u-boot"
|
||||
PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot"
|
||||
|
||||
KERNEL_IMAGETYPE ?= "uImage"
|
||||
|
||||
IMAGE_CLASSES += "sdcard_image-sunxi"
|
||||
IMAGE_FSTYPES += "ext3 tar.gz sunxi-sdimg"
|
||||
IMAGE_FSTYPES += "ext3 tar.gz wic.gz wic.bmap"
|
||||
|
||||
MACHINE_EXTRA_RRECOMMENDS = "kernel-modules"
|
||||
|
||||
UBOOT_LOCALVERSION = "-g${@d.getVar('SRCPV', True).partition('+')[2][0:7]}"
|
||||
|
||||
UBOOT_ENTRYPOINT ?= "0x40008000"
|
||||
UBOOT_LOADADDRESS ?= "0x400080OB00"
|
||||
|
||||
SERIAL_CONSOLE ?= "115200 ttyS0"
|
||||
SPL_BINARY ?= "u-boot-sunxi-with-spl.bin"
|
||||
|
||||
SERIAL_CONSOLES ?= "115200;ttyS0"
|
||||
MACHINE_FEATURES ?= "alsa apm keyboard rtc serial screen usbgadget usbhost vfat"
|
||||
|
||||
# Mimic the sdcard_image-sunxi.bbclass
|
||||
# image-version-info file was also generated and installed to boot partition,
|
||||
# but it is missing here - can be added somehow (how?) if required
|
||||
SUNXI_FEX_FILE ?= " "
|
||||
SUNXI_BOOT_SPACE ?= "40"
|
||||
IMAGE_BOOT_FILES ?= "${KERNEL_IMAGETYPE} boot.scr"
|
||||
# ship fex file for sunxi kernel, devicetree file for mainline kernel
|
||||
IMAGE_BOOT_FILES += "${@bb.utils.contains('PREFERRED_PROVIDER_virtual/kernel', 'linux-sunxi', '${SUNXI_FEX_FILE}', '${KERNEL_DEVICETREE}', d)}"
|
||||
WKS_FILES ?= "sunxi-sdcard-image.wks.in"
|
||||
WKS_FILE_DEPENDS ?= "virtual/kernel u-boot"
|
||||
# in case of sunxi kernel, sunxi-board-fex must be built prior wic image assembly
|
||||
WKS_FILE_DEPENDS += " ${@bb.utils.contains('PREFERRED_PROVIDER_virtual/kernel', 'linux-sunxi', 'sunxi-board-fex', '', d)}"
|
||||
|
52
conf/machine/include/sunxi64.inc
Normal file
52
conf/machine/include/sunxi64.inc
Normal file
@ -0,0 +1,52 @@
|
||||
SOC_FAMILY ??= ""
|
||||
include conf/machine/include/soc-family.inc
|
||||
|
||||
MACHINEOVERRIDES =. "sunxi:sunxi64:"
|
||||
|
||||
PREFERRED_PROVIDER_virtual/kernel ?= "linux-mainline"
|
||||
PREFERRED_VERSION_linux-mainline ?= "6.6.%"
|
||||
PREFERRED_PROVIDER_u-boot ?= "u-boot"
|
||||
PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot"
|
||||
|
||||
KERNEL_IMAGETYPE ?= "Image"
|
||||
|
||||
IMAGE_FSTYPES += "ext4 tar.gz wic.gz wic.bmap"
|
||||
|
||||
MACHINE_EXTRA_RRECOMMENDS = "kernel-modules"
|
||||
|
||||
UBOOT_LOCALVERSION = "-g${@d.getVar('SRCPV', True).partition('+')[2][0:7]}"
|
||||
|
||||
UBOOT_ENTRYPOINT ?= "0x40008000"
|
||||
UBOOT_LOADADDRESS ?= "0x400080OB00"
|
||||
|
||||
#UBOOT_BINARY ?= "u-boot.itb"
|
||||
SPL_BINARY ?= "u-boot-sunxi-with-spl.bin"
|
||||
|
||||
SERIAL_CONSOLES ?= "115200;ttyS0"
|
||||
MACHINE_FEATURES ?= "alsa apm keyboard rtc serial screen usbgadget usbhost vfat"
|
||||
|
||||
# arm64 dbts are under <vendor>/dts but is deployed under DEPLOYDIR
|
||||
do_fix_device_tree_location() {
|
||||
|
||||
for kdt in ${KERNEL_DEVICETREE}
|
||||
do
|
||||
local dbt_dir=$(dirname ${kdt})
|
||||
if [ "." != "${dbt_dir}" ] ; then
|
||||
local dbt=$(basename ${kdt})
|
||||
local dst=${DEPLOY_DIR_IMAGE}/${dbt_dir}/${dbt}
|
||||
if [ ! -f ${dst} ] ; then
|
||||
mkdir -p ${DEPLOY_DIR_IMAGE}/$dbt_dir
|
||||
ln -s ${DEPLOY_DIR_IMAGE}/${dbt} ${dst}
|
||||
fi
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
|
||||
addtask do_fix_device_tree_location after do_write_wks_template before do_image_wic
|
||||
|
||||
SUNXI_BOOT_SPACE ?= "40"
|
||||
IMAGE_BOOT_FILES ?= "${KERNEL_IMAGETYPE} boot.scr ${KERNEL_DEVICETREE}"
|
||||
|
||||
WKS_FILES ?= "sunxi-sdcard-image.wks.in"
|
||||
WKS_FILE_DEPENDS ?= "virtual/kernel u-boot"
|
10
conf/machine/lamobo-r1.conf
Normal file
10
conf/machine/lamobo-r1.conf
Normal file
@ -0,0 +1,10 @@
|
||||
#@TYPE: Machine
|
||||
#@NAME: Lamobo R1
|
||||
#@DESCRIPTION: Machine configuration for the lamobo r1, based on allwinner A20 CPU http://bananapi.org/
|
||||
|
||||
require conf/machine/include/sun7i.inc
|
||||
|
||||
MACHINE_EXTRA_RRECOMMENDS = " kernel-modules kernel-devicetree"
|
||||
KERNEL_DEVICETREE = "sun7i-a20-lamobo-r1.dtb"
|
||||
UBOOT_MACHINE = "Lamobo_R1_config"
|
||||
SUNXI_FEX_FILE = "sys_config/a20/lamobo-r1.fex"
|
9
conf/machine/licheepi-zero.conf
Normal file
9
conf/machine/licheepi-zero.conf
Normal file
@ -0,0 +1,9 @@
|
||||
#@TYPE: Machine
|
||||
#@NAME: licheepi-zero
|
||||
#@DESCRIPTION: Machine configuration for the licheepi-zero, based on allwinner V3s CPU
|
||||
|
||||
require conf/machine/include/sun8i.inc
|
||||
|
||||
|
||||
UBOOT_MACHINE = "LicheePi_Zero_defconfig"
|
||||
KERNEL_DEVICETREE = "sun8i-v3s-licheepi-zero.dtb"
|
10
conf/machine/mangopi-mq-t-t113.conf
Normal file
10
conf/machine/mangopi-mq-t-t113.conf
Normal file
@ -0,0 +1,10 @@
|
||||
#@TYPE: Machine
|
||||
#@NAME: MangoPi MQ-R T113-S3
|
||||
#@DESCRIPTION: Machine configuration for the MangoPi MQ-R, based on the Allwinner T113-S3 CPU
|
||||
|
||||
require conf/machine/include/sun8i.inc
|
||||
|
||||
KERNEL_DEVICETREE = "sun8i-t113s-mangopi-mq-r-t113.dtb"
|
||||
KERNEL_IMAGETYPE = "zImage"
|
||||
|
||||
UBOOT_MACHINE = "mangopi_mq_r_defconfig"
|
10
conf/machine/marsboard-a10.conf
Normal file
10
conf/machine/marsboard-a10.conf
Normal file
@ -0,0 +1,10 @@
|
||||
#@TYPE: Machine
|
||||
#@NAME: HAOYU Electronics MarsBoard A10
|
||||
#@DESCRIPTION: Machine configuration for the HAOYU Electronics MarsBoard A10, based on Allwinner A10 CPU
|
||||
#https://linux-sunxi.org/MarsBoard_A10
|
||||
|
||||
require conf/machine/include/sun4i.inc
|
||||
|
||||
KERNEL_DEVICETREE = "sun4i-a10-marsboard.dtb"
|
||||
UBOOT_MACHINE = "Marsboard_A10_config"
|
||||
SUNXI_FEX_FILE = "sys_config/a10/marsboard_a10.fex"
|
9
conf/machine/nanopi-m1-plus.conf
Normal file
9
conf/machine/nanopi-m1-plus.conf
Normal file
@ -0,0 +1,9 @@
|
||||
#@TYPE: Machine
|
||||
#@NAME: nanopi M1 Plus
|
||||
#@DESCRIPTION: Machine configuration for the FriendlyARM NanoPi Neo, based on the Allwinner H3 CPU
|
||||
|
||||
require conf/machine/include/sun8i.inc
|
||||
|
||||
KERNEL_DEVICETREE = "sun8i-h3-nanopi-m1-plus.dtb"
|
||||
UBOOT_MACHINE = "nanopi_m1_plus_defconfig"
|
||||
|
8
conf/machine/nanopi-m1.conf
Normal file
8
conf/machine/nanopi-m1.conf
Normal file
@ -0,0 +1,8 @@
|
||||
#@TYPE: Machine
|
||||
#@NAME: NanoPi M1
|
||||
#@DESCRIPTION: Machine configuration for the FriendlyARM NanoPi Neo, based on #the Allwinner H3 CPU
|
||||
|
||||
require conf/machine/include/sun8i.inc
|
||||
|
||||
KERNEL_DEVICETREE = "sun8i-h3-nanopi-m1.dtb"
|
||||
UBOOT_MACHINE = "nanopi_m1_defconfig"
|
9
conf/machine/nanopi-neo-air.conf
Normal file
9
conf/machine/nanopi-neo-air.conf
Normal file
@ -0,0 +1,9 @@
|
||||
#@TYPE: Machine
|
||||
#@NAME: nanopi-neo-air
|
||||
#@DESCRIPTION: Machine configuration for the FriendlyARM NanoPi Neo Air, based
|
||||
# on the Allwinner H3 CPU.
|
||||
|
||||
require conf/machine/include/sun8i.inc
|
||||
|
||||
KERNEL_DEVICETREE = "sun8i-h3-nanopi-neo-air.dtb"
|
||||
UBOOT_MACHINE = "nanopi_neo_air_defconfig"
|
10
conf/machine/nanopi-neo-plus2.conf
Normal file
10
conf/machine/nanopi-neo-plus2.conf
Normal file
@ -0,0 +1,10 @@
|
||||
#@TYPE: Machine
|
||||
#@NAME: nanopi-neo-plus2
|
||||
#@DESCRIPTION: Machine configuration for the FriendlyARM NanoPi Neo Plus2, based
|
||||
# on the Allwinner H5 SoC.
|
||||
|
||||
require conf/machine/include/sun50i.inc
|
||||
require conf/machine/include/hardware/ap6212a.inc
|
||||
|
||||
KERNEL_DEVICETREE = "allwinner/sun50i-h5-nanopi-neo-plus2.dtb"
|
||||
UBOOT_MACHINE = "nanopi_neo_plus2_defconfig"
|
9
conf/machine/nanopi-neo.conf
Normal file
9
conf/machine/nanopi-neo.conf
Normal file
@ -0,0 +1,9 @@
|
||||
#@TYPE: Machine
|
||||
#@NAME: nanopi-neo
|
||||
#@DESCRIPTION: Machine configuration for the FriendlyARM NanoPi Neo, based on the Allwinner H3 CPU
|
||||
|
||||
require conf/machine/include/sun8i.inc
|
||||
|
||||
KERNEL_DEVICETREE = "sun8i-h3-nanopi-neo.dtb"
|
||||
UBOOT_MACHINE = "nanopi_neo_defconfig"
|
||||
|
9
conf/machine/nanopi-neo2.conf
Normal file
9
conf/machine/nanopi-neo2.conf
Normal file
@ -0,0 +1,9 @@
|
||||
#@TYPE: Machine
|
||||
#@NAME: nanopi-neo2
|
||||
#@DESCRIPTION: Machine configuration for the FriendlyARM NanoPi Neo 2, based on
|
||||
# the Allwinner H5 SoC.
|
||||
|
||||
require conf/machine/include/sun50i.inc
|
||||
|
||||
KERNEL_DEVICETREE = "allwinner/sun50i-h5-nanopi-neo2.dtb"
|
||||
UBOOT_MACHINE = "nanopi_neo2_defconfig"
|
8
conf/machine/nanopi-r1.conf
Normal file
8
conf/machine/nanopi-r1.conf
Normal file
@ -0,0 +1,8 @@
|
||||
#@TYPE: Machine
|
||||
#@NAME: NanoPi R1
|
||||
#@DESCRIPTION: Machine configuration for the FriendlyARM NanoPi R1, based on #the Allwinner H3 CPU
|
||||
|
||||
require conf/machine/include/sun8i.inc
|
||||
|
||||
KERNEL_DEVICETREE = "sun8i-h3-nanopi-r1.dtb"
|
||||
UBOOT_MACHINE = "nanopi_r1_defconfig"
|
10
conf/machine/olinuxino-a20lime2-emmc.conf
Normal file
10
conf/machine/olinuxino-a20lime2-emmc.conf
Normal file
@ -0,0 +1,10 @@
|
||||
#@TYPE: Machine
|
||||
#@NAME: Olimex A20-OLinuXino Lime2 Board with 4GB eMMC
|
||||
#@DESCRIPTION: Machine configuration for the Olimex A20-OLinuXino Lime2 Board with 4GB eMMC, based on Allwinner A20 CPU
|
||||
#https://github.com/OLIMEX/OLINUXINO
|
||||
|
||||
require conf/machine/include/sun7i.inc
|
||||
|
||||
KERNEL_DEVICETREE = "sun7i-a20-olinuxino-lime2-emmc.dtb"
|
||||
UBOOT_MACHINE = "A20-OLinuXino-Lime2-eMMC_config"
|
||||
SUNXI_FEX_FILE = "sys_config/a20/a20-olinuxino_lime2.fex"
|
@ -6,5 +6,5 @@
|
||||
require conf/machine/include/sun7i.inc
|
||||
|
||||
KERNEL_DEVICETREE = "sun7i-a20-olinuxino-lime2.dtb"
|
||||
UBOOT_MACHINE = "A20-OLinuXino_Lime2_config"
|
||||
SUNXI_FEX_FILE = "sys_config/a20/a20-olinuxino_lime2.fex"
|
||||
UBOOT_MACHINE = "A20-OLinuXino-Lime2_config"
|
||||
SUNXI_FEX_FILE = "sys_config/a20/a20-olinuxino_lime2.fex"
|
||||
|
@ -5,5 +5,6 @@
|
||||
|
||||
require conf/machine/include/sun7i.inc
|
||||
|
||||
UBOOT_MACHINE = "Olimex_A20-SOM_config"
|
||||
SUNXI_FEX_FILE = "sys_config/a20/olimex_a20_som.fex"
|
||||
KERNEL_DEVICETREE = "sun7i-a20-olimex-som-evb.dtb"
|
||||
UBOOT_MACHINE = "A20-Olimex-SOM-EVB_config"
|
||||
SUNXI_FEX_FILE = "sys_config/a20/olimex_a20_som.fex"
|
||||
|
13
conf/machine/olinuxino-a64.conf
Normal file
13
conf/machine/olinuxino-a64.conf
Normal file
@ -0,0 +1,13 @@
|
||||
#@TYPE: Machine
|
||||
#@NAME: Olimex A64-OLinuXino Board
|
||||
#@DESCRIPTION: Machine configuration for the Olimex A64-OLinuXino Board, based on Allwinner A64 CPU
|
||||
#https://github.com/OLIMEX/OLINUXINO
|
||||
|
||||
require conf/machine/include/sun50i.inc
|
||||
|
||||
PREFFERED_VERSION_u-boot = "v2018.09%"
|
||||
|
||||
MACHINE_EXTRA_RRECOMMENDS += " linux-firmware-rtl8723"
|
||||
|
||||
KERNEL_DEVICETREE = "allwinner/sun50i-a64-olinuxino.dtb"
|
||||
UBOOT_MACHINE = "a64-olinuxino_defconfig"
|
28
conf/machine/orange-pi-3lts.conf
Normal file
28
conf/machine/orange-pi-3lts.conf
Normal file
@ -0,0 +1,28 @@
|
||||
#@TYPE: Machine
|
||||
#@NAME: orange-pi-3lts
|
||||
#@DESCRIPTION: Machine configuration for the Orange Pi 3 LTS , based on Allwinner H6 CPU
|
||||
# Note: Some boards have faulty RTC a fix is included by default
|
||||
# a workarround in the dts ins include by default but in can removed adding
|
||||
# KERNEL_FEATURES:remove = " bsp/orange-pi-3lts/fix-rtc.scc" to local.conf
|
||||
|
||||
require conf/machine/include/sun50i-h6.inc
|
||||
|
||||
KERNEL_DEVICETREE = "allwinner/sun50i-h6-orangepi-3-lts.dtb"
|
||||
UBOOT_MACHINE = "orangepi_3_lts_defconfig"
|
||||
|
||||
SPL_BINARY = "u-boot-sunxi-with-spl.bin"
|
||||
|
||||
# as for now neither graphics nor audio is supported
|
||||
MACHINE_FEATURES:remove = " x11 alsa rtc"
|
||||
MACHINE_FEATURES:append = " bluetooth wifi"
|
||||
|
||||
# fiwrware needed for wifi + bt
|
||||
MACHINE_EXTRA_RRECOMMENDS += " uwe5622-firmware"
|
||||
|
||||
# Load modules for wifi & bt
|
||||
# Note: fo wifi a custom hci attach userspace sofware is needed that is not included in the layer
|
||||
KERNEL_MODULE_AUTOLOAD += " sprdwl_ng sprdbt_tty "
|
||||
|
||||
|
||||
|
||||
|
9
conf/machine/orange-pi-lite.conf
Normal file
9
conf/machine/orange-pi-lite.conf
Normal file
@ -0,0 +1,9 @@
|
||||
#@TYPE: Machine
|
||||
#@NAME: orange-pi-lite
|
||||
#@DESCRIPTION: Machine configuration for the orange-pi-lite, based on Allwinner H3 CPU
|
||||
|
||||
require conf/machine/include/sun8i.inc
|
||||
|
||||
KERNEL_DEVICETREE = "sun8i-h3-orangepi-lite.dtb"
|
||||
UBOOT_MACHINE = "orangepi_lite_defconfig"
|
||||
|
9
conf/machine/orange-pi-one-plus.conf
Normal file
9
conf/machine/orange-pi-one-plus.conf
Normal file
@ -0,0 +1,9 @@
|
||||
#@TYPE: Machine
|
||||
#@NAME: orange-pi-one-plus
|
||||
#@DESCRIPTION: Machine configuration for the Orange Pi One Plus, based on Allwinner H6 CPU
|
||||
|
||||
|
||||
require conf/machine/include/sun50i-h6.inc
|
||||
|
||||
KERNEL_DEVICETREE = "allwinner/sun50i-h6-orangepi-one-plus.dtb"
|
||||
UBOOT_MACHINE = "orangepi_one_plus_defconfig"
|
9
conf/machine/orange-pi-one.conf
Normal file
9
conf/machine/orange-pi-one.conf
Normal file
@ -0,0 +1,9 @@
|
||||
#@TYPE: Machine
|
||||
#@NAME: orange-pi-one
|
||||
#@DESCRIPTION: Machine configuration for the orange-pi-one, base on allwinner H3 CPU
|
||||
|
||||
require conf/machine/include/sun8i.inc
|
||||
|
||||
KERNEL_DEVICETREE = "sun8i-h3-orangepi-one.dtb"
|
||||
UBOOT_MACHINE = "orangepi_one_defconfig"
|
||||
|
9
conf/machine/orange-pi-pc-plus.conf
Normal file
9
conf/machine/orange-pi-pc-plus.conf
Normal file
@ -0,0 +1,9 @@
|
||||
#@TYPE: Machine
|
||||
#@NAME: orange-pi-pc-plus
|
||||
#@DESCRIPTION: Machine configuration for the orange-pi-pc-plus, base on allwinner H3 CPU
|
||||
|
||||
require conf/machine/include/sun8i.inc
|
||||
|
||||
KERNEL_DEVICETREE = "sun8i-h3-orangepi-pc-plus.dtb"
|
||||
UBOOT_MACHINE = "orangepi_pc_plus_defconfig"
|
||||
|
9
conf/machine/orange-pi-pc.conf
Normal file
9
conf/machine/orange-pi-pc.conf
Normal file
@ -0,0 +1,9 @@
|
||||
#@TYPE: Machine
|
||||
#@NAME: orange-pi-one
|
||||
#@DESCRIPTION: Machine configuration for the orange-pi-one, base on allwinner H3 CPU
|
||||
|
||||
require conf/machine/include/sun8i.inc
|
||||
|
||||
KERNEL_DEVICETREE = "sun8i-h3-orangepi-pc.dtb"
|
||||
UBOOT_MACHINE = "orangepi_pc_defconfig"
|
||||
|
8
conf/machine/orange-pi-pc2.conf
Normal file
8
conf/machine/orange-pi-pc2.conf
Normal file
@ -0,0 +1,8 @@
|
||||
#@TYPE: Machine
|
||||
#@NAME: orangepi-pc2
|
||||
#@DESCRIPTION: Machine configuration for the orangepi-pc2, based on Allwinner A64 CPU
|
||||
|
||||
require conf/machine/include/sun50i.inc
|
||||
|
||||
KERNEL_DEVICETREE = "allwinner/sun50i-h5-orangepi-pc2.dtb"
|
||||
UBOOT_MACHINE = "orangepi_pc2_defconfig"
|
12
conf/machine/orange-pi-prime.conf
Normal file
12
conf/machine/orange-pi-prime.conf
Normal file
@ -0,0 +1,12 @@
|
||||
#@TYPE: Machine
|
||||
#@NAME: orange-pi-prime
|
||||
#@DESCRIPTION: Machine configuration for the orange-pi-prime, base on Allwinner H5 CPU
|
||||
|
||||
require conf/machine/include/sun50i.inc
|
||||
require conf/machine/include/hardware/ap6212a.inc
|
||||
|
||||
KERNEL_DEVICETREE = "allwinner/sun50i-h5-orangepi-prime.dtb"
|
||||
UBOOT_MACHINE = "orangepi_prime_defconfig"
|
||||
|
||||
MACHINE_FEATURES:append = " bluetooth wifi"
|
||||
MACHINE_EXTRA_RRECOMMENDS:append = " linux-firmware-rtl8723"
|
9
conf/machine/orange-pi-r1.conf
Normal file
9
conf/machine/orange-pi-r1.conf
Normal file
@ -0,0 +1,9 @@
|
||||
#@TYPE: Machine
|
||||
#@NAME: orange-pi-r1
|
||||
#@DESCRIPTION: Machine configuration for the orange-pi-r1, base on allwinner H2+ CPU
|
||||
|
||||
require conf/machine/include/sun8i.inc
|
||||
|
||||
KERNEL_DEVICETREE = "sun8i-h2-plus-orangepi-r1.dtb"
|
||||
UBOOT_MACHINE = "orangepi_r1_defconfig"
|
||||
|
9
conf/machine/orange-pi-zero-plus2-h3.conf
Normal file
9
conf/machine/orange-pi-zero-plus2-h3.conf
Normal file
@ -0,0 +1,9 @@
|
||||
#@TYPE: Machine
|
||||
#@NAME: orange-pi-zero-plus2-h3
|
||||
#@DESCRIPTION: Machine configuration for the orange-pi-zero-plus2, based on Allwinner H3 CPU
|
||||
|
||||
require conf/machine/include/sun8i.inc
|
||||
require conf/machine/include/hardware/ap6212a.inc
|
||||
|
||||
KERNEL_DEVICETREE = "sun8i-h3-orangepi-zero-plus2.dtb"
|
||||
UBOOT_MACHINE = "orangepi_zero_plus2_h3_defconfig"
|
9
conf/machine/orange-pi-zero-plus2.conf
Normal file
9
conf/machine/orange-pi-zero-plus2.conf
Normal file
@ -0,0 +1,9 @@
|
||||
#@TYPE: Machine
|
||||
#@NAME: orange-pi-zero-plus2
|
||||
#@DESCRIPTION: Machine configuration for the orange-pi-zero-plus2, base on Allwinner H5 CPU
|
||||
|
||||
require conf/machine/include/sun50i.inc
|
||||
require conf/machine/include/hardware/ap6212a.inc
|
||||
|
||||
KERNEL_DEVICETREE = "allwinner/sun50i-h5-orangepi-zero-plus2.dtb"
|
||||
UBOOT_MACHINE = "orangepi_zero_plus2_defconfig"
|
9
conf/machine/orange-pi-zero.conf
Normal file
9
conf/machine/orange-pi-zero.conf
Normal file
@ -0,0 +1,9 @@
|
||||
#@TYPE: Machine
|
||||
#@NAME: orange-pi-zero
|
||||
#@DESCRIPTION: Machine configuration for the orange-pi-zero, based on Allwinner H2 CPU
|
||||
|
||||
require conf/machine/include/sun8i.inc
|
||||
|
||||
KERNEL_DEVICETREE = "sun8i-h2-plus-orangepi-zero.dtb"
|
||||
UBOOT_MACHINE = "orangepi_zero_defconfig"
|
||||
|
21
conf/machine/orange-pi-zero2.conf
Normal file
21
conf/machine/orange-pi-zero2.conf
Normal file
@ -0,0 +1,21 @@
|
||||
#@TYPE: Machine
|
||||
#@NAME: orange-pi-zero-2
|
||||
#@DESCRIPTION: Machine configuration for the orange-pi-zero-2, based on Allwinner H616 CPU
|
||||
|
||||
require conf/machine/include/sun50i-h616.inc
|
||||
|
||||
KERNEL_DEVICETREE = "allwinner/sun50i-h616-orangepi-zero2.dtb"
|
||||
UBOOT_MACHINE = "orangepi_zero2_defconfig"
|
||||
|
||||
SPL_BINARY = "u-boot-sunxi-with-spl.bin"
|
||||
|
||||
# as for now neither graphics nor audio is supported
|
||||
MACHINE_FEATURES:remove = "alsa x11"
|
||||
MACHINE_FEATURES:append = "bluetooth wifi"
|
||||
|
||||
MACHINE_EXTRA_RRECOMMENDS = "uwe5622-firmware"
|
||||
|
||||
# Load modules for wifi & bt
|
||||
# Note: fo wifi a custom hci attach userspace sofware is needed that is not included in the layer
|
||||
KERNEL_MODULE_AUTOLOAD += " sprdwl_ng sprdbt_tty "
|
||||
|
9
conf/machine/pcduino.conf
Normal file
9
conf/machine/pcduino.conf
Normal file
@ -0,0 +1,9 @@
|
||||
#@TYPE: Machine
|
||||
#@NAME: pcduino-lite-wifi
|
||||
#@DESCRIPTION: Machine configuration for the pcDuino-Lite-Wifi, base on allwinner a10 CPU
|
||||
|
||||
require conf/machine/include/sun4i.inc
|
||||
|
||||
KERNEL_DEVICETREE = "sun4i-a10-pcduino.dtb"
|
||||
UBOOT_MACHINE = "Linksprite_pcDuino_defconfig"
|
||||
SUNXI_FEX_FILE = "sys_config/a10/pcduino.fex"
|
9
conf/machine/pcduino3.conf
Normal file
9
conf/machine/pcduino3.conf
Normal file
@ -0,0 +1,9 @@
|
||||
#@TYPE: Machine
|
||||
#@NAME: Linksprite A20-pcduino3 Board
|
||||
#@DESCRIPTION: Machine configuration for the pcDuino 3, based on Allwinner A20 CPU
|
||||
|
||||
require conf/machine/include/sun7i.inc
|
||||
|
||||
KERNEL_DEVICETREE = "sun7i-a20-pcduino3.dtb"
|
||||
UBOOT_MACHINE = "Linksprite_pcDuino3_defconfig"
|
||||
SUNXI_FEX_FILE = "sys_config/a20/linksprite_pcduino3.fex"
|
9
conf/machine/pine64-plus.conf
Normal file
9
conf/machine/pine64-plus.conf
Normal file
@ -0,0 +1,9 @@
|
||||
#@TYPE: Machine
|
||||
#@NAME: pine64-plus
|
||||
#@DESCRIPTION: Machine configuration for the pine64-plus, based on Allwinner A64 CPU
|
||||
|
||||
|
||||
require conf/machine/include/sun50i.inc
|
||||
|
||||
KERNEL_DEVICETREE = "allwinner/sun50i-a64-pine64-plus.dtb"
|
||||
UBOOT_MACHINE = "pine64_plus_defconfig"
|
@ -9,9 +9,9 @@ PR = "r0"
|
||||
|
||||
COMPATIBLE_MACHINE = "(sun4i|sun5i|sun7i)"
|
||||
|
||||
SRC_URI = "git://github.com/linux-sunxi/sunxi-boards.git;protocol=git"
|
||||
SRC_URI = "git://github.com/linux-sunxi/sunxi-boards.git;protocol=https;branch=master"
|
||||
# Increase PV with SRCREV change
|
||||
SRCREV = "bf02cb81d1fe5996758322dc74e66808c1c7ad38"
|
||||
SRCREV = "af5f938ea14a3614d35ad3d9ab51a5d392117444"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
|
@ -0,0 +1,7 @@
|
||||
COMPATIBLE_MACHINE:sunxi = "(sun50i|sun50i-h616|sun50i-h6)"
|
||||
|
||||
TFA_PLATFORM:sun50i = "sun50i_a64"
|
||||
TFA_PLATFORM:sun50i-h6 = "sun50i_h6"
|
||||
TFA_PLATFORM:sun50i-h616 = "sun50i_h616"
|
||||
|
||||
TFA_BUILD_TARGET:sunxi = "bl31"
|
@ -0,0 +1,21 @@
|
||||
From 6a64d90ca4d976c16a2e102dbad0848e4d29776c Mon Sep 17 00:00:00 2001
|
||||
From: Florin Sarbu <florin@resin.io>
|
||||
Date: Wed, 12 Sep 2018 14:22:49 +0200
|
||||
Subject: [PATCH] nanopi_neo_air_defconfig: Enable eMMC support
|
||||
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Florin Sarbu <florin@resin.io>
|
||||
|
||||
---
|
||||
configs/nanopi_neo_air_defconfig | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/configs/nanopi_neo_air_defconfig b/configs/nanopi_neo_air_defconfig
|
||||
index 806d95c1cc..8899cc3a15 100644
|
||||
--- a/configs/nanopi_neo_air_defconfig
|
||||
+++ b/configs/nanopi_neo_air_defconfig
|
||||
@@ -9,3 +9,4 @@ CONFIG_DRAM_CLK=408
|
||||
CONFIG_CONSOLE_MUX=y
|
||||
CONFIG_USB_EHCI_HCD=y
|
||||
CONFIG_USB_OHCI_HCD=y
|
||||
+CONFIG_MMC_SUNXI_SLOT_EXTRA=2
|
@ -0,0 +1,42 @@
|
||||
From 767a05572ef5b93c2e157749b1754cbe261ee43d Mon Sep 17 00:00:00 2001
|
||||
From: Marek Belisko <marek.belisko@open-nandra.com>
|
||||
Date: Fri, 8 Apr 2022 11:33:53 +0200
|
||||
Subject: [PATCH] Added nanopi-r1 board support
|
||||
|
||||
Patch taken from : https://github.com/armbian/build/blob/master/patch/u-boot/u-boot-sunxi/add-nanopi-r1-and-duo2.patch
|
||||
|
||||
Upstream-Status: Pending
|
||||
|
||||
Signed-off-by: Marek Belisko <marek.belisko@open-nandra.com>
|
||||
---
|
||||
diff --git a/configs/nanopi_r1_defconfig b/configs/nanopi_r1_defconfig
|
||||
new file mode 100644
|
||||
index 0000000..e028b41
|
||||
--- /dev/null
|
||||
+++ b/configs/nanopi_r1_defconfig
|
||||
@@ -0,0 +1,22 @@
|
||||
+CONFIG_ARM=y
|
||||
+CONFIG_ARCH_SUNXI=y
|
||||
+CONFIG_SPL=y
|
||||
+CONFIG_MACH_SUN8I_H3=y
|
||||
+CONFIG_DRAM_CLK=408
|
||||
+CONFIG_DRAM_ZQ=3881979
|
||||
+CONFIG_DRAM_ODT_EN=y
|
||||
+CONFIG_MACPWR="PD6"
|
||||
+# CONFIG_VIDEO_DE2 is not set
|
||||
+CONFIG_NR_DRAM_BANKS=1
|
||||
+# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
|
||||
+CONFIG_CONSOLE_MUX=y
|
||||
+CONFIG_SYS_CLK_FREQ=480000000
|
||||
+# CONFIG_CMD_FLASH is not set
|
||||
+# CONFIG_SPL_DOS_PARTITION is not set
|
||||
+# CONFIG_SPL_EFI_PARTITION is not set
|
||||
+CONFIG_DEFAULT_DEVICE_TREE="sun8i-h3-nanopi-r1"
|
||||
+CONFIG_SUN8I_EMAC=y
|
||||
+CONFIG_USB_EHCI_HCD=y
|
||||
+CONFIG_USB_OHCI_HCD=y
|
||||
+CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE=y
|
||||
+CONFIG_MMC_SUNXI_SLOT_EXTRA=2
|
||||
--
|
||||
2.7.4
|
||||
|
@ -0,0 +1,58 @@
|
||||
From: Anne Macedo <retpolanne@posteo.net>
|
||||
Date: Tue, 11 Jul 2023 00:39:58 +0000
|
||||
Subject: [PATCH] sunxi: H6: Enable Ethernet on Orange Pi One Plus
|
||||
|
||||
Enable Ethernet on Orange Pi One Plus by using the correct phy for
|
||||
Realtek RTL8211E instead of the Generic One. Also use CONFIG_MACPWR to
|
||||
turn on ethernet on startup.
|
||||
|
||||
After this patch is applied, a few issues can be seen:
|
||||
|
||||
- there's still a PHY reset timed out error that doesn't seem to cause
|
||||
any impacts to the overall connection
|
||||
|
||||
- sometimes the emac driver times out after reset (yellow LED turns on
|
||||
and never blinks)
|
||||
|
||||
For future patches: for now, CONFIG_MACPWR is the only way to enable
|
||||
Ethernet on boot. There's already code on the dts for using the 3v3-gmac
|
||||
regulator. However, it is not probed on boot, so it only starts after a
|
||||
"regulator status" command is issued.
|
||||
|
||||
More details about the troubleshooting on [1].
|
||||
|
||||
Upstream-Status: Submitted
|
||||
|
||||
[1] https://lore.kernel.org/u-boot/4wsvwgy56e2xfgtvioru2tf2ofkqprlts36qggivxogww6pn5j@4jk63zxhzhag/
|
||||
|
||||
Signed-off-by: Anne Macedo <retpolanne@posteo.net>
|
||||
---
|
||||
arch/arm/dts/sun50i-h6-orangepi-one-plus.dts | 2 +-
|
||||
configs/orangepi_one_plus_defconfig | 4 ++++
|
||||
2 files changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/arch/arm/dts/sun50i-h6-orangepi-one-plus.dts b/arch/arm/dts/sun50i-h6-orangepi-one-plus.dts
|
||||
index 29a081e72a..6427c58f8a 100644
|
||||
--- a/arch/arm/dts/sun50i-h6-orangepi-one-plus.dts
|
||||
+++ b/arch/arm/dts/sun50i-h6-orangepi-one-plus.dts
|
||||
@@ -37,7 +37,7 @@
|
||||
|
||||
&mdio {
|
||||
ext_rgmii_phy: ethernet-phy@1 {
|
||||
- compatible = "ethernet-phy-ieee802.3-c22";
|
||||
+ compatible = "ethernet-phy-id001c.c915", "ethernet-phy-ieee802.3-c22" ;
|
||||
reg = <1>;
|
||||
};
|
||||
};
|
||||
diff --git a/configs/orangepi_one_plus_defconfig b/configs/orangepi_one_plus_defconfig
|
||||
index aa5f540eb1..a1835492db 100644
|
||||
--- a/configs/orangepi_one_plus_defconfig
|
||||
+++ b/configs/orangepi_one_plus_defconfig
|
||||
@@ -8,3 +8,7 @@ CONFIG_SUNXI_DRAM_H6_LPDDR3=y
|
||||
# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
|
||||
CONFIG_USB_EHCI_HCD=y
|
||||
CONFIG_USB_OHCI_HCD=y
|
||||
+CONFIG_SUN8I_EMAC=y
|
||||
+CONFIG_PHY_REALTEK=y
|
||||
+CONFIG_PHY_ETHERNET_ID=y
|
||||
+CONFIG_MACPWR="PD6"
|
421
recipes-bsp/u-boot/files/0004-OrangePi-3-LTS-support.patch
Normal file
421
recipes-bsp/u-boot/files/0004-OrangePi-3-LTS-support.patch
Normal file
@ -0,0 +1,421 @@
|
||||
From 9966dda20246285abf8b417bd251d5a4bea3e423 Mon Sep 17 00:00:00 2001
|
||||
From: Juliano Dorigão <jdorigao@gmail.com>
|
||||
Date: Fri, 3 Mar 2023 16:11:30 -0400
|
||||
Subject: [PATCH] OrangePi 3 LTS support
|
||||
|
||||
Upstream-Status: Pending
|
||||
---
|
||||
arch/arm/dts/Makefile | 1 +
|
||||
arch/arm/dts/sun50i-h6-orangepi-3-lts.dts | 361 ++++++++++++++++++++++
|
||||
configs/orangepi_3_lts_defconfig | 19 ++
|
||||
3 files changed, 381 insertions(+)
|
||||
create mode 100644 arch/arm/dts/sun50i-h6-orangepi-3-lts.dts
|
||||
create mode 100644 configs/orangepi_3_lts_defconfig
|
||||
|
||||
diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
|
||||
index 43951a77..8dbbb6f4 100644
|
||||
--- a/arch/arm/dts/Makefile
|
||||
+++ b/arch/arm/dts/Makefile
|
||||
@@ -710,6 +710,7 @@ dtb-$(CONFIG_MACH_SUN50I_H5) += \
|
||||
dtb-$(CONFIG_MACH_SUN50I_H6) += \
|
||||
sun50i-h6-beelink-gs1.dtb \
|
||||
sun50i-h6-orangepi-3.dtb \
|
||||
+ sun50i-h6-orangepi-3-lts.dtb \
|
||||
sun50i-h6-orangepi-lite2.dtb \
|
||||
sun50i-h6-orangepi-one-plus.dtb \
|
||||
sun50i-h6-pine-h64.dtb \
|
||||
diff --git a/arch/arm/dts/sun50i-h6-orangepi-3-lts.dts b/arch/arm/dts/sun50i-h6-orangepi-3-lts.dts
|
||||
new file mode 100644
|
||||
index 00000000..67f38b8a
|
||||
--- /dev/null
|
||||
+++ b/arch/arm/dts/sun50i-h6-orangepi-3-lts.dts
|
||||
@@ -0,0 +1,361 @@
|
||||
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||
+// Copyright (C) 2023 Jernej Skrabec <jernej.skrabec@gmail.com>
|
||||
+// Based on sun50i-h6-orangepi-3.dts, which is:
|
||||
+// Copyright (C) 2019 Ondřej Jirman <megous@megous.com>
|
||||
+
|
||||
+/dts-v1/;
|
||||
+
|
||||
+#include "sun50i-h6.dtsi"
|
||||
+#include "sun50i-h6-cpu-opp.dtsi"
|
||||
+
|
||||
+#include <dt-bindings/gpio/gpio.h>
|
||||
+
|
||||
+/ {
|
||||
+ model = "OrangePi 3 LTS";
|
||||
+ compatible = "xunlong,orangepi-3-lts", "allwinner,sun50i-h6";
|
||||
+
|
||||
+ aliases {
|
||||
+ ethernet0 = &emac;
|
||||
+ serial0 = &uart0;
|
||||
+ };
|
||||
+
|
||||
+ chosen {
|
||||
+ stdout-path = "serial0:115200n8";
|
||||
+ };
|
||||
+
|
||||
+ connector {
|
||||
+ compatible = "hdmi-connector";
|
||||
+ ddc-en-gpios = <&pio 7 2 GPIO_ACTIVE_HIGH>; /* PH2 */
|
||||
+ type = "a";
|
||||
+
|
||||
+ port {
|
||||
+ hdmi_con_in: endpoint {
|
||||
+ remote-endpoint = <&hdmi_out_con>;
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ ext_osc32k: ext_osc32k_clk {
|
||||
+ #clock-cells = <0>;
|
||||
+ compatible = "fixed-clock";
|
||||
+ clock-frequency = <32768>;
|
||||
+ clock-output-names = "ext_osc32k";
|
||||
+ };
|
||||
+
|
||||
+ leds {
|
||||
+ compatible = "gpio-leds";
|
||||
+
|
||||
+ led-0 {
|
||||
+ label = "orangepi:red:power";
|
||||
+ gpios = <&r_pio 0 4 GPIO_ACTIVE_HIGH>; /* PL4 */
|
||||
+ };
|
||||
+
|
||||
+ led-1 {
|
||||
+ label = "orangepi:green:status";
|
||||
+ gpios = <&r_pio 0 7 GPIO_ACTIVE_HIGH>; /* PL7 */
|
||||
+ default-state = "on";
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ reg_vcc5v: vcc5v {
|
||||
+ /* board wide 5V supply directly from the DC jack */
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "vcc-5v";
|
||||
+ regulator-min-microvolt = <5000000>;
|
||||
+ regulator-max-microvolt = <5000000>;
|
||||
+ regulator-always-on;
|
||||
+ };
|
||||
+
|
||||
+ reg_gmac_3v3: gmac-3v3 {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "gmac-3v3";
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ startup-delay-us = <150000>;
|
||||
+ enable-active-high;
|
||||
+ gpio = <&pio 3 6 GPIO_ACTIVE_HIGH>; /* PD6 */
|
||||
+ };
|
||||
+
|
||||
+ reg_vcc33_wifi: vcc33-wifi {
|
||||
+ /* Always on 3.3V regulator for WiFi and BT */
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "vcc33-wifi";
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ enable-active-high;
|
||||
+ gpio = <&pio 7 7 GPIO_ACTIVE_HIGH>; /* PH7 */
|
||||
+ };
|
||||
+
|
||||
+ reg_vcc_wifi_io: vcc-wifi-io {
|
||||
+ /* Always on 1.8V/300mA regulator for WiFi and BT IO */
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "vcc-wifi-io";
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ regulator-always-on;
|
||||
+ vin-supply = <®_vcc33_wifi>;
|
||||
+ };
|
||||
+
|
||||
+ wifi_pwrseq: wifi-pwrseq {
|
||||
+ compatible = "mmc-pwrseq-simple";
|
||||
+ clocks = <&rtc 1>;
|
||||
+ clock-names = "ext_clock";
|
||||
+ reset-gpios = <&r_pio 1 3 GPIO_ACTIVE_LOW>; /* PM3 */
|
||||
+ post-power-on-delay-ms = <200>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&cpu0 {
|
||||
+ cpu-supply = <®_dcdca>;
|
||||
+};
|
||||
+
|
||||
+&de {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&dwc3 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&ehci0 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&ehci3 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&emac {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&ext_rgmii_pins>;
|
||||
+ phy-mode = "rgmii";
|
||||
+ phy-handle = <&ext_rgmii_phy>;
|
||||
+ phy-supply = <®_gmac_3v3>;
|
||||
+ allwinner,rx-delay-ps = <1500>;
|
||||
+ allwinner,tx-delay-ps = <700>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&gpu {
|
||||
+ mali-supply = <®_dcdcc>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&hdmi {
|
||||
+ hvcc-supply = <®_bldo2>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&hdmi_out {
|
||||
+ hdmi_out_con: endpoint {
|
||||
+ remote-endpoint = <&hdmi_con_in>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&mdio {
|
||||
+ ext_rgmii_phy: ethernet-phy@1 {
|
||||
+ compatible = "ethernet-phy-ieee802.3-c22";
|
||||
+ reg = <1>;
|
||||
+
|
||||
+ reset-gpios = <&pio 3 14 GPIO_ACTIVE_LOW>; /* PD14 */
|
||||
+ reset-assert-us = <15000>;
|
||||
+ reset-deassert-us = <40000>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&mmc0 {
|
||||
+ vmmc-supply = <®_cldo1>;
|
||||
+ cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */
|
||||
+ bus-width = <4>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&mmc1 {
|
||||
+ vmmc-supply = <®_vcc33_wifi>;
|
||||
+ vqmmc-supply = <®_vcc_wifi_io>;
|
||||
+ mmc-pwrseq = <&wifi_pwrseq>;
|
||||
+ bus-width = <4>;
|
||||
+ non-removable;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&mmc2 {
|
||||
+ vmmc-supply = <®_cldo1>;
|
||||
+ vqmmc-supply = <®_bldo2>;
|
||||
+ cap-mmc-hw-reset;
|
||||
+ non-removable;
|
||||
+ bus-width = <8>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&ohci0 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&ohci3 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&pio {
|
||||
+ vcc-pc-supply = <®_bldo2>;
|
||||
+ vcc-pd-supply = <®_cldo1>;
|
||||
+ vcc-pg-supply = <®_bldo3>;
|
||||
+};
|
||||
+
|
||||
+&r_ir {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&r_rsb {
|
||||
+ clock-frequency = <100000>;
|
||||
+ status = "okay";
|
||||
+
|
||||
+ axp805: pmic@745 {
|
||||
+ compatible = "x-powers,axp805", "x-powers,axp806";
|
||||
+ reg = <0x745>;
|
||||
+ interrupt-parent = <&r_intc>;
|
||||
+ interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_LOW>;
|
||||
+ interrupt-controller;
|
||||
+ #interrupt-cells = <1>;
|
||||
+ x-powers,self-working-mode;
|
||||
+ vina-supply = <®_vcc5v>;
|
||||
+ vinb-supply = <®_vcc5v>;
|
||||
+ vinc-supply = <®_vcc5v>;
|
||||
+ vind-supply = <®_vcc5v>;
|
||||
+ vine-supply = <®_vcc5v>;
|
||||
+ aldoin-supply = <®_vcc5v>;
|
||||
+ bldoin-supply = <®_vcc5v>;
|
||||
+ cldoin-supply = <®_vcc5v>;
|
||||
+
|
||||
+ regulators {
|
||||
+ reg_aldo1: aldo1 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ regulator-name = "vcc-pl-led-ir";
|
||||
+ };
|
||||
+
|
||||
+ reg_aldo2: aldo2 {
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ regulator-name = "vcc33-audio-tv-ephy-mac";
|
||||
+ };
|
||||
+
|
||||
+ /* ALDO3 is shorted to CLDO1 */
|
||||
+ reg_aldo3: aldo3 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ regulator-name = "vcc33-io-pd-emmc-sd-usb-uart-1";
|
||||
+ };
|
||||
+
|
||||
+ reg_bldo1: bldo1 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ regulator-name = "vcc18-dram-bias-pll";
|
||||
+ };
|
||||
+
|
||||
+ reg_bldo2: bldo2 {
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ regulator-name = "vcc-efuse-pcie-hdmi-pc";
|
||||
+ };
|
||||
+
|
||||
+ reg_bldo3: bldo3 {
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ regulator-name = "vcc-pm-pg-dcxoio-wifi";
|
||||
+ };
|
||||
+
|
||||
+ bldo4 {
|
||||
+ /* unused */
|
||||
+ };
|
||||
+
|
||||
+ reg_cldo1: cldo1 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ regulator-name = "vcc33-io-pd-emmc-sd-usb-uart-2";
|
||||
+ };
|
||||
+
|
||||
+ cldo2 {
|
||||
+ /* unused */
|
||||
+ };
|
||||
+
|
||||
+ cldo3 {
|
||||
+ /* unused */
|
||||
+ };
|
||||
+
|
||||
+ reg_dcdca: dcdca {
|
||||
+ regulator-always-on;
|
||||
+ regulator-min-microvolt = <800000>;
|
||||
+ regulator-max-microvolt = <1160000>;
|
||||
+ regulator-ramp-delay = <2500>;
|
||||
+ regulator-name = "vdd-cpu";
|
||||
+ };
|
||||
+
|
||||
+ reg_dcdcc: dcdcc {
|
||||
+ regulator-enable-ramp-delay = <32000>;
|
||||
+ regulator-min-microvolt = <810000>;
|
||||
+ regulator-max-microvolt = <1080000>;
|
||||
+ regulator-ramp-delay = <2500>;
|
||||
+ regulator-name = "vdd-gpu";
|
||||
+ };
|
||||
+
|
||||
+ reg_dcdcd: dcdcd {
|
||||
+ regulator-always-on;
|
||||
+ regulator-min-microvolt = <980000>;
|
||||
+ regulator-max-microvolt = <980000>;
|
||||
+ regulator-name = "vdd-sys";
|
||||
+ };
|
||||
+
|
||||
+ reg_dcdce: dcdce {
|
||||
+ regulator-always-on;
|
||||
+ regulator-min-microvolt = <1200000>;
|
||||
+ regulator-max-microvolt = <1200000>;
|
||||
+ regulator-name = "vcc-dram";
|
||||
+ };
|
||||
+
|
||||
+ sw {
|
||||
+ /* unused */
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&pwm {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&r_ir {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&rtc {
|
||||
+ clocks = <&ext_osc32k>;
|
||||
+};
|
||||
+
|
||||
+/delete-node/ &spi0;
|
||||
+
|
||||
+&uart0 {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&uart0_ph_pins>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usb2otg {
|
||||
+ dr_mode = "host";
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usb2phy {
|
||||
+ usb0_id_det-gpios = <&pio 2 15 GPIO_ACTIVE_HIGH>; /* PC15 */
|
||||
+ usb0_vbus-supply = <®_vcc5v>;
|
||||
+ usb3_vbus-supply = <®_vcc5v>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usb3phy {
|
||||
+ status = "okay";
|
||||
+};
|
||||
diff --git a/configs/orangepi_3_lts_defconfig b/configs/orangepi_3_lts_defconfig
|
||||
new file mode 100644
|
||||
index 00000000..41a9af4e
|
||||
--- /dev/null
|
||||
+++ b/configs/orangepi_3_lts_defconfig
|
||||
@@ -0,0 +1,19 @@
|
||||
+CONFIG_ARM=y
|
||||
+CONFIG_ARCH_SUNXI=y
|
||||
+CONFIG_DEFAULT_DEVICE_TREE="sun50i-h6-orangepi-3-lts"
|
||||
+CONFIG_SPL=y
|
||||
+CONFIG_MACH_SUN50I_H6=y
|
||||
+CONFIG_SUNXI_DRAM_H6_LPDDR3=y
|
||||
+CONFIG_MMC0_CD_PIN="PF6"
|
||||
+CONFIG_MMC_SUNXI_SLOT_EXTRA=2
|
||||
+# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
|
||||
+CONFIG_SPL_STACK=0x118000
|
||||
+CONFIG_SYS_PBSIZE=1024
|
||||
+CONFIG_SYS_BOOTM_LEN=0x2000000
|
||||
+CONFIG_PHY_SUN50I_USB3=y
|
||||
+CONFIG_USB_XHCI_HCD=y
|
||||
+CONFIG_USB_XHCI_DWC3=y
|
||||
+CONFIG_USB_EHCI_HCD=y
|
||||
+CONFIG_USB_OHCI_HCD=y
|
||||
+CONFIG_USB_DWC3=y
|
||||
+# CONFIG_USB_DWC3_GADGET is not set
|
||||
--
|
||||
2.39.2
|
||||
|
@ -0,0 +1,30 @@
|
||||
From bf813915bf480154c707e0be14016cef94adbd95 Mon Sep 17 00:00:00 2001
|
||||
From: Marek Belisko <marek.belisko@gmail.com>
|
||||
Date: Tue, 7 May 2024 11:27:08 +0200
|
||||
Subject: [PATCH] mangopi-mq-r-t113: Fix serial console
|
||||
|
||||
Serial console is on uart3 not on uart0.
|
||||
|
||||
Upstream-Status: Inappropriate (for this board only)
|
||||
|
||||
Signed-off-by: Marek Belisko <marek.belisko@gmail.com>
|
||||
---
|
||||
include/configs/sunxi-common.h | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/include/configs/sunxi-common.h b/include/configs/sunxi-common.h
|
||||
index b8ca77d031..4e4808d2c1 100644
|
||||
--- a/include/configs/sunxi-common.h
|
||||
+++ b/include/configs/sunxi-common.h
|
||||
@@ -324,7 +324,7 @@
|
||||
MEM_LAYOUT_ENV_EXTRA_SETTINGS \
|
||||
DFU_ALT_INFO_RAM \
|
||||
"fdtfile=" FDTFILE "\0" \
|
||||
- "console=ttyS0,115200\0" \
|
||||
+ "console=ttyS3,115200\0" \
|
||||
"uuid_gpt_esp=" UUID_GPT_ESP "\0" \
|
||||
"uuid_gpt_system=" UUID_GPT_SYSTEM "\0" \
|
||||
"partitions=" PARTS_DEFAULT "\0" \
|
||||
--
|
||||
2.25.1
|
||||
|
11
recipes-bsp/u-boot/files/aarch64/boot.cmd
Normal file
11
recipes-bsp/u-boot/files/aarch64/boot.cmd
Normal file
@ -0,0 +1,11 @@
|
||||
# Default to (primary) SD
|
||||
rootdev=mmcblk0p2
|
||||
if itest.b *0x28 == 0x02 ; then
|
||||
# U-Boot loaded from eMMC or secondary SD so use it for rootfs too
|
||||
echo "U-boot loaded from eMMC or secondary SD"
|
||||
rootdev=mmcblk1p2
|
||||
fi
|
||||
setenv bootargs console=${console} console=tty1 root=/dev/${rootdev} rootwait panic=10 ${extra}
|
||||
load mmc 0:1 ${fdt_addr_r} ${fdtfile}
|
||||
load mmc 0:1 ${kernel_addr_r} Image
|
||||
booti ${kernel_addr_r} - ${fdt_addr_r}
|
11
recipes-bsp/u-boot/files/arm/boot.cmd
Normal file
11
recipes-bsp/u-boot/files/arm/boot.cmd
Normal file
@ -0,0 +1,11 @@
|
||||
# Default to (primary) SD
|
||||
rootdev=mmcblk0p2
|
||||
if itest.b *0x28 == 0x02 ; then
|
||||
# U-Boot loaded from eMMC or secondary SD so use it for rootfs too
|
||||
echo "U-boot loaded from eMMC or secondary SD"
|
||||
rootdev=mmcblk1p2
|
||||
fi
|
||||
setenv bootargs console=${console} console=tty1 root=/dev/${rootdev} rootwait panic=10 ${extra}
|
||||
load mmc 0:1 ${fdt_addr_r} ${fdtfile} || load mmc 0:1 ${fdt_addr_r} boot/allwinner/${fdtfile}
|
||||
load mmc 0:1 ${kernel_addr_r} zImage || load mmc 0:1 ${kernel_addr_r} boot/zImage || load mmc 0:1 ${kernel_addr_r} uImage || load mmc 0:1 ${kernel_addr_r} boot/uImage
|
||||
bootz ${kernel_addr_r} - ${fdt_addr_r} || bootm ${kernel_addr_r} - ${fdt_addr_r}
|
11
recipes-bsp/u-boot/files/bananapi-m64/boot.cmd
Normal file
11
recipes-bsp/u-boot/files/bananapi-m64/boot.cmd
Normal file
@ -0,0 +1,11 @@
|
||||
# Default to (primary) SD
|
||||
rootdev=mmcblk0p2
|
||||
if itest.b *0x28 == 0x02 ; then
|
||||
# U-Boot loaded from eMMC or secondary SD so use it for rootfs too
|
||||
echo "U-boot loaded from eMMC or secondary SD"
|
||||
rootdev=mmcblk2p2
|
||||
fi
|
||||
setenv bootargs console=${console} console=tty1 root=/dev/${rootdev} rootwait panic=10 ${extra}
|
||||
load mmc 0:1 ${fdt_addr_r} ${fdtfile}
|
||||
load mmc 0:1 ${kernel_addr_r} Image
|
||||
booti ${kernel_addr_r} - ${fdt_addr_r}
|
@ -1,4 +0,0 @@
|
||||
setenv bootargs console=${console} console=tty1 root=/dev/mmcblk0p2 rootwait panic=10 ${extra}
|
||||
load mmc 0:1 ${fdt_addr_r} ${fdtfile} || load mmc 0:1 ${fdt_addr_r} boot/${fdtfile}
|
||||
load mmc 0:1 ${kernel_addr_r} zImage || load mmc 0:1 ${kernel_addr_r} boot/zImage || load mmc 0:1 ${kernel_addr_r} uImage || load mmc 0:1 ${kernel_addr_r} boot/uImage
|
||||
bootz ${kernel_addr_r} - ${fdt_addr_r} || bootm ${kernel_addr_r} - ${fdt_addr_r}
|
@ -2,7 +2,7 @@ DESCRIPTION = "U-Boot port for sunxi"
|
||||
|
||||
require recipes-bsp/u-boot/u-boot.inc
|
||||
|
||||
LICENSE = "GPLv2"
|
||||
LICENSE = "GPL-2.0-only"
|
||||
LIC_FILES_CHKSUM = "file://Licenses/gpl-2.0.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263"
|
||||
|
||||
# No patches for other machines yet
|
||||
@ -18,7 +18,12 @@ UBOOT_MACHINE_olinuxino-a20 = "A20-OLinuXino-Micro_config"
|
||||
UBOOT_MACHINE_olinuxino-a10s = "A10s-OLinuXino-Micro_config"
|
||||
UBOOT_MACHINE_meleg = "Mele_A1000G_config"
|
||||
|
||||
SRC_URI = "git://github.com/linux-sunxi/u-boot-sunxi.git;protocol=git;branch=sunxi"
|
||||
SRC_URI = " \
|
||||
git://github.com/linux-sunxi/u-boot-sunxi.git;protocol=https;branch=sunxi \
|
||||
file://0001-gcc5-fixes.patch \
|
||||
file://0002-gcc6-fixes.patch \
|
||||
file://0003-No-gcc-version-specific-includes.patch \
|
||||
"
|
||||
|
||||
PE = "1"
|
||||
|
||||
@ -31,3 +36,7 @@ S = "${WORKDIR}/git"
|
||||
PACKAGE_ARCH = "${MACHINE_ARCH}"
|
||||
|
||||
SPL_BINARY="u-boot-sunxi-with-spl.bin"
|
||||
|
||||
do_configure () {
|
||||
oe_runmake -C ${S} O=${B} ${UBOOT_MACHINE}
|
||||
}
|
||||
|
197
recipes-bsp/u-boot/u-boot-sunxi/0001-gcc5-fixes.patch
Normal file
197
recipes-bsp/u-boot/u-boot-sunxi/0001-gcc5-fixes.patch
Normal file
@ -0,0 +1,197 @@
|
||||
From a5e50d6fd7321d0bc60fda2db938c170d09f9dee Mon Sep 17 00:00:00 2001
|
||||
From: Trevor Woerner <twoerner@gmail.com>
|
||||
Date: Thu, 24 Sep 2015 22:36:02 -0400
|
||||
Subject: [PATCH] gcc5 fixes
|
||||
|
||||
gcc5 is pickier about inline functions defined in headers.
|
||||
|
||||
Signed-off-by: Trevor Woerner <twoerner@gmail.com>
|
||||
---
|
||||
arch/arm/include/asm/io.h | 12 ++++----
|
||||
common/board_f.c | 18 ++++++------
|
||||
common/main.c | 2 +-
|
||||
include/linux/compiler-gcc5.h | 65 +++++++++++++++++++++++++++++++++++++++++++
|
||||
4 files changed, 81 insertions(+), 16 deletions(-)
|
||||
create mode 100644 include/linux/compiler-gcc5.h
|
||||
|
||||
diff --git a/arch/arm/include/asm/io.h b/arch/arm/include/asm/io.h
|
||||
index 6a1f05a..2f6925b 100644
|
||||
--- a/arch/arm/include/asm/io.h
|
||||
+++ b/arch/arm/include/asm/io.h
|
||||
@@ -75,7 +75,7 @@ static inline phys_addr_t virt_to_phys(void * vaddr)
|
||||
#define __arch_putw(v,a) (*(volatile unsigned short *)(a) = (v))
|
||||
#define __arch_putl(v,a) (*(volatile unsigned int *)(a) = (v))
|
||||
|
||||
-extern inline void __raw_writesb(unsigned long addr, const void *data,
|
||||
+static inline void __raw_writesb(unsigned long addr, const void *data,
|
||||
int bytelen)
|
||||
{
|
||||
uint8_t *buf = (uint8_t *)data;
|
||||
@@ -83,7 +83,7 @@ extern inline void __raw_writesb(unsigned long addr, const void *data,
|
||||
__arch_putb(*buf++, addr);
|
||||
}
|
||||
|
||||
-extern inline void __raw_writesw(unsigned long addr, const void *data,
|
||||
+static inline void __raw_writesw(unsigned long addr, const void *data,
|
||||
int wordlen)
|
||||
{
|
||||
uint16_t *buf = (uint16_t *)data;
|
||||
@@ -91,7 +91,7 @@ extern inline void __raw_writesw(unsigned long addr, const void *data,
|
||||
__arch_putw(*buf++, addr);
|
||||
}
|
||||
|
||||
-extern inline void __raw_writesl(unsigned long addr, const void *data,
|
||||
+static inline void __raw_writesl(unsigned long addr, const void *data,
|
||||
int longlen)
|
||||
{
|
||||
uint32_t *buf = (uint32_t *)data;
|
||||
@@ -99,21 +99,21 @@ extern inline void __raw_writesl(unsigned long addr, const void *data,
|
||||
__arch_putl(*buf++, addr);
|
||||
}
|
||||
|
||||
-extern inline void __raw_readsb(unsigned long addr, void *data, int bytelen)
|
||||
+static inline void __raw_readsb(unsigned long addr, void *data, int bytelen)
|
||||
{
|
||||
uint8_t *buf = (uint8_t *)data;
|
||||
while(bytelen--)
|
||||
*buf++ = __arch_getb(addr);
|
||||
}
|
||||
|
||||
-extern inline void __raw_readsw(unsigned long addr, void *data, int wordlen)
|
||||
+static inline void __raw_readsw(unsigned long addr, void *data, int wordlen)
|
||||
{
|
||||
uint16_t *buf = (uint16_t *)data;
|
||||
while(wordlen--)
|
||||
*buf++ = __arch_getw(addr);
|
||||
}
|
||||
|
||||
-extern inline void __raw_readsl(unsigned long addr, void *data, int longlen)
|
||||
+static inline void __raw_readsl(unsigned long addr, void *data, int longlen)
|
||||
{
|
||||
uint32_t *buf = (uint32_t *)data;
|
||||
while(longlen--)
|
||||
diff --git a/common/board_f.c b/common/board_f.c
|
||||
index f285bad..72b421c 100644
|
||||
--- a/common/board_f.c
|
||||
+++ b/common/board_f.c
|
||||
@@ -78,24 +78,24 @@ DECLARE_GLOBAL_DATA_PTR;
|
||||
************************************************************************
|
||||
* May be supplied by boards if desired
|
||||
*/
|
||||
-inline void __coloured_LED_init(void) {}
|
||||
+void __coloured_LED_init(void) {}
|
||||
void coloured_LED_init(void)
|
||||
__attribute__((weak, alias("__coloured_LED_init")));
|
||||
-inline void __red_led_on(void) {}
|
||||
+void __red_led_on(void) {}
|
||||
void red_led_on(void) __attribute__((weak, alias("__red_led_on")));
|
||||
-inline void __red_led_off(void) {}
|
||||
+void __red_led_off(void) {}
|
||||
void red_led_off(void) __attribute__((weak, alias("__red_led_off")));
|
||||
-inline void __green_led_on(void) {}
|
||||
+void __green_led_on(void) {}
|
||||
void green_led_on(void) __attribute__((weak, alias("__green_led_on")));
|
||||
-inline void __green_led_off(void) {}
|
||||
+void __green_led_off(void) {}
|
||||
void green_led_off(void) __attribute__((weak, alias("__green_led_off")));
|
||||
-inline void __yellow_led_on(void) {}
|
||||
+void __yellow_led_on(void) {}
|
||||
void yellow_led_on(void) __attribute__((weak, alias("__yellow_led_on")));
|
||||
-inline void __yellow_led_off(void) {}
|
||||
+void __yellow_led_off(void) {}
|
||||
void yellow_led_off(void) __attribute__((weak, alias("__yellow_led_off")));
|
||||
-inline void __blue_led_on(void) {}
|
||||
+void __blue_led_on(void) {}
|
||||
void blue_led_on(void) __attribute__((weak, alias("__blue_led_on")));
|
||||
-inline void __blue_led_off(void) {}
|
||||
+void __blue_led_off(void) {}
|
||||
void blue_led_off(void) __attribute__((weak, alias("__blue_led_off")));
|
||||
|
||||
/*
|
||||
diff --git a/common/main.c b/common/main.c
|
||||
index 8b6f274..3312b90 100644
|
||||
--- a/common/main.c
|
||||
+++ b/common/main.c
|
||||
@@ -27,7 +27,7 @@ DECLARE_GLOBAL_DATA_PTR;
|
||||
/*
|
||||
* Board-specific Platform code can reimplement show_boot_progress () if needed
|
||||
*/
|
||||
-void inline __show_boot_progress (int val) {}
|
||||
+void __show_boot_progress (int val) {}
|
||||
void show_boot_progress (int val) __attribute__((weak, alias("__show_boot_progress")));
|
||||
|
||||
#define MAX_DELAY_STOP_STR 32
|
||||
diff --git a/include/linux/compiler-gcc5.h b/include/linux/compiler-gcc5.h
|
||||
new file mode 100644
|
||||
index 0000000..c8c5659
|
||||
--- /dev/null
|
||||
+++ b/include/linux/compiler-gcc5.h
|
||||
@@ -0,0 +1,65 @@
|
||||
+#ifndef __LINUX_COMPILER_H
|
||||
+#error "Please don't include <linux/compiler-gcc5.h> directly, include <linux/compiler.h> instead."
|
||||
+#endif
|
||||
+
|
||||
+#define __used __attribute__((__used__))
|
||||
+#define __must_check __attribute__((warn_unused_result))
|
||||
+#define __compiler_offsetof(a, b) __builtin_offsetof(a, b)
|
||||
+
|
||||
+/* Mark functions as cold. gcc will assume any path leading to a call
|
||||
+ to them will be unlikely. This means a lot of manual unlikely()s
|
||||
+ are unnecessary now for any paths leading to the usual suspects
|
||||
+ like BUG(), printk(), panic() etc. [but let's keep them for now for
|
||||
+ older compilers]
|
||||
+
|
||||
+ Early snapshots of gcc 4.3 don't support this and we can't detect this
|
||||
+ in the preprocessor, but we can live with this because they're unreleased.
|
||||
+ Maketime probing would be overkill here.
|
||||
+
|
||||
+ gcc also has a __attribute__((__hot__)) to move hot functions into
|
||||
+ a special section, but I don't see any sense in this right now in
|
||||
+ the kernel context */
|
||||
+#define __cold __attribute__((__cold__))
|
||||
+
|
||||
+#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__)
|
||||
+
|
||||
+#ifndef __CHECKER__
|
||||
+# define __compiletime_warning(message) __attribute__((warning(message)))
|
||||
+# define __compiletime_error(message) __attribute__((error(message)))
|
||||
+#endif /* __CHECKER__ */
|
||||
+
|
||||
+/*
|
||||
+ * Mark a position in code as unreachable. This can be used to
|
||||
+ * suppress control flow warnings after asm blocks that transfer
|
||||
+ * control elsewhere.
|
||||
+ *
|
||||
+ * Early snapshots of gcc 4.5 don't support this and we can't detect
|
||||
+ * this in the preprocessor, but we can live with this because they're
|
||||
+ * unreleased. Really, we need to have autoconf for the kernel.
|
||||
+ */
|
||||
+#define unreachable() __builtin_unreachable()
|
||||
+
|
||||
+/* Mark a function definition as prohibited from being cloned. */
|
||||
+#define __noclone __attribute__((__noclone__))
|
||||
+
|
||||
+/*
|
||||
+ * Tell the optimizer that something else uses this function or variable.
|
||||
+ */
|
||||
+#define __visible __attribute__((externally_visible))
|
||||
+
|
||||
+/*
|
||||
+ * GCC 'asm goto' miscompiles certain code sequences:
|
||||
+ *
|
||||
+ * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670
|
||||
+ *
|
||||
+ * Work it around via a compiler barrier quirk suggested by Jakub Jelinek.
|
||||
+ *
|
||||
+ * (asm goto is automatically volatile - the naming reflects this.)
|
||||
+ */
|
||||
+#define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
|
||||
+
|
||||
+#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP
|
||||
+#define __HAVE_BUILTIN_BSWAP32__
|
||||
+#define __HAVE_BUILTIN_BSWAP64__
|
||||
+#define __HAVE_BUILTIN_BSWAP16__
|
||||
+#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */
|
||||
--
|
||||
2.6.0.rc3
|
||||
|
69
recipes-bsp/u-boot/u-boot-sunxi/0002-gcc6-fixes.patch
Normal file
69
recipes-bsp/u-boot/u-boot-sunxi/0002-gcc6-fixes.patch
Normal file
@ -0,0 +1,69 @@
|
||||
diff -urN git-ORIG/include/linux/compiler-gcc6.h git/include/linux/compiler-gcc6.h
|
||||
--- git-ORIG/include/linux/compiler-gcc6.h 1969-12-31 19:00:00.000000000 -0500
|
||||
+++ git/include/linux/compiler-gcc6.h 2017-04-09 19:50:16.920945874 -0400
|
||||
@@ -0,0 +1,65 @@
|
||||
+#ifndef __LINUX_COMPILER_H
|
||||
+#error "Please don't include <linux/compiler-gcc5.h> directly, include <linux/compiler.h> instead."
|
||||
+#endif
|
||||
+
|
||||
+#define __used __attribute__((__used__))
|
||||
+#define __must_check __attribute__((warn_unused_result))
|
||||
+#define __compiler_offsetof(a, b) __builtin_offsetof(a, b)
|
||||
+
|
||||
+/* Mark functions as cold. gcc will assume any path leading to a call
|
||||
+ to them will be unlikely. This means a lot of manual unlikely()s
|
||||
+ are unnecessary now for any paths leading to the usual suspects
|
||||
+ like BUG(), printk(), panic() etc. [but let's keep them for now for
|
||||
+ older compilers]
|
||||
+
|
||||
+ Early snapshots of gcc 4.3 don't support this and we can't detect this
|
||||
+ in the preprocessor, but we can live with this because they're unreleased.
|
||||
+ Maketime probing would be overkill here.
|
||||
+
|
||||
+ gcc also has a __attribute__((__hot__)) to move hot functions into
|
||||
+ a special section, but I don't see any sense in this right now in
|
||||
+ the kernel context */
|
||||
+#define __cold __attribute__((__cold__))
|
||||
+
|
||||
+#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__)
|
||||
+
|
||||
+#ifndef __CHECKER__
|
||||
+# define __compiletime_warning(message) __attribute__((warning(message)))
|
||||
+# define __compiletime_error(message) __attribute__((error(message)))
|
||||
+#endif /* __CHECKER__ */
|
||||
+
|
||||
+/*
|
||||
+ * Mark a position in code as unreachable. This can be used to
|
||||
+ * suppress control flow warnings after asm blocks that transfer
|
||||
+ * control elsewhere.
|
||||
+ *
|
||||
+ * Early snapshots of gcc 4.5 don't support this and we can't detect
|
||||
+ * this in the preprocessor, but we can live with this because they're
|
||||
+ * unreleased. Really, we need to have autoconf for the kernel.
|
||||
+ */
|
||||
+#define unreachable() __builtin_unreachable()
|
||||
+
|
||||
+/* Mark a function definition as prohibited from being cloned. */
|
||||
+#define __noclone __attribute__((__noclone__))
|
||||
+
|
||||
+/*
|
||||
+ * Tell the optimizer that something else uses this function or variable.
|
||||
+ */
|
||||
+#define __visible __attribute__((externally_visible))
|
||||
+
|
||||
+/*
|
||||
+ * GCC 'asm goto' miscompiles certain code sequences:
|
||||
+ *
|
||||
+ * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670
|
||||
+ *
|
||||
+ * Work it around via a compiler barrier quirk suggested by Jakub Jelinek.
|
||||
+ *
|
||||
+ * (asm goto is automatically volatile - the naming reflects this.)
|
||||
+ */
|
||||
+#define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
|
||||
+
|
||||
+#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP
|
||||
+#define __HAVE_BUILTIN_BSWAP32__
|
||||
+#define __HAVE_BUILTIN_BSWAP64__
|
||||
+#define __HAVE_BUILTIN_BSWAP16__
|
||||
+#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */
|
@ -0,0 +1,24 @@
|
||||
From bc4aa5814cbedbfaa1c79dfe7ea2571fee7f2d51 Mon Sep 17 00:00:00 2001
|
||||
From: Andrey Lebedev <andrey@lebedev.lt>
|
||||
Date: Wed, 22 Jan 2020 20:00:11 +0200
|
||||
Subject: [PATCH] No gcc version-specific includes
|
||||
|
||||
In order to support gcc-5 and above. Fixes compilation errors like
|
||||
|
||||
linux/compiler-gcc9.h: No such file or directory
|
||||
---
|
||||
include/linux/compiler-gcc.h | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h
|
||||
index 9896e547b9..5f0bd65f3a 100644
|
||||
--- a/include/linux/compiler-gcc.h
|
||||
+++ b/include/linux/compiler-gcc.h
|
||||
@@ -90,4 +90,3 @@
|
||||
#define __gcc_header(x) #x
|
||||
#define _gcc_header(x) __gcc_header(linux/compiler-gcc##x.h)
|
||||
#define gcc_header(x) _gcc_header(x)
|
||||
-#include gcc_header(__GNUC__)
|
||||
--
|
||||
2.20.1
|
||||
|
33
recipes-bsp/u-boot/u-boot_%.bbappend
Normal file
33
recipes-bsp/u-boot/u-boot_%.bbappend
Normal file
@ -0,0 +1,33 @@
|
||||
FILESEXTRAPATHS:prepend:sunxi := "${THISDIR}/files:"
|
||||
|
||||
DEPENDS:append:sunxi = " bc-native dtc-native swig-native python3-native flex-native bison-native "
|
||||
DEPENDS:append:sun50i = " trusted-firmware-a"
|
||||
|
||||
COMPATIBLE_MACHINE:sunxi = "(sun4i|sun5i|sun7i|sun8i|sun50i)"
|
||||
|
||||
DEFAULT_PREFERENCE:sun4i = "1"
|
||||
DEFAULT_PREFERENCE:sun5i = "1"
|
||||
DEFAULT_PREFERENCE:sun7i = "1"
|
||||
DEFAULT_PREFERENCE:sun8i = "1"
|
||||
DEFAULT_PREFERENCE:sun50i = "1"
|
||||
|
||||
SRC_URI:append:sunxi = " \
|
||||
file://0001-nanopi_neo_air_defconfig-Enable-eMMC-support.patch \
|
||||
file://0002-Added-nanopi-r1-board-support.patch \
|
||||
file://0003-sunxi-H6-Enable-Ethernet-on-Orange-Pi-One-Plus.patch \
|
||||
file://0004-mangopi-mq-r-t113-Fix-serial-console.patch \
|
||||
file://0004-OrangePi-3-LTS-support.patch \
|
||||
file://boot.cmd \
|
||||
"
|
||||
|
||||
UBOOT_ENV_SUFFIX:sunxi = "scr"
|
||||
UBOOT_ENV:sunxi = "boot"
|
||||
|
||||
EXTRA_OEMAKE:append:sunxi = ' HOSTLDSHARED="${BUILD_CC} -shared ${BUILD_LDFLAGS} ${BUILD_CFLAGS}" '
|
||||
EXTRA_OEMAKE:append:sun50i = " BL31=${DEPLOY_DIR_IMAGE}/bl31.bin SCP=/dev/null"
|
||||
|
||||
do_compile:sun50i[depends] += "trusted-firmware-a:do_deploy"
|
||||
|
||||
do_compile:append:sunxi() {
|
||||
${B}/tools/mkimage -C none -A arm -T script -d ${UNPACKDIR}/boot.cmd ${UNPACKDIR}/${UBOOT_ENV_BINARY}
|
||||
}
|
@ -1,43 +0,0 @@
|
||||
DESCRIPTION="Upstream's U-boot configured for sunxi devices"
|
||||
|
||||
require recipes-bsp/u-boot/u-boot.inc
|
||||
|
||||
DEPENDS += "dtc-native"
|
||||
|
||||
LICENSE = "GPLv2"
|
||||
|
||||
LIC_FILES_CHKSUM = "\
|
||||
file://Licenses/Exceptions;md5=338a7cb1e52d0d1951f83e15319a3fe7 \
|
||||
file://Licenses/bsd-2-clause.txt;md5=6a31f076f5773aabd8ff86191ad6fdd5 \
|
||||
file://Licenses/bsd-3-clause.txt;md5=4a1190eac56a9db675d58ebe86eaf50c \
|
||||
file://Licenses/eCos-2.0.txt;md5=b338cb12196b5175acd3aa63b0a0805c \
|
||||
file://Licenses/gpl-2.0.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
|
||||
file://Licenses/ibm-pibs.txt;md5=c49502a55e35e0a8a1dc271d944d6dba \
|
||||
file://Licenses/isc.txt;md5=ec65f921308235311f34b79d844587eb \
|
||||
file://Licenses/lgpl-2.0.txt;md5=5f30f0716dfdd0d91eb439ebec522ec2 \
|
||||
file://Licenses/lgpl-2.1.txt;md5=4fbd65380cdd255951079008b364516c \
|
||||
file://Licenses/x11.txt;md5=b46f176c847b8742db02126fb8af92e2 \
|
||||
"
|
||||
|
||||
COMPATIBLE_MACHINE = "(sun4i|sun5i|sun7i)"
|
||||
|
||||
DEFAULT_PREFERENCE_sun4i="1"
|
||||
DEFAULT_PREFERENCE_sun5i="1"
|
||||
DEFAULT_PREFERENCE_sun7i="1"
|
||||
|
||||
SRC_URI += "file://boot.cmd"
|
||||
|
||||
SRCREV = "33711bdd4a4dce942fb5ae85a68899a8357bdd94"
|
||||
|
||||
PV = "v2015.07${SRCPV}"
|
||||
|
||||
PE = "1"
|
||||
|
||||
SPL_BINARY="u-boot-sunxi-with-spl.bin"
|
||||
|
||||
UBOOT_ENV_SUFFIX = "scr"
|
||||
UBOOT_ENV = "boot"
|
||||
|
||||
do_compile_append() {
|
||||
${S}/tools/mkimage -C none -A arm -T script -d ${WORKDIR}/boot.cmd ${WORKDIR}/${UBOOT_ENV_BINARY}
|
||||
}
|
1
recipes-devtools/python/files/olinuxino-a20lime2-emmc
Symbolic link
1
recipes-devtools/python/files/olinuxino-a20lime2-emmc
Symbolic link
@ -0,0 +1 @@
|
||||
/home/marek/data/projects/kas/sources/meta-sunxi/recipes-devtools/python/files/olinuxino-a20lime2
|
265
recipes-devtools/python/files/olinuxino-a20som/mapping.h
Normal file
265
recipes-devtools/python/files/olinuxino-a20som/mapping.h
Normal file
@ -0,0 +1,265 @@
|
||||
/*
|
||||
*
|
||||
* This file is part of pyA20SOM.
|
||||
* mapping.h is python GPIO extension.
|
||||
*
|
||||
* Copyright (c) 2014 Stefan Mavrodiev @ OLIMEX LTD, <support@olimex.com>
|
||||
*
|
||||
* pyA20SOM is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
* MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __MAPPING_H
|
||||
#define __MAPPING_H
|
||||
|
||||
#include "gpio_lib.h"
|
||||
|
||||
/**
|
||||
Structure that describe all gpio
|
||||
*/
|
||||
typedef struct _pin {
|
||||
char name[10]; // The processor pin
|
||||
int offset; // Memory offset for the pin
|
||||
int pin_number; // Number on the connector
|
||||
}pin_t;
|
||||
|
||||
typedef struct _gpio {
|
||||
char connector_name[10];
|
||||
pin_t pins[41];
|
||||
}gpio_t;
|
||||
|
||||
|
||||
gpio_t gpio[] = {
|
||||
{"lcd",
|
||||
{
|
||||
{ "PD16", SUNXI_GPD(16), 5 },
|
||||
{ "PD17", SUNXI_GPD(17), 6 },
|
||||
{ "PD18", SUNXI_GPD(18), 7 },
|
||||
{ "PD19", SUNXI_GPD(19), 8 },
|
||||
{ "PD20", SUNXI_GPD(20), 9 },
|
||||
{ "PD21", SUNXI_GPD(21), 10 },
|
||||
{ "PD22", SUNXI_GPD(22), 11 },
|
||||
{ "PD23", SUNXI_GPD(23), 12 },
|
||||
{ "PD8", SUNXI_GPD(8), 13 },
|
||||
{ "PD9", SUNXI_GPD(9), 14 },
|
||||
{ "PD10", SUNXI_GPD(10), 15 },
|
||||
{ "PD11", SUNXI_GPD(11), 16 },
|
||||
{ "PD12", SUNXI_GPD(12), 17 },
|
||||
{ "PD13", SUNXI_GPD(13), 18 },
|
||||
{ "PD14", SUNXI_GPD(14), 19 },
|
||||
{ "PD15", SUNXI_GPD(15), 20 },
|
||||
{ "PD0", SUNXI_GPD(0), 21 },
|
||||
{ "PD1", SUNXI_GPD(1), 22 },
|
||||
{ "PD2", SUNXI_GPD(2), 23 },
|
||||
{ "PD3", SUNXI_GPD(3), 24 },
|
||||
{ "PD4", SUNXI_GPD(4), 25 },
|
||||
{ "PD5", SUNXI_GPD(5), 26 },
|
||||
{ "PD6", SUNXI_GPD(6), 27 },
|
||||
{ "PD7", SUNXI_GPD(7), 28 },
|
||||
{ "PD26", SUNXI_GPD(26), 29 },
|
||||
{ "PD27", SUNXI_GPD(27), 30 },
|
||||
{ "PD24", SUNXI_GPD(24), 31 },
|
||||
{ "PD25", SUNXI_GPD(25), 32 },
|
||||
{ "PH7", SUNXI_GPH(7), 35 },
|
||||
{ "PB2", SUNXI_GPB(2), 36 },
|
||||
{
|
||||
{ 0, 0, 0}
|
||||
},
|
||||
}
|
||||
},
|
||||
{"gpio1",
|
||||
{
|
||||
{ "PB9", SUNXI_GPB(9), 7 },
|
||||
{ "PH5", SUNXI_GPH(5), 9 },
|
||||
{ "PH4", SUNXI_GPH(4), 11 },
|
||||
{ "PH6", SUNXI_GPH(6), 13 },
|
||||
{ "PH3", SUNXI_GPH(3), 15 },
|
||||
{ "PI0", SUNXI_GPI(0), 29 },
|
||||
{ "PI1", SUNXI_GPI(1), 31 },
|
||||
{ "PI2", SUNXI_GPI(2), 33 },
|
||||
{ "PI3", SUNXI_GPI(3), 35 },
|
||||
{ "PI10", SUNXI_GPI(10), 37 },
|
||||
{ "PI11", SUNXI_GPI(11), 39 },
|
||||
{ "PI14", SUNXI_GPI(14), 40 },
|
||||
{
|
||||
{ 0, 0, 0}
|
||||
},
|
||||
}
|
||||
},
|
||||
{"gpio2",
|
||||
{
|
||||
{ "PB22", SUNXI_GPB(22), 21 },
|
||||
{ "PB23", SUNXI_GPB(23), 22 },
|
||||
{ "PA0", SUNXI_GPA(0), 29 },
|
||||
{ "PA1", SUNXI_GPA(1), 27 },
|
||||
{ "PA2", SUNXI_GPA(2), 25 },
|
||||
{ "PA3", SUNXI_GPA(3), 23 },
|
||||
{ "PA4", SUNXI_GPA(4), 30 },
|
||||
{ "PA5", SUNXI_GPA(5), 28 },
|
||||
{ "PA6", SUNXI_GPA(6), 26 },
|
||||
{ "PA7", SUNXI_GPA(7), 24 },
|
||||
{ "PA8", SUNXI_GPA(8), 33 },
|
||||
{ "PA9", SUNXI_GPA(9), 35 },
|
||||
{ "PA10", SUNXI_GPA(10), 31 },
|
||||
{ "PA11", SUNXI_GPA(11), 37 },
|
||||
{ "PA12", SUNXI_GPA(12), 39 },
|
||||
{ "PA13", SUNXI_GPA(13), 32 },
|
||||
{ "PA14", SUNXI_GPA(14), 34 },
|
||||
{ "PA15", SUNXI_GPA(15), 36 },
|
||||
{ "PA16", SUNXI_GPA(16), 38 },
|
||||
{ "PA17", SUNXI_GPA(17), 40 },
|
||||
|
||||
{
|
||||
{ 0, 0, 0}
|
||||
},
|
||||
}
|
||||
},
|
||||
|
||||
{"gpio3",
|
||||
{
|
||||
{ "PH0", SUNXI_GPH(0), 5 },
|
||||
{ "PH2", SUNXI_GPH(2), 7 },
|
||||
{ "PH8", SUNXI_GPH(8), 9 },
|
||||
{ "PH9", SUNXI_GPH(9), 11 },
|
||||
{ "PH10", SUNXI_GPH(10), 13 },
|
||||
{ "PH11", SUNXI_GPH(11), 15 },
|
||||
{ "PH12", SUNXI_GPH(12), 17 },
|
||||
{ "PH13", SUNXI_GPH(13), 19 },
|
||||
{ "PH14", SUNXI_GPH(14), 21 },
|
||||
{ "PH15", SUNXI_GPH(15), 23 },
|
||||
{ "PH16", SUNXI_GPH(16), 25 },
|
||||
{ "PH17", SUNXI_GPH(17), 27 },
|
||||
{ "PH18", SUNXI_GPH(18), 29 },
|
||||
{ "PH19", SUNXI_GPH(19), 31 },
|
||||
{ "PH20", SUNXI_GPH(20), 33 },
|
||||
{ "PH21", SUNXI_GPH(21), 35 },
|
||||
{ "PH22", SUNXI_GPH(22), 37 },
|
||||
{ "PH23", SUNXI_GPH(23), 39 },
|
||||
|
||||
{ "PB3", SUNXI_GPB(3), 6 },
|
||||
{ "PB4", SUNXI_GPB(4), 8 },
|
||||
{ "PB5", SUNXI_GPB(5), 10 },
|
||||
{ "PB6", SUNXI_GPB(6), 12 },
|
||||
{ "PB7", SUNXI_GPB(7), 14 },
|
||||
{ "PB8", SUNXI_GPB(8), 16 },
|
||||
{ "PB10", SUNXI_GPB(10), 18 },
|
||||
{ "PB11", SUNXI_GPB(11), 20 },
|
||||
{ "PB12", SUNXI_GPB(12), 22 },
|
||||
{ "PB13", SUNXI_GPB(13), 24 },
|
||||
{ "PB14", SUNXI_GPB(14), 26 },
|
||||
{ "PB15", SUNXI_GPB(15), 28 },
|
||||
{ "PB16", SUNXI_GPB(16), 30 },
|
||||
{ "PB17", SUNXI_GPB(17), 32 },
|
||||
{ "PH24", SUNXI_GPH(24), 34 },
|
||||
{ "PH25", SUNXI_GPH(25), 36 },
|
||||
{ "PH26", SUNXI_GPH(26), 38 },
|
||||
{ "PH27", SUNXI_GPH(27), 40 },
|
||||
{
|
||||
{ 0, 0, 0}
|
||||
},
|
||||
}
|
||||
},
|
||||
|
||||
{"gpio4",
|
||||
{
|
||||
{ "PB0", SUNXI_GPB(0), 5 },
|
||||
{ "PB1", SUNXI_GPB(1), 7 },
|
||||
{ "PE0", SUNXI_GPE(0), 6 },
|
||||
{ "PE1", SUNXI_GPE(1), 8 },
|
||||
{ "PE2", SUNXI_GPE(2), 10 },
|
||||
{ "PE3", SUNXI_GPE(3), 12 },
|
||||
{ "PE4", SUNXI_GPE(4), 14 },
|
||||
{ "PE5", SUNXI_GPE(5), 16 },
|
||||
{ "PE6", SUNXI_GPE(0), 18 },
|
||||
{ "PE7", SUNXI_GPE(0), 9 },
|
||||
{ "PE8", SUNXI_GPE(0), 11 },
|
||||
{ "PE9", SUNXI_GPE(0), 13 },
|
||||
{ "PE10", SUNXI_GPE(0), 15 },
|
||||
{ "PE11", SUNXI_GPE(0), 17 },
|
||||
{ "PI20", SUNXI_GPI(20), 19 },
|
||||
{ "PI21", SUNXI_GPI(21), 20 },
|
||||
{ "PB18", SUNXI_GPB(18), 21 },
|
||||
{ "PB19", SUNXI_GPB(19), 22 },
|
||||
{ "PI16", SUNXI_GPI(16), 23 },
|
||||
{ "PI17", SUNXI_GPI(17), 24 },
|
||||
{ "PI18", SUNXI_GPI(18), 25 },
|
||||
{ "PI19", SUNXI_GPI(19), 26 },
|
||||
{ "PI12", SUNXI_GPI(12), 27 },
|
||||
{ "PI13", SUNXI_GPI(13), 28 },
|
||||
{ "PB20", SUNXI_GPB(20), 29 },
|
||||
{ "PB21", SUNXI_GPB(21), 30 },
|
||||
{ "PC22", SUNXI_GPC(22), 31 },
|
||||
{ "PC21", SUNXI_GPC(21), 32 },
|
||||
{ "PC20", SUNXI_GPC(20), 33 },
|
||||
{ "PC19", SUNXI_GPC(21), 34 },
|
||||
{ "PI15", SUNXI_GPI(15), 36 },
|
||||
{
|
||||
{ 0, 0, 0}
|
||||
},
|
||||
}
|
||||
},
|
||||
|
||||
{"gpio5",
|
||||
{
|
||||
{ "PG0", SUNXI_GPG(0), 1 },
|
||||
{ "PG1", SUNXI_GPG(1), 3 },
|
||||
{ "PG2", SUNXI_GPG(2), 5 },
|
||||
{ "PG3", SUNXI_GPG(3), 7 },
|
||||
{ "PG4", SUNXI_GPG(4), 9 },
|
||||
{ "PG5", SUNXI_GPG(5), 11 },
|
||||
{ "PG6", SUNXI_GPG(6), 13 },
|
||||
{ "PG7", SUNXI_GPG(7), 15 },
|
||||
{ "PG8", SUNXI_GPG(8), 17 },
|
||||
{ "PG9", SUNXI_GPG(9), 19 },
|
||||
{ "PG10", SUNXI_GPG(10), 21 },
|
||||
{ "PG11", SUNXI_GPG(11), 23 },
|
||||
{ "PC8", SUNXI_GPC(8), 25 },
|
||||
{ "PC9", SUNXI_GPC(9), 27 },
|
||||
{ "PC10", SUNXI_GPC(10), 29 },
|
||||
{ "PC11", SUNXI_GPC(11), 31 },
|
||||
{ "PC12", SUNXI_GPC(12), 33 },
|
||||
{ "PC13", SUNXI_GPC(13), 35 },
|
||||
{ "PC14", SUNXI_GPC(14), 37 },
|
||||
{ "PC15", SUNXI_GPC(15), 39 },
|
||||
{ "PI6", SUNXI_GPI(6), 4 },
|
||||
{ "PI7", SUNXI_GPI(7), 6 },
|
||||
{ "PI8", SUNXI_GPI(8), 8 },
|
||||
{ "PI9", SUNXI_GPI(9), 10 },
|
||||
{ "PI4", SUNXI_GPI(4), 12 },
|
||||
{ "PI5", SUNXI_GPI(5), 14 },
|
||||
{ "PC16", SUNXI_GPC(16), 16 },
|
||||
{ "PC17", SUNXI_GPC(17), 18 },
|
||||
{ "PC18", SUNXI_GPC(18), 20 },
|
||||
{ "PC23", SUNXI_GPC(23), 22 },
|
||||
{ "PC24", SUNXI_GPC(24), 24 },
|
||||
{ "PC7", SUNXI_GPC(7), 26 },
|
||||
{ "PC6", SUNXI_GPC(6), 28 },
|
||||
{ "PC5", SUNXI_GPC(5), 30 },
|
||||
{ "PC3", SUNXI_GPC(3), 32 },
|
||||
{ "PC2", SUNXI_GPC(2), 34 },
|
||||
{ "PC1", SUNXI_GPC(1), 36 },
|
||||
{ "PC0", SUNXI_GPC(0), 38 },
|
||||
{ "PC4", SUNXI_GPC(4), 40 },
|
||||
{
|
||||
{ 0, 0, 0}
|
||||
},
|
||||
}
|
||||
},
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif
|
@ -1,51 +0,0 @@
|
||||
--- pyA20-0.2.0/setup.py 2014-09-04 12:17:18.000000000 +0200
|
||||
+++ pyA20-0.2.0/setup.py 2014-11-24 17:44:37.000000000 +0100
|
||||
@@ -43,31 +43,31 @@
|
||||
Detect processor type
|
||||
:return:
|
||||
"""
|
||||
- cpuinfo = open("/proc/cpuinfo", 'r')
|
||||
- for line in cpuinfo:
|
||||
- if "Hardware" in line:
|
||||
- processor = line.split(":")[1].rstrip()
|
||||
+ #cpuinfo = open("/proc/cpuinfo", 'r')
|
||||
+ #for line in cpuinfo:
|
||||
+ # if "Hardware" in line:
|
||||
+ # processor = line.split(":")[1].rstrip()
|
||||
|
||||
- if "sun4i" in processor:
|
||||
- print ("Detected processor: " + print_color(processor) + " (Probably Allwinner A10)")
|
||||
+ # if "sun4i" in processor:
|
||||
+ # print ("Detected processor: " + print_color(processor) + " (Probably Allwinner A10)")
|
||||
|
||||
- elif "sun5i" in processor:
|
||||
- print ("Detected processor: " + print_color(processor) + " (Probably Allwinner A13)")
|
||||
+ # elif "sun5i" in processor:
|
||||
+ # print ("Detected processor: " + print_color(processor) + " (Probably Allwinner A13)")
|
||||
|
||||
- elif "sun7i" in processor:
|
||||
- print ("Detected processor: " + print_color(processor) + " (Probably Allwinner A20)")
|
||||
+ # elif "sun7i" in processor:
|
||||
+ # print ("Detected processor: " + print_color(processor) + " (Probably Allwinner A20)")
|
||||
|
||||
- else:
|
||||
- print ("Detected processor: " + print_color("unknown"))
|
||||
+ # else:
|
||||
+ # print ("Detected processor: " + print_color("unknown"))
|
||||
|
||||
|
||||
- if processor_type not in processor:
|
||||
- print_warning()
|
||||
+ # if processor_type not in processor:
|
||||
+ # print_warning()
|
||||
|
||||
- return
|
||||
+ return
|
||||
|
||||
- print ("No processor detected")
|
||||
- print_warning()
|
||||
+ #print ("No processor detected")
|
||||
+ #print_warning()
|
||||
|
||||
|
||||
class build_ext(_build_ext):
|
@ -1,24 +0,0 @@
|
||||
DESCRIPTION = "A module to control Allwinner GPIO,SPI and I2C channels"
|
||||
HOMEPAGE = "https://pypi.python.org/pypi/pyA20"
|
||||
SECTION = "devel/python"
|
||||
LICENSE = "MIT"
|
||||
LIC_FILES_CHKSUM = "file://PKG-INFO;md5=b4cb7d5da6f1efc1d0bf487169e83985"
|
||||
DEPENDS = "python"
|
||||
|
||||
# No GPIO mappings for other machines yet
|
||||
COMPATIBLE_MACHINE = "(olinuxino-a13|olinuxino-a10|olinuxino-a20|olinuxino-a10lime|olinuxino-a20lime|olinuxino-a20lime2|olinuxino-a13som)"
|
||||
|
||||
SRC_URI = "http://pypi.python.org/packages/source/p/pyA20/pyA20-${PV}.tar.gz \
|
||||
file://setup.py.patch \
|
||||
file://mapping.h \
|
||||
"
|
||||
S = "${WORKDIR}/pyA20-${PV}"
|
||||
|
||||
inherit distutils
|
||||
|
||||
do_compile_prepend() {
|
||||
cp ${WORKDIR}/mapping.h ${S}/pyA20/gpio/mapping.h
|
||||
}
|
||||
|
||||
SRC_URI[md5sum] = "b4115859834f09ebd389f810f2ffefb9"
|
||||
SRC_URI[sha256sum] = "9855747d9bbdfcce6b460fcd67d953155e39f4e002a9a4c573910248b451dad8"
|
23
recipes-devtools/python/pya20_0.2.12.bb
Normal file
23
recipes-devtools/python/pya20_0.2.12.bb
Normal file
@ -0,0 +1,23 @@
|
||||
DESCRIPTION = "A module to control Allwinner GPIO,SPI and I2C channels"
|
||||
HOMEPAGE = "https://pypi.python.org/pypi/pyA20"
|
||||
SECTION = "devel/python"
|
||||
LICENSE = "GPL-3.0-only"
|
||||
LIC_FILES_CHKSUM = "file://PKG-INFO;md5=4e584373bb0f46ef1e423cb7df37847d"
|
||||
DEPENDS = "python3"
|
||||
|
||||
# No GPIO mappings for other machines yet
|
||||
COMPATIBLE_MACHINE = "(olinuxino-a13|olinuxino-a10|olinuxino-a20|olinuxino-a10lime|olinuxino-a20lime|olinuxino-a20lime2|olinuxino-a13som|olinuxino-a20som)"
|
||||
|
||||
SRC_URI = "https://pypi.python.org/packages/source/p/pyA20/pyA20-${PV}.tar.gz \
|
||||
file://mapping.h \
|
||||
"
|
||||
S = "${WORKDIR}/pyA20-${PV}"
|
||||
|
||||
inherit distutils3
|
||||
|
||||
do_compile:prepend() {
|
||||
cp ${UNPACKDIR}/mapping.h ${S}/pyA20/gpio/mapping.h
|
||||
}
|
||||
|
||||
SRC_URI[md5sum] = "cab03b4931199804603d1074f6d8f48f"
|
||||
SRC_URI[sha256sum] = "4bef559a9c5a4d648d9834bad996cf2805b20d6063b8051029ffdf9deda2b536"
|
@ -0,0 +1,28 @@
|
||||
From 054886253f4f559b351a94e1e6ebfd5eb504461f Mon Sep 17 00:00:00 2001
|
||||
From: Trevor Woerner <twoerner@gmail.com>
|
||||
Date: Thu, 24 Sep 2015 23:38:11 -0400
|
||||
Subject: [PATCH] fix test build
|
||||
|
||||
Allow the test application to build and link successfully.
|
||||
|
||||
Signed-off-by: Trevor Woerner <twoerner@gmail.com>
|
||||
---
|
||||
test/Makefile | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/test/Makefile b/test/Makefile
|
||||
index 700416e..51481c9 100644
|
||||
--- a/test/Makefile
|
||||
+++ b/test/Makefile
|
||||
@@ -5,7 +5,7 @@ CFLAGS ?= -Wall
|
||||
all: test
|
||||
|
||||
test: ../config.mk test.c
|
||||
- $(CC) $(CFLAGS) -o $@ test.c -lEGL -lGLESv2
|
||||
+ $(CC) $(CFLAGS) -I../include -L../../image/usr/lib -o $@ test.c -lEGL -lGLESv2 -lX11
|
||||
|
||||
clean:
|
||||
rm -f test
|
||||
--
|
||||
2.6.0.rc3
|
||||
|
@ -0,0 +1,136 @@
|
||||
From 15d91ef25234ff402f4288273989693f2d402d9d Mon Sep 17 00:00:00 2001
|
||||
From: Raoul Hecky <raoul.hecky@gmail.com>
|
||||
Date: Fri, 10 Jan 2014 14:44:53 +0100
|
||||
Subject: [PATCH] Add missing GLchar definition, some gl/gles apps needs that
|
||||
to compile correctly
|
||||
|
||||
Build pkg-config files for gles and egl and install them
|
||||
|
||||
Fix .pc creation
|
||||
|
||||
add correct driver version in .pc
|
||||
---
|
||||
.gitignore | 1 +
|
||||
Makefile | 1 +
|
||||
Makefile.pc | 21 +++++++++++++++++++++
|
||||
egl.pc.in | 11 +++++++++++
|
||||
gles_cm.pc.in | 11 +++++++++++
|
||||
glesv2.pc.in | 11 +++++++++++
|
||||
include/GLES/gl.h | 1 +
|
||||
include/GLES2/gl2.h | 1 +
|
||||
8 files changed, 58 insertions(+)
|
||||
create mode 100644 Makefile.pc
|
||||
create mode 100644 egl.pc.in
|
||||
create mode 100644 gles_cm.pc.in
|
||||
create mode 100644 glesv2.pc.in
|
||||
|
||||
diff --git a/.gitignore b/.gitignore
|
||||
index 6865abf..e8a3713 100644
|
||||
--- a/.gitignore
|
||||
+++ b/.gitignore
|
||||
@@ -1,2 +1,3 @@
|
||||
config.mk
|
||||
*~
|
||||
+*.pc
|
||||
diff --git a/Makefile b/Makefile
|
||||
index 60d4a0f..94845ea 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -21,6 +21,7 @@ clean:
|
||||
install: config.mk
|
||||
$(MAKE) -C lib install
|
||||
$(MAKE) -C include install
|
||||
+ $(MAKE) -f Makefile.pc
|
||||
|
||||
test: config.mk
|
||||
$(MAKE) -C test test
|
||||
diff --git a/Makefile.pc b/Makefile.pc
|
||||
new file mode 100644
|
||||
index 0000000..01097fd
|
||||
--- /dev/null
|
||||
+++ b/Makefile.pc
|
||||
@@ -0,0 +1,21 @@
|
||||
+include Makefile.setup
|
||||
+include config.mk
|
||||
+
|
||||
+all:
|
||||
+ echo "prefix=$(prefix)" > egl.pc
|
||||
+ cat egl.pc.in >> egl.pc
|
||||
+ sed -i "s/MVERSION/$MALI_VERSION/g" egl.pc
|
||||
+ echo "prefix=$(prefix)" > gles_cm.pc
|
||||
+ cat gles_cm.pc.in >> gles_cm.pc
|
||||
+ sed -i "s/MVERSION/$MALI_VERSION/g" gles_cm.pc
|
||||
+ echo "prefix=$(prefix)" > glesv2.pc
|
||||
+ cat glesv2.pc.in >> glesv2.pc
|
||||
+ sed -i "s/MVERSION/$MALI_VERSION/g" glesv2.pc
|
||||
+
|
||||
+install: egl.pc gles_cm.pc glesv2.pc
|
||||
+ $(MKDIR) $(libdir)/pkgconfig
|
||||
+ $(INSTALL_DATA) $^ $(libdir)/pkgconfig
|
||||
+
|
||||
+clean:
|
||||
+ $(RM) egl.pc gles_cm.pc glesv2.pc
|
||||
+
|
||||
diff --git a/egl.pc.in b/egl.pc.in
|
||||
new file mode 100644
|
||||
index 0000000..0697183
|
||||
--- /dev/null
|
||||
+++ b/egl.pc.in
|
||||
@@ -0,0 +1,11 @@
|
||||
+exec_prefix=${prefix}
|
||||
+libdir=${prefix}/lib
|
||||
+includedir=${prefix}/include
|
||||
+
|
||||
+Name: egl
|
||||
+Description: Mali EGL library
|
||||
+Requires.private:
|
||||
+Version: MVERSION
|
||||
+Libs: -L${libdir} -lEGL
|
||||
+Libs.private: -lm -lpthread -ldl
|
||||
+Cflags: -I${includedir}
|
||||
diff --git a/gles_cm.pc.in b/gles_cm.pc.in
|
||||
new file mode 100644
|
||||
index 0000000..22bc348
|
||||
--- /dev/null
|
||||
+++ b/gles_cm.pc.in
|
||||
@@ -0,0 +1,11 @@
|
||||
+exec_prefix=${prefix}
|
||||
+libdir=${prefix}/lib
|
||||
+includedir=${prefix}/include
|
||||
+
|
||||
+Name: gles_cm
|
||||
+Description: Mali OpenGL ES 1.1 CM library
|
||||
+Requires.private:
|
||||
+Version: MVERSION
|
||||
+Libs: -L${libdir} -lGLES_CM
|
||||
+Libs.private: -lm -lpthread -ldl
|
||||
+Cflags: -I${includedir}
|
||||
diff --git a/glesv2.pc.in b/glesv2.pc.in
|
||||
new file mode 100644
|
||||
index 0000000..efef2ed
|
||||
--- /dev/null
|
||||
+++ b/glesv2.pc.in
|
||||
@@ -0,0 +1,11 @@
|
||||
+exec_prefix=${prefix}
|
||||
+libdir=${prefix}/lib
|
||||
+includedir=${prefix}/include
|
||||
+
|
||||
+Name: glesv2
|
||||
+Description: Mali OpenGL ES 2.0 library
|
||||
+Requires.private:
|
||||
+Version: MVERSION
|
||||
+Libs: -L${libdir} -lGLESv2
|
||||
+Libs.private: -lm -lpthread -ldl
|
||||
+Cflags: -I${includedir}
|
||||
diff --git a/include/GLES/gl.h b/include/GLES/gl.h
|
||||
index 858f394..a6bb591 100644
|
||||
--- a/include/GLES/gl.h
|
||||
+++ b/include/GLES/gl.h
|
||||
@@ -29,6 +29,7 @@ typedef float GLfloat;
|
||||
typedef float GLclampf;
|
||||
typedef signed int GLfixed;
|
||||
typedef signed int GLclampx;
|
||||
+typedef char GLchar;
|
||||
|
||||
typedef int * GLintptr;
|
||||
typedef int * GLsizeiptr;
|
@ -0,0 +1,30 @@
|
||||
From 95bbd40135f96b473d4c713317e485d0049580cd Mon Sep 17 00:00:00 2001
|
||||
From: Raoul Hecky <raoul.hecky@gmail.com>
|
||||
Date: Tue, 8 Apr 2014 08:10:12 +0200
|
||||
Subject: [PATCH] Fix sed to replace by the correct var
|
||||
|
||||
---
|
||||
Makefile.pc | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/Makefile.pc b/Makefile.pc
|
||||
index 01097fd..c51d18c 100644
|
||||
--- a/Makefile.pc
|
||||
+++ b/Makefile.pc
|
||||
@@ -4,13 +4,13 @@ include config.mk
|
||||
all:
|
||||
echo "prefix=$(prefix)" > egl.pc
|
||||
cat egl.pc.in >> egl.pc
|
||||
- sed -i "s/MVERSION/$MALI_VERSION/g" egl.pc
|
||||
+ sed -i "s/MVERSION/${MALI_VERSION}/g" egl.pc
|
||||
echo "prefix=$(prefix)" > gles_cm.pc
|
||||
cat gles_cm.pc.in >> gles_cm.pc
|
||||
- sed -i "s/MVERSION/$MALI_VERSION/g" gles_cm.pc
|
||||
+ sed -i "s/MVERSION/${MALI_VERSION}/g" gles_cm.pc
|
||||
echo "prefix=$(prefix)" > glesv2.pc
|
||||
cat glesv2.pc.in >> glesv2.pc
|
||||
- sed -i "s/MVERSION/$MALI_VERSION/g" glesv2.pc
|
||||
+ sed -i "s/MVERSION/${MALI_VERSION}/g" glesv2.pc
|
||||
|
||||
install: egl.pc gles_cm.pc glesv2.pc
|
||||
$(MKDIR) $(libdir)/pkgconfig
|
@ -3,56 +3,102 @@ DESCRIPTION = "libGLES for the A10/A13 Allwinner processor with Mali 400 (X11)"
|
||||
LICENSE = "Proprietary"
|
||||
LIC_FILES_CHKSUM = "file://README;md5=1b81a178e80ee888ee4571772699ab2c"
|
||||
|
||||
COMPATIBLE_MACHINE = "(sun4i|sun5i|sun7i)"
|
||||
DEPENDS = "virtual/libx11 libxau libxdmcp libdrm dri2proto libdri2 libump"
|
||||
COMPATIBLE_MACHINE = "(sun4i|sun5i|sun7i|sun8i)"
|
||||
|
||||
# These libraries shouldn't get installed in world builds unless something
|
||||
# explicitly depends upon them.
|
||||
EXCLUDE_FROM_WORLD = "1"
|
||||
PROVIDES = "virtual/libgles1 virtual/libgles2 virtual/egl"
|
||||
|
||||
inherit distro_features_check
|
||||
REQUIRED_DISTRO_FEATURES = "opengl"
|
||||
# There's only hardfp version available
|
||||
python __anonymous() {
|
||||
tunes = d.getVar("TUNE_FEATURES", True)
|
||||
if not tunes:
|
||||
return
|
||||
if "callconvention-hard" not in tunes:
|
||||
pkgn = d.getVar("PN", True)
|
||||
pkgv = d.getVar("PV", True)
|
||||
raise bb.parse.SkipPackage("%s-%s ONLY supports hardfp mode for now" % (pkgn, pkgv))
|
||||
}
|
||||
|
||||
SRCREV_pn-${PN} = "d343311efc8db166d8371b28494f0f27b6a58724"
|
||||
SRC_URI = "gitsm://github.com/linux-sunxi/sunxi-mali.git \
|
||||
file://0001-Add-EGLSyncKHR-EGLTimeKHR-and-GLChar-definition.patch"
|
||||
SRCREV = "d343311efc8db166d8371b28494f0f27b6a58724"
|
||||
SRC_URI = "git://github.com/linux-sunxi/sunxi-mali.git;protocol=https;branch=master \
|
||||
file://0001-Add-EGLSyncKHR-EGLTimeKHR-and-GLChar-definition.patch \
|
||||
file://0002-Add-missing-GLchar-definition.patch \
|
||||
file://0003-Fix-sed-to-replace-by-the-correct-var.patch \
|
||||
file://0001-fix-test-build.patch \
|
||||
"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
DEPENDS = "libdrm dri2proto libump"
|
||||
DEPENDS = "libdrm xorgproto libump patchelf-native"
|
||||
|
||||
PACKAGECONFIG ??= "${@base_contains('DISTRO_FEATURES', 'x11', 'x11', '', d)} ${@base_contains('DISTRO_FEATURES', 'wayland', 'wayland', '', d)}"
|
||||
PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)} ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', '', d)}"
|
||||
PACKAGECONFIG[wayland] = "EGL_TYPE=framebuffer,,,"
|
||||
PACKAGECONFIG[x11] = "EGL_TYPE=x11,,virtual/libx11 libxau libxdmcp libdri2,"
|
||||
|
||||
# Inhibit warnings about files being stripped, we can't do anything about it.
|
||||
INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
|
||||
INHIBIT_PACKAGE_STRIP = "1"
|
||||
INHIBIT_SYSROOT_STRIP = "1"
|
||||
|
||||
do_configure() {
|
||||
DESTDIR=${D}/ VERSION=r3p0 ABI=armhf ${EXTRA_OECONF} make config
|
||||
DESTDIR=${D}/ VERSION=r3p0 ABI=armhf make ${EXTRA_OEMAKE} config
|
||||
}
|
||||
|
||||
do_install() {
|
||||
make -f Makefile.pc
|
||||
|
||||
# install headers
|
||||
install -d -m 0755 ${D}${includedir}/EGL
|
||||
install -m 0755 ${S}/include/EGL/*.h ${D}${includedir}/EGL/
|
||||
install -d -m 0755 ${D}${includedir}/GLES
|
||||
install -m 0755 ${S}/include/GLES/*.h ${D}${includedir}/GLES/
|
||||
install -d -m 0755 ${D}${includedir}/GLES2
|
||||
install -m 0755 ${S}/include/GLES2/*.h ${D}${includedir}/GLES2/
|
||||
install -d -m 0755 ${D}${includedir}/KHR
|
||||
install -m 0755 ${S}/include/KHR/*.h ${D}${includedir}/KHR/
|
||||
|
||||
# Copy the .pc files
|
||||
install -d -m 0755 ${D}${libdir}/pkgconfig
|
||||
install -m 0644 ${S}/egl.pc ${D}${libdir}/pkgconfig/
|
||||
install -m 0644 ${S}/gles_cm.pc ${D}${libdir}/pkgconfig/
|
||||
install -m 0644 ${S}/glesv2.pc ${D}${libdir}/pkgconfig/
|
||||
|
||||
install -d ${D}${libdir}
|
||||
install -d ${D}${includedir}
|
||||
|
||||
make libdir=${D}${libdir}/ includedir=${D}${includedir}/ install
|
||||
make libdir=${D}${libdir}/ includedir=${D}${includedir}/ install -C include
|
||||
rm -f ${D}${includedir}/KHR/khrplatform.h
|
||||
|
||||
# Fix .so name and create symlinks, binary package provides .so wich can't be included directly in package without triggering the 'dev-so' QA check
|
||||
# Packages like xf86-video-fbturbo dlopen() libUMP.so, so we do need to ship the .so files in ${PN}
|
||||
|
||||
mv ${D}${libdir}/libMali.so ${D}${libdir}/libMali.so.3
|
||||
patchelf --set-soname libMali.so.3 ${D}${libdir}/libMali.so.3
|
||||
ln -sf libMali.so.3 ${D}${libdir}/libMali.so
|
||||
|
||||
for flib in libEGL.so.1.4 libGLESv1_CM.so.1.1 libGLESv2.so.2.0 ; do
|
||||
rm ${D}${libdir}/$flib
|
||||
ln -sf libMali.so.3 ${D}${libdir}/$flib
|
||||
done
|
||||
|
||||
DESTDIR=${D}/ VERSION=r3p0 ABI=armhf make ${EXTRA_OEMAKE} test
|
||||
install -d ${D}${bindir}
|
||||
install -m 0755 ${S}/test/test ${D}${bindir}/sunximali-test
|
||||
}
|
||||
|
||||
# Packages like xf86-video-fbturbo dlopen() libUMP.so, so we do need to ship the .so files in ${PN}
|
||||
FILES_${PN} += "${libdir}/lib*.so"
|
||||
FILES_${PN}-dev = "${includedir}"
|
||||
PACKAGES =+ "${PN}-test"
|
||||
|
||||
RPROVIDES:${PN} += "libGLESv2.so libEGL.so libGLESv2.so libGLESv1_CM.so libMali.so"
|
||||
RDEPENDS:${PN}-test = "${PN}"
|
||||
|
||||
FILES:${PN} += "${libdir}/lib*.so"
|
||||
FILES:${PN}-dev = "${includedir} ${libdir}/pkgconfig/*"
|
||||
FILES:${PN}-test = "${bindir}/sunximali-test"
|
||||
|
||||
# These are closed binaries generated elsewhere so don't check ldflags & text relocations
|
||||
INSANE_SKIP_${PN} = "dev-so ldflags textrel"
|
||||
INSANE_SKIP:${PN} = "dev-so ldflags textrel"
|
||||
INSANE_SKIP:${PN}-test = "dev-so ldflags textrel"
|
||||
|
@ -1,14 +1,14 @@
|
||||
DESCRIPTION = "Unified Memory Provider userspace API source code needed for xf86-video-mali compilation"
|
||||
|
||||
LICENSE = "Apache-2"
|
||||
LICENSE = "Apache-2.0"
|
||||
LIC_FILES_CHKSUM = "file://debian/copyright;md5=edf7fb6071cae7ec80d537a05ee17198"
|
||||
|
||||
inherit autotools
|
||||
|
||||
PV = "r4p0-00rel0+git${SRCPV}"
|
||||
SRCREV_pn-${PN} = "ec0680628744f30b8fac35e41a7bd8e23e59c39f"
|
||||
SRCREV = "ec0680628744f30b8fac35e41a7bd8e23e59c39f"
|
||||
|
||||
SRC_URI = "git://github.com/linux-sunxi/libump.git"
|
||||
SRC_URI = "git://github.com/linux-sunxi/libump.git;protocol=https;branch=master"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
|
1
recipes-graphics/mesa/mesa-gl_%.bbappend
Normal file
1
recipes-graphics/mesa/mesa-gl_%.bbappend
Normal file
@ -0,0 +1 @@
|
||||
PACKAGECONFIG:class-target = "opengl x11 gallium"
|
5
recipes-graphics/mesa/mesa_%.bbappend
Normal file
5
recipes-graphics/mesa/mesa_%.bbappend
Normal file
@ -0,0 +1,5 @@
|
||||
# Enable lima and panfrost Mesa drivers
|
||||
PACKAGECONFIG:append:use-mailine-graphics = " lima panfrost"
|
||||
# Enable KMS renderonly Mesa support
|
||||
# See https://cgit.freedesktop.org/mesa/mesa/commit/?id=2b780fe89300199f2334539aa1678e9b68f0434f
|
||||
GALLIUMDRIVERS:append:use-mailine-graphics = ",kmsro"
|
@ -1,79 +0,0 @@
|
||||
From c525c0b5d8eada982c99442454fcf7b8364e10b3 Mon Sep 17 00:00:00 2001
|
||||
From: Florian Boor <florian@kernelconcepts.de>
|
||||
Date: Fri, 1 Apr 2011 23:30:21 +0200
|
||||
Subject: [PATCH] Support reading coordinates from multitouch devices.
|
||||
|
||||
Signed-off-by: Florian Boor <florian@kernelconcepts.de>
|
||||
Signed-off-by: Christopher Larson <kergoth@gmail.com>
|
||||
---
|
||||
plugins/input-raw.c | 33 +++++++++++++++++++++++----------
|
||||
1 file changed, 23 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/plugins/input-raw.c b/plugins/input-raw.c
|
||||
index 4396eab..1e48505 100644
|
||||
--- a/plugins/input-raw.c
|
||||
+++ b/plugins/input-raw.c
|
||||
@@ -40,6 +40,11 @@
|
||||
# define KEY_CNT (KEY_MAX+1)
|
||||
#endif
|
||||
|
||||
+#ifndef ABS_MT_POSITION_X
|
||||
+# define ABS_MT_POSITION_X 0x35 /* Center X ellipse position */
|
||||
+# define ABS_MT_POSITION_Y 0x36 /* Center Y ellipse position */
|
||||
+#endif
|
||||
+
|
||||
#include "tslib-private.h"
|
||||
|
||||
#define GRAB_EVENTS_WANTED 1
|
||||
@@ -160,16 +165,17 @@ static int ts_input_read(struct tslib_module_info *inf,
|
||||
}
|
||||
break;
|
||||
case EV_SYN:
|
||||
- /* Fill out a new complete event */
|
||||
- if (pen_up) {
|
||||
- samp->x = 0;
|
||||
- samp->y = 0;
|
||||
- samp->pressure = 0;
|
||||
- pen_up = 0;
|
||||
- } else {
|
||||
- samp->x = i->current_x;
|
||||
- samp->y = i->current_y;
|
||||
- samp->pressure = i->current_p;
|
||||
+ if (ev.code == SYN_REPORT) {
|
||||
+ /* Fill out a new complete event */
|
||||
+ if (pen_up) {
|
||||
+ samp->x = 0;
|
||||
+ samp->y = 0;
|
||||
+ samp->pressure = 0;
|
||||
+ pen_up = 0;
|
||||
+ } else {
|
||||
+ samp->x = i->current_x;
|
||||
+ samp->y = i->current_y;
|
||||
+ samp->pressure = i->current_p;
|
||||
}
|
||||
samp->tv = ev.time;
|
||||
#ifdef DEBUG
|
||||
@@ -179,6 +185,7 @@ static int ts_input_read(struct tslib_module_info *inf,
|
||||
#endif /* DEBUG */
|
||||
samp++;
|
||||
total++;
|
||||
+ }
|
||||
break;
|
||||
case EV_ABS:
|
||||
switch (ev.code) {
|
||||
@@ -188,6 +195,12 @@ static int ts_input_read(struct tslib_module_info *inf,
|
||||
case ABS_Y:
|
||||
i->current_y = ev.value;
|
||||
break;
|
||||
+ case ABS_MT_POSITION_X:
|
||||
+ i->current_x = ev.value;
|
||||
+ break;
|
||||
+ case ABS_MT_POSITION_Y:
|
||||
+ i->current_y = ev.value;
|
||||
+ break;
|
||||
case ABS_PRESSURE:
|
||||
i->current_p = ev.value;
|
||||
break;
|
||||
--
|
||||
1.8.1.4
|
||||
|
@ -1,4 +0,0 @@
|
||||
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
|
||||
|
||||
SRC_URI += "file://tslib.patch"
|
||||
|
4
recipes-graphics/tslib/tslib_1.1.bbappend.disabled
Normal file
4
recipes-graphics/tslib/tslib_1.1.bbappend.disabled
Normal file
@ -0,0 +1,4 @@
|
||||
FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
|
||||
|
||||
SRC_URI += "file://tslib.patch"
|
||||
|
@ -1,15 +1,15 @@
|
||||
DESCRIPTION = "Library for the DRI2 extension to the X Window System"
|
||||
|
||||
LICENSE = "MIT-X"
|
||||
LICENSE = "MIT-CMU"
|
||||
LIC_FILES_CHKSUM = "file://COPYING;md5=827da9afab1f727f2a66574629e0f39c"
|
||||
|
||||
DEPENDS = "libdrm libxext xextproto libxfixes dri2proto"
|
||||
DEPENDS = "libdrm libxext libxfixes xorgproto"
|
||||
|
||||
PE = "1"
|
||||
PV = "1.0.0+git${SRCPV}"
|
||||
SRC_URI = "git://github.com/robclark/libdri2.git;protocol=http;branch=master"
|
||||
|
||||
SRCREV_pn-${PN} = "4f1eef3183df2b270c3d5cbef07343ee5127a6a4"
|
||||
SRCREV = "4f1eef3183df2b270c3d5cbef07343ee5127a6a4"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
|
@ -2,14 +2,14 @@ require recipes-graphics/xorg-driver/xorg-driver-video.inc
|
||||
|
||||
DESCRIPTION = "X.Org X server -- A10/A13 display driver"
|
||||
|
||||
LICENSE = "MIT-X"
|
||||
LICENSE = "MIT-CMU"
|
||||
LIC_FILES_CHKSUM = "file://COPYING;md5=f91dc3ee5ce59eb4b528e67e98a31266"
|
||||
|
||||
DEPENDS += "sunxi-mali"
|
||||
DEPENDS += "sunxi-mali libump xorgproto"
|
||||
|
||||
PE = "3"
|
||||
PV = "0.3.1+git${SRCPV}"
|
||||
SRCREV_pn-${PN} = "eed17d5586c3b4dfcf0b5976e8b947b171d4897c"
|
||||
PV = "0.5.1+git${SRCPV}"
|
||||
SRCREV = "e094e3c8f9004ca3347694bd05b99d136e8621b9"
|
||||
|
||||
SRC_URI = "git://github.com/ssvb/xf86-video-fbturbo.git;protocol=http;branch=master \
|
||||
file://20-fbturbo.conf"
|
||||
@ -18,9 +18,9 @@ S = "${WORKDIR}/git"
|
||||
|
||||
CFLAGS += " -I${STAGING_INCDIR}/xorg "
|
||||
|
||||
do_install_append() {
|
||||
do_install:append() {
|
||||
install -d ${D}${datadir}/X11/xorg.conf.d
|
||||
install -m 0644 ${WORKDIR}/20-fbturbo.conf ${D}${datadir}/X11/xorg.conf.d
|
||||
install -m 0644 ${UNPACKDIR}/20-fbturbo.conf ${D}${datadir}/X11/xorg.conf.d
|
||||
}
|
||||
|
||||
FILES_${PN} += "${datadir}/X11/xorg.conf.d/20-fbturbo.conf"
|
||||
FILES:${PN} += "${datadir}/X11/xorg.conf.d/20-fbturbo.conf"
|
||||
|
@ -1 +1 @@
|
||||
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
|
||||
FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
|
||||
|
1
recipes-graphics/xorg-xserver/xserver-xorg_%.bbappend
Normal file
1
recipes-graphics/xorg-xserver/xserver-xorg_%.bbappend
Normal file
@ -0,0 +1 @@
|
||||
PACKAGECONFIG[dri3] = "-Ddri3=true,-Ddri3=false,libxshmfence"
|
13
recipes-kernel/linux-firmware/linux-firmware_%.bbappend
Normal file
13
recipes-kernel/linux-firmware/linux-firmware_%.bbappend
Normal file
@ -0,0 +1,13 @@
|
||||
# The brcmfmac driver looks for NVRAM files using the first entry in board
|
||||
# compatible since kernel >= 5.0:
|
||||
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0ad4b55b2f29784f93875e6231bf57cd233624a2
|
||||
# We create a link to the AP6212 module NVRAM file so that firmware is
|
||||
# autodetected by the driver.
|
||||
# WARNING: The following commit is required for NVRAM files to be included in
|
||||
# linux-firmware-bcm43430 package:
|
||||
# http://git.openembedded.org/openembedded-core/commit/?id=dde0f79f32fa6bab045ef60199903f74c4cc3393
|
||||
do_install:append:sunxi() {
|
||||
ln -sf -r ${D}${nonarch_base_libdir}/firmware/brcm/brcmfmac43430-sdio.AP6212.txt ${D}${nonarch_base_libdir}/firmware/brcm/brcmfmac43430-sdio.xunlong,orangepi-zero-plus2.txt
|
||||
ln -sf -r ${D}${nonarch_base_libdir}/firmware/brcm/brcmfmac43430-sdio.AP6212.txt ${D}${nonarch_base_libdir}/firmware/brcm/brcmfmac43430-sdio.xunlong,orangepi-zero-plus2-h3.txt
|
||||
ln -sf -r ${D}${nonarch_base_libdir}/firmware/brcm/brcmfmac43430-sdio.AP6212.txt ${D}${nonarch_base_libdir}/firmware/brcm/brcmfmac43430-sdio.friendlyarm,nanopi-neo-plus2.txt
|
||||
}
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,45 @@
|
||||
From 5138d597275fd503573fac84018186bd18740644 Mon Sep 17 00:00:00 2001
|
||||
From: pbiel <pbiel7@gmail.com>
|
||||
Date: Thu, 30 Mar 2023 22:45:33 +0200
|
||||
Subject: [PATCH] Fix incldue path for unisocwcn
|
||||
|
||||
---
|
||||
drivers/net/wireless/uwe5622/Makefile | 4 +++-
|
||||
drivers/net/wireless/uwe5622/unisocwcn/Makefile | 6 +++---
|
||||
2 files changed, 6 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/uwe5622/Makefile b/drivers/net/wireless/uwe5622/Makefile
|
||||
index 313ea5123..e9a398584 100644
|
||||
--- a/drivers/net/wireless/uwe5622/Makefile
|
||||
+++ b/drivers/net/wireless/uwe5622/Makefile
|
||||
@@ -2,7 +2,9 @@ obj-$(CONFIG_AW_WIFI_DEVICE_UWE5622) += unisocwcn/
|
||||
obj-$(CONFIG_WLAN_UWE5622) += unisocwifi/
|
||||
obj-$(CONFIG_TTY_OVERY_SDIO) += tty-sdio/
|
||||
|
||||
-UNISOCWCN_DIR := $(shell cd $(src)/unisocwcn/ && /bin/pwd)
|
||||
+mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST)))
|
||||
+UNISOCWCN_DIR := $(dir $(mkfile_path))/unisocwcn/
|
||||
+
|
||||
UNISOC_BSP_INCLUDE := $(UNISOCWCN_DIR)/include
|
||||
export UNISOC_BSP_INCLUDE
|
||||
|
||||
diff --git a/drivers/net/wireless/uwe5622/unisocwcn/Makefile b/drivers/net/wireless/uwe5622/unisocwcn/Makefile
|
||||
index f9c595747..1ad490594 100644
|
||||
--- a/drivers/net/wireless/uwe5622/unisocwcn/Makefile
|
||||
+++ b/drivers/net/wireless/uwe5622/unisocwcn/Makefile
|
||||
@@ -129,9 +129,9 @@ ccflags-y += -DCONFIG_WCN_BOOT
|
||||
ccflags-y += -DCONFIG_WCN_UTILS
|
||||
|
||||
#### include path ######
|
||||
-ccflags-y += -I$(src)/include/
|
||||
-ccflags-y += -I$(src)/platform/
|
||||
-ccflags-y += -I$(src)/platform/rf/
|
||||
+ccflags-y += -I$(srctree)/$(src)/include/
|
||||
+ccflags-y += -I$(srctree)/$(src)/platform/
|
||||
+ccflags-y += -I$(srctree)/$(src)/platform/rf/
|
||||
|
||||
#### add cflag for Customer ######
|
||||
### ---------- Hisilicon start ---------- ###
|
||||
--
|
||||
2.34.1
|
||||
|
@ -0,0 +1,177 @@
|
||||
From 5f4d2d5fc32dfe41c73cac36ec6747c34e5562a3 Mon Sep 17 00:00:00 2001
|
||||
From: pbiel <pbiel7@gmail.com>
|
||||
Date: Wed, 15 Mar 2023 23:04:27 +0100
|
||||
Subject: [PATCH] wireless: Adapt uwe5622 wifi driver to kernel 6.1
|
||||
|
||||
---
|
||||
drivers/net/wireless/uwe5622/tty-sdio/lpm.c | 2 +-
|
||||
.../uwe5622/unisocwcn/boot/wcn_integrate_dev.c | 2 +-
|
||||
.../uwe5622/unisocwcn/platform/wcn_parn_parser.c | 2 +-
|
||||
.../wireless/uwe5622/unisocwcn/platform/wcn_procfs.c | 2 +-
|
||||
.../wireless/uwe5622/unisocwcn/usb/wcn_usb_download.c | 2 +-
|
||||
.../net/wireless/uwe5622/unisocwcn/usb/wcn_usb_test.c | 6 +++---
|
||||
drivers/net/wireless/uwe5622/unisocwifi/cfg80211.c | 10 +++++-----
|
||||
drivers/net/wireless/uwe5622/unisocwifi/cmdevt.c | 2 +-
|
||||
8 files changed, 14 insertions(+), 14 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/uwe5622/tty-sdio/lpm.c b/drivers/net/wireless/uwe5622/tty-sdio/lpm.c
|
||||
index b2d9a8994e5e..35e30651a921 100644
|
||||
--- a/drivers/net/wireless/uwe5622/tty-sdio/lpm.c
|
||||
+++ b/drivers/net/wireless/uwe5622/tty-sdio/lpm.c
|
||||
@@ -70,7 +70,7 @@ static int btwrite_proc_show(struct seq_file *m, void *v)
|
||||
|
||||
static int bluesleep_open_proc_btwrite(struct inode *inode, struct file *file)
|
||||
{
|
||||
- return single_open(file, btwrite_proc_show, PDE_DATA(inode));
|
||||
+ return single_open(file, btwrite_proc_show, pde_data(inode));
|
||||
}
|
||||
|
||||
static const struct proc_ops lpm_proc_btwrite_fops = {
|
||||
diff --git a/drivers/net/wireless/uwe5622/unisocwcn/boot/wcn_integrate_dev.c b/drivers/net/wireless/uwe5622/unisocwcn/boot/wcn_integrate_dev.c
|
||||
index 3ee6910e7cf7..29a3ec298bc1 100644
|
||||
--- a/drivers/net/wireless/uwe5622/unisocwcn/boot/wcn_integrate_dev.c
|
||||
+++ b/drivers/net/wireless/uwe5622/unisocwcn/boot/wcn_integrate_dev.c
|
||||
@@ -562,7 +562,7 @@ static struct wcn_proc_data g_proc_data = {
|
||||
static int wcn_platform_open(struct inode *inode, struct file *filp)
|
||||
{
|
||||
struct platform_proc_file_entry
|
||||
- *entry = (struct platform_proc_file_entry *)PDE_DATA(inode);
|
||||
+ *entry = (struct platform_proc_file_entry *)pde_data(inode);
|
||||
|
||||
WCN_INFO("entry name:%s\n!", entry->name);
|
||||
|
||||
diff --git a/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_parn_parser.c b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_parn_parser.c
|
||||
index aea7d6d0fe57..bd841f0b32d3 100644
|
||||
--- a/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_parn_parser.c
|
||||
+++ b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_parn_parser.c
|
||||
@@ -146,7 +146,7 @@ static int prefixcmp(const char *str, const char *prefix)
|
||||
}
|
||||
|
||||
#if KERNEL_VERSION(3, 19, 0) <= LINUX_VERSION_CODE
|
||||
-static int find_callback(struct dir_context *ctx, const char *name, int namlen,
|
||||
+static bool find_callback(struct dir_context *ctx, const char *name, int namlen,
|
||||
loff_t offset, u64 ino, unsigned int d_type)
|
||||
#else
|
||||
static int find_callback(void *ctx, const char *name, int namlen,
|
||||
diff --git a/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_procfs.c b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_procfs.c
|
||||
index 2edb7903d80e..9e453365bba8 100644
|
||||
--- a/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_procfs.c
|
||||
+++ b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_procfs.c
|
||||
@@ -431,7 +431,7 @@ static const struct proc_ops mdbg_snap_shoot_seq_fops = {
|
||||
static int mdbg_proc_open(struct inode *inode, struct file *filp)
|
||||
{
|
||||
struct mdbg_proc_entry *entry =
|
||||
- (struct mdbg_proc_entry *)PDE_DATA(inode);
|
||||
+ (struct mdbg_proc_entry *)pde_data(inode);
|
||||
filp->private_data = entry;
|
||||
|
||||
return 0;
|
||||
diff --git a/drivers/net/wireless/uwe5622/unisocwcn/usb/wcn_usb_download.c b/drivers/net/wireless/uwe5622/unisocwcn/usb/wcn_usb_download.c
|
||||
index 8f228d403909..750bfc0466cb 100644
|
||||
--- a/drivers/net/wireless/uwe5622/unisocwcn/usb/wcn_usb_download.c
|
||||
+++ b/drivers/net/wireless/uwe5622/unisocwcn/usb/wcn_usb_download.c
|
||||
@@ -82,7 +82,7 @@ static int wcn_usb_dopen(struct inode *inode, struct file *file)
|
||||
{
|
||||
struct wcn_usb_ddata *data;
|
||||
|
||||
- data = (struct wcn_usb_ddata *)PDE_DATA(inode);
|
||||
+ data = (struct wcn_usb_ddata *)pde_data(inode);
|
||||
|
||||
if (!data)
|
||||
return -EIO;
|
||||
diff --git a/drivers/net/wireless/uwe5622/unisocwcn/usb/wcn_usb_test.c b/drivers/net/wireless/uwe5622/unisocwcn/usb/wcn_usb_test.c
|
||||
index c2cccc658c0d..e7a9f258943e 100644
|
||||
--- a/drivers/net/wireless/uwe5622/unisocwcn/usb/wcn_usb_test.c
|
||||
+++ b/drivers/net/wireless/uwe5622/unisocwcn/usb/wcn_usb_test.c
|
||||
@@ -61,7 +61,7 @@ static int wcn_usb_channel_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
struct channel *channel;
|
||||
|
||||
- channel = (struct channel *)PDE_DATA(inode);
|
||||
+ channel = (struct channel *)pde_data(inode);
|
||||
|
||||
if (!channel)
|
||||
return -EIO;
|
||||
@@ -467,7 +467,7 @@ static int wcn_usb_chnmg_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
struct chnmg *chnmg;
|
||||
/* get channel_list head */
|
||||
- chnmg = (struct chnmg *)PDE_DATA(inode);
|
||||
+ chnmg = (struct chnmg *)pde_data(inode);
|
||||
|
||||
file->private_data = chnmg;
|
||||
return 0;
|
||||
@@ -916,7 +916,7 @@ static int print_level_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
struct chnmg *chnmg;
|
||||
/* get channel_list head */
|
||||
- chnmg = (struct chnmg *)PDE_DATA(inode);
|
||||
+ chnmg = (struct chnmg *)pde_data(inode);
|
||||
|
||||
file->private_data = chnmg;
|
||||
return 0;
|
||||
diff --git a/drivers/net/wireless/uwe5622/unisocwifi/cfg80211.c b/drivers/net/wireless/uwe5622/unisocwifi/cfg80211.c
|
||||
index daef880ae3c0..2231388da70a 100644
|
||||
--- a/drivers/net/wireless/uwe5622/unisocwifi/cfg80211.c
|
||||
+++ b/drivers/net/wireless/uwe5622/unisocwifi/cfg80211.c
|
||||
@@ -703,7 +703,7 @@ static int sprdwl_add_cipher_key(struct sprdwl_vif *vif, bool pairwise,
|
||||
}
|
||||
|
||||
static int sprdwl_cfg80211_add_key(struct wiphy *wiphy, struct net_device *ndev,
|
||||
- u8 key_index, bool pairwise,
|
||||
+ int link_id, u8 key_index, bool pairwise,
|
||||
const u8 *mac_addr,
|
||||
struct key_params *params)
|
||||
{
|
||||
@@ -725,7 +725,7 @@ static int sprdwl_cfg80211_add_key(struct wiphy *wiphy, struct net_device *ndev,
|
||||
}
|
||||
|
||||
static int sprdwl_cfg80211_del_key(struct wiphy *wiphy, struct net_device *ndev,
|
||||
- u8 key_index, bool pairwise,
|
||||
+ int link_id, u8 key_index, bool pairwise,
|
||||
const u8 *mac_addr)
|
||||
{
|
||||
struct sprdwl_vif *vif = netdev_priv(ndev);
|
||||
@@ -755,7 +755,7 @@ static int sprdwl_cfg80211_del_key(struct wiphy *wiphy, struct net_device *ndev,
|
||||
|
||||
static int sprdwl_cfg80211_set_default_key(struct wiphy *wiphy,
|
||||
struct net_device *ndev,
|
||||
- u8 key_index, bool unicast,
|
||||
+ int link_id, u8 key_index, bool unicast,
|
||||
bool multicast)
|
||||
{
|
||||
struct sprdwl_vif *vif = netdev_priv(ndev);
|
||||
@@ -984,7 +984,7 @@ static int sprdwl_cfg80211_change_beacon(struct wiphy *wiphy,
|
||||
return sprdwl_change_beacon(vif, beacon);
|
||||
}
|
||||
|
||||
-static int sprdwl_cfg80211_stop_ap(struct wiphy *wiphy, struct net_device *ndev)
|
||||
+static int sprdwl_cfg80211_stop_ap(struct wiphy *wiphy, struct net_device *ndev, unsigned int link_id)
|
||||
{
|
||||
#ifdef DFS_MASTER
|
||||
struct sprdwl_vif *vif = netdev_priv(ndev);
|
||||
@@ -2367,7 +2367,7 @@ void sprdwl_report_connection(struct sprdwl_vif *vif,
|
||||
conn_info->status == SPRDWL_ROAM_SUCCESS){
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)
|
||||
struct cfg80211_roam_info roam_info = {
|
||||
- .bss = bss,
|
||||
+ .links[0].bss = bss,
|
||||
.req_ie = conn_info->req_ie,
|
||||
.req_ie_len = conn_info->req_ie_len,
|
||||
.resp_ie = conn_info->resp_ie,
|
||||
diff --git a/drivers/net/wireless/uwe5622/unisocwifi/cmdevt.c b/drivers/net/wireless/uwe5622/unisocwifi/cmdevt.c
|
||||
index e81619b12e39..1ecbfac5b490 100644
|
||||
--- a/drivers/net/wireless/uwe5622/unisocwifi/cmdevt.c
|
||||
+++ b/drivers/net/wireless/uwe5622/unisocwifi/cmdevt.c
|
||||
@@ -3296,7 +3296,7 @@ void sprdwl_event_chan_changed(struct sprdwl_vif *vif, u8 *data, u16 len)
|
||||
NL80211_CHAN_HT20);
|
||||
else
|
||||
wl_err("%s, ch is null!\n", __func__);
|
||||
- cfg80211_ch_switch_notify(vif->ndev, &chandef);
|
||||
+ cfg80211_ch_switch_notify(vif->ndev, &chandef, 0);
|
||||
}
|
||||
}
|
||||
|
||||
--
|
||||
2.34.1
|
||||
|
@ -0,0 +1,35 @@
|
||||
From 9211a92d07e9a43fce104f87f9d45e890257b699 Mon Sep 17 00:00:00 2001
|
||||
From: pbiel <pbiel7@gmail.com>
|
||||
Date: Tue, 7 Mar 2023 20:28:44 +0100
|
||||
Subject: [PATCH] wireless: fix setting mac address for netdev in uwe5622
|
||||
unisocwifi driver
|
||||
|
||||
---
|
||||
drivers/net/wireless/uwe5622/unisocwifi/main.c | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/uwe5622/unisocwifi/main.c b/drivers/net/wireless/uwe5622/unisocwifi/main.c
|
||||
index 21efdf4e0..566a9a7f3 100644
|
||||
--- a/drivers/net/wireless/uwe5622/unisocwifi/main.c
|
||||
+++ b/drivers/net/wireless/uwe5622/unisocwifi/main.c
|
||||
@@ -1356,6 +1356,7 @@ static struct sprdwl_vif *sprdwl_register_netdev(struct sprdwl_priv *priv,
|
||||
struct wireless_dev *wdev;
|
||||
struct sprdwl_vif *vif;
|
||||
int ret;
|
||||
+ u8 target_mac_addr[ETH_ALEN] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
|
||||
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 17, 0))
|
||||
ndev = alloc_netdev(sizeof(*vif), name, NET_NAME_UNKNOWN, ether_setup);
|
||||
@@ -1411,7 +1412,8 @@ static struct sprdwl_vif *sprdwl_register_netdev(struct sprdwl_priv *priv,
|
||||
ndev->features |= NETIF_F_SG;
|
||||
SET_NETDEV_DEV(ndev, wiphy_dev(priv->wiphy));
|
||||
|
||||
- sprdwl_set_mac_addr(vif, addr, ndev->dev_addr);
|
||||
+ sprdwl_set_mac_addr(vif, addr, target_mac_addr);
|
||||
+ dev_addr_set(ndev, target_mac_addr);
|
||||
|
||||
#ifdef CONFIG_P2P_INTF
|
||||
if (type == NL80211_IFTYPE_P2P_DEVICE)
|
||||
--
|
||||
2.34.1
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,60 @@
|
||||
From 452a691a83df1aab77cec33203cb04a817817a05 Mon Sep 17 00:00:00 2001
|
||||
From: The-going <48602507+The-going@users.noreply.github.com>
|
||||
Date: Thu, 5 May 2022 22:55:13 +0300
|
||||
Subject: [PATCH] drv: nvmem: sunxi_sid: Add sunxi_get_soc_chipid,
|
||||
sunxi_get_serial
|
||||
|
||||
---
|
||||
drivers/nvmem/sunxi_sid.c | 28 ++++++++++++++++++++++++++++
|
||||
1 file changed, 28 insertions(+)
|
||||
|
||||
diff --git a/drivers/nvmem/sunxi_sid.c b/drivers/nvmem/sunxi_sid.c
|
||||
index 37a6abb0e..c81fac63d 100644
|
||||
--- a/drivers/nvmem/sunxi_sid.c
|
||||
+++ b/drivers/nvmem/sunxi_sid.c
|
||||
@@ -37,6 +37,25 @@ struct sunxi_sid {
|
||||
u32 value_offset;
|
||||
};
|
||||
|
||||
+static unsigned int sunxi_soc_chipid[4];
|
||||
+static unsigned int sunxi_serial[4];
|
||||
+
|
||||
+int sunxi_get_soc_chipid(unsigned char *chipid)
|
||||
+{
|
||||
+ memcpy(chipid, sunxi_soc_chipid, 16);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+EXPORT_SYMBOL(sunxi_get_soc_chipid);
|
||||
+
|
||||
+int sunxi_get_serial(unsigned char *serial)
|
||||
+{
|
||||
+ memcpy(serial, sunxi_serial, 16);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+EXPORT_SYMBOL(sunxi_get_serial);
|
||||
+
|
||||
static int sunxi_sid_read(void *context, unsigned int offset,
|
||||
void *val, size_t bytes)
|
||||
{
|
||||
@@ -167,6 +186,15 @@ static int sunxi_sid_probe(struct platform_device *pdev)
|
||||
|
||||
platform_set_drvdata(pdev, nvmem);
|
||||
|
||||
+ nvmem_cfg->reg_read(sid, 0, &sunxi_soc_chipid[0], sizeof(int));
|
||||
+ nvmem_cfg->reg_read(sid, 4, &sunxi_soc_chipid[1], sizeof(int));
|
||||
+ nvmem_cfg->reg_read(sid, 8, &sunxi_soc_chipid[2], sizeof(int));
|
||||
+ nvmem_cfg->reg_read(sid, 12, &sunxi_soc_chipid[3], sizeof(int));
|
||||
+
|
||||
+ sunxi_serial[0] = sunxi_soc_chipid[3];
|
||||
+ sunxi_serial[1] = sunxi_soc_chipid[2];
|
||||
+ sunxi_serial[2] = (sunxi_soc_chipid[1] >> 16) & 0x0ffff;
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
|
||||
--
|
||||
2.35.3
|
||||
|
||||
|
@ -0,0 +1,612 @@
|
||||
From 418436514e2e64e07e7fd2ef9d77ec4712d1033b Mon Sep 17 00:00:00 2001
|
||||
From: pbiel <pbiel7@gmail.com>
|
||||
Date: Fri, 24 Feb 2023 10:38:03 +0100
|
||||
Subject: [PATCH 2/2] Add sunxi addr driver
|
||||
|
||||
---
|
||||
drivers/misc/Kconfig | 1 +
|
||||
drivers/misc/Makefile | 1 +
|
||||
drivers/misc/sunxi-addr/Kconfig | 6 +
|
||||
drivers/misc/sunxi-addr/Makefile | 5 +
|
||||
drivers/misc/sunxi-addr/sha256.c | 178 +++++++++++++
|
||||
drivers/misc/sunxi-addr/sunxi-addr.c | 358 +++++++++++++++++++++++++++
|
||||
6 files changed, 549 insertions(+)
|
||||
create mode 100644 drivers/misc/sunxi-addr/Kconfig
|
||||
create mode 100644 drivers/misc/sunxi-addr/Makefile
|
||||
create mode 100644 drivers/misc/sunxi-addr/sha256.c
|
||||
create mode 100644 drivers/misc/sunxi-addr/sunxi-addr.c
|
||||
|
||||
diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
|
||||
index 358ad56f6..c59480dc8 100644
|
||||
--- a/drivers/misc/Kconfig
|
||||
+++ b/drivers/misc/Kconfig
|
||||
@@ -514,4 +514,5 @@ source "drivers/misc/habanalabs/Kconfig"
|
||||
source "drivers/misc/uacce/Kconfig"
|
||||
source "drivers/misc/pvpanic/Kconfig"
|
||||
source "drivers/misc/mchp_pci1xxxx/Kconfig"
|
||||
+source "drivers/misc/sunxi-addr/Kconfig"
|
||||
endmenu
|
||||
diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile
|
||||
index ac9b3e757..487a2bf2d 100644
|
||||
--- a/drivers/misc/Makefile
|
||||
+++ b/drivers/misc/Makefile
|
||||
@@ -62,3 +62,4 @@ obj-$(CONFIG_HI6421V600_IRQ) += hi6421v600-irq.o
|
||||
obj-$(CONFIG_OPEN_DICE) += open-dice.o
|
||||
obj-$(CONFIG_GP_PCI1XXXX) += mchp_pci1xxxx/
|
||||
obj-$(CONFIG_VCPU_STALL_DETECTOR) += vcpu_stall_detector.o
|
||||
+obj-$(CONFIG_SUNXI_ADDR_MGT) += sunxi-addr/
|
||||
\ No newline at end of file
|
||||
diff --git a/drivers/misc/sunxi-addr/Kconfig b/drivers/misc/sunxi-addr/Kconfig
|
||||
new file mode 100644
|
||||
index 000000000..801dd2c02
|
||||
--- /dev/null
|
||||
+++ b/drivers/misc/sunxi-addr/Kconfig
|
||||
@@ -0,0 +1,6 @@
|
||||
+config SUNXI_ADDR_MGT
|
||||
+ tristate "Allwinner Network MAC Addess Manager"
|
||||
+ depends on BT || ETHERNET || WLAN
|
||||
+ depends on NVMEM_SUNXI_SID
|
||||
+ help
|
||||
+ allwinner network mac address management
|
||||
diff --git a/drivers/misc/sunxi-addr/Makefile b/drivers/misc/sunxi-addr/Makefile
|
||||
new file mode 100644
|
||||
index 000000000..f01fd4783
|
||||
--- /dev/null
|
||||
+++ b/drivers/misc/sunxi-addr/Makefile
|
||||
@@ -0,0 +1,5 @@
|
||||
+#
|
||||
+# Makefile for wifi mac addr manager drivers
|
||||
+#
|
||||
+sunxi_addr-objs := sunxi-addr.o sha256.o
|
||||
+obj-$(CONFIG_SUNXI_ADDR_MGT) += sunxi_addr.o
|
||||
diff --git a/drivers/misc/sunxi-addr/sha256.c b/drivers/misc/sunxi-addr/sha256.c
|
||||
new file mode 100644
|
||||
index 000000000..78825810c
|
||||
--- /dev/null
|
||||
+++ b/drivers/misc/sunxi-addr/sha256.c
|
||||
@@ -0,0 +1,178 @@
|
||||
+/*
|
||||
+ * Local implement of sha256.
|
||||
+ *
|
||||
+ * Copyright (C) 2013 Allwinner.
|
||||
+ *
|
||||
+ * This file is licensed under the terms of the GNU General Public
|
||||
+ * License version 2. This program is licensed "as is" without any
|
||||
+ * warranty of any kind, whether express or implied.
|
||||
+ */
|
||||
+#include <linux/kernel.h>
|
||||
+#include <linux/string.h>
|
||||
+
|
||||
+/****************************** MACROS ******************************/
|
||||
+#define ROTRIGHT(a, b) (((a) >> (b)) | ((a) << (32 - (b))))
|
||||
+#define CH(x, y, z) (((x) & (y)) ^ (~(x) & (z)))
|
||||
+#define MAJ(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
|
||||
+#define EP0(x) (ROTRIGHT(x, 2) ^ ROTRIGHT(x, 13) ^ ROTRIGHT(x, 22))
|
||||
+#define EP1(x) (ROTRIGHT(x, 6) ^ ROTRIGHT(x, 11) ^ ROTRIGHT(x, 25))
|
||||
+#define SIG0(x) (ROTRIGHT(x, 7) ^ ROTRIGHT(x, 18) ^ ((x) >> 3))
|
||||
+#define SIG1(x) (ROTRIGHT(x, 17) ^ ROTRIGHT(x, 19) ^ ((x) >> 10))
|
||||
+
|
||||
+/**************************** VARIABLES *****************************/
|
||||
+static const uint32_t k[64] = {
|
||||
+ 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
|
||||
+ 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
|
||||
+ 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
|
||||
+ 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
|
||||
+ 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
|
||||
+ 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
|
||||
+ 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
|
||||
+ 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
|
||||
+ 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
|
||||
+ 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
|
||||
+ 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
|
||||
+ 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
|
||||
+ 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
|
||||
+ 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
|
||||
+ 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
|
||||
+ 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
|
||||
+};
|
||||
+
|
||||
+struct sha256_ctx {
|
||||
+ uint8_t data[64]; /* current 512-bit chunk of message data, just like a buffer */
|
||||
+ uint32_t datalen; /* sign the data length of current chunk */
|
||||
+ uint64_t bitlen; /* the bit length of the total message */
|
||||
+ uint32_t state[8]; /* store the middle state of hash abstract */
|
||||
+};
|
||||
+
|
||||
+/*********************** FUNCTION DEFINITIONS ***********************/
|
||||
+static void sha256_transform(struct sha256_ctx *ctx, const uint8_t *data)
|
||||
+{
|
||||
+ uint32_t a, b, c, d, e, f, g, h, i, j, t1, t2, m[64];
|
||||
+
|
||||
+ /* initialization */
|
||||
+ for (i = 0, j = 0; i < 16; ++i, j += 4)
|
||||
+ m[i] = (data[j] << 24) | (data[j + 1] << 16) |
|
||||
+ (data[j + 2] << 8) | (data[j + 3]);
|
||||
+ for ( ; i < 64; ++i)
|
||||
+ m[i] = SIG1(m[i - 2]) + m[i - 7] + SIG0(m[i - 15]) + m[i - 16];
|
||||
+
|
||||
+ a = ctx->state[0];
|
||||
+ b = ctx->state[1];
|
||||
+ c = ctx->state[2];
|
||||
+ d = ctx->state[3];
|
||||
+ e = ctx->state[4];
|
||||
+ f = ctx->state[5];
|
||||
+ g = ctx->state[6];
|
||||
+ h = ctx->state[7];
|
||||
+
|
||||
+ for (i = 0; i < 64; ++i) {
|
||||
+ t1 = h + EP1(e) + CH(e, f, g) + k[i] + m[i];
|
||||
+ t2 = EP0(a) + MAJ(a, b, c);
|
||||
+ h = g;
|
||||
+ g = f;
|
||||
+ f = e;
|
||||
+ e = d + t1;
|
||||
+ d = c;
|
||||
+ c = b;
|
||||
+ b = a;
|
||||
+ a = t1 + t2;
|
||||
+ }
|
||||
+
|
||||
+ ctx->state[0] += a;
|
||||
+ ctx->state[1] += b;
|
||||
+ ctx->state[2] += c;
|
||||
+ ctx->state[3] += d;
|
||||
+ ctx->state[4] += e;
|
||||
+ ctx->state[5] += f;
|
||||
+ ctx->state[6] += g;
|
||||
+ ctx->state[7] += h;
|
||||
+}
|
||||
+
|
||||
+static void sha256_init(struct sha256_ctx *ctx)
|
||||
+{
|
||||
+ ctx->datalen = 0;
|
||||
+ ctx->bitlen = 0;
|
||||
+ ctx->state[0] = 0x6a09e667;
|
||||
+ ctx->state[1] = 0xbb67ae85;
|
||||
+ ctx->state[2] = 0x3c6ef372;
|
||||
+ ctx->state[3] = 0xa54ff53a;
|
||||
+ ctx->state[4] = 0x510e527f;
|
||||
+ ctx->state[5] = 0x9b05688c;
|
||||
+ ctx->state[6] = 0x1f83d9ab;
|
||||
+ ctx->state[7] = 0x5be0cd19;
|
||||
+}
|
||||
+
|
||||
+static void sha256_update(struct sha256_ctx *ctx, const uint8_t *data, size_t len)
|
||||
+{
|
||||
+ uint32_t i;
|
||||
+
|
||||
+ for (i = 0; i < len; ++i) {
|
||||
+ ctx->data[ctx->datalen] = data[i];
|
||||
+ ctx->datalen++;
|
||||
+ if (ctx->datalen == 64) {
|
||||
+ /* 64 byte = 512 bit means the buffer ctx->data has
|
||||
+ * fully stored one chunk of message,
|
||||
+ * so do the sha256 hash map for the current chunk.
|
||||
+ */
|
||||
+ sha256_transform(ctx, ctx->data);
|
||||
+ ctx->bitlen += 512;
|
||||
+ ctx->datalen = 0;
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static void sha256_final(struct sha256_ctx *ctx, uint8_t *hash)
|
||||
+{
|
||||
+ uint32_t i;
|
||||
+
|
||||
+ i = ctx->datalen;
|
||||
+
|
||||
+ /* Pad whatever data is left in the buffer. */
|
||||
+ if (ctx->datalen < 56) {
|
||||
+ ctx->data[i++] = 0x80; /* pad 10000000 = 0x80 */
|
||||
+ while (i < 56)
|
||||
+ ctx->data[i++] = 0x00;
|
||||
+ } else {
|
||||
+ ctx->data[i++] = 0x80;
|
||||
+ while (i < 64)
|
||||
+ ctx->data[i++] = 0x00;
|
||||
+ sha256_transform(ctx, ctx->data);
|
||||
+ memset(ctx->data, 0, 56);
|
||||
+ }
|
||||
+
|
||||
+ /* Append to the padding the total message's length in bits and transform. */
|
||||
+ ctx->bitlen += ctx->datalen * 8;
|
||||
+ ctx->data[63] = ctx->bitlen;
|
||||
+ ctx->data[62] = ctx->bitlen >> 8;
|
||||
+ ctx->data[61] = ctx->bitlen >> 16;
|
||||
+ ctx->data[60] = ctx->bitlen >> 24;
|
||||
+ ctx->data[59] = ctx->bitlen >> 32;
|
||||
+ ctx->data[58] = ctx->bitlen >> 40;
|
||||
+ ctx->data[57] = ctx->bitlen >> 48;
|
||||
+ ctx->data[56] = ctx->bitlen >> 56;
|
||||
+ sha256_transform(ctx, ctx->data);
|
||||
+
|
||||
+ /* copying the final state to the output hash(use big endian). */
|
||||
+ for (i = 0; i < 4; ++i) {
|
||||
+ hash[i] = (ctx->state[0] >> (24 - i * 8)) & 0x000000ff;
|
||||
+ hash[i + 4] = (ctx->state[1] >> (24 - i * 8)) & 0x000000ff;
|
||||
+ hash[i + 8] = (ctx->state[2] >> (24 - i * 8)) & 0x000000ff;
|
||||
+ hash[i + 12] = (ctx->state[3] >> (24 - i * 8)) & 0x000000ff;
|
||||
+ hash[i + 16] = (ctx->state[4] >> (24 - i * 8)) & 0x000000ff;
|
||||
+ hash[i + 20] = (ctx->state[5] >> (24 - i * 8)) & 0x000000ff;
|
||||
+ hash[i + 24] = (ctx->state[6] >> (24 - i * 8)) & 0x000000ff;
|
||||
+ hash[i + 28] = (ctx->state[7] >> (24 - i * 8)) & 0x000000ff;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+int hmac_sha256(const uint8_t *plaintext, ssize_t psize, uint8_t *output)
|
||||
+{
|
||||
+ struct sha256_ctx ctx;
|
||||
+
|
||||
+ sha256_init(&ctx);
|
||||
+ sha256_update(&ctx, plaintext, psize);
|
||||
+ sha256_final(&ctx, output);
|
||||
+ return 0;
|
||||
+}
|
||||
diff --git a/drivers/misc/sunxi-addr/sunxi-addr.c b/drivers/misc/sunxi-addr/sunxi-addr.c
|
||||
new file mode 100644
|
||||
index 000000000..a812e4e82
|
||||
--- /dev/null
|
||||
+++ b/drivers/misc/sunxi-addr/sunxi-addr.c
|
||||
@@ -0,0 +1,358 @@
|
||||
+/*
|
||||
+ * The driver of SUNXI NET MAC ADDR Manager.
|
||||
+ *
|
||||
+ * Copyright (C) 2013 Allwinner.
|
||||
+ *
|
||||
+ * This file is licensed under the terms of the GNU General Public
|
||||
+ * License version 2. This program is licensed "as is" without any
|
||||
+ * warranty of any kind, whether express or implied.
|
||||
+ */
|
||||
+#define DEBUG
|
||||
+
|
||||
+#include <linux/kernel.h>
|
||||
+#include <linux/module.h>
|
||||
+#include <linux/miscdevice.h>
|
||||
+#include <linux/of.h>
|
||||
+#include <linux/platform_device.h>
|
||||
+
|
||||
+#define ADDR_MGT_DBG(fmt, arg...) printk(KERN_DEBUG "[ADDR_MGT] %s: " fmt "\n",\
|
||||
+ __func__, ## arg)
|
||||
+#define ADDR_MGT_ERR(fmt, arg...) printk(KERN_ERR "[ADDR_MGT] %s: " fmt "\n",\
|
||||
+ __func__, ## arg)
|
||||
+
|
||||
+#define MODULE_CUR_VERSION "v1.0.9"
|
||||
+
|
||||
+#define MATCH_STR_LEN 20
|
||||
+#define ADDR_VAL_LEN 6
|
||||
+#define ADDR_STR_LEN 18
|
||||
+#define ID_LEN 16
|
||||
+#define HASH_LEN 32
|
||||
+
|
||||
+#define TYPE_ANY 0
|
||||
+#define TYPE_BURN 1
|
||||
+#define TYPE_IDGEN 2
|
||||
+#define TYPE_USER 3
|
||||
+#define TYPE_RAND 4
|
||||
+
|
||||
+#define ADDR_FMT_STR 0
|
||||
+#define ADDR_FMT_VAL 1
|
||||
+
|
||||
+#define IS_TYPE_INVALID(x) ((x < TYPE_ANY) || (x > TYPE_RAND))
|
||||
+
|
||||
+#define ADDR_CLASS_ATTR_ADD(name) \
|
||||
+static ssize_t addr_##name##_show(struct class *class, \
|
||||
+ struct class_attribute *attr, char *buffer) \
|
||||
+{ \
|
||||
+ char addr[ADDR_STR_LEN]; \
|
||||
+ if (IS_TYPE_INVALID(get_addr_by_name(ADDR_FMT_STR, addr, #name))) \
|
||||
+ return 0; \
|
||||
+ return sprintf(buffer, "%.17s\n", addr); \
|
||||
+} \
|
||||
+static ssize_t addr_##name##_store(struct class *class, \
|
||||
+ struct class_attribute *attr, \
|
||||
+ const char *buffer, size_t count) \
|
||||
+{ \
|
||||
+ if (count != ADDR_STR_LEN) { \
|
||||
+ ADDR_MGT_ERR("Length wrong."); \
|
||||
+ return -EINVAL; \
|
||||
+ } \
|
||||
+ set_addr_by_name(TYPE_USER, ADDR_FMT_STR, buffer, #name); \
|
||||
+ return count; \
|
||||
+} \
|
||||
+static CLASS_ATTR_RW(addr_##name);
|
||||
+
|
||||
+struct addr_mgt_info {
|
||||
+ unsigned int type_def;
|
||||
+ unsigned int type_cur;
|
||||
+ unsigned int flag;
|
||||
+ char *addr;
|
||||
+ char *name;
|
||||
+};
|
||||
+
|
||||
+static struct addr_mgt_info info[] = {
|
||||
+ {TYPE_ANY, TYPE_ANY, 1, NULL, "wifi"},
|
||||
+ {TYPE_ANY, TYPE_ANY, 0, NULL, "bt" },
|
||||
+ {TYPE_ANY, TYPE_ANY, 1, NULL, "eth" },
|
||||
+};
|
||||
+
|
||||
+extern int hmac_sha256(const uint8_t *plaintext, ssize_t psize, uint8_t *output);
|
||||
+extern int sunxi_get_soc_chipid(unsigned char *chipid);
|
||||
+
|
||||
+static int addr_parse(int fmt, const char *addr, int check)
|
||||
+{
|
||||
+ char val_buf[ADDR_VAL_LEN];
|
||||
+ char cmp_buf[ADDR_VAL_LEN];
|
||||
+ int ret = ADDR_VAL_LEN;
|
||||
+
|
||||
+ if (fmt == ADDR_FMT_STR)
|
||||
+ ret = sscanf(addr, "%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx",
|
||||
+ &val_buf[0], &val_buf[1], &val_buf[2],
|
||||
+ &val_buf[3], &val_buf[4], &val_buf[5]);
|
||||
+ else
|
||||
+ memcpy(val_buf, addr, ADDR_VAL_LEN);
|
||||
+
|
||||
+ if (ret != ADDR_VAL_LEN)
|
||||
+ return -1;
|
||||
+
|
||||
+ if (check && (val_buf[0] & 0x3))
|
||||
+ return -1;
|
||||
+
|
||||
+ memset(cmp_buf, 0x00, ADDR_VAL_LEN);
|
||||
+ if (memcmp(val_buf, cmp_buf, ADDR_VAL_LEN) == 0)
|
||||
+ return -1;
|
||||
+
|
||||
+ memset(cmp_buf, 0xFF, ADDR_VAL_LEN);
|
||||
+ if (memcmp(val_buf, cmp_buf, ADDR_VAL_LEN) == 0)
|
||||
+ return -1;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static struct addr_mgt_info *addr_find_by_name(char *name)
|
||||
+{
|
||||
+ int i = 0;
|
||||
+ for (i = 0; i < ARRAY_SIZE(info); i++) {
|
||||
+ if (strcmp(info[i].name, name) == 0)
|
||||
+ return &info[i];
|
||||
+ }
|
||||
+ return NULL;
|
||||
+}
|
||||
+
|
||||
+static int get_addr_by_name(int fmt, char *addr, char *name)
|
||||
+{
|
||||
+ struct addr_mgt_info *t;
|
||||
+
|
||||
+ t = addr_find_by_name(name);
|
||||
+ if (t == NULL) {
|
||||
+ ADDR_MGT_ERR("can't find addr named: %s", name);
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ if (IS_TYPE_INVALID(t->type_cur)) {
|
||||
+ ADDR_MGT_ERR("addr type invalid");
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ if (addr_parse(ADDR_FMT_VAL, t->addr, t->flag)) {
|
||||
+ ADDR_MGT_ERR("addr parse fail(%s)", t->addr);
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ if (fmt == ADDR_FMT_STR)
|
||||
+ sprintf(addr, "%02X:%02X:%02X:%02X:%02X:%02X",
|
||||
+ t->addr[0], t->addr[1], t->addr[2],
|
||||
+ t->addr[3], t->addr[4], t->addr[5]);
|
||||
+ else
|
||||
+ memcpy(addr, t->addr, ADDR_VAL_LEN);
|
||||
+
|
||||
+ return t->type_cur;
|
||||
+}
|
||||
+
|
||||
+static int set_addr_by_name(int type, int fmt, const char *addr, char *name)
|
||||
+{
|
||||
+ struct addr_mgt_info *t;
|
||||
+
|
||||
+ t = addr_find_by_name(name);
|
||||
+ if (t == NULL) {
|
||||
+ ADDR_MGT_ERR("can't find addr named: %s", name);
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ if (addr_parse(fmt, addr, t->flag)) {
|
||||
+ ADDR_MGT_ERR("addr parse fail(%s)", addr);
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ t->type_cur = type;
|
||||
+ if (fmt == ADDR_FMT_STR)
|
||||
+ sscanf(addr, "%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx",
|
||||
+ &t->addr[0], &t->addr[1], &t->addr[2],
|
||||
+ &t->addr[3], &t->addr[4], &t->addr[5]);
|
||||
+ else
|
||||
+ memcpy(t->addr, addr, ADDR_VAL_LEN);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+int get_custom_mac_address(int fmt, char *name, char *addr)
|
||||
+{
|
||||
+ return get_addr_by_name(fmt, addr, name);
|
||||
+}
|
||||
+EXPORT_SYMBOL_GPL(get_custom_mac_address);
|
||||
+
|
||||
+static int addr_factory(struct device_node *np,
|
||||
+ int idx, int type, char *mac, char *name)
|
||||
+{
|
||||
+ int ret, i;
|
||||
+ char match[MATCH_STR_LEN];
|
||||
+ const char *p;
|
||||
+ char id[ID_LEN], hash[HASH_LEN], cmp_buf[ID_LEN];
|
||||
+ struct timespec64 curtime;
|
||||
+
|
||||
+ switch (type) {
|
||||
+ case TYPE_BURN:
|
||||
+ sprintf(match, "addr_%s", name);
|
||||
+ ret = of_property_read_string_index(np, match, 0, &p);
|
||||
+ if (ret)
|
||||
+ return -1;
|
||||
+
|
||||
+ ret = sscanf(p, "%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx",
|
||||
+ &mac[0], &mac[1], &mac[2],
|
||||
+ &mac[3], &mac[4], &mac[5]);
|
||||
+
|
||||
+ if (ret != ADDR_VAL_LEN)
|
||||
+ return -1;
|
||||
+ break;
|
||||
+ case TYPE_IDGEN:
|
||||
+ if (idx > HASH_LEN / ADDR_VAL_LEN - 1)
|
||||
+ return -1;
|
||||
+ if (sunxi_get_soc_chipid(id))
|
||||
+ return -1;
|
||||
+ memset(cmp_buf, 0x00, ID_LEN);
|
||||
+ if (memcmp(id, cmp_buf, ID_LEN) == 0)
|
||||
+ return -1;
|
||||
+ if (hmac_sha256(id, ID_LEN, hash))
|
||||
+ return -1;
|
||||
+ memcpy(mac, &hash[idx * ADDR_VAL_LEN], ADDR_VAL_LEN);
|
||||
+ break;
|
||||
+ case TYPE_RAND:
|
||||
+ for (i = 0; i < ADDR_VAL_LEN; i++) {
|
||||
+ ktime_get_real_ts64(&curtime);
|
||||
+ mac[i] = (char)curtime.tv_nsec;
|
||||
+ }
|
||||
+ break;
|
||||
+ default:
|
||||
+ ADDR_MGT_ERR("unsupport type: %d", type);
|
||||
+ return -1;
|
||||
+ }
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int addr_init(struct platform_device *pdev)
|
||||
+{
|
||||
+ struct device_node *np = pdev->dev.of_node;
|
||||
+ int type, i, j;
|
||||
+ char match[MATCH_STR_LEN];
|
||||
+ char addr[ADDR_VAL_LEN];
|
||||
+ int type_tab[] = {TYPE_BURN, TYPE_IDGEN, TYPE_RAND};
|
||||
+
|
||||
+ /* init addr type and value */
|
||||
+ for (i = 0; i < ARRAY_SIZE(info); i++) {
|
||||
+ sprintf(match, "type_addr_%s", info[i].name);
|
||||
+ if (of_property_read_u32(np, match, &type)) {
|
||||
+ ADDR_MGT_DBG("Failed to get type_def_%s, use default: %d",
|
||||
+ info[i].name, info[i].type_def);
|
||||
+ } else {
|
||||
+ info[i].type_def = type;
|
||||
+ info[i].type_cur = type;
|
||||
+ }
|
||||
+
|
||||
+ if (IS_TYPE_INVALID(info[i].type_def))
|
||||
+ return -1;
|
||||
+ if (info[i].type_def != TYPE_ANY) {
|
||||
+ if (addr_factory(np, i, info[i].type_def, addr, info[i].name))
|
||||
+ return -1;
|
||||
+ } else {
|
||||
+ for (j = 0; j < ARRAY_SIZE(type_tab); j++) {
|
||||
+ if (!addr_factory(np, i, type_tab[j], addr, info[i].name)) {
|
||||
+ info[i].type_cur = type_tab[j];
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (info[i].flag)
|
||||
+ addr[0] &= 0xFC;
|
||||
+
|
||||
+ if (addr_parse(ADDR_FMT_VAL, addr, info[i].flag))
|
||||
+ return -1;
|
||||
+ else {
|
||||
+ info[i].addr = devm_kzalloc(&pdev->dev, ADDR_VAL_LEN, GFP_KERNEL);
|
||||
+ memcpy(info[i].addr, addr, ADDR_VAL_LEN);
|
||||
+ }
|
||||
+ }
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static ssize_t summary_show(struct class *class,
|
||||
+ struct class_attribute *attr, char *buffer)
|
||||
+{
|
||||
+ int i = 0, ret = 0;
|
||||
+
|
||||
+ ret += sprintf(&buffer[ret], "name cfg cur address\n");
|
||||
+ for (i = 0; i < ARRAY_SIZE(info); i++) {
|
||||
+ ret += sprintf(&buffer[ret],
|
||||
+ "%4s %d %d %02X:%02X:%02X:%02X:%02X:%02X\n",
|
||||
+ info[i].name, info[i].type_def, info[i].type_cur,
|
||||
+ info[i].addr[0], info[i].addr[1], info[i].addr[2],
|
||||
+ info[i].addr[3], info[i].addr[4], info[i].addr[5]);
|
||||
+ }
|
||||
+ return ret;
|
||||
+}
|
||||
+static CLASS_ATTR_RO(summary);
|
||||
+
|
||||
+ADDR_CLASS_ATTR_ADD(wifi);
|
||||
+ADDR_CLASS_ATTR_ADD(bt);
|
||||
+ADDR_CLASS_ATTR_ADD(eth);
|
||||
+
|
||||
+static struct attribute *addr_class_attrs[] = {
|
||||
+ &class_attr_summary.attr,
|
||||
+ &class_attr_addr_wifi.attr,
|
||||
+ &class_attr_addr_bt.attr,
|
||||
+ &class_attr_addr_eth.attr,
|
||||
+ NULL
|
||||
+};
|
||||
+ATTRIBUTE_GROUPS(addr_class);
|
||||
+
|
||||
+static struct class addr_class = {
|
||||
+ .name = "addr_mgt",
|
||||
+ .owner = THIS_MODULE,
|
||||
+ .class_groups = addr_class_groups,
|
||||
+};
|
||||
+
|
||||
+static const struct of_device_id addr_mgt_ids[] = {
|
||||
+ { .compatible = "allwinner,sunxi-addr_mgt" },
|
||||
+ { /* Sentinel */ }
|
||||
+};
|
||||
+
|
||||
+static int addr_mgt_probe(struct platform_device *pdev)
|
||||
+{
|
||||
+ int status;
|
||||
+
|
||||
+ ADDR_MGT_DBG("module version: %s", MODULE_CUR_VERSION);
|
||||
+ status = class_register(&addr_class);
|
||||
+ if (status < 0) {
|
||||
+ ADDR_MGT_ERR("class register error, status: %d.", status);
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ if (addr_init(pdev)) {
|
||||
+ ADDR_MGT_ERR("failed to init addr.");
|
||||
+ class_unregister(&addr_class);
|
||||
+ return -1;
|
||||
+ }
|
||||
+ ADDR_MGT_DBG("success.");
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int addr_mgt_remove(struct platform_device *pdev)
|
||||
+{
|
||||
+ class_unregister(&addr_class);
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static struct platform_driver addr_mgt_driver = {
|
||||
+ .probe = addr_mgt_probe,
|
||||
+ .remove = addr_mgt_remove,
|
||||
+ .driver = {
|
||||
+ .owner = THIS_MODULE,
|
||||
+ .name = "sunxi-addr-mgt",
|
||||
+ .of_match_table = addr_mgt_ids,
|
||||
+ },
|
||||
+};
|
||||
+
|
||||
+module_platform_driver_probe(addr_mgt_driver, addr_mgt_probe);
|
||||
+
|
||||
+MODULE_AUTHOR("Allwinnertech");
|
||||
+MODULE_DESCRIPTION("Network MAC Addess Manager");
|
||||
+MODULE_LICENSE("GPL");
|
||||
--
|
||||
2.34.1
|
||||
|
@ -0,0 +1,32 @@
|
||||
From 706dc6ed092e4a1b9d84893cb4186fbd354bb1c8 Mon Sep 17 00:00:00 2001
|
||||
From: pbiel <pbiel7@gmail.com>
|
||||
Date: Thu, 26 Jan 2023 09:51:22 +0100
|
||||
Subject: [PATCH] Add addr_mgt device tree node
|
||||
|
||||
---
|
||||
arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi | 10 ++++++++++
|
||||
1 file changed, 10 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
|
||||
index d0b95d43a..15f45a3f9 100644
|
||||
--- a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
|
||||
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
|
||||
@@ -591,5 +591,15 @@ sunxi-info {
|
||||
compatible = "allwinner,sun50i-h616-sys-info";
|
||||
status = "okay";
|
||||
};
|
||||
+
|
||||
+ addr_mgt {
|
||||
+ compatible = "allwinner,sunxi-addr_mgt";
|
||||
+ type_addr_wifi = <0x00>;
|
||||
+ type_addr_bt = <0x00>;
|
||||
+ type_addr_eth = <0x00>;
|
||||
+ status = "okay";
|
||||
+ linux,phandle = <0x179>;
|
||||
+ phandle = <0x179>;
|
||||
+ };
|
||||
};
|
||||
};
|
||||
--
|
||||
2.34.1
|
||||
|
@ -0,0 +1,70 @@
|
||||
From 899da8366afd97b1ca59b632036dc313777026da Mon Sep 17 00:00:00 2001
|
||||
From: pbiel <pbiel7@gmail.com>
|
||||
Date: Fri, 24 Feb 2023 22:14:58 +0100
|
||||
Subject: [PATCH] Add wifi power regulator
|
||||
|
||||
---
|
||||
.../allwinner/sun50i-h616-orangepi-zero2.dts | 47 +++++++++++++++++++
|
||||
1 file changed, 47 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts
|
||||
index 02893f3ac..88234a139 100644
|
||||
--- a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts
|
||||
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts
|
||||
@@ -49,6 +49,53 @@ reg_vcc5v: vcc5v {
|
||||
regulator-max-microvolt = <5000000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
+
|
||||
+ reg_vcc33_wifi: vcc33-wifi {
|
||||
+ /* Always on 3.3V regulator for WiFi and BT */
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "vcc33-wifi";
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ regulator-always-on;
|
||||
+ vin-supply = <®_vcc5v>;
|
||||
+ };
|
||||
+
|
||||
+ reg_vcc_wifi_io: vcc-wifi-io {
|
||||
+ /* Always on 1.8V/300mA regulator for WiFi and BT IO */
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "vcc-wifi-io";
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ regulator-always-on;
|
||||
+ vin-supply = <®_vcc33_wifi>;
|
||||
+ };
|
||||
+
|
||||
+ wifi_pwrseq: wifi-pwrseq {
|
||||
+ compatible = "mmc-pwrseq-simple";
|
||||
+ clocks = <&rtc 1>;
|
||||
+ clock-names = "osc32k-out";
|
||||
+ reset-gpios = <&pio 6 18 GPIO_ACTIVE_LOW>; /* PG18 */
|
||||
+ post-power-on-delay-ms = <200>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&mmc1 {
|
||||
+ vmmc-supply = <®_vcc33_wifi>;
|
||||
+ vqmmc-supply = <®_vcc_wifi_io>;
|
||||
+ mmc-pwrseq = <&wifi_pwrseq>;
|
||||
+ bus-width = <4>;
|
||||
+ non-removable;
|
||||
+ mmc-ddr-1_8v;
|
||||
+ status = "okay";
|
||||
+ uwe-bsp {
|
||||
+ compatible = "unisoc,uwe_bsp";
|
||||
+ keep-power-on;
|
||||
+ data-irq;
|
||||
+ //adma-tx;
|
||||
+ adma-rx;
|
||||
+ //blksz-512;
|
||||
+ status = "okay";
|
||||
+ };
|
||||
};
|
||||
|
||||
&emac0 {
|
||||
--
|
||||
2.34.1
|
||||
|
@ -0,0 +1,184 @@
|
||||
From ab35c98369d50766eb20920a93a2dca927935481 Mon Sep 17 00:00:00 2001
|
||||
From: OpenEmbedded <oe.patch@oe>
|
||||
Date: Fri, 19 May 2023 23:01:14 +0200
|
||||
Subject: [PATCH] Add usb support to h616. This is not needed from kernel 6.2
|
||||
|
||||
Signed-off-by: OpenEmbedded <oe.patch@oe>
|
||||
---
|
||||
.../arm64/boot/dts/allwinner/sun50i-h616.dtsi | 160 ++++++++++++++++++
|
||||
1 file changed, 160 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
|
||||
index 04cdec7e2..a1d872e74 100644
|
||||
--- a/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
|
||||
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi
|
||||
@@ -504,6 +504,166 @@ mdio0: mdio {
|
||||
};
|
||||
};
|
||||
|
||||
+ usbotg: usb@5100000 {
|
||||
+ compatible = "allwinner,sun50i-h616-musb",
|
||||
+ "allwinner,sun8i-h3-musb";
|
||||
+ reg = <0x05100000 0x0400>;
|
||||
+ clocks = <&ccu CLK_BUS_OTG>;
|
||||
+ resets = <&ccu RST_BUS_OTG>;
|
||||
+ interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ interrupt-names = "mc";
|
||||
+ phys = <&usbphy 0>;
|
||||
+ phy-names = "usb";
|
||||
+ extcon = <&usbphy 0>;
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ usbphy: phy@5100400 {
|
||||
+ compatible = "allwinner,sun50i-h616-usb-phy";
|
||||
+ reg = <0x05100400 0x24>,
|
||||
+ <0x05101800 0x14>,
|
||||
+ <0x05200800 0x14>,
|
||||
+ <0x05310800 0x14>,
|
||||
+ <0x05311800 0x14>;
|
||||
+ reg-names = "phy_ctrl",
|
||||
+ "pmu0",
|
||||
+ "pmu1",
|
||||
+ "pmu2",
|
||||
+ "pmu3";
|
||||
+ clocks = <&ccu CLK_USB_PHY0>,
|
||||
+ <&ccu CLK_USB_PHY1>,
|
||||
+ <&ccu CLK_USB_PHY2>,
|
||||
+ <&ccu CLK_USB_PHY3>,
|
||||
+ <&ccu CLK_BUS_EHCI2>;
|
||||
+ clock-names = "usb0_phy",
|
||||
+ "usb1_phy",
|
||||
+ "usb2_phy",
|
||||
+ "usb3_phy",
|
||||
+ "pmu2_clk";
|
||||
+ resets = <&ccu RST_USB_PHY0>,
|
||||
+ <&ccu RST_USB_PHY1>,
|
||||
+ <&ccu RST_USB_PHY2>,
|
||||
+ <&ccu RST_USB_PHY3>;
|
||||
+ reset-names = "usb0_reset",
|
||||
+ "usb1_reset",
|
||||
+ "usb2_reset",
|
||||
+ "usb3_reset";
|
||||
+ status = "disabled";
|
||||
+ #phy-cells = <1>;
|
||||
+ };
|
||||
+
|
||||
+ ehci0: usb@5101000 {
|
||||
+ compatible = "allwinner,sun50i-h616-ehci",
|
||||
+ "generic-ehci";
|
||||
+ reg = <0x05101000 0x100>;
|
||||
+ interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ clocks = <&ccu CLK_BUS_OHCI0>,
|
||||
+ <&ccu CLK_BUS_EHCI0>,
|
||||
+ <&ccu CLK_USB_OHCI0>;
|
||||
+ resets = <&ccu RST_BUS_OHCI0>,
|
||||
+ <&ccu RST_BUS_EHCI0>;
|
||||
+ phys = <&usbphy 0>;
|
||||
+ phy-names = "usb";
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ ohci0: usb@5101400 {
|
||||
+ compatible = "allwinner,sun50i-h616-ohci",
|
||||
+ "generic-ohci";
|
||||
+ reg = <0x05101400 0x100>;
|
||||
+ interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ clocks = <&ccu CLK_BUS_OHCI0>,
|
||||
+ <&ccu CLK_USB_OHCI0>;
|
||||
+ resets = <&ccu RST_BUS_OHCI0>;
|
||||
+ phys = <&usbphy 0>;
|
||||
+ phy-names = "usb";
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ ehci1: usb@5200000 {
|
||||
+ compatible = "allwinner,sun50i-h616-ehci",
|
||||
+ "generic-ehci";
|
||||
+ reg = <0x05200000 0x100>;
|
||||
+ interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ clocks = <&ccu CLK_BUS_OHCI1>,
|
||||
+ <&ccu CLK_BUS_EHCI1>,
|
||||
+ <&ccu CLK_USB_OHCI1>;
|
||||
+ resets = <&ccu RST_BUS_OHCI1>,
|
||||
+ <&ccu RST_BUS_EHCI1>;
|
||||
+ phys = <&usbphy 1>;
|
||||
+ phy-names = "usb";
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ ohci1: usb@5200400 {
|
||||
+ compatible = "allwinner,sun50i-h616-ohci",
|
||||
+ "generic-ohci";
|
||||
+ reg = <0x05200400 0x100>;
|
||||
+ interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ clocks = <&ccu CLK_BUS_OHCI1>,
|
||||
+ <&ccu CLK_USB_OHCI1>;
|
||||
+ resets = <&ccu RST_BUS_OHCI1>;
|
||||
+ phys = <&usbphy 1>;
|
||||
+ phy-names = "usb";
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ ehci2: usb@5310000 {
|
||||
+ compatible = "allwinner,sun50i-h616-ehci",
|
||||
+ "generic-ehci";
|
||||
+ reg = <0x05310000 0x100>;
|
||||
+ interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ clocks = <&ccu CLK_BUS_OHCI2>,
|
||||
+ <&ccu CLK_BUS_EHCI2>,
|
||||
+ <&ccu CLK_USB_OHCI2>;
|
||||
+ resets = <&ccu RST_BUS_OHCI2>,
|
||||
+ <&ccu RST_BUS_EHCI2>;
|
||||
+ phys = <&usbphy 2>;
|
||||
+ phy-names = "usb";
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ ohci2: usb@5310400 {
|
||||
+ compatible = "allwinner,sun50i-h616-ohci",
|
||||
+ "generic-ohci";
|
||||
+ reg = <0x05310400 0x100>;
|
||||
+ interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ clocks = <&ccu CLK_BUS_OHCI2>,
|
||||
+ <&ccu CLK_USB_OHCI2>;
|
||||
+ resets = <&ccu RST_BUS_OHCI2>;
|
||||
+ phys = <&usbphy 2>;
|
||||
+ phy-names = "usb";
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ ehci3: usb@5311000 {
|
||||
+ compatible = "allwinner,sun50i-h616-ehci",
|
||||
+ "generic-ehci";
|
||||
+ reg = <0x05311000 0x100>;
|
||||
+ interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ clocks = <&ccu CLK_BUS_OHCI3>,
|
||||
+ <&ccu CLK_BUS_EHCI3>,
|
||||
+ <&ccu CLK_USB_OHCI3>;
|
||||
+ resets = <&ccu RST_BUS_OHCI3>,
|
||||
+ <&ccu RST_BUS_EHCI3>;
|
||||
+ phys = <&usbphy 3>;
|
||||
+ phy-names = "usb";
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
+ ohci3: usb@5311400 {
|
||||
+ compatible = "allwinner,sun50i-h616-ohci",
|
||||
+ "generic-ohci";
|
||||
+ reg = <0x05311400 0x100>;
|
||||
+ interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
|
||||
+ clocks = <&ccu CLK_BUS_OHCI3>,
|
||||
+ <&ccu CLK_USB_OHCI3>;
|
||||
+ resets = <&ccu RST_BUS_OHCI3>;
|
||||
+ phys = <&usbphy 3>;
|
||||
+ phy-names = "usb";
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+
|
||||
rtc: rtc@7000000 {
|
||||
compatible = "allwinner,sun50i-h616-rtc";
|
||||
reg = <0x07000000 0x400>;
|
||||
--
|
||||
2.40.1
|
||||
|
@ -0,0 +1,84 @@
|
||||
From 038441bbe0f6dab3e701061c514a8d776dbe6523 Mon Sep 17 00:00:00 2001
|
||||
From: OpenEmbedded <oe.patch@oe>
|
||||
Date: Sat, 20 May 2023 14:07:47 +0200
|
||||
Subject: [PATCH] DTS orange pi zero2 enable usb
|
||||
|
||||
Signed-off-by: OpenEmbedded <oe.patch@oe>
|
||||
---
|
||||
.../allwinner/sun50i-h616-orangepi-zero2.dts | 42 +++++++++++++++++++
|
||||
1 file changed, 42 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts
|
||||
index 88234a139..3b836296b 100644
|
||||
--- a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts
|
||||
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts
|
||||
@@ -50,6 +50,16 @@ reg_vcc5v: vcc5v {
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
+ reg_usb1_vbus: regulator-usb1-vbus {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "usb1-vbus";
|
||||
+ regulator-min-microvolt = <5000000>;
|
||||
+ regulator-max-microvolt = <5000000>;
|
||||
+ vin-supply = <®_vcc5v>;
|
||||
+ enable-active-high;
|
||||
+ gpio = <&pio 2 16 GPIO_ACTIVE_HIGH>; /* PC16 */
|
||||
+ };
|
||||
+
|
||||
reg_vcc33_wifi: vcc33-wifi {
|
||||
/* Always on 3.3V regulator for WiFi and BT */
|
||||
compatible = "regulator-fixed";
|
||||
@@ -79,6 +89,12 @@ wifi_pwrseq: wifi-pwrseq {
|
||||
};
|
||||
};
|
||||
|
||||
+&ehci1 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+/* USB 2 & 3 are on headers only. */
|
||||
+
|
||||
&mmc1 {
|
||||
vmmc-supply = <®_vcc33_wifi>;
|
||||
vqmmc-supply = <®_vcc_wifi_io>;
|
||||
@@ -123,6 +139,11 @@ &mmc0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
+
|
||||
+&ohci1 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
&r_rsb {
|
||||
status = "okay";
|
||||
|
||||
@@ -258,3 +279,24 @@ &uart0 {
|
||||
pinctrl-0 = <&uart0_ph_pins>;
|
||||
status = "okay";
|
||||
};
|
||||
+
|
||||
+&usbotg {
|
||||
+ /*
|
||||
+ * PHY0 pins are connected to a USB-C socket, but a role switch
|
||||
+ * is not implemented: both CC pins are pulled to GND.
|
||||
+ * The VBUS pins power the device, so a fixed peripheral mode
|
||||
+ * is the best choice.
|
||||
+ * The board can be powered via GPIOs, in this case port0 *can*
|
||||
+ * act as a host (with a cable/adapter ignoring CC), as VBUS is
|
||||
+ * then provided by the GPIOs. Any user of this setup would
|
||||
+ * need to adjust the DT accordingly: dr_mode set to "host",
|
||||
+ * enabling OHCI0 and EHCI0.
|
||||
+ */
|
||||
+ dr_mode = "peripheral";
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usbphy {
|
||||
+ usb1_vbus-supply = <®_usb1_vbus>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
--
|
||||
2.40.1
|
||||
|
8185
recipes-kernel/linux/linux-mainline-6.1.9/orange-pi-zero2/defconfig
Normal file
8185
recipes-kernel/linux/linux-mainline-6.1.9/orange-pi-zero2/defconfig
Normal file
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user