summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorAmaury Pouly <amaury.pouly@gmail.com>2017-02-23 11:33:19 +0100
committerAmaury Pouly <amaury.pouly@gmail.com>2017-09-05 21:42:12 +0200
commit1d121e8c082fe67757cf0d4df7b9e6ca1e26f755 (patch)
tree1c93842d99bb8e4a5f3ed5bca38c05e7f17894fa /tools
parent142f80f07d96305f1618c99c28c13319b1b279e6 (diff)
downloadrockbox-1d121e8c082fe67757cf0d4df7b9e6ca1e26f755.tar.gz
rockbox-1d121e8c082fe67757cf0d4df7b9e6ca1e26f755.zip
Initial commit for the Sony NWZ linux port
SUPPORTED SERIES: - NWZ-E450 - NWZ-E460 - NWZ-E470 - NWZ-E580 - NWZ-A10 NOTES: - bootloader makefile convert an extra font to be installed alongside the bootloader since sysfont is way too small - the toolsicon bitmap comes from the Oxygen iconset - touchscreen driver is untested TODO: - implement audio routing driver (pcm is handled by pcm-alsa) - fix playback: it crashes on illegal instruction in DEBUG builds - find out why the browser starts at / instead of /contents - implement radio support - implement return to OF for usb handling - calibrate battery curve (NB: of can report a battery level on a 0-5 scale but probabl don't want to use that ?) - implement simulator build (we need a nice image of the player) - figure out if we can detect jack removal POTENTIAL TODOS: - try to build a usb serial gadget and gdbserver Change-Id: Ic77d71e0651355d47cc4e423a40fb64a60c69a80
Diffstat (limited to 'tools')
-rwxr-xr-xtools/configure151
-rw-r--r--tools/root.make15
-rw-r--r--tools/scramble.c13
3 files changed, 166 insertions, 13 deletions
diff --git a/tools/configure b/tools/configure
index fd86d8a76d..3b481e9fa8 100755
--- a/tools/configure
+++ b/tools/configure
@@ -706,12 +706,15 @@ pandoracc () {
GCCOPTS="$GCCOPTS -ffast-math -fsingle-precision-constant"
}
-ypr0cc () {
-
+arm1176jzlinuxcc () {
GCCOPTS=`echo $CCOPTS | sed -e s/-ffreestanding// -e s/-nostdlib//`
+ # Although the ARM1176JZ-S supports unaligned accesses, those seems to disabled
+ # by the kernel. Since GCC emits unaligned accesses by default on ARMv6, we
+ # need to disable that
+ GCCOPTS="$GCCOPTS -mcpu=arm1176jz-s -mno-unaligned-access -mfloat-abi=softfp"
GCCOPTIMIZE=''
LDOPTS="-lasound -lpthread -lm -ldl -lrt $LDOPTS"
- GLOBAL_LDOPTS="$GLOBAL_LDOPTS -Wl,-z,defs"
+ GLOBAL_LDOPTS="$GLOBAL_LDOPTS -Wl,-z,defs" # warn about undefined symbols in shared libraries
SHARED_LDFLAG="-shared"
SHARED_CFLAGS=''
endian="little"
@@ -721,8 +724,18 @@ ypr0cc () {
GCCOPTS="$GCCOPTS -D_GNU_SOURCE=1 -U_FORTIFY_SOURCE -D_REENTRANT"
# Set up compiler
- gccchoice="4.4.6"
- prefixtools "arm-ypr0-linux-gnueabi-"
+ gccchoice="4.9.4"
+ prefixtools "arm-rockbox-linux-gnueabi-"
+}
+
+ypr0cc () {
+ arm1176jzlinuxcc
+ app_type="ypr0"
+}
+
+sonynwzcc () {
+ arm1176jzlinuxcc
+ app_type="sonynwz"
}
androidcc () {
@@ -1493,11 +1506,14 @@ cat <<EOF
202) Nokia N8xx 211) MA9C ==Sony==
203) Nokia N900 212) MA8 220) NWZ-E370/E380 series
204) Pandora 213) MA8C 221) NWZ-E360 series
- 205) Samsung YP-R0
- 206) Android MIPS ==IHIFI== ==iBasso==
- 207) Android x86 230) 760 232) DX50
- 208) Samsung YP-R1 231) 960 233) DX90
-
+ 205) Samsung YP-R0 222) NWZ-E450 series
+ 206) Android MIPS ==IHIFI== 223) NWZ-E460 series
+ 207) Android x86 230) 760 224) NWZ-E470 series
+ 208) Samsung YP-R1 231) 960 225) NWZ-E580 series
+ 226) NWZ-A10 series
+ ==iBasso==
+ 232) DX50
+ 233) DX90
EOF
@@ -3853,6 +3869,121 @@ fi
arm926ejscc
;;
+ 222|sonynwze450)
+ application="yes"
+ target_id=96
+ modelname="sonynwze450"
+ target="SONY_NWZE450"
+ memory=16
+ bmp2rb_mono="$rootdir/tools/bmp2rb -f 0"
+ bmp2rb_native="$rootdir/tools/bmp2rb -f 4"
+ tool="cp"
+ output="rockbox.sony"
+ boottool="$rootdir/tools/scramble -add=e450"
+ bootoutput="bootloader-nwze450.sony"
+ appextra="gui:recorder"
+ plugins=""
+ swcodec="yes"
+ toolset=$genericbitmaptools
+ t_cpu="hosted"
+ t_manufacturer="sonynwz"
+ t_model="nwze450"
+ uname=`uname`
+ sonynwzcc
+ ;;
+
+ 223|sonynwze460)
+ application="yes"
+ target_id=97
+ modelname="sonynwze460"
+ target="SONY_NWZE460"
+ memory=16
+ bmp2rb_mono="$rootdir/tools/bmp2rb -f 0"
+ bmp2rb_native="$rootdir/tools/bmp2rb -f 4"
+ tool="cp"
+ output="rockbox.sony"
+ boottool="$rootdir/tools/scramble -add=e460"
+ bootoutput="bootloader-nwze460.sony"
+ appextra="gui:recorder"
+ plugins="yes"
+ swcodec="yes"
+ toolset=$genericbitmaptools
+ t_cpu="hosted"
+ t_manufacturer="sonynwz"
+ t_model="nwze460"
+ uname=`uname`
+ sonynwzcc
+ ;;
+
+ 224|sonynwze470)
+ application="yes"
+ target_id=100
+ modelname="sonynwze470"
+ target="SONY_NWZE470"
+ memory=16
+ bmp2rb_mono="$rootdir/tools/bmp2rb -f 0"
+ bmp2rb_native="$rootdir/tools/bmp2rb -f 4"
+ tool="cp"
+ output="rockbox.sony"
+ boottool="$rootdir/tools/scramble -add=e470"
+ bootoutput="bootloader-nwze470.sony"
+ appextra="gui:recorder"
+ plugins=""
+ swcodec="yes"
+ toolset=$genericbitmaptools
+ t_cpu="hosted"
+ t_manufacturer="sonynwz"
+ t_model="nwze470"
+ uname=`uname`
+ sonynwzcc
+ ;;
+
+ 225|sonynwze580)
+ application="yes"
+ target_id=98
+ modelname="sonynwze580"
+ target="SONY_NWZE580"
+ memory=16
+ bmp2rb_mono="$rootdir/tools/bmp2rb -f 0"
+ bmp2rb_native="$rootdir/tools/bmp2rb -f 4"
+ tool="cp"
+ output="rockbox.sony"
+ boottool="$rootdir/tools/scramble -add=e580"
+ bootoutput="bootloader-nwze580.sony"
+ appextra="gui:recorder"
+ plugins=""
+ swcodec="yes"
+ toolset=$genericbitmaptools
+ t_cpu="hosted"
+ t_manufacturer="sonynwz"
+ t_model="nwze580"
+ uname=`uname`
+ sonynwzcc
+ ;;
+
+ 226|sonynwza10)
+ application="yes"
+ target_id=101
+ modelname="sonynwza10"
+ target="SONY_NWZA10"
+ memory=16
+ bmp2rb_mono="$rootdir/tools/bmp2rb -f 0"
+ bmp2rb_native="$rootdir/tools/bmp2rb -f 4"
+ tool="cp"
+ output="rockbox.sony"
+ boottool="$rootdir/tools/scramble -add=a10"
+ bootoutput="bootloader-nwza10.sony"
+ appextra="gui:recorder"
+ plugins=""
+ swcodec="yes"
+ toolset=$genericbitmaptools
+ t_cpu="hosted"
+ t_manufacturer="sonynwz"
+ t_model="nwza10"
+ uname=`uname`
+ sonynwzcc
+ ;;
+
230|ihifi760)
target_id=92
modelname="ihifi760"
diff --git a/tools/root.make b/tools/root.make
index c9f4a2eb65..b5bd0e8096 100644
--- a/tools/root.make
+++ b/tools/root.make
@@ -73,7 +73,10 @@ ifeq (,$(findstring checkwps,$(APP_TYPE)))
include $(FIRMDIR)/firmware.make
include $(ROOTDIR)/apps/bitmaps/bitmaps.make
ifeq (arch_arm,$(ARCH))
- include $(ROOTDIR)/lib/unwarminder/unwarminder.make
+ # some targets don't use the unwarminder because they have the glibc backtrace
+ ifeq (,$(filter sonynwz,$(APP_TYPE)))
+ include $(ROOTDIR)/lib/unwarminder/unwarminder.make
+ endif
endif
ifeq (,$(findstring bootloader,$(APPSDIR)))
include $(ROOTDIR)/lib/skin_parser/skin_parser.make
@@ -98,7 +101,11 @@ ifeq (,$(findstring bootloader,$(APPSDIR)))
endif
ifneq (,$(findstring bootloader,$(APPSDIR)))
- include $(APPSDIR)/bootloader.make
+ ifneq (,$(findstring sonynwz,$(APP_TYPE)))
+ include $(ROOTDIR)/firmware/target/hosted/sonynwz/sonynwz.make
+ else
+ include $(APPSDIR)/bootloader.make
+ endif
else ifneq (,$(findstring bootbox,$(APPSDIR)))
include $(APPSDIR)/bootbox.make
else ifneq (,$(findstring checkwps,$(APP_TYPE)))
@@ -132,6 +139,10 @@ else # core
include $(ROOTDIR)/firmware/target/hosted/samsungypr/ypr1/ypr1.make
endif
+ ifneq (,$(findstring sonynwz,$(APP_TYPE)))
+ include $(ROOTDIR)/firmware/target/hosted/sonynwz/sonynwz.make
+ endif
+
ifneq (,$(findstring android_ndk, $(APP_TYPE)))
include $(ROOTDIR)/firmware/target/hosted/ibasso/android_ndk.make
else
diff --git a/tools/scramble.c b/tools/scramble.c
index 5378be2853..8c5230cc3e 100644
--- a/tools/scramble.c
+++ b/tools/scramble.c
@@ -129,7 +129,8 @@ void usage(void)
"\t m2v4, fuze, c2v2, clv2, y820, y920, y925, x747,\n"
"\t 747p, x777, nn2g, m244, cli+, fuz2, hd20, hd30,\n"
"\t ip6g, rk27, clzp, zxf2, zxf3, fuz+, e370, e360,\n"
- "\t zxfi, zmoz, zen, zenv, ypz5, zxfs)\n");
+ "\t zxfi, zmoz, zen, zenv, ypz5, zxfs, e450, e460,\n"
+ "\t e470,e580,a10)\n");
printf("\nNo option results in Archos standard player/recorder format.\n");
exit(1);
@@ -382,6 +383,16 @@ int main (int argc, char** argv)
modelnum = 90;
else if (!strcmp(&argv[1][5], "zxfs")) /* Creative ZEN X-Fi Style */
modelnum = 94;
+ else if (!strcmp(&argv[1][5], "e450")) /* Sony NWZ-E450 series */
+ modelnum = 100;
+ else if (!strcmp(&argv[1][5], "e460")) /* Sony NWZ-E460 series */
+ modelnum = 101;
+ else if (!strcmp(&argv[1][5], "e580")) /* Sony NWZ-E580 series */
+ modelnum = 102;
+ else if (!strcmp(&argv[1][5], "e470")) /* Sony NWZ-E470 series */
+ modelnum = 103;
+ else if (!strcmp(&argv[1][5], "a10")) /* Sony NW-A10 series */
+ modelnum = 104;
else {
fprintf(stderr, "unsupported model: %s\n", &argv[1][5]);
return 2;