diff options
author | Amaury Pouly <amaury.pouly@gmail.com> | 2017-02-23 11:33:19 +0100 |
---|---|---|
committer | Amaury Pouly <amaury.pouly@gmail.com> | 2017-09-05 21:42:12 +0200 |
commit | 1d121e8c082fe67757cf0d4df7b9e6ca1e26f755 (patch) | |
tree | 1c93842d99bb8e4a5f3ed5bca38c05e7f17894fa /tools | |
parent | 142f80f07d96305f1618c99c28c13319b1b279e6 (diff) | |
download | rockbox-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-x | tools/configure | 151 | ||||
-rw-r--r-- | tools/root.make | 15 | ||||
-rw-r--r-- | tools/scramble.c | 13 |
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; |