Archive

Posts Tagged ‘drivers’

Linux 3.17 Released

October 9th, 2014 5 comments

Linus Torvalds announced the release of Linux Kernel 3.17 on Sunday:

So the past week was fairly calm, and so I have no qualms about releasing 3.17 on the normal schedule (as opposed to the optimistic “maybe I can release it one week early” schedule that was not to be).

However, I now have travel coming up – something I hoped to avoid when I was hoping for releasing early. Which means that while 3.17 is out, I’m not going to be merging stuff very actively next week, and the week after that is LinuxCon EU…

What that means is that depending on how you want to see it, the 3.18 merge window will either be three weeks, or alternatively just have a rather slow start. I don’t mind getting pull requests starting now (in fact, I have a couple already pending in my inbox), but I likely won’t start processing them for a week.

Anyway, back to 3.17. Nothing major happened during the last week, as you can see from the appended shortlog. Mostly drivers (i915, nouveau, ethernet, scsi, sound) and some networking fixes. With some misc noise all over.

Go out and test,

Linus

Kernel 3.16 added Nouveau drivers for GK20A GPU (Tegra K1), ARM64/EFI boot, improved support for Xen, KVM, EFI, NFS, as well as various changed to networking, and more…  Some noticeable changes for Linux 3.17:

  • Gamepads – Added Microsoft Xbox One controller support, improvements to Sony SIXAXIS support
  • Toshiba “Active Protection Sensor” support which stops your harddrive from spinning when the accelerator detects your laptop is in free fall…
  • “Cross-thread filter setting” for secure computing facility:
        int seccomp(unsigned int operation, unsigned int flag, const char *args);
    

    See manpage for details.

  • Enhanced AMD Radeon R9 290 support
  • Miscellaneous Nouveau driver improvements, including Kepler GPU fixes

New features and improvements specific to the ARM architecture include:

  • AllWinner
    • A10/A20 – IR driver
    • A31 – PIO/R_PIO external interrupts, DMAengine, GMAC
    • A23: Timers, UARTs, initial bringup, Basic clocks,  PIO/R_PIO drivers
    • New boards: ba10-tvbox; Merrii A31 Hummingbird; pcDuino V3
  • Rockchip
    • Enabled RK3288 SoC support
    • Added RK3xxx I2S controller, RK3288 clock controller, RK3066 and RK3188 clock driver.
    • Added RK3288 evaluation boards
  • Added basic support for Mediatek MT6589 SoCs
  • NEON implementation of crypto algorithms (SHA1; SHA512).
  • Marvell Kirkwood now fully “device tree-ified”, mach-kirkwood directory deleted
  • Added APM X-Gene SoC ethernet driver support.
  • Various changes for Broadcom BCM7xxx STB SoCs, Fresscale i.MX, Samsung Exynos & S5PV210, Nvidia Tegra, Renesas SH and TI AM43xx SoCs.
  • ARM64 / ARMv8 – Added 48-bit adress space, CONFIG_CC_STACKPROTECTOR (GCC’s -fstack-protector), audit support, and context tracking

I’ve also been asked about MIPS changes last time, so here it is:

  • Add Loongson-3B support
  • Add NUMA support for Loongson-3
  • BCM47XX: Detect more then 128 MiB of RAM (HIGHMEM)
  • BCM47XX: add Microsoft MN-700 and Asus WL500G
  • Support CPU topology files in sysfs
  • kernel: cpu-probe: Add support for the HardWare Table Walker
  • perf: Add hardware events for P5600

Further details on Linux 3.17 changes will soon be available on Kernelnewbies.org. For more details about ARM changes, remember to also check ARM architecture and drivers sections.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

MYIR ARM9 Linux Development Boards & Computer-on-Modules Powered by Freescale i.MX28 Processor

August 14th, 2014 No comments

MYIR MYD-IMX28X development boards and MYC-IMX28X CPU modules had been announced in May 2014, but I’ve just found out about them via the company’s newsletter. The CoMs are powered by Freescale i.MX28 ARM9 processors (i.MX283 or i.MX287), feature 128 MB RAM, 256 MB Flash, and connect to a baseboard to make the development boards. Target applications include smart gateways, human-machine interfaces (HMIs), handheld devices, scanners, portable medical, experimental education as well as other industrial applications.

MYC-IMX28X CoMs

MYIR_MYC-iMX28X_ARM9_CoMMYC-IMX28X computer-on-module specifications:

  • Processor – Freescale i.MX283 or i.MX287 ARM926EJ-STM processor up to 454MHz with 128KB SRAM, 128KB ROM, 1280 bits of OCOTP ROM, 16KB/32KB I and D Cache
  • System Memory – 128MB DDR2 SDRAM
  • Storage – 256MB NAND flash, 128KB SPI flash
  • Connectivity – On-board Ethernet PHY
  • Connectors – 2x 1.27mm pitch 2 x 40-pin SMT male expansion connectors with access to
    • Ethernet – Up to 2 Ethernet (two for i.MX287, one for i.MX283)
    • USB – 2x USB2.0 High-speed ports
    • Serial – Up to 6x Serial ports (including one Debug port)
    • 1x I2C, 2x SPI
    • Up to 8x ADC (one high-speed ADC, seven low-resolution ADC)
    • Up to 5x PWM
    • 1x SDIO
    • 2x CAN (i.MX287 only)
  • Misc – Power and user LEDs
  • Power Supply – 5V
  • Dimensions – 62mm x 38mm
  • Operating Temperature Range – Commercial: -20~70 Celsius; Industrial: -40 to +85 Celsius

The main differences between i.MX283 and i.MX287, are support for only 1 Ethernet port against 2 for i.MX287, and the latter features 2 CAN buses. The company provides an SDK with u-boot, Linux 2.6.35, and relevant drivers for the module.

MYD-IMX28X Boards

Click To Enlarge

MYD-IMX28X Development Board (Click To Enlarge)

The development boards have the following hardware specifications:

  • SoC/Memory/Storage – Based on MYC-IMX283 or MYC-IMX287 modules as described above: Freescale i.MX28 @ 454 MHz, 128 MB DDR2, 256 NAND flash, and 128KB SPI flash
  • External Storage – micro SD card slot
  • Display I/F – 1x LCD interface (16-bit true color, supports optional 4.3-inch and 7-inch TFT LCD), 1x 4-wire resistive touch screen interface
  • Audio – 3.5mm jacks for Audio IN and OUT, and headphone output, digital audio out (RCA), MIC IN interface, Buzzer
  • Serial ports – 1x 3-wire RS232 Debug serial port (DB9), 1x 5-wire RS232 serial port (UART0), 1x RS485
  • USB – 1x USB2.0 Host port, 1x USB2.0 OTG
  • Connectivity – 10/100Mbps Ethernet (two for i.MX287, one for i.MX283)
  • CAN – 2 x CAN interfaces (only for i.MX287)
  • Expansion connector – 2x 20-pin headers with access to 3x ADC (one high-speed ADC, two low-resolution ADC), 1x SPI, 2x I2C, 3x UART, 3x PWM
  • Debugging – 20-pin JTAG interface
  • Misc – 4 x Buttons (1 x Reset button, 3 x User buttons), 2 x User LEDs (Blue)
  • Power Supply – 5V barrel connector
  • Dimensions – 140mm x 90mm

MYD-IMX28X_Block_DiagramPublicly available documentation is limited with only Freescale i.MX28 datasheet, and MYD-IMX28X board and MYC-IMX28X module simplified datasheets with overview of the boards, header pinout, and a list of document and software packages available for the board. U-boot, Linux 2.6.35, and drivers will be provided with source code, as well as some code samples to control various peripherals (SPI. I2C, touchscreen, LCD…) and a Qt demo. MYIR also provides 4.3″ and 7″ resistive or capacitive touchscreen as option for $60 to $99.

The modules and development kits appears to be available now, MYC-IMX28X module starts at $39 for the commercial version, $59 for the industrial version, and the development board, probably excluding the CPU module, sells for $99 and $119, respectively for the commercial and industrial versions. You can find more details on MYIR’s MYC-IMX28X module page.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

Linux 3.16 Released

August 6th, 2014 3 comments

Linus Torvalds announced the release of Linux Kernel 3.16 over the week-end:

So nothing particularly exciting happened this week, and 3.16 is out there.

And as usual (previous release being the exception) that means that the merge window for 3.17 is obviously open. And for the third time in a row, the timing sucks for me, as I have travel coming up the second week of the merge window. Many other core developers will be traveling too, since it’s just before the kernel summit in Chicago.

So we’ll see how the next merge window goes, but I’m not going to worry about it overmuch. If I end up not having time to do all the merges, I might delay things into the week of the kernel summit, but I’ll hope to get most of the big merging done this upcoming week before any travel takes place, so maybe it won’t come to that. So this is just a heads-up that the merge window *might* be extended.

Anyway, back to the changes since -rc7: it’s really fairly small stuff randomly all over, with a third being architecture updates, a third drivers, and a third “misc” (mainly mm and networking). The architecture stuff is small ARM updates (mostly DT), some x86 Xen fixups, some random small powerpc things. The shortlog gives a good idea of what kind of stuff it all is, but it’s really just 83 commits (plus merges and the release commit) and about a third of them are marked for stable.

So while 3.16 looked a bit iffy for a while, things cleared up nicely, and there was no reason to do extra release candidates like I feared just a couple of weeks ago.

Linus

Kernel 3.15 brought various file systems improvements, faster resume from suspend, etc… Some of Linux 3.16 main changes include:

  • Various KVM improvements: optimizations, support for migration, and GDB support for s390, little-endian support for POWER8, as well as MIPS improvements.
  • Xen – Virtual network interfaces now have multi-queue support for much better performance.
  • Goldfish virtual platform now has 64-bit support.
  • Hugepage migration has been turned off for all architectures except x86_64 since it is only tested on that architecture and there are bugs for some of the others.
  • Automatic NUMA balancing has been turned off for 32-bit x86. Existing 32-bit NUMA systems are not well supported by the code and the developers did not think the effort to support them would be worthwhile.
  • EFI – The kernel EFI code will now handle Unicode characters, and initial support for ARM64 (aarch64) had been added.
  • NFS – Patches to make loopback NFS mounts work reliably have been merged through the NFS tree.  External data representation (XDR) handling in NFS has been reworked to support access control lists (ACLs) larger than 4KB. It also returns readdir() results in chunks larger than 4KB giving better performance on large directories.
  • Modules now have the read-only (RO) and no-execute (NX) bits set on their data sections much earlier in the loading process, before parsing any module arguments. This will further reduce the time window in which a misbehaving (or malicious) module can modify or execute its data.
  • Support for TCP fast open over IPv6 has been added.
  • Support for busy polling on stream control transmission protocol (SCTP) sockets has been added. Busy polling is set on a socket using the SO_BUSY_POLL socket option; it can reduce the latency of receives on high-traffic interfaces that support the option.

New features and improvements specific to the ARM architecture include:

  • AllWinner – All platforms: AXP20x PMIC and MMC support, 5 drivers + SMP reworked for AllWinner A31, touchscreen drivers for AllWinner A10. DTS added for Mele M9 and R7. You can read details about AllWinner changes here.
  • Rockchip – RK3xxx SoC I2C drivers
  • Xen on ARM systems now supports suspend and resume.
  • Hibernation support added for ARM targets.
  • Initial support for ARM64 (aarch64) had been added
  • SMP support has been added for Marvell Armada 375 and 38x SoCs. SMP has been reworked for the Allwinner A31 SoC.
  • New ARM SoC added: ST Microelectronics STiH407; Freescale i.MX6SX; Samsung Exynos 3250, 5260, 5410, 5420, and 5800; and LSI Axxia AXM55xx.
  • Nouveau driver has initial support for NVIDIA Tegra K1 GK20A devices.
  • Various changes for Atmel AT91, Marvell Armada, Fresscale i.MX, Samsung Exynos, and TI AM43xx SoCs.

Further details on Linux 3.16 will eventually be available on Kernelnewbies.org. For more details about ARM changes, remember to also check ARM architecture and drivers sections.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

Amlogic GPL Source Code Release – Kernel 3.10, U-Boot, and Drivers (Wi-Fi, NAND, TVIN, Mali GPU)

March 10th, 2014 30 comments

Last month, I noticed Amlogic provided links to the Android SDK for S802 / M802 on their open source website, but the only way to get the source was to share your SSH public with Amlogic, so that they give you access. It did not happen, but the company has released the source for Linux 3.10.10, U-boot 2011.03, Realtek and Broadcom Wi-Fi drivers, NAND drivers, “TVIN”drivers, and kernel space GPU drivers for Mali-400 / 450 GPU. There are also some customer board files for Meson 6 only (AML8726-MX / M6) but they do not seem to match the kernel…

amlogic_kernel_m802_s802

If you want to build the kernel, including the drivers, you’ll need to download a bunch of files:

wget http://openlinux.amlogic.com:8000/download/ARM/kernel/arm-src-kernel-2014-03-06-d5d0557b2b.tar.gz
wget http://openlinux.amlogic.com:8000/download/ARM/wifi/rtk8192du-2014-03-06-7f70d95d29.tar.gz
wget http://openlinux.amlogic.com:8000/download/ARM/wifi/rtk8192eu-2014-03-06-9766866350.tar.gz
wget http://openlinux.amlogic.com:8000/download/ARM/wifi/rtk8192cu-2014-03-06-54bde7d73d.tar.gz
wget http://openlinux.amlogic.com:8000/download/ARM/wifi/rtk8188eu-2014-03-06-2462231f02.tar.gz
wget http://openlinux.amlogic.com:8000/download/ARM/wifi/brcmap6xxx-2014-03-06-302aca1a31.tar.gz
wget http://openlinux.amlogic.com:8000/download/ARM/wifi/wifi-fw-2014-03-06-d3b2263640.tar.gz
wget http://openlinux.amlogic.com:8000/download/ARM/modules/aml_tvin-2014-03-06-fb3ba6b1c8.tar.gz
wget http://openlinux.amlogic.com:8000/download/ARM/modules/aml_nand-2014-03-06-39095c4296.tar.gz
wget http://openlinux.amlogic.com:8000/download/ARM/customer/aml_customer-2014-03-06-76ce689191.tar.gz
wget http://openlinux.amlogic.com:8000/download/ARM/gpu/gpu-2014-03-06-0425a1f681.tar.gz

You’ll need to extract these tarballs in specific directories:

tar xvf arm-src-kernel-2014-03-06-d5d0557b2b.tar.gz
mkdir -p hardware/amlogic/
mkdir -p hardware/wifi/realtek/drivers
mkdir -p hardware/wifi/broadcom/drivers
mkdir -p hardware/arm/
cd hardware/amlogic
tar xvf ../../../aml_nand-2014-03-06-39095c4296.tar.gz
mv aml_nand-amlogic-nand nand
cd ../wifi/realtek/drivers
tar xvf ../../../../rtk8192du-2014-03-06-7f70d95d29.tar.gz
tar xvf ../../../../rtk8192eu-2014-03-06-9766866350.tar.gz
tar xvf ../../../../rtk8192cu-2014-03-06-54bde7d73d.tar.gz 
tar xvf ../../../../rtk8188eu-2014-03-06-2462231f02.tar.gz
mv rtk8188eu-8188eu 8188eu
mv rtk8192du-8192du 8192du
mv rtk8192cu-8192cu 8192cu
mv rtk8192eu-8192eu 8192eu
cd ../../broadcom/drivers
tar xvf ../../../../brcmap6xxx-2014-03-06-302aca1a31.tar.gz
mv brcmap6xxx-ap6xxx ap6xxx
cd ../../../arm
tar xvf ../../gpu-2014-03-06-0425a1f681.tar.gz
mv gpu-r3p2-01rel3 gpu
cd ..
tar xvf ../../aml_tvin-2014-03-06-fb3ba6b1c8.tar.gz 
mv aml_tvin-amlogic-3.10-bringup tvin

You can also extract the customer file into the kernel directory to add some drivers. As I said above I’m not sure the source code inside matches the Linux kernel 3.10.10, because there’s now device tree file for the boards. In arch/arm/plat-meson/Kconfig, there are (commented out) references to customer/meson/dt/Kconfig and customer/drivers/Kconfig. The device tree is not available, but the drivers is, so you could give a try in order to build the touchscreen and sensors drivers available in the customer tarball:

cd ../linux-amlogic-3.10-bringup
tar xvf ../aml_customer-2014-03-06-76ce689191.tar.gz 
mv aml_customer-master customer

Finally, the development tree is ready to build the kernel. There must surely be a script somewhere to do that… I haven’t used the file wifi-fw-2014-03-06-d3b2263640.tar.gz, as the kernel did not complain about it, and it looks like it’s just for Android Kit Kat. There are four scripts to build the kernel: mk_m6.sh, mk_m6tv, mk_m6_tvd.sh, and mk_m8.sh. The first three are for meson6 (dual core processor), and the last one meson8 (quad core S802/M802).

Let’s go with M8 build:

make ARCH=arm meson8_defconfig
./mk_m8.sh

Please not that I had to change mk_m8.sh, as it should just make computer hand requiring a hard reset. The culprity was the line:

make uImage -j

The manpage indicates “If the -j option is given without an argument, make  will  not  limit  the number of jobs that can run simultaneously”.  It does not seem like a good idea… ,s so I changed that to

make uImage -j8

Upon successful build, the end of log you look like:

UIMAGE arch/arm/boot/uImage
Image Name: Linux-3.10.10
Created: Mon Mar 10 11:48:52 2014
Image Type: ARM Linux Kernel Image (lzo compressed)
Data Size: 7099978 Bytes = 6933.57 kB = 6.77 MB
Load Address: 00008000
Entry Point: 00008000
Image arch/arm/boot/uImage is ready
/home/jaufranc/edev/AMLogic/s802/linux-amlogic-3.10-bringup/scripts/amlogic/aml2dtb.sh /home/jaufranc/edev/AMLogic/s802/linux-amlogic-3.10-bringup/arch/arm/boot/dts/amlogic/meson8_skt.dtd
DTD_FILE: /home/jaufranc/edev/AMLogic/s802/linux-amlogic-3.10-bringup/arch/arm/boot/dts/amlogic/meson8_skt.dtd
the middle dts file: /home/jaufranc/edev/AMLogic/s802/linux-amlogic-3.10-bringup/arch/arm/boot/dts/amlogic/meson8_skt.dts
process file /home/jaufranc/edev/AMLogic/s802/linux-amlogic-3.10-bringup/arch/arm/boot/dts/amlogic/meson8_skt.dts start
processing... please wait...
process file /home/jaufranc/edev/AMLogic/s802/linux-amlogic-3.10-bringup/arch/arm/boot/dts/amlogic/meson8_skt.dts end

CC scripts/mod/devicetable-offsets.s
GEN scripts/mod/devicetable-offsets.h
HOSTCC scripts/mod/file2alias.o
HOSTLD scripts/mod/modpost
DTC arch/arm/boot/dts/amlogic/meson8_skt.dtb
rm /home/jaufranc/edev/AMLogic/s802/linux-amlogic-3.10-bringup/arch/arm/boot/dts/amlogic/meson8_skt.dts
-rw-r–r– 1 jaufranc jaufranc 11244948 Mar 10 11:48 ./m8boot.img
m8boot.img done

If you want to get U-boot code it’s not quite as messy, you jut need to download and extract two files:

wget http://openlinux.amlogic.com:8000/download/ARM/u-boot/uboot-2014-03-06-323515c056.tar.gz
wget http://openlinux.amlogic.com:8000/download/ARM/u-boot/aml_uboot_customer-2014-03-06-09887e87b4.tar.gz
tar xvf uboot-2014-03-06-323515c056.tar.gz
cd uboot-next
tar xvf ../aml_uboot_customer-2014-03-06-09887e87b4.tar.gz
mv aml_uboot_customer-next/ customer

Then just select a board in customer/board/ to build U-boot for your hardware. For example:

make m8_k03_M102_v1_config CROSS_COMPILE=arm-linux-gnueabihf-
make CROSS_COMPILE=arm-linux-gnueabihf- -j8

The build failed for me, but it might be I may need to use another compiler, e.g. arm-none-eabi-gcc.

[Update: arm-none-eabi-gcc does seem to go further, but you'll also need an arc compiler as shown in my previous Amlogic U-boot build instructions].

Thanks to M][sko for the tip.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

Intel Bay Trail Graphics Overview – FOSDEM 2014

February 17th, 2014 No comments

Bay Trail SoCs are new low power Intel ICs for tablets (Bay Trail-T, Z3000 series), mobiles (Bay Trail-M, N2800, N2900 and N3500 series), desktops (Bay Trail-D, J1800, J1900 and J2900 series) and embedded / industrial platforms (Bay Trail-I, E3800 series). Many Atom processors used to features PowerVR GPU, but it has now been replaced by Intel HD graphics in Bay Trail SoC.

Z3700_Series_Block_Diagram
Jesse Barnes, working at Intel on software and drivers for Intel graphics devices, gives a presentation about Bay Trail SoCs with a focus on graphics. After an overview, and some ARM bashing regarding performance (Nvidia Tegra 4 and Qualcomm Snapdragon 800), and even power consumption (Tegra 4 only), he describe further details about Intel HD graphics found in the new Intel processors. Everything is basically in mainline, and you’ll need Linux 3.10 or greater, Mesa 9.2 or greater, and libva 1.2.1 or greater for proper support. Some initial GPU benchmarks showed somewhat disappointing results, but in this talk, Jesse explains some parts of the drivers still need performance improvements, as they only run at half the expected speed. VP8 support (hardware decode?) is work in progress in VP8.

He also mentioned available hardware platform with Windows 8.x tablets already available, and Android tablets becoming available later this year, except in China where you can already buy Bay Trail Android tablets…

Presentation slides are not available.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

Cute Embedded Nonsense Hacks, Nouveau Driver for Tegra K1, and Android Defaults to ART

February 1st, 2014 4 comments

There’s been some news at the end of this week that may not warrant a full article, but are still fun and/or interesting nonetheless: comments by the lead developer of Fedora ARM  led to “Cute Embedded Nonsense” meme on Google+, preliminary commit for open source drivers for Tegra K1’s GPU, and Android Open Source Project defaults to ART instead of Dalvik.

Cute_embedded_Nonsense_HacksIf you have a Google+ account, and circled a few people involved in ARM Linux, you must have seen a few postings about “Cute Embedded Nonsense Hacks” in your feed. It all started when Jon Masters posted about Red Hat’s ARM SBSA platform requirements, and in particular one comment that reads:

I am all for people installing their own kernels if they want to. I support aggressively defined standard platforms (not cute embedded nonsense hacks) but not locked platforms. You can keep both parts when it breaks, of course.

This generated quite a buzz in Google+, with ARM Linux developers getting upset, and Jon Masters later apologized, and promised $100 to the charity of choice to the best “graphics” representation of “Cute Embedded Nonsense Hacks”. You can even buy a T-Shirt.

Separately, if you’ve been frustrated by the lack of open source drivers for GPUs used in ARM SoC, there’s some hope, as initial support for Tegra K1’s GPU, codenamed GK20A, has been added to the Nouveau drivers, which are open source drivers for Nvidia GPUs. Here’s an excerpt of the commit email:

GK20A is the Kepler-based GPU used in the upcoming Tegra K1 chips. The following patches perform architectural changes to Nouveau that are necessary to support non-PCI GPUs and add initial support for GK20A. Although the support is still very basic and more user-space changes will be needed to make the full graphics stack run on top of it, we were able to successfully open channels and run simple pushbuffers with libdrm (more testing including rendering is in progress as we get more familiar with Nouveau’s user-space interface).

This work should be considered as a RFC and a proof-of-concept for driving future Tegra GPUs with Nouveau. Some design choices need to be discussed and quite a few inelegant shortcuts were purposely taken to minimize the size of this first set. Or said otherwise, apart from the changes that add support for non-PCI GPUs, remarkably little code needs to be added to get GK20A to a point where it is actually running. This is very encouraging, and it will be interesting to keep improving this support and see where this gets us.

Android_ART_DalvikYou can get the full details @ http://lists.freedesktop.org/archives/dri-devel/2014-January/053028.html

With the release of Android 4.4 (Kitkat), Google added ART (Android Runtime) as an alternative Android runtime that can run instead of Dalvik virtual machine. Dalvik is based on JIT (just in time) compilation, which means the code is translated into machine code each time it runs. ART is based on AOT (ahead of time) compilation, and translates Java bytecode into an architecture dependent binary during installation so that apps will start and run much faster when in actual use. One drawback is that ART takes a bit more storage compared to Dalvik, as it needs to store the machine-code binaries.

The Android 4.4 Kitkat firmware you have in your device still defaults to Dalvik, as ART breaks some of the apps. But good progress must have been made, as a recent commit into AOSP now makes ART the default runtime. So I’d assume Android 4.4.3 will come with ART by default. Via Liliputing.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

GCW Zero Handheld Console Runs 3D Games via Open Source Vivante GPU Drivers (Etnaviv)

December 16th, 2013 1 comment

GCW Zero is an open source handheld gaming console featuring Ingenic JZ4770 MIPS processor with Vivante GC860 GPU, 512MB RAM, 16GB internal storage, and a 3.5″ LCD with 320×240 pixels. The device runs Linux (OpenDingux) , and retro games and emulators. GCW Zero had a successful kickstarter campaign, and is now available in a few shops such as ThinkGeek (US), DragonBox (EU) for $150 / 125 Euros.

GCW_ZeroToday, I’m writing about this console, not because of amazing specs, nor price, but because it could be the first  device with an embedded SoC that retails with an open source GPU driver. In September of this year, GCW Zero received a firmware update with Etnaviv GPU driver for Vivante GC860 adding support for 3D games via OpenGL ES support. The video below shows Quake 3 Arena running on the game console with the Etnaviv drivers.

Lots of OpenGL ES1 and 2 features are supported as you can see from the release notes for the latest firmware (October), but some may still needs to be implemented including loops in shaders, GLSL (OpenGL Shading Language) “texture” bias parameter and “textureLod”, and a few more more. Beside Quake 3D arena, D2X (Descent 2 rebirth), Dark Places, and Hurrican are some of the few 3D games that have successfully been tested on the platform.

That means any platform based on Vivante GC600, GC800, GC860, GC880, and GC1000 should be able to support OpenGL ES via the open source Etnaviv drivers in Linux or Android. Vivante GC2000, as used in Freescale i.MX6 Quad, is not yet supported mainly because multiple pixel pipes support is missing, although progress has been made.

Etnaviv appears to be mainly a one person effort by Wladimir J. van der Laan, and despite this, progress has been very fast for the last year or so. The hard parts have been done, i.e. reverse-engineering and 3D drivers, but there’s still more work to be done, such as integrating the Mesa stuff into DRI/DRM, upstreaming, and X11 2D driver.

If you are interested in contributing to the project, trying it out, or simply watch the progress of the project, you can do so on Wladimir’s blog, or on #etnaviv IRC channel on freenode. For source code and documentation, visit the project’s github repo.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter