The kernel
As explained in the previous posting, the kernel .config has been determined through trial and error at first, after which the .config used by Fortis themselves was retrieved from a stock firmware kernel. This led to both a further refinement of the .config as well as confirmation of most of the choices made so far. The .config currently used is not final and can certainly be optimized, but my first goal was to build a kernel that would start and try to execute the /etc/init.d/rcS, and that first goal has been achieved.
The second part that is receiver specific is the modification of the kernel source files to adapt them to the main board specifics. Here the files already provided for the DP7000 in the duckbox-developer git came in handy, as they seemed to originate from Fortis directly.
Fortis has based the models DP6010 and DP7001 on the B2067 Rev C board; the EPP8000 is based on the similar B2064 board. For the moment I assume that the DP7000 and DP7050 are based on the B2067C as well, but this needs confirmation. For the EP8000 which is possibly a stripped EPP8000 and the GPV8000 which is also a twin tuner model, your guess is as good as mine. My guess is the B2067C for the moment until confirmed otherwise, although the loader version 8.37 points to the B2064 board.
These boards use the TM1668 driver chip as display/keyboard driver for the front panel as standard. As reported, Fortis uses an ET6226 for the LED models and an ET16315 for the VFD ones. I removed the TM1668 code from the kernel, and decided to add the driver code to the frontpanel driver to be loaded by the /etc/init.d/rcS script, which has been the usual approach with Enigma2/Neutrino.
I added the usual patch to add the MAC address from the bootargs into the kernel command line and proceeded with adding the mtd blocks, which are the same as the setup used by Fortis. This approach is needed to be able to use the factory supplied boot loader, and as explained before yield a memory layout that is quite suitable for both Enigma2 and Neutrino. I was lucky with respect to printk output through the RS-232 console connection, as the setting of the DP7000 .config and setup patches worked immediately.
The GPIO numbers were determined by adding a temporary test programme to the initial kernel code and observing the behaviour of the LEDs and control lines of the front panel driver. In some setup patches it is still present, but will be removed of course when things get more definitive.
As of this posting, the result of all this can be found in the Fortis-4G git.
When built and flashed in an EPP8000, the console output of the kernel startup is currently this:
I sure hope you like the looks of this.Code:Error: Bad gzipped data -> normal boot loader message when no valid boot up picture .gz file is present in mtd3 block FrTs###*#2 Linux version 2.6.32.61_stm24_0215 (ndv@TEST-PC) (gcc version 4.8.2 20131016 (STMicroelectronics/Linux Base 4.8.2-131) (GCC) ) #1 PREEMPT Thu Feb 12 17:51:19 CET 2015 Boot params: ... MOUNT_ROOT_RDONLY - 00000001 ... RAMDISK_FLAGS - 00000000 ... ORIG_ROOT_DEV - 00000200 ... LOADER_TYPE - 00000000 ... INITRD_START - 00000000 ... INITRD_SIZE - 00000000 Booting machvec: epp8000 Node 0: start_pfn = 0x40000, low = 0x52800 Zone PFN ranges: Normal 0x00040000 -> 0x00052800 Movable zone start PFN for each node early_node_map[1] active PFN ranges 0: 0x00040000 -> 0x00052800 Fortis EPP8000 board initialisation STxH205 version 2.x bpa2: partition 'bigphysarea' created at 0x48000000, size 32768 kB (0x02000000 B) bpa2: partition 'LMI_IO' created at 0x4a000000, size 65536 kB (0x04000000 B) Built 1 zonelists in Zone order, mobility grouping on. Total pages: 75184 Kernel command line: console=ttyAS0,115200 root=/dev/mtdblock2 ubi.mtd=2 root=ubi0:rootfs rootfstype=ubifs rw init=/bin/devinit coprocessor_mem=4m@0x40000000,4m@0x40400000 printk=1 console_loglevel=7 stmmaceth=ethaddr:00:1e:b8:0f:e9:92 PID hash table entries: 2048 (order: 1, 8192 bytes) Dentry cache hash table entries: 65536 (order: 6, 262144 bytes) Inode-cache hash table entries: 32768 (order: 5, 131072 bytes) PVR=04909420 CVR=60880000 PRR=0000aa00 I-cache : n_ways=2 n_sets=512 way_incr=16384 I-cache : entry_mask=0x00003fe0 alias_mask=0x00003000 n_aliases=4 D-cache : n_ways=2 n_sets=512 way_incr=16384 D-cache : entry_mask=0x00003fe0 alias_mask=0x00003000 n_aliases=4 Memory: 188160k/303104k available (3478k kernel code, 1692k data, 128k init) Hierarchical RCU implementation. NR_IRQS:600 Console: colour dummy device 80x25 console [ttyAS0] enabled sh_tmu: TMU0 used for clock events sh_tmu: TMU0 used for periodic clock events sh_tmu: TMU1 used as clock source Calibrating delay loop... 645.12 BogoMIPS (lpj=322560) Mount-cache hash table entries: 512 CPU: STxH205 [STM][PM-Sys]: ilc3 @ 4096 NET: Registered protocol family 16 bio: create slab <bio-0> at 0 SCSI subsystem initialized Generic PHY: Registered new driver (0xffffffff) usbcore: registered new interface driver usbfs usbcore: registered new interface driver hub usbcore: registered new device driver usb DMA: Registering DMA API. Switching to clocksource TMU1 NET: Registered protocol family 2 IP route cache hash table entries: 4096 (order: 2, 16384 bytes) TCP established hash table entries: 16384 (order: 5, 131072 bytes) TCP bind hash table entries: 16384 (order: 4, 65536 bytes) TCP: Hash tables configured (established 16384 bind 16384) TCP reno registered NET: Registered protocol family 1 RPC: Registered udp transport module. RPC: Registered tcp transport module. RPC: Registered tcp NFSv4.1 backchannel transport module. [STM]: [PM]: Suspend support registered [STM]: [PM]: HoM support registered [STM]: [PM]: [HoM]: Early console @ fe530000 Installing knfsd (copyright (C) 1996 okir@monad.swb.de). Slow work thread pool: Starting up Slow work thread pool: Ready NTFS driver 2.1.29 [Flags: R/W]. fuse init (API version 7.13) msgmni has been set to 367 alg: No test for stdrng (krng) io scheduler noop registered io scheduler anticipatory registered (default) io scheduler deadline registered io scheduler cfq registered lirc_dev: IR Remote Control driver registered, major 61 lirc-stm: probe found data for platform device lirc-stm lirc-stm: STM LIRC plugin using IRQ 181 in IR mode lirc_dev: lirc_register_driver: sample_rate: 0 STMicroelectronics LIRC driver initialized. STMicroelectronics ASC driver initialized stm-asc.0: ttyAS0 at MMIO 0xfe530000 (irq = 219) is a stm-asc loop: module loaded MiPHY driver style MiPHYA40X probed successfully MiPHYA40X, c2.1 Claimed by ahci ahci ahci: forcing PORTS_IMPL to 0x1 ahci ahci: AHCI 0001.0300 32 slots 1 ports 3 Gbps 0x1 impl platform mode ahci ahci: flags: ncq sntf pm led clo only pmp pio slum part ccc apst scsi0 : ahci ata1: SATA max UDMA/133 mmio [0xfd548000-0xfd548fff] port 0x100 irq 234 ONFI flash detected ONFI param page 0 valid NAND device: Manufacturer ID: 0x01, Chip ID: 0xda (AMD S34ML02G1) stm-nand-flex: Using legacy platform timing data stm-nand-flex: Using boot partition name [boot] (from kernel config) cmdlinepart partition parsing not available Creating 9 MTD partitions on "stm-nand-flex": 0x000000000000-0x000000100000 : "boot" 0x000000400000-0x000000800000 : "kernel" 0x000000800000-0x00000be00000 : "rootfs" 0x000000180000-0x000000380000 : "logo" 0x000000380000-0x000000400000 : "eeprom" 0x000008000000-0x000008100000 : "config" 0x00000be00000-0x00000fe00000 : "user" 0x000000000000-0x000010000000 : "ALL" 0x00000fe00000-0x000010000000 : "config1" stm-nand-flex: Found BOOT parition[boot], updating ECC paramters boot-ECC 0x00000000->0x00100000 UBI: attaching mtd2 to ubi0 UBI: physical eraseblock size: 131072 bytes (128 KiB) UBI: logical eraseblock size: 129024 bytes UBI: smallest flash I/O unit: 2048 UBI: sub-page size: 512 UBI: VID header offset: 512 (aligned 512) UBI: data offset: 2048 UBI: attached mtd2 to ubi0 UBI: MTD device name: "rootfs" UBI: MTD device size: 182 MiB UBI: number of good PEBs: 1456 UBI: number of bad PEBs: 0 UBI: max. allowed volumes: 128 UBI: wear-leveling threshold: 4096 UBI: number of internal volumes: 1 UBI: number of user volumes: 1 UBI: available PEBs: 0 UBI: total number of reserved PEBs: 1456 UBI: number of PEBs reserved for bad PEB handling: 14 UBI: max/mean erase counter: 1/0 UBI: image sequence number: 184918554 UBI: background thread "ubi_bgt0d" started, PID 403 ICPlus IP1001: Registered new driver (0x02430d90) ICPlus IP101A: Registered new driver (0x02430c54) ICPlus IP175C: Registered new driver (0x02430d80) stmmac - user ID: 0x10, Synopsys ID: 0x36 DMA HW capability register supported Enhanced/Alternate descriptors RX Checksum Offload Engine supported TX Checksum insertion supported Wake-Up On Lan supported mdio_bus 0:00: IC+101G: disable EEE advertise STMMAC MII Bus: probed eth0: PHY ID 02430c54 at 0 IRQ 201 (0:00) active ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver stm_usb_probe: usb_phy_clk clock not found for stm-usb.0 stm-ehci stm-ehci.0: STMicroelectronics EHCI Host Controller stm-ehci stm-ehci.0: new USB bus registered, assigned bus number 1 stm-ehci stm-ehci.0: irq 235, io mem 0xfe0ffe00 stm-ehci stm-ehci.0: USB 0.0 started, EHCI 1.00 usb usb1: configuration #1 chosen from 1 choice hub 1-0:1.0: USB hub found hub 1-0:1.0: 1 port detected stm-ohci stm-ohci.0: STMicroelectronics OHCI Host Controller stm-ohci stm-ohci.0: new USB bus registered, assigned bus number 2 stm-ohci stm-ohci.0: irq 238, io mem 0xfe0ffc00 ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300) ata1.00: ATA-9: WDC WD10JPVX-22JC3T0, 01.01A01, max UDMA/133 ata1.00: 1953525168 sectors, multi 0: LBA48 NCQ (depth 31/32) ata1.00: configured for UDMA/133 scsi 0:0:0:0: Direct-Access ATA WDC WD10JPVX-22J 01.0 PQ: 0 ANSI: 5 -> my EPP8000 has indeed a WD hard drive built in... sd 0:0:0:0: [sda] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB) sd 0:0:0:0: [sda] 4096-byte physical blocks sd 0:0:0:0: [sda] Write Protect is off sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA sda: usb usb2: configuration #1 chosen from 1 choice hub 2-0:1.0: USB hub found hub 2-0:1.0: 1 port detected stm_usb_probe: usb_phy_clk clock not found for stm-usb.1 stm-ehci stm-ehci.1: STMicroelectronics EHCI Host Controller stm-ehci stm-ehci.1: new USB bus registered, assigned bus number 3 stm-ehci stm-ehci.1: irq 236, io mem 0xfe1ffe00 sda1 sd 0:0:0:0: [sda] Attached SCSI disk stm-ehci stm-ehci.1: USB 0.0 started, EHCI 1.00 usb usb3: configuration #1 chosen from 1 choice hub 3-0:1.0: USB hub found hub 3-0:1.0: 1 port detected stm-ohci stm-ohci.1: STMicroelectronics OHCI Host Controller stm-ohci stm-ohci.1: new USB bus registered, assigned bus number 4 stm-ohci stm-ohci.1: irq 239, io mem 0xfe1ffc00 usb usb4: configuration #1 chosen from 1 choice hub 4-0:1.0: USB hub found hub 4-0:1.0: 1 port detected Initializing USB Mass Storage driver... usbcore: registered new interface driver usb-storage USB Mass Storage support registered. i2c /dev entries driver Linux video capture interface: v2.00 sh_tmu: TMU0 kept as earlytimer sh_tmu: TMU1 kept as earlytimer [STM][PM-Sys]: emi @ 40 [STM][PM-Sys]: gpio @ 20 [STM][PM-Sys]: sysconf @ 10 [STM][PM-Sys]: clk @ 30 stm-lpm stm-lpm.0: firmware: using built-in firmware lpm_fwSTxH205.elf LPM: Found sbc f/w STM_LPM driver registered Memory region request failed for stm-sysconf.4! -> only remaining kernel startup error (memory allocation problem) stm-sysconf: probe of stm-sysconf.4 failed with error -16 DMA: Registering fdma_dmac.0 handler (16 channels). IRQ 203/fdma_dmac.0: IRQF_DISABLED is not guaranteed on shared IRQs stm-fdma stm-fdma.0: firmware: requesting fdma_STxH205_0.elf DMA: Registering fdma_dmac.1 handler (16 channels). IRQ 205/fdma_dmac.1: IRQF_DISABLED is not guaranteed on shared IRQs stm-fdma stm-fdma.1: firmware: requesting fdma_STxH205_1.elf stm-rng hardware driver 1.0 configured stm-rtc stm-rtc: rtc core: registered stm-rtc as rtc0 Advanced Linux Sound Architecture Driver Version 1.0.21. sound/stm/stx7200.c:215: Not supported (other than STx7200) SOC detected! ALSA device list: No soundcards found. -> No solution for sound driver yet TCP cubic registered NET: Registered protocol family 10 NET: Registered protocol family 17 stm-rtc stm-rtc: setting system clock to 2000-01-01 00:00:00 UTC (946684800) UBIFS: recovery needed stm lpm: configuring gpio_power: GPIO[3][7] stm-rtc-sbc stm-rtc-sbc.0: rtc core: registered stm-rtc-sbc as rtc1 usb 3-1: new high speed USB device using stm-ehci and address 2 UBIFS: recovery completed UBIFS: mounted UBI device 0, volume 0, name "rootfs" UBIFS: file system size: 184117248 bytes (179802 KiB, 175 MiB, 1427 LEBs) UBIFS: journal size: 9033728 bytes (8822 KiB, 8 MiB, 71 LEBs) UBIFS: media format: w4/r0 (latest is w4/r0) UBIFS: default compressor: zlib UBIFS: reserved for root: 0 bytes (0 KiB) VFS: Mounted root (ubifs filesystem) on device 0:12. Freeing unused kernel memory: 128k freed INIT: version 2.88 booting usb 3-1: configuration #1 chosen from 1 choice hub 3-1:1.0: USB hub found hub 3-1:1.0: 3 ports detected [rcS] Start
More to come (drivers and rcS for example)...
Regards,
Audioniek.