[oe] [RFC] Add machine pm9g45 based on at91sam9g45
RONETIX - Asen Dimov
dimov at ronetix.at
Wed Oct 13 09:13:29 UTC 2010
Hello,
I want to add a new board and have a method solving some issues(listed
below).
But I am not sure if this could be the appropriate solution, so this is
the idea
to be commented on.
The idea of patching linux kernel for pm9g45
As the 2.6.30-at91-exp.tar.gz has a patch(with number 66) which do not
apply
cleanly( parts of it have been already applied to 2.6.30.10 kernel) and
also
the bitbake do not handle patches in a tar.gz format, that leaded to
the need
of writing code for extended patching. The PM9G45_patches_list
contains
patches, which have be applied after the 2.6.30-at91-exp.tar.gz, so the
option
"apply=no" make this. That helps to apply patches in proper
order.
A patch method have to be appended to the python do_patch()
task.
And as I do not know python(I made a try with python but I couldn't
make it)
the appended code just call a shell script that implements the method
-
do_patchronetix_sh().
So the do_patchronetix_sh() extract the 2.6.30-at91-exp.tar.gz and
apply
patches in it one by one, but when it reaches the problem patch the
hunks
already applied are removed and the patch( 66) is then
applied.
Then from the names in PM9G45_patches_list are removed "file://"
and
";apply=no" in order to be valid names for the patch
utility.
And finally the ARM machine list is
updated.
part of recipes/linux/linux_2.6.30.bb
--- 8<
------------------------------------------------------------------------------------------
PM9G45_patches_list = " \
file://0001-ads7846-.c-and-.h-add-swap_xy.patch;apply=no \
file://0003-print-some-more-info-from-atmel_nand.c.patch;apply=no \
file://0004-add-newline-at-the-end-of-uncorrectable-error.patch;apply=no \
file://0005-Add-CompactFlash-to-at91sam9g45-architecture.patch;apply=no \
file://0006-pm9g45-system-ram-can-be-on-CS1-or-CS6.patch;apply=no \
file://0007-add-pm9g45-board.patch;apply=no
\
file://0008-pm9g45-default-configuration-files.patch;apply=no
\
file://0009-add-float-flags-in-Makefile.patch;apply=no \
file://0010-conditional-compile-if-DEDICATED_VRAM.patch;apply=no \
file://0011-add-pm9g45-board-version-1.2-and-adjust-memory-sele.patch;apply=no
\
file://0012-enable-USB-Device-with-On-the-go-ability.patch;apply=no "
AT91_EXP_PROBLEM_PATCH =
"2.6.30-at91-exp-0066-sound-soc-update-soc-support-to-2.6.32-rc3-alsa.patch"
SRC_URI_append_ronetix-pm9g45 = "
ftp://www.at91.com/pub/linux/2.6.30-at91/2.6.30-at91-exp.tar.gz;name=2630at91exptargz
\
${PM9G45_patches_list} "
do_patchronetix_sh() {
cd ${S}
# add AT91 experimental patches
export PatchList=`ls ${WORKDIR}/2.6.30-at91-exp/`
for Patch in ${PatchList}; do \
if [ ${AT91_EXP_PROBLEM_PATCH} == $Patch ]; then \
echo "This patch has problems ${Patch}" ;\
#remove that hunks which have been already
applied. \
sed -e '4342,4350 d' -e '6422,6435 d' -e
'7720,7742 d' \
${WORKDIR}/2.6.30-at91-exp/${Patch} |
patch -s -f -p1 ;\
continue ;\
fi
echo "Applying patch ${WORKDIR}/2.6.30-at91-exp/${Patch}" ;\
patch -s -f -p1 < ${WORKDIR}/2.6.30-at91-exp/${Patch};\
done
# add pm9g45 patches
for Patch in "${PM9G45_patches_list}" ; do \
export NEW_FLIST="${NEW_FLIST} `echo ${Patch} | sed -e
"s/file\:\/\/*//g" -e "s/;apply=no//g" -e "s/ \\ //g"`";\
done
for Patch in ${NEW_FLIST} ;do \
echo "Applying patch ${WORKDIR}/${Patch}" ;\
patch -s -f -p1 < ${WORKDIR}/${Patch};\
done
#update arm mach-types
#instead of applying
file://0002-add-pm9g45-number-in-mach-types.patch
wget http://www.arm.linux.org.uk/developer/machines/download.php
-O ${S}/arch/arm/tools/mach-types
}
addtask patchronetix_sh
python do_patch_append_ronetix-pm9g45 () {
bb.build.exec_func('do_patchronetix_sh', d)
}
# End of idea for patching linux kernel for pm9g45
--- 8<
------------------------------------------------------------------------------------------
Regards,
Asen
More information about the Openembedded-devel
mailing list