Merge commit 'opendreambox/opendreambox-1.6' into vuplus-1.6
authorikseong <ikseong@vuplus>
Fri, 23 Jul 2010 05:44:19 +0000 (14:44 +0900)
committerikseong <ikseong@vuplus>
Fri, 23 Jul 2010 05:44:19 +0000 (14:44 +0900)
581 files changed:
conf/distro/vuplus.conf [new file with mode: 0644]
conf/machine/bm750.conf [new file with mode: 0644]
conf/machine/vusolo.conf [new file with mode: 0644]
recipes/aio-grab/aio-grab.bb [changed mode: 0644->0755]
recipes/aio-grab/aio-grab/aio-grab_vuplus.patch [new file with mode: 0755]
recipes/alsa/alsa-lib_1.0.20.bb [changed mode: 0644->0755]
recipes/autofs/autofs_4.1.4.bb [changed mode: 0644->0755]
recipes/avahi/avahi.inc [changed mode: 0644->0755]
recipes/base-files/base-files/bm750/fstab [new file with mode: 0755]
recipes/base-files/base-files/bm750/profile [new file with mode: 0644]
recipes/base-files/base-files/vusolo/fstab [new file with mode: 0755]
recipes/base-files/base-files/vusolo/profile [new file with mode: 0644]
recipes/base-files/base-files_3.0.14.bb [changed mode: 0644->0755]
recipes/busybox/busybox-1.15.3/vuplus/defconfig [new file with mode: 0755]
recipes/busybox/busybox-1.15.3/vuplus/dhcp-hostname.patch [new file with mode: 0755]
recipes/busybox/busybox-1.15.3/vuplus/hdparm_M.patch [new file with mode: 0755]
recipes/busybox/busybox-1.15.3/vuplus/keymap_endianess.patch [new file with mode: 0755]
recipes/busybox/busybox-1.15.3/vuplus/nptl_task.patch [new file with mode: 0755]
recipes/busybox/busybox-1.15.3/vuplus/simple.script [new file with mode: 0755]
recipes/busybox/busybox-1.15.3/vuplus/syslog.conf [new file with mode: 0755]
recipes/busybox/busybox_1.15.3.bb [changed mode: 0644->0755]
recipes/busybox/files/vuplus/hwclock.sh [new file with mode: 0644]
recipes/cdrkit/cdrkit_1.1.9.bb [changed mode: 0644->0755]
recipes/dbus/dbus.inc
recipes/dreambox/dreambox-blindscan-utils.bb [changed mode: 0644->0755]
recipes/eglibc/eglibc-package.bbclass [changed mode: 0644->0755]
recipes/enigma2/enigma2-defaultservices.bb [changed mode: 0644->0755]
recipes/enigma2/enigma2-plugins.bb
recipes/enigma2/enigma2-plugins/vuplus/dreamboxweb.png [new file with mode: 0755]
recipes/enigma2/enigma2-plugins/vuplus/favicon.ico [new file with mode: 0755]
recipes/enigma2/enigma2-skins.bb
recipes/enigma2/enigma2.bb [changed mode: 0755->0644]
recipes/enigma2/enigma2/vuplus/750S/arrowdown.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/arrowleft.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/arrowright.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/arrowup.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/b_b.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/b_bl.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/b_br.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/b_l.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/b_r.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/b_t.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/b_tl.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/b_tr.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/bar_ber.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/bar_snr.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/bg_list.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/bg_main.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/bg_setup_600.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/bg_setup_650.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/border_epg.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/border_eventinfo.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/border_info.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/border_menu.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/border_menu_300.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/border_menu_350.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/border_menu_a.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/border_menu_c.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/border_multiepg.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/bottombar.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_130x23px.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_170x23px.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_230x23px.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_230x27px.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_250x32px.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_290x23px.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_360x23px.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_360x32px.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_380x23px.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_400x23px.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_440x23px.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_450x32px.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_480x23px.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_500x23px.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_520x23px.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_520x27px.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_550x27px.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_560x23px.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/Thumbs.db [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/blue.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/blue_pressed.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/button_blue.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/button_blue_off.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/button_green.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/button_green_off.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/button_red.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/button_red_off.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/button_yellow.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/button_yellow_off.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/green-big.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/green.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/key_0.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/key_1.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/key_2.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/key_3.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/key_4.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/key_5.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/key_6.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/key_7.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/key_8.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/key_9.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/key_blue.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/key_green.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/key_info.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/key_menu.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/key_red.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/key_text.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/key_yellow.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/red-big.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/red.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/singlelineList_left_arrow.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/singlelineList_right_arrow.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/singlelineList_selected_23p.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/singlelineList_selected_23px.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/singlelineList_selected_39p.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/singlelineList_selected_39px.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/singlelineList_selected_43p.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/singlelineList_selected_48p.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/singlelineList_selected_48px.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/singlelineList_selected_72p.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/singlelineList_selected_72px.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/buttons/yellow.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/countries/Thumbs.db [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/countries/ad.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/countries/ae.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/countries/cz.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/countries/de.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/countries/dk.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/countries/en.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/countries/es.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/countries/fi.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/countries/fr.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/countries/gr.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/countries/hr.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/countries/hu.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/countries/is.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/countries/it.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/countries/lt.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/countries/missing.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/countries/nl.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/countries/no.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/countries/pl.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/countries/pt.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/countries/ro.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/countries/ru.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/countries/se.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/countries/si.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/countries/tr.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/div-h.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/div-v.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/epg_more.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/epg_next.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/epg_now.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/expandable-plugins.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/expanded-plugins.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/Thumbs.db [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/clock.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/dish.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/dish_scan.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/dmm_logo.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/epgclock.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/epgclock_add.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/epgclock_post.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/epgclock_pre.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/epgclock_prepost.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/folder.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/ico_mp_forward.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/ico_mp_pause.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/ico_mp_play.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/ico_mp_rewind.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/ico_mp_stop.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/icon_channelselection_radio.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/icon_channelselection_tv.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/icon_crypt.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/icon_crypt_off.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/icon_dolby.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/icon_dolby_off.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/icon_epg.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/icon_event.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/icon_format.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/icon_format_off.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/icon_mainmenu.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/icon_media.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/icon_note.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/icon_rec.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/icon_rec_off.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/icon_recorded.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/icon_timerlist.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/icon_txt.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/icon_txt_off.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/icon_txt_x.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/icon_view.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/icons_off.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/icons_off_1.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/icons_off_X.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/input_error.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/input_info.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/input_question.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/lock.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/lock_error.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/lock_off.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/lock_on.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/marker.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/mp_buttons.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/plugin.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/rass_logo.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/rass_page1.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/rass_page2.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/rass_page3.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/rass_page4.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/record.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/redx.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/repeat_off.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/repeat_on.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/scan-c.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/scan-s.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/scan-t.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/icons/selectioncross.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/info-bg.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/info-bg_mp.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/mediaplayer_bg.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/menu/Thumbs.db [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/menu/dvd_player.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/menu/information.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/menu/media_player.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/menu/plugins.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/menu/scart.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/menu/setup.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/menu/shutdown.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/menu/subtitles.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/menu/timer.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/mute.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/nim_active.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/no_coverArt.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/output.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/pal.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/picon_default.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/position_arrow.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/position_pointer.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/position_pointer_580.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/prev.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/progress_bg.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/progress_big.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/progress_medium.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/progress_recording.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/progress_small.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/rc.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/rcold.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/screws.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/screws_mp.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/scroll.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/singlelineList_selected_23p.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/sleeptimer.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/spinner/Thumbs.db [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/spinner/wait1.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/spinner/wait2.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/spinner/wait3.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/spinner/wait4.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/timeline-now.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/timeline.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/unhandled-key.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/verticalline-plugins.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/vkey_backspace.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/vkey_bg.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/vkey_clr.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/vkey_esc.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/vkey_icon.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/vkey_left.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/vkey_ok.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/vkey_right.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/vkey_sel.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/vkey_shift.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/vkey_shift_sel.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/vkey_space.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/vkey_text.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/volume.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/volume_box.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/750S/wizard.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/MyriadPro-Regular.otf [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/MyriadPro-Semibold.otf [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/MyriadPro-SemiboldIt.otf [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/Bg_EPG_list.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/Bg_EPG_view.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/Bg_List.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/Bg_Media.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/Bg_Media_info.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/Bg_Subtitle.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/Bg_divideline.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/Solo_Menu_bg520.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/Statusbar_white.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/arrowdown.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/arrowleft.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/arrowright.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/arrowup.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/b_b.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/b_bl.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/b_br.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/b_l.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/b_r.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/b_t.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/b_tl.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/b_tr.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/bar_ber.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/bar_snr.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/bg.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/border_eventinfo.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/border_info.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/border_menu.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/FocusBar_H36.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/FocusBar_H42.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/FocusBar_H45.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/blue.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/button_bluekey.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/button_off.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/green.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/key_0.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/key_1.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/key_2.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/key_3.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/key_4.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/key_5.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/key_6.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/key_7.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/key_8.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/key_9.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/key_text.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/red.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/yellow.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/countries/ad.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/countries/ae.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/countries/cz.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/countries/de.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/countries/dk.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/countries/ee.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/countries/en.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/countries/es.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/countries/fi.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/countries/fr.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/countries/gr.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/countries/hr.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/countries/hu.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/countries/is.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/countries/it.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/countries/lt.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/countries/lv.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/countries/missing.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/countries/nl.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/countries/no.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/countries/pl.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/countries/pt.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/countries/ro.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/countries/ru.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/countries/se.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/countries/si.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/countries/sk.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/countries/tr.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/countries/ua.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/countries/x-fy.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/countries/yu.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/div-h.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/div-v.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/epg_more.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/epg_next.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/epg_now.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/icons/Mediaplayerbar_gray.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/icons/Mediaplayerbar_purple.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/icons/clock.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/icons/dish.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/icons/dish_scan.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/icons/ico_Chlist_title.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/icons/ico_Radio_title.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/icons/ico_folder.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/icons/ico_noreplay.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/icons/ico_player.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/icons/ico_replay.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icon_crypt.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icon_crypt_off.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icon_dolby.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icon_dolby_off.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icon_event.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icon_format.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icon_format_off.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icon_rec.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icon_rec_off.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icon_txt.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icon_txt_off.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icon_view.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icons_off.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/icons/input_error.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/icons/input_info.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/icons/input_question.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/icons/lock.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/icons/lock_error.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/icons/lock_off.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/icons/lock_on.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/icons/mp_buttons.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/icons/plugin.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/icons/rass_logo.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/icons/record.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/icons/redx.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/icons/scan-c.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/icons/scan-s.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/icons/scan-t.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/info-bg.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_EPG_title.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_Plugin_All_title.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_menu_Info.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_menu_Media.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_menu_Plugin.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_menu_Setup.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_menu_Standby.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_menu_Subtitles.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_menu_Timer.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_title_Info.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_title_MENU.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_title_Media.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_title_Plugin.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_title_Pluginall.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_title_Setup.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_title_Standby.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_title_Subtitles.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_title_Timer.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_title_media-info.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/mute.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/no_coverArt.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/position_arrow.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/prev.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/progress_bg.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/progress_big.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/progress_medium.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/progress_small.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/rc.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/rcold.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/sleeptimer.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/timeline-now.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/timeline.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/unhandled-key.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_backspace.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_bg.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_clr.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_esc.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_icon.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_left.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_ok.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_right.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_sel.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_shift.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_shift_sel.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_space.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_text.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/volume_background.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/volume_up.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/Vu_HD/wizard.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/enigma2_vuplus_duo.patch [new file with mode: 0644]
recipes/enigma2/enigma2/vuplus/enigma2_vuplus_skin.patch [new file with mode: 0644]
recipes/enigma2/enigma2/vuplus/number_key/key_0.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/number_key/key_1.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/number_key/key_2.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/number_key/key_3.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/number_key/key_4.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/number_key/key_5.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/number_key/key_6.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/number_key/key_7.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/number_key/key_8.png [new file with mode: 0755]
recipes/enigma2/enigma2/vuplus/number_key/key_9.png [new file with mode: 0755]
recipes/ethtool/ethtool.inc [changed mode: 0644->0755]
recipes/ethtool/ethtool/ethtool_vuplus.patch [new file with mode: 0755]
recipes/fuse/fuse_2.7.3.bb
recipes/gnome/libsoup-2.4_2.29.5.bb
recipes/gstreamer/gst-plugins-bad_0.10.18.bb [changed mode: 0644->0755]
recipes/gstreamer/gst-plugins-bad_0.10.19.bb
recipes/gstreamer/gst-plugins-base/jsseek_have_x.patch [new file with mode: 0644]
recipes/gstreamer/gst-plugins-base_0.10.28.bb
recipes/gstreamer/gst-plugins-base_0.10.29.bb
recipes/gstreamer/gst-plugins-ugly_0.10.15.bb
recipes/gstreamer/gst-plugins.inc [changed mode: 0644->0755]
recipes/hdparm/hdparm_6.6.bb [changed mode: 0644->0755]
recipes/images/vuplus-image.bb [new file with mode: 0755]
recipes/initscripts/initscripts-1.0/bm750/bootup [new file with mode: 0755]
recipes/initscripts/initscripts-1.0/bm750/halt [new file with mode: 0755]
recipes/initscripts/initscripts-1.0/bm750/hotplug_br [new file with mode: 0755]
recipes/initscripts/initscripts-1.0/bm750/make_mac_sector [new file with mode: 0755]
recipes/initscripts/initscripts-1.0/vuplus/turnoff_power [new file with mode: 0755]
recipes/initscripts/initscripts-1.0/vuplus/var.tar.gz.default [new file with mode: 0755]
recipes/initscripts/initscripts-1.0/vusolo/bootup [new file with mode: 0755]
recipes/initscripts/initscripts-1.0/vusolo/halt [new file with mode: 0755]
recipes/initscripts/initscripts-1.0/vusolo/hotplug_br [new file with mode: 0755]
recipes/initscripts/initscripts-1.0/vusolo/make_mac_sector [new file with mode: 0755]
recipes/initscripts/initscripts-vuplus_1.0.bb [new file with mode: 0755]
recipes/libdreamdvd/libdreamdvd.bb [changed mode: 0644->0755]
recipes/libdvdread/libdvdread_0.9.7.bb [changed mode: 0644->0755]
recipes/liboil/liboil_0.3.14.bb [changed mode: 0644->0755]
recipes/libxmlccwrap/libxmlccwrap_0.0.12.bb [changed mode: 0644->0755]
recipes/linux/linux-bm750.bb [new file with mode: 0755]
recipes/linux/linux-bm750/bm750_defconfig [new file with mode: 0644]
recipes/linux/linux-bm750/linux_bm750-nand4.patch [new file with mode: 0644]
recipes/linux/linux-bm750/linux_bm750_arch_makefile.patch [new file with mode: 0755]
recipes/linux/linux-bm750/linux_bm750_dvb-core_fe.patch [new file with mode: 0644]
recipes/linux/linux-bm750/linux_bm750_kobject.patch [new file with mode: 0644]
recipes/linux/linux-bm750/linux_bm750_nand.patch [new file with mode: 0644]
recipes/linux/linux-bm750/linux_bm750_proc.patch [new file with mode: 0644]
recipes/linux/linux-bm750/linux_bm750_resource.patch [new file with mode: 0644]
recipes/linux/linux-bm750/linux_bm750_serial.patch [new file with mode: 0644]
recipes/linux/linux-bm750/linux_bm750_setup.patch [new file with mode: 0644]
recipes/linux/linux-bm750/stblinux-2.6.18.makefile.patch [new file with mode: 0644]
recipes/linux/linux-vusolo.bb [new file with mode: 0644]
recipes/linux/linux-vusolo/linux-vusolo_dvb-core_fe.patch [new file with mode: 0644]
recipes/linux/linux-vusolo/linux-vusolo_info.patch [new file with mode: 0644]
recipes/linux/linux-vusolo/linux-vusolo_kojbect.patch [new file with mode: 0644]
recipes/linux/linux-vusolo/linux-vusolo_nand.patch [new file with mode: 0644]
recipes/linux/linux-vusolo/linux-vusolo_nand4.patch [new file with mode: 0644]
recipes/linux/linux-vusolo/linux-vusolo_resource.patch [new file with mode: 0644]
recipes/linux/linux-vusolo/linux-vusolo_romblock.patch [new file with mode: 0644]
recipes/linux/linux-vusolo/linux-vusolo_serial.patch [new file with mode: 0644]
recipes/linux/linux-vusolo/linux_vusolo_arch_makefile.patch [new file with mode: 0644]
recipes/linux/linux-vusolo/stblinux-2.6.18.makefile.patch [new file with mode: 0644]
recipes/linux/linux-vusolo/vusolo_defconfig [new file with mode: 0644]
recipes/mc/mc.inc [changed mode: 0644->0755]
recipes/mtd/mtd-utils.inc
recipes/mtd/mtd-utils/vuplus/makefile.patch [new file with mode: 0644]
recipes/mtd/mtd-utils_1.2.0+git.bb
recipes/netbase/netbase/bm750/init [new file with mode: 0644]
recipes/netbase/netbase/bm750/interfaces [new file with mode: 0755]
recipes/netbase/netbase/vusolo/init [new file with mode: 0644]
recipes/netbase/netbase/vusolo/interfaces [new file with mode: 0755]
recipes/netbase/netbase_4.21.bb [changed mode: 0644->0755]
recipes/netkit-base/netkit-base-0.17/vuplus/inetd.conf [new file with mode: 0755]
recipes/netkit-base/netkit-base_0.17.bb [changed mode: 0644->0755]
recipes/opkg/opkg-collateral/bm750/dest [new file with mode: 0644]
recipes/opkg/opkg-collateral/vusolo/dest [new file with mode: 0644]
recipes/opkg/opkg-nogpg_svn.bb [changed mode: 0644->0755]
recipes/python/python_2.6.4.bb [changed mode: 0644->0755]
recipes/samba/files/vuplus/01samba-kill [new file with mode: 0755]
recipes/samba/files/vuplus/01samba-start [new file with mode: 0755]
recipes/samba/files/vuplus/smb.conf [new file with mode: 0755]
recipes/samba/samba.inc [changed mode: 0644->0755]
recipes/sysvinit/sysvinit/bm750/inittab [new file with mode: 0755]
recipes/sysvinit/sysvinit/vusolo/inittab [new file with mode: 0755]
recipes/sysvinit/sysvinit_2.86.bb [changed mode: 0644->0755]
recipes/tasks/task-vuplus-base.bb [new file with mode: 0644]
recipes/tasks/task-vuplus-cdplayer.bb [new file with mode: 0644]
recipes/tasks/task-vuplus-dvbapi3.bb [new file with mode: 0644]
recipes/tasks/task-vuplus-dvdburn.bb [new file with mode: 0644]
recipes/tasks/task-vuplus-dvdplayer.bb [new file with mode: 0644]
recipes/tasks/task-vuplus-enigma2.bb [new file with mode: 0644]
recipes/tasks/task-vuplus-madwifi.bb [new file with mode: 0644]
recipes/tasks/task-vuplus-wlan.bb [new file with mode: 0644]
recipes/tuxbox/tuxbox-common.bb
recipes/tuxbox/tuxbox-common/satellites_20100426.patch [new file with mode: 0755]
recipes/tuxbox/tuxbox-libtuxtxt.bb [changed mode: 0644->0755]
recipes/tuxbox/tuxbox-tuxtxt-32bpp.bb [changed mode: 0644->0755]
recipes/tuxbox/tuxbox-tuxtxt-32bpp/vuplus/tuxtxt_vuplus.patch [new file with mode: 0644]
recipes/udev/udev-124/vuplus/50-udev-default.rules [new file with mode: 0755]
recipes/udev/udev-124/vuplus/default [new file with mode: 0755]
recipes/udev/udev-124/vuplus/init [new file with mode: 0755]
recipes/udev/udev-static-devices.bb [changed mode: 0644->0755]
recipes/udev/udev-static-devices/bm750/udev_static_devices_tarball [new file with mode: 0644]
recipes/udev/udev-static-devices/vusolo/udev_static_devices_tarball [new file with mode: 0644]
recipes/udev/udev_124.bb [changed mode: 0644->0755]
recipes/unionfs/unionfs.inc
recipes/update-modules/update-modules_1.0.bb
recipes/vsftpd/files/vuplus/vsftpd.conf [new file with mode: 0755]
recipes/vsftpd/vsftpd_2.0.5.bb [changed mode: 0644->0755]
recipes/vuplus/vuplus-bootlogo.bb [new file with mode: 0644]
recipes/vuplus/vuplus-bootlogo/backdrop.mvi [new file with mode: 0644]
recipes/vuplus/vuplus-bootlogo/bootlogo.mvi [new file with mode: 0644]
recipes/vuplus/vuplus-bootlogo/bootlogo_wait.mvi [new file with mode: 0644]
recipes/vuplus/vuplus-bootlogo/switchoff.mvi [new file with mode: 0644]
recipes/vuplus/vuplus-compat.bb [new file with mode: 0755]
recipes/vuplus/vuplus-dvb-modules.bb [new file with mode: 0755]
recipes/vuplus/vuplus-dvb-tools.bb [new file with mode: 0755]
recipes/vuplus/vuplus-dvb-tools/showiframe.c [new file with mode: 0644]
recipes/vuplus/vuplus-dvb-tools/showiframe.pro [new file with mode: 0644]
recipes/vuplus/vuplus-feed-configs.bb [new file with mode: 0644]
recipes/vuplus/vuplus-makenfi-native.bb [new file with mode: 0644]
recipes/vuplus/vuplus-makenfi-native/vfi2 [new file with mode: 0755]
recipes/vuplus/vuplus-makenfi-native/vfi3 [new file with mode: 0755]
recipes/vuplus/vuplus-vucamd.bb [new file with mode: 0644]
recipes/vuplus/vuplus-vucamd/vucamd [new file with mode: 0755]
recipes/vuplus/vuplus-vucamd/vucamd.sh [new file with mode: 0644]
recipes/wpa-supplicant/wpa-supplicant-0.6.inc

diff --git a/conf/distro/vuplus.conf b/conf/distro/vuplus.conf
new file mode 100644 (file)
index 0000000..734b44d
--- /dev/null
@@ -0,0 +1,170 @@
+#@--------------------------------------------------------------------
+#@TYPE: Distribution
+#@NAME: vuplus <http://www.vuplus.com>
+#@--------------------------------------------------------------------
+
+SYSVINIT_ENABLED_GETTYS = ""
+
+INHERIT += "packaged-staging"
+INHERIT += "package_ipk debian"
+
+DISTRO = "vuplus"
+DISTRO_NAME = "Vuplus"
+DISTRO_VERSION = "2.0.0"
+
+
+TARGET_OS = "linux"
+#TARGET_VENDOR = "-oe" is set at sane-toolchanin.inc
+TARGET_VENDOR = "-vuplus"
+
+#OLDEST_KERNEL = "2.6.16"
+
+#
+## Basic configuration
+#
+IMAGE_DEV_MANAGER = "udev"
+DISTRO_SSH_DAEMON = "dropbear"
+IMAGE_INIT_MANAGER = "sysvinit"
+IMAGE_INITSCRIPTS ?= "initscripts-vuplus"
+IMAGE_LOGIN_MANAGER ?= ""
+IMAGE_FSTYPES ?= "tar.bz2 jffs2"
+
+
+#Images built can have to modes:
+# 'debug': empty rootpassword, strace included
+# 'release' no root password, no strace and gdb by default
+#DISTRO_TYPE ?= "debug"
+#DISTRO_TYPE = "release"
+
+
+#2.8
+#FEED_URIS += "official##http://archive.vuplus.com/openembedded/1.1/vuplus/${MACHINE}/feeds/stable"
+DISTRO_FEED_URI = "http://archive.vuplus.com/openembedded/${DISTRO_VERSION}/vuplus/${MACHINE}/feeds/stable"
+
+# If we're using an .ipk based rootfs, we want to have opkg-nogpg installed so postinst script can run
+IPKG_VARIANT = "opkg-nogpg"
+
+
+# for sane-toolchain.inc:
+LIBC ?= "eglibc"
+#LIBC ?= "glibc"
+PREFERRED_BINUTILS ?= "2.18.50.0.7"
+PREFERRED_GCC_VERSION ?= "4.1.1"
+
+
+PREFERRED_VERSION_automake ?= "1.10.2"
+PREFERRED_VERSION_automake-native ?= "1.10.2"
+#PREFERRED_VERSION_busybox ?= "1.13.2"
+PREFERRED_VERSION_busybox ?= "1.15.3"
+PREFERRED_VERSION_libsigc++-1.2 ?= "1.2.5"
+#PREFERRED_VERSION_linux-libc-headers ?= "2.6.23"
+#PREFERRED_VERSION_linux-libc-headers ?= "2.6.12.0"
+PREFERRED_VERSION_linux-libc-headers ?= "2.6.18"
+PREFERRED_VERSION_swig-native ?= "1.3.39"
+PREFERRED_VERSION_wpa-supplicant ?= "0.6.7"
+PREFERRED_VERSION_samba = "3.2.8"
+#PREFERRED_VERSION_samba = "3.0.24"
+PREFERRED_VERSION_ushare = "1.1a"
+#PREFERRED_VERSION_liboil = "0.3.14"
+PREFERRED_VERSION_hdparm = "6.6"
+
+PREFERRED_PROVIDER_avahi = "avahi"
+PREFERRED_PROVIDER_opkg = "opkg-nogpg"
+PREFERRED_PROVIDER_initscripts = "initscripts-vuplus"
+PREFERRED_PROVIDER_virtual/db = "db"
+PREFERRED_PROVIDER_virtual/db-native = "db-native"
+PREFERRED_PROVIDER_bluez-libs = "bluez-libs"
+PREFERRED_PROVIDER_libfribidi = "libfribidi"
+
+PREFERRED_PROVIDER_virtual/javac-native = "ecj-bootstrap-native"
+PREFERRED_PROVIDER_virtual/java-native = "jamvm-native"
+PREFERRED_PROVIDER_virtual/java-initial = "jamvm-initial"
+
+PREFERRED_PROVIDER_classpath-native = "classpath-minimal"
+PREFERRED_PROVIDER_classpath = "classpath-minimal"
+
+PREFERRED_VERSION_jamvm-initial = "1.4.5"
+PREFERRED_VERSION_classpath-initial = "0.93"
+
+PREFERRED_VERSION_libecj-bootstrap = "3.4"
+
+PREFERRED_VERSION_jamvm-native = "1.5.3"
+PREFERRED_VERSION_classpath-native = "0.98"
+
+PREFERRED_VERSION_jamvm = "1.5.3"
+PREFERRED_VERSION_classpath = "0.98"
+
+SRCREV_pn-opkg = "455"
+
+require conf/distro/include/sane-srcdates.inc
+require conf/distro/include/sane-srcrevs.inc
+require conf/distro/include/sane-toolchain.inc
+require conf/distro/include/sane-feed-ipk.inc
+
+
+#
+PREFERRED_VERSION_autoconf-native = "2.61"
+
+
+#oe complaint
+PREFERRED_PROVIDER_virtual/libqte2 = "qte"
+
+
+# glibc:
+#PREFERRED_PROVIDER_virtual/libiconv ?= "glibc"
+#PREFERRED_PROVIDER_virtual/libintl ?= "glibc"
+#PREFERRED_PROVIDER_virtual/libc ?= "glibc"
+#PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}libc-initial ?= "glibc-initial"
+#PREFERRED_PROVIDER_linux-libc-headers ?= "linux-libc-headers"
+
+# Virtuals:
+#PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}binutils = "binutils-cross"
+#PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc-initial = "gcc-cross-initial"
+#PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc-intermediate = "gcc-cross-intermediate"
+#PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc = "gcc-cross"
+#PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}g++ = "gcc-cross"
+
+# hostap stuff, we prefer the in-kernel modules, but those don't work for all machines
+#PREFERRED_PROVIDER_hostap-conf                      ?= "hostap-conf"
+#PREFERRED_PROVIDER_hostap-modules_h2200             ?= "hostap-modules"
+#PREFERRED_PROVIDER_hostap-modules_hx4700            ?= "hostap-modules"
+
+#PREFERRED_PROVIDER_virtual/db           ?= "db"
+#PREFERRED_PROVIDER_virtual/db-native    ?= "db-native"
+#PREFERRED_PROVIDER_virtual/libsdl       ?= "libsdl-x11"
+#PREFERRED_PROVIDER_virtual/libx11       ?= "libx11"
+#PREFERRED_PROVIDER_virtual/xserver      ?= "xserver-kdrive"
+
+# Others:
+#PREFERRED_PROVIDER_linux-libc-headers = "linux-libc-headers"
+#PREFERRED_PROVIDER_dbus-glib             = "dbus-glib"
+#PREFERRED_PROVIDER_esound               ?= "pulseaudio"
+#PREFERRED_PROVIDER_gconf                ?= "gconf-dbus"
+#PREFERRED_PROVIDER_gnome-vfs            ?= "gnome-vfs"
+#PREFERRED_PROVIDER_gnome-vfs-plugin-file ?= "gnome-vfs"
+#PREFERRED_PROVIDER_tslib                ?= "tslib"
+#PREFERRED_PROVIDER_tslib-conf           ?= "tslib"
+#PREFERRED_PROVIDER_libgpewidget         ?= "libgpewidget"
+#PREFERRED_PROVIDER_ntp                  ?= "ntp"
+#PREFERRED_PROVIDER_hotplug               = "udev"
+#PREFERRED_PROVIDER_libxss                = "libxss"
+#PREFERRED_PROVIDER_bluez-utils-dbus      = "bluez-utils"
+#PREFERRED_PROVIDER_bluez-libs            = "bluez4"
+
+# we don't ship gtk-directfb by default
+#PREFERRED_PROVIDER_gtk+                   ?= "gtk+"
+#PREFERRED_PROVIDER_gdk-pixbuf-loader-ani  ?= "gtk+"
+#PREFERRED_PROVIDER_gdk-pixbuf-loader-bmpg ?= "gtk+"
+#PREFERRED_PROVIDER_gdk-pixbuf-loader-gif  ?= "gtk+"
+#PREFERRED_PROVIDER_gdk-pixbuf-loader-ico  ?= "gtk+"
+#PREFERRED_PROVIDER_gdk-pixbuf-loader-jpeg ?= "gtk+"
+#PREFERRED_PROVIDER_gdk-pixbuf-loader-pcx  ?= "gtk+"
+#PREFERRED_PROVIDER_gdk-pixbuf-loader-png  ?= "gtk+"
+#PREFERRED_PROVIDER_gdk-pixbuf-loader-pnm  ?= "gtk+"
+#PREFERRED_PROVIDER_gdk-pixbuf-loader-ras  ?= "gtk+"
+#PREFERRED_PROVIDER_gdk-pixbuf-loader-tga  ?= "gtk+"
+#PREFERRED_PROVIDER_gdk-pixbuf-loader-wbmp ?= "gtk+"
+#PREFERRED_PROVIDER_gdk-pixbuf-loader-xbm  ?= "gtk+"
+#PREFERRED_PROVIDER_gdk-pixbuf-loader-xpm  ?= "gtk+"
+
+
diff --git a/conf/machine/bm750.conf b/conf/machine/bm750.conf
new file mode 100644 (file)
index 0000000..21d3de6
--- /dev/null
@@ -0,0 +1,83 @@
+#@TYPE: Machine
+#@NAME: vuduo
+#@DESCRIPTION: Machine configuration for the VuPlus
+
+TARGET_ARCH = "mipsel"
+
+PREFERRED_PROVIDER_virtual/kernel = "linux-${MACHINE}"
+
+
+MACHINE_ESSENTIAL_EXTRA_RDEPENDS = "vuplus-dvb-modules"
+
+MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "kernel vuplus-dvb-modules \
+       kernel-module-cifs      kernel-module-exportfs  kernel-module-isofs \
+       kernel-module-reiserfs  \
+       kernel-module-sr-mod    kernel-module-usb-storage \
+       kernel-module-cdrom \
+       kernel-module-snd-pcm kernel-module-snd \
+       kernel-module-msdos kernel-module-vfat kernel-module-fat \
+       kernel-module-libata kernel-module-ntfs kernel-module-sata-svw \
+       kernel-module-nls-base kernel-module-nls-iso8859-1 kernel-module-nls-cp437 \
+       kernel-module-i2c-core kernel-module-firmware-class kernel-module-input kernel-module-evdev \
+       kernel-module-xfs"
+
+TARGET_FPU = "soft"
+#TARGET_FPU = "hard"
+
+# used by sysvinit_2
+#SERIAL_CONSOLE = "115200 ttyS0"
+
+
+MACHINE_FEATURES += "kernel26"
+
+TARGET_CC_ARCH = "-march=mips32"
+
+
+#PREFERRED_VERSION_linux-libc-headers = "2.6.18"
+
+DISTRO_FEATURES += " mplt"
+
+
+
+
+PREFERRED_PROVIDER_task-vuplus-dvbapi = "task-vuplus-dvbapi3"
+PREFERRED_PROVIDER_task-vuplus-ui = "task-vuplus-enigma2"
+
+
+
+
+
+#GLIBC_ADDONS = "nptl" which will be set at glibc_xxx.bb. Setting here causes a configure error.
+GLIBC_ADDONS ?= "ports,nptl,libidn"
+GLIBC_EXTRA_OECONF = "--disable-profile --with-tls --without-fp --with-__thread"
+
+PREFERRED_PROVIDER_xserver = "xserver-kdrive"
+
+EXTRA_IMAGEDEPENDS += "vuplus-makenfi-native"
+
+MACHINE_FEATURES += "alsa pci"
+
+
+EXTRA_IMAGECMD_jffs2 = " --eraseblock=0x20000 -n -l "
+IMAGE_CMD_jffs2 = " \
+       cp ${IMAGE_ROOTFS}/boot/vmlinux.gz ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.vmlinux.gz; \
+       rm -f ${IMAGE_ROOTFS}/boot/vmlinux.gz; \
+       mkfs.jffs2 --root=${IMAGE_ROOTFS}/boot --faketime \
+       --disable-compressor=lzo --compression-mode=size \
+       --output=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.boot.jffs2 \
+       ${EXTRA_IMAGECMD}; rm -rf ${IMAGE_ROOTFS}/boot/*; \
+       rm -rf ${IMAGE_ROOTFS}/tmp/*; \
+       mkfs.jffs2 --root=${IMAGE_ROOTFS} \
+       --disable-compressor=lzo --compression-mode=size \
+       --output=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 \
+       ${EXTRA_IMAGECMD}; \
+       vfi3 ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.boot.jffs2 ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.vmlinux.gz > ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.nfi; \
+       mkdir -p ${DEPLOY_DIR_IMAGE}/vuplus/duo; \
+       cp ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 ${DEPLOY_DIR_IMAGE}/vuplus/duo/root_cfe_auto.jffs2; \
+       cp ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.vmlinux.gz ${DEPLOY_DIR_IMAGE}/vuplus/duo/kernel_cfe_auto.bin; \
+       cp ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.boot.jffs2 ${DEPLOY_DIR_IMAGE}/vuplus/duo/boot_cfe_auto.jffs2; \
+       cd ${DEPLOY_DIR_IMAGE}; \
+       rm -f usb_upgrade.zip; \
+       zip duo_usb_upgrade.zip vuplus/duo/*; \
+       rm -rf vuplus; \       
+"
diff --git a/conf/machine/vusolo.conf b/conf/machine/vusolo.conf
new file mode 100644 (file)
index 0000000..8bd02ee
--- /dev/null
@@ -0,0 +1,83 @@
+#@TYPE: Machine
+#@NAME: vusolo
+#@DESCRIPTION: Machine configuration for the VuPlus
+
+TARGET_ARCH = "mipsel"
+
+PREFERRED_PROVIDER_virtual/kernel = "linux-${MACHINE}"
+
+
+MACHINE_ESSENTIAL_EXTRA_RDEPENDS = "vuplus-dvb-modules"
+
+MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "kernel \
+       kernel-module-cifs      kernel-module-exportfs  kernel-module-isofs \
+       kernel-module-reiserfs  \
+       kernel-module-sr-mod kernel-module-usb-storage \
+       kernel-module-cdrom \
+       kernel-module-snd-pcm kernel-module-snd \
+       kernel-module-msdos kernel-module-vfat kernel-module-fat \
+       kernel-module-ntfs \
+       kernel-module-nls-base kernel-module-nls-iso8859-1 kernel-module-nls-cp437 kernel-module-nls-utf8 \
+       kernel-module-i2c-core kernel-module-firmware-class kernel-module-input kernel-module-evdev \
+       kernel-module-xfs"
+
+TARGET_FPU = "soft"
+
+# used by sysvinit_2
+#SERIAL_CONSOLE = "115200 ttyS0"
+
+
+MACHINE_FEATURES += "kernel26"
+
+TARGET_CC_ARCH = "-march=mips32"
+
+
+#PREFERRED_VERSION_linux-libc-headers = "2.6.18"
+
+DISTRO_FEATURES += " mplt"
+
+
+
+
+PREFERRED_PROVIDER_task-vuplus-dvbapi = "task-vuplus-dvbapi3"
+PREFERRED_PROVIDER_task-vuplus-ui = "task-vuplus-enigma2"
+
+
+
+
+
+#GLIBC_ADDONS = "nptl" which will be set at glibc_xxx.bb. Setting here causes a configure error.
+GLIBC_ADDONS ?= "ports,nptl,libidn"
+GLIBC_EXTRA_OECONF = "--disable-profile --with-tls --without-fp --with-__thread"
+
+PREFERRED_PROVIDER_xserver = "xserver-kdrive"
+
+EXTRA_IMAGEDEPENDS += "vuplus-makenfi-native"
+
+MACHINE_FEATURES += "alsa pci"
+
+
+EXTRA_IMAGECMD_jffs2 = " --eraseblock=0x20000 -n -l "
+IMAGE_CMD_jffs2 = " \
+       cp ${IMAGE_ROOTFS}/boot/vmlinux.gz ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.vmlinux.gz; \
+       rm -f ${IMAGE_ROOTFS}/boot/vmlinux.gz; \
+       mkfs.jffs2 --root=${IMAGE_ROOTFS}/boot --faketime \
+       --disable-compressor=lzo --compression-mode=size \
+       --output=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.boot.jffs2 \
+       ${EXTRA_IMAGECMD}; rm -rf ${IMAGE_ROOTFS}/boot/*; \
+       rm -rf ${IMAGE_ROOTFS}/tmp/*; \
+       mkfs.jffs2 --root=${IMAGE_ROOTFS} \
+       --disable-compressor=lzo --compression-mode=size \
+       --output=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 \
+       ${EXTRA_IMAGECMD}; \
+       vfi3 ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.boot.jffs2 ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.vmlinux.gz > ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.nfi; \
+        mkdir -p ${DEPLOY_DIR_IMAGE}/vuplus/solo; \
+        cp ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 ${DEPLOY_DIR_IMAGE}/vuplus/solo/root_cfe_auto.jffs2; \
+        cp ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.vmlinux.gz ${DEPLOY_DIR_IMAGE}/vuplus/solo/kernel_cfe_auto.bin; \
+        cp ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.boot.jffs2 ${DEPLOY_DIR_IMAGE}/vuplus/solo/boot_cfe_auto.jffs2; \
+        cd ${DEPLOY_DIR_IMAGE}; \
+        rm -f usb_upgrade.zip; \
+        zip solo_usb_upgrade.zip vuplus/solo/*; \
+        rm -rf vuplus; \ 
+       "
+
old mode 100644 (file)
new mode 100755 (executable)
index 28254d7..a11c9b2
@@ -4,7 +4,13 @@ LICENSE = "GPL"
 PR = "r0"
 PV = "0.8+cvs${SRCDATE}"
 SRCDATE = "20100220"
+
+PR_vuplus = "r1"
+PV_vuplus = "0.8cvs${SRCDATE}"
+SRCDATE_vuplus = "20090625"
 SRC_URI="cvs://anonymous@cvs.schwerkraft.elitedvb.net/cvsroot/aio-grab;module=aio-grab;method=pserver"
+SRC_URI_append_vuplus = "\
+       file://aio-grab_vuplus.patch;patch=1"
 
 S = "${WORKDIR}/aio-grab"
 
diff --git a/recipes/aio-grab/aio-grab/aio-grab_vuplus.patch b/recipes/aio-grab/aio-grab/aio-grab_vuplus.patch
new file mode 100755 (executable)
index 0000000..6d44241
--- /dev/null
@@ -0,0 +1,67 @@
+--- aio-grab/main.c    2009-06-26 01:13:25.000000000 +0900
++++ aio-grab/main3.c   2010-02-02 09:19:06.000000000 +0900
+@@ -85,8 +85,8 @@
+ void combine(unsigned char *output, unsigned char *video, unsigned char *osd, unsigned char *osd_alpha, int xres, int yres);
+ char* upcase(char* mixedstr);
+-enum {UNKNOWN,PALLAS,VULCAN,XILLEON,BRCM7401,BRCM4380};
+-char *stb_name[]={"unknown","Pallas","Vulcan","Xilleon","Brcm7401","Brcm4380"};
++enum {UNKNOWN,PALLAS,VULCAN,XILLEON,BRCM7401,BRCM4380, VUPLUSDUO, VUPLUSSOLO};
++char *stb_name[]={"unknown","Pallas","Vulcan","Xilleon","Brcm7401","Brcm4380", "VuplusDuo", "VuplusSolo"};
+ int stb_type=UNKNOWN;
+ // main program
+@@ -123,12 +123,27 @@
+       pclose(pipe);
+       if (stb_type == BRCM7401) // Bcrm7401 + Bcrm4380 use the same framebuffer string, so fall back to /proc/cpuinfO for detecting DM8000
+       {
+-              pipe=popen("cat /proc/cpuinfo","r");
+-              while (fgets(buf,sizeof(buf),pipe))
++              pipe=popen("cat /proc/stb/info/version","r");
++              memset(buf, 0, sizeof(buf));
++              fgets(buf,4,pipe);
++
++              printf("%s\n", buf);
++
++              if(!strcmp(buf, "120"))
++                      stb_type=VUPLUSDUO;
++              else if(!strcmp(buf, "140"))
++                      stb_type=VUPLUSSOLO;                            
++              pclose(pipe);
++
++              if(stb_type == UNKNOWN)
+               {
+-                      if (strstr(upcase(buf),"BRCM4380")) {stb_type=BRCM4380;}
++                      pipe=popen("cat /proc/cpuinfo","r");
++                      while (fgets(buf,sizeof(buf),pipe))
++                      {
++                              if (strstr(upcase(buf),"BRCM4380")) {stb_type=BRCM4380;}
++                      }
++                      pclose(pipe);
+               }
+-              pclose(pipe);
+       }
+       if (stb_type == UNKNOWN)
+       {
+@@ -439,6 +454,21 @@
+ {
+       printf("Grabbing Video ...\n");
+       
++      if(stb_type == VUPLUSSOLO || stb_type == VUPLUSDUO)
++      {
++              
++              int fd_video = open("/dev/dvb/adapter0/video0", O_RDONLY);
++              if (fd_video < 0)
++              {
++                      printf("could not open video device");
++                      return;
++              }        
++              
++              int r = read(fd_video, video, 1920 * 1080 * 3 );
++              *xres = 1920;
++              *yres = 1080;
++              return;
++      }
+       int mem_fd;
+       //unsigned char *memory;
+       void *memory;
old mode 100644 (file)
new mode 100755 (executable)
index 38f13e1..1aebbcc
@@ -15,6 +15,7 @@ SRC_URI = "ftp://ftp.alsa-project.org/pub/lib/alsa-lib-${PV}.tar.bz2 \
           file://fix_libmath.patch;patch=1 \
          "
 SRC_URI_append_opendreambox = " file://asound.conf"
+SRC_URI_append_vuplus = " file://asound.conf"
 
 inherit autotools pkgconfig
 
@@ -39,12 +40,18 @@ do_install_append_opendreambox() {
        install -m 0644 ${WORKDIR}/asound.conf ${D}${sysconfdir}/asound.conf
 }
 
+do_install_append_vuplus() {
+       install -d ${D}${sysconfdir}
+       install -m 0644 ${WORKDIR}/asound.conf ${D}${sysconfdir}/asound.conf
+}
+
 PACKAGES =+ "alsa-server libasound alsa-conf-base alsa-conf alsa-doc alsa-dev"
 FILES_${PN}-dbg += "${libdir}/alsa-lib/*/.debu*"
 FILES_libasound = "${libdir}/libasound.so.*"
 FILES_alsa-server = "${bindir}/*"
 FILES_alsa-conf = "${datadir}/alsa/"
 FILES_alsa-conf_opendreambox = "${datadir}/alsa/ ${sysconfdir}/asound.conf"
+FILES_alsa-conf_vuplus = "${datadir}/alsa/ ${sysconfdir}/asound.conf"
 FILES_alsa-dev += "${libdir}/pkgconfig/ /usr/include/ ${datadir}/aclocal/*"
 FILES_alsa-conf-base = "\
 ${datadir}/alsa/alsa.conf \
old mode 100644 (file)
new mode 100755 (executable)
index d730117..ae314ea
@@ -18,6 +18,11 @@ SRC_URI_append_opendreambox = " \
            file://auto.network \
            file://autofs"
 
+SRC_URI_append_vuplus = " \
+           file://auto.master \
+           file://auto.network \
+           file://autofs"
+
 PR = "${INC_PR}"
 
 inherit update-rc.d
@@ -36,3 +41,10 @@ do_install_append_opendreambox () {
        install ${WORKDIR}/auto.master ${D}${sysconfdir}/auto.master
        install ${WORKDIR}/auto.network ${D}${sysconfdir}/auto.network
 }
+
+do_install_append_vuplus () {
+       install -d ${D}${sysconfdir}/init.d
+       install ${WORKDIR}/autofs ${D}${sysconfdir}/init.d
+       install ${WORKDIR}/auto.master ${D}${sysconfdir}/auto.master
+       install ${WORKDIR}/auto.network ${D}${sysconfdir}/auto.network
+}
old mode 100644 (file)
new mode 100755 (executable)
index f699318..12c6485
@@ -6,9 +6,11 @@ PRIORITY = "optional"
 LICENSE = "GPL"
 DEPENDS = "expat virtual/libintl libdaemon dbus glib-2.0"
 DEPENDS_append_opendreambox = " libnss-mdns"
+DEPENDS_append_vuplus = " libnss-mdns"
 
 # uclibc has no nss
-RRECOMMENDS_avahi-daemon_append_libc-glibc = " ${@base_conditional('DISTRO', 'opendreambox', 'libavahi-client zeroconf', 'libnss-mdns', d)}"
+#RRECOMMENDS_avahi-daemon_append_libc-glibc = " ${@base_conditional('DISTRO', 'opendreambox', 'libavahi-client zeroconf', 'libnss-mdns', d)}"
+RRECOMMENDS_avahi-daemon_append_libc-glibc = " ${@base_conditional('DISTRO', 'vuplus', 'libavahi-client zeroconf', 'libnss-mdns', d)}"
 RDEPENDS_avahi-daemon += "sysvinit-pidof update-rc.d"
 RDEPENDS_avahi-autoipd += "update-rc.d"
 
@@ -65,9 +67,11 @@ INITSCRIPT_PACKAGES = "avahi-daemon avahi-dnsconfd"
 INITSCRIPT_NAME_avahi-daemon = "avahi-daemon"
 INITSCRIPT_PARAMS_avahi-daemon = "defaults 21 19"
 INITSCRIPT_PARAMS_avahi-daemon_opendreambox = "start 21 S 2 3 5 . stop 19 0 1 6 ."
+INITSCRIPT_PARAMS_avahi-daemon_vuplus = "start 21 S 2 3 5 . stop 19 0 1 6 ."
 INITSCRIPT_NAME_avahi-dnsconfd = "avahi-dnsconfd"
 INITSCRIPT_PARAMS_avahi-dnsconfd = "defaults 22 19"
 INITSCRIPT_PARAMS_avahi-dnsconfd_opendreambox = "start 22 S 2 3 5 . stop 19 0 1 6 ."
+INITSCRIPT_PARAMS_avahi-dnsconfd_vuplus = "start 22 S 2 3 5 . stop 19 0 1 6 ."
 
 # At the time the postinst runs, dbus might not be setup so only restart if running
 
diff --git a/recipes/base-files/base-files/bm750/fstab b/recipes/base-files/base-files/bm750/fstab
new file mode 100755 (executable)
index 0000000..5e15a51
--- /dev/null
@@ -0,0 +1,10 @@
+rootfs               /                    auto       defaults              1 1
+proc                 /proc                proc       defaults              0 0
+devpts               /dev/pts             devpts     mode=0620,gid=5       0 0
+usbdevfs             /proc/bus/usb        usbfs      defaults              0 0
+/dev/mtdblock2      /boot                jffs2      ro                    0 0
+tmpfs                /var                 tmpfs      defaults              0 0
+tmpfs                /tmp                 tmpfs      defaults              0 0
+tmpfs                /dev/shm             tmpfs      mode=0777             0  0
+/dev/sda1            /media/hdd           auto       defaults              0 0
+
diff --git a/recipes/base-files/base-files/bm750/profile b/recipes/base-files/base-files/bm750/profile
new file mode 100644 (file)
index 0000000..a4c1694
--- /dev/null
@@ -0,0 +1,32 @@
+# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
+# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
+
+PATH="/usr/local/bin:/usr/bin:/bin"
+EDITOR="/bin/vi"       # needed for packages like cron
+TERM="vt100"           # Basic terminal capab. For screen etc.
+
+if [ ! -e /etc/localtime ]; then
+       TZ="UTC"                # Time Zone. Look at http://theory.uwinnipeg.ca/gnu/glibc/libc_303.html 
+                               # for an explanation of how to set this to your local timezone.
+       export TZ
+fi
+
+if [ "`id -u`" -eq 0 ]; then
+   PATH=$PATH:/usr/local/sbin:/usr/sbin:/sbin:
+fi
+if [ "$PS1" ]; then
+# works for bash and ash (no other shells known to be in use here)
+   PS1='\u@\h:\w\$ '
+fi
+
+if [ -d /etc/profile.d ]; then
+  for i in `ls /etc/profile.d/`; do
+    . /etc/profile.d/$i
+  done
+  unset i
+fi
+
+export PATH PS1 OPIEDIR QPEDIR QTDIR EDITOR TERM
+
+umask 022
+
diff --git a/recipes/base-files/base-files/vusolo/fstab b/recipes/base-files/base-files/vusolo/fstab
new file mode 100755 (executable)
index 0000000..5e15a51
--- /dev/null
@@ -0,0 +1,10 @@
+rootfs               /                    auto       defaults              1 1
+proc                 /proc                proc       defaults              0 0
+devpts               /dev/pts             devpts     mode=0620,gid=5       0 0
+usbdevfs             /proc/bus/usb        usbfs      defaults              0 0
+/dev/mtdblock2      /boot                jffs2      ro                    0 0
+tmpfs                /var                 tmpfs      defaults              0 0
+tmpfs                /tmp                 tmpfs      defaults              0 0
+tmpfs                /dev/shm             tmpfs      mode=0777             0  0
+/dev/sda1            /media/hdd           auto       defaults              0 0
+
diff --git a/recipes/base-files/base-files/vusolo/profile b/recipes/base-files/base-files/vusolo/profile
new file mode 100644 (file)
index 0000000..a4c1694
--- /dev/null
@@ -0,0 +1,32 @@
+# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
+# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
+
+PATH="/usr/local/bin:/usr/bin:/bin"
+EDITOR="/bin/vi"       # needed for packages like cron
+TERM="vt100"           # Basic terminal capab. For screen etc.
+
+if [ ! -e /etc/localtime ]; then
+       TZ="UTC"                # Time Zone. Look at http://theory.uwinnipeg.ca/gnu/glibc/libc_303.html 
+                               # for an explanation of how to set this to your local timezone.
+       export TZ
+fi
+
+if [ "`id -u`" -eq 0 ]; then
+   PATH=$PATH:/usr/local/sbin:/usr/sbin:/sbin:
+fi
+if [ "$PS1" ]; then
+# works for bash and ash (no other shells known to be in use here)
+   PS1='\u@\h:\w\$ '
+fi
+
+if [ -d /etc/profile.d ]; then
+  for i in `ls /etc/profile.d/`; do
+    . /etc/profile.d/$i
+  done
+  unset i
+fi
+
+export PATH PS1 OPIEDIR QPEDIR QTDIR EDITOR TERM
+
+umask 022
+
old mode 100644 (file)
new mode 100755 (executable)
index 620bd39..aabba45
@@ -2,6 +2,7 @@ DESCRIPTION = "Miscellaneous files for the base system."
 SECTION = "base"
 PRIORITY = "required"
 PR = "r91"
+
 LICENSE = "GPL"
 
 SRC_URI = " \
@@ -45,7 +46,6 @@ dirs755 = "/bin /boot /dev ${sysconfdir} ${sysconfdir}/default \
           /mnt /media /media/card /media/cf /media/net /media/ram \
           /media/union /media/realroot /media/hdd \
           /media/mmc1"
-
 dirs755_micro = "/dev /proc /sys ${sysconfdir}"
 dirs2775_micro = ""
 dirs1777_micro = "/tmp"
@@ -131,7 +131,6 @@ do_install () {
        install -m 0644 ${WORKDIR}/nsswitch.conf ${D}${sysconfdir}/nsswitch.conf
 }
 
-
 do_install_append_mnci () {
        rmdir ${D}/tmp
        ln -s var/tmp ${D}/tmp
@@ -164,6 +163,13 @@ do_install_append_opendreambox() {
        ln -sf media ${D}/mnt
 }
 
+do_install_append_vuplus() {
+       rm -rf ${D}/mnt
+       rm -rf ${D}/hdd
+       ln -sf media/hdd ${D}/hdd
+       ln -sf media ${D}/mnt
+}
+
 PACKAGES = "${PN}-dbg ${PN}-doc ${PN}"
 FILES_${PN} = "/*"
 FILES_${PN}-doc = "${docdir} ${datadir}/common-licenses"
diff --git a/recipes/busybox/busybox-1.15.3/vuplus/defconfig b/recipes/busybox/busybox-1.15.3/vuplus/defconfig
new file mode 100755 (executable)
index 0000000..db027c9
--- /dev/null
@@ -0,0 +1,898 @@
+#
+# Automatically generated make config: don't edit
+# Busybox version: 1.15.3
+# Fri Apr 23 15:07:14 2010
+#
+CONFIG_HAVE_DOT_CONFIG=y
+
+#
+# Busybox Settings
+#
+
+#
+# General Configuration
+#
+# CONFIG_DESKTOP is not set
+# CONFIG_EXTRA_COMPAT is not set
+CONFIG_FEATURE_BUFFERS_USE_MALLOC=y
+# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
+# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
+CONFIG_SHOW_USAGE=y
+CONFIG_FEATURE_VERBOSE_USAGE=y
+CONFIG_FEATURE_COMPRESS_USAGE=y
+# CONFIG_FEATURE_INSTALLER is not set
+# CONFIG_LOCALE_SUPPORT is not set
+# CONFIG_FEATURE_ASSUME_UNICODE is not set
+# CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set
+CONFIG_LONG_OPTS=y
+CONFIG_FEATURE_DEVPTS=y
+# CONFIG_FEATURE_CLEAN_UP is not set
+# CONFIG_FEATURE_PIDFILE is not set
+CONFIG_FEATURE_SUID=y
+# CONFIG_FEATURE_SUID_CONFIG is not set
+# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set
+# CONFIG_SELINUX is not set
+# CONFIG_FEATURE_PREFER_APPLETS is not set
+CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
+CONFIG_FEATURE_SYSLOG=y
+CONFIG_FEATURE_HAVE_RPC=y
+
+#
+# Build Options
+#
+# CONFIG_STATIC is not set
+# CONFIG_PIE is not set
+# CONFIG_NOMMU is not set
+# CONFIG_BUILD_LIBBUSYBOX is not set
+# CONFIG_FEATURE_INDIVIDUAL is not set
+# CONFIG_FEATURE_SHARED_BUSYBOX is not set
+CONFIG_LFS=y
+CONFIG_CROSS_COMPILER_PREFIX=""
+CONFIG_EXTRA_CFLAGS=""
+
+#
+# Debugging Options
+#
+# CONFIG_DEBUG is not set
+# CONFIG_DEBUG_PESSIMIZE is not set
+# CONFIG_WERROR is not set
+CONFIG_NO_DEBUG_LIB=y
+# CONFIG_DMALLOC is not set
+# CONFIG_EFENCE is not set
+CONFIG_INCLUDE_SUSv2=y
+
+#
+# Installation Options
+#
+# CONFIG_INSTALL_NO_USR is not set
+CONFIG_INSTALL_APPLET_SYMLINKS=y
+# CONFIG_INSTALL_APPLET_HARDLINKS is not set
+# CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS is not set
+# CONFIG_INSTALL_APPLET_DONT is not set
+# CONFIG_INSTALL_SH_APPLET_SYMLINK is not set
+# CONFIG_INSTALL_SH_APPLET_HARDLINK is not set
+# CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER is not set
+CONFIG_PREFIX="./_install"
+
+#
+# Busybox Library Tuning
+#
+CONFIG_PASSWORD_MINLEN=6
+CONFIG_MD5_SIZE_VS_SPEED=2
+# CONFIG_FEATURE_FAST_TOP is not set
+# CONFIG_FEATURE_ETC_NETWORKS is not set
+CONFIG_FEATURE_EDITING=y
+CONFIG_FEATURE_EDITING_MAX_LEN=1024
+CONFIG_FEATURE_EDITING_VI=y
+CONFIG_FEATURE_EDITING_HISTORY=63
+CONFIG_FEATURE_EDITING_SAVEHISTORY=y
+CONFIG_FEATURE_TAB_COMPLETION=y
+# CONFIG_FEATURE_USERNAME_COMPLETION is not set
+CONFIG_FEATURE_EDITING_FANCY_PROMPT=y
+# CONFIG_FEATURE_EDITING_ASK_TERMINAL is not set
+CONFIG_FEATURE_NON_POSIX_CP=y
+CONFIG_FEATURE_VERBOSE_CP_MESSAGE=y
+CONFIG_FEATURE_COPYBUF_KB=64
+CONFIG_MONOTONIC_SYSCALL=y
+CONFIG_IOCTL_HEX2STR_ERROR=y
+# CONFIG_FEATURE_HWIB is not set
+
+#
+# Applets
+#
+
+#
+# Archival Utilities
+#
+# CONFIG_FEATURE_SEAMLESS_LZMA is not set
+CONFIG_FEATURE_SEAMLESS_BZ2=y
+CONFIG_FEATURE_SEAMLESS_GZ=y
+CONFIG_FEATURE_SEAMLESS_Z=y
+CONFIG_AR=y
+# CONFIG_FEATURE_AR_LONG_FILENAMES is not set
+CONFIG_BUNZIP2=y
+CONFIG_BZIP2=y
+# CONFIG_CPIO is not set
+# CONFIG_FEATURE_CPIO_O is not set
+# CONFIG_FEATURE_CPIO_P is not set
+# CONFIG_DPKG is not set
+# CONFIG_DPKG_DEB is not set
+# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
+CONFIG_GUNZIP=y
+CONFIG_GZIP=y
+# CONFIG_LZOP is not set
+# CONFIG_LZOP_COMPR_HIGH is not set
+# CONFIG_RPM2CPIO is not set
+# CONFIG_RPM is not set
+CONFIG_TAR=y
+CONFIG_FEATURE_TAR_CREATE=y
+# CONFIG_FEATURE_TAR_AUTODETECT is not set
+CONFIG_FEATURE_TAR_FROM=y
+# CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set
+# CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY is not set
+CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
+CONFIG_FEATURE_TAR_LONG_OPTIONS=y
+# CONFIG_FEATURE_TAR_UNAME_GNAME is not set
+# CONFIG_UNCOMPRESS is not set
+# CONFIG_UNLZMA is not set
+# CONFIG_FEATURE_LZMA_FAST is not set
+CONFIG_UNZIP=y
+
+#
+# Coreutils
+#
+CONFIG_BASENAME=y
+# CONFIG_CAL is not set
+CONFIG_CAT=y
+CONFIG_CATV=y
+CONFIG_CHGRP=y
+CONFIG_CHMOD=y
+CONFIG_CHOWN=y
+CONFIG_CHROOT=y
+# CONFIG_CKSUM is not set
+# CONFIG_COMM is not set
+CONFIG_CP=y
+CONFIG_CUT=y
+CONFIG_DATE=y
+CONFIG_FEATURE_DATE_ISOFMT=y
+CONFIG_DD=y
+CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
+CONFIG_FEATURE_DD_IBS_OBS=y
+CONFIG_DF=y
+# CONFIG_FEATURE_DF_FANCY is not set
+CONFIG_DIRNAME=y
+CONFIG_DOS2UNIX=y
+CONFIG_UNIX2DOS=y
+CONFIG_DU=y
+CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y
+CONFIG_ECHO=y
+CONFIG_FEATURE_FANCY_ECHO=y
+CONFIG_ENV=y
+# CONFIG_FEATURE_ENV_LONG_OPTIONS is not set
+# CONFIG_EXPAND is not set
+# CONFIG_FEATURE_EXPAND_LONG_OPTIONS is not set
+CONFIG_EXPR=y
+# CONFIG_EXPR_MATH_SUPPORT_64 is not set
+CONFIG_FALSE=y
+# CONFIG_FOLD is not set
+# CONFIG_FSYNC is not set
+CONFIG_HEAD=y
+CONFIG_FEATURE_FANCY_HEAD=y
+# CONFIG_HOSTID is not set
+CONFIG_ID=y
+# CONFIG_INSTALL is not set
+# CONFIG_FEATURE_INSTALL_LONG_OPTIONS is not set
+# CONFIG_LENGTH is not set
+CONFIG_LN=y
+CONFIG_LOGNAME=y
+CONFIG_LS=y
+CONFIG_FEATURE_LS_FILETYPES=y
+CONFIG_FEATURE_LS_FOLLOWLINKS=y
+CONFIG_FEATURE_LS_RECURSIVE=y
+CONFIG_FEATURE_LS_SORTFILES=y
+CONFIG_FEATURE_LS_TIMESTAMPS=y
+CONFIG_FEATURE_LS_USERNAME=y
+CONFIG_FEATURE_LS_COLOR=y
+CONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y
+CONFIG_MD5SUM=y
+CONFIG_MKDIR=y
+# CONFIG_FEATURE_MKDIR_LONG_OPTIONS is not set
+CONFIG_MKFIFO=y
+CONFIG_MKNOD=y
+CONFIG_MV=y
+# CONFIG_FEATURE_MV_LONG_OPTIONS is not set
+CONFIG_NICE=y
+CONFIG_NOHUP=y
+# CONFIG_OD is not set
+# CONFIG_PRINTENV is not set
+CONFIG_PRINTF=y
+CONFIG_PWD=y
+CONFIG_READLINK=y
+CONFIG_FEATURE_READLINK_FOLLOW=y
+# CONFIG_REALPATH is not set
+CONFIG_RM=y
+CONFIG_RMDIR=y
+# CONFIG_FEATURE_RMDIR_LONG_OPTIONS is not set
+CONFIG_SEQ=y
+CONFIG_SHA1SUM=y
+# CONFIG_SHA256SUM is not set
+# CONFIG_SHA512SUM is not set
+CONFIG_SLEEP=y
+CONFIG_FEATURE_FANCY_SLEEP=y
+# CONFIG_FEATURE_FLOAT_SLEEP is not set
+CONFIG_SORT=y
+CONFIG_FEATURE_SORT_BIG=y
+# CONFIG_SPLIT is not set
+# CONFIG_FEATURE_SPLIT_FANCY is not set
+# CONFIG_STAT is not set
+# CONFIG_FEATURE_STAT_FORMAT is not set
+CONFIG_STTY=y
+# CONFIG_SUM is not set
+CONFIG_SYNC=y
+# CONFIG_TAC is not set
+CONFIG_TAIL=y
+CONFIG_FEATURE_FANCY_TAIL=y
+CONFIG_TEE=y
+# CONFIG_FEATURE_TEE_USE_BLOCK_IO is not set
+CONFIG_TEST=y
+# CONFIG_FEATURE_TEST_64 is not set
+CONFIG_TOUCH=y
+CONFIG_TR=y
+# CONFIG_FEATURE_TR_CLASSES is not set
+# CONFIG_FEATURE_TR_EQUIV is not set
+CONFIG_TRUE=y
+CONFIG_TTY=y
+CONFIG_UNAME=y
+# CONFIG_UNEXPAND is not set
+# CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS is not set
+CONFIG_UNIQ=y
+# CONFIG_USLEEP is not set
+CONFIG_UUDECODE=y
+CONFIG_UUENCODE=y
+CONFIG_WC=y
+# CONFIG_FEATURE_WC_LARGE is not set
+CONFIG_WHO=y
+# CONFIG_WHOAMI is not set
+CONFIG_YES=y
+
+#
+# Common options for cp and mv
+#
+# CONFIG_FEATURE_PRESERVE_HARDLINKS is not set
+
+#
+# Common options for ls, more and telnet
+#
+CONFIG_FEATURE_AUTOWIDTH=y
+
+#
+# Common options for df, du, ls
+#
+CONFIG_FEATURE_HUMAN_READABLE=y
+
+#
+# Common options for md5sum, sha1sum
+#
+CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
+
+#
+# Console Utilities
+#
+CONFIG_CHVT=y
+CONFIG_CLEAR=y
+CONFIG_DEALLOCVT=y
+CONFIG_DUMPKMAP=y
+CONFIG_KBD_MODE=y
+CONFIG_LOADFONT=y
+CONFIG_LOADKMAP=y
+CONFIG_OPENVT=y
+CONFIG_RESET=y
+# CONFIG_RESIZE is not set
+# CONFIG_FEATURE_RESIZE_PRINT is not set
+# CONFIG_SETCONSOLE is not set
+# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set
+CONFIG_SETFONT=y
+# CONFIG_FEATURE_SETFONT_TEXTUAL_MAP is not set
+CONFIG_DEFAULT_SETFONT_DIR=""
+CONFIG_SETKEYCODES=y
+# CONFIG_SETLOGCONS is not set
+CONFIG_SHOWKEY=y
+
+#
+# Debian Utilities
+#
+CONFIG_MKTEMP=y
+# CONFIG_PIPE_PROGRESS is not set
+CONFIG_RUN_PARTS=y
+# CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS is not set
+# CONFIG_FEATURE_RUN_PARTS_FANCY is not set
+CONFIG_START_STOP_DAEMON=y
+CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
+CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y
+CONFIG_WHICH=y
+
+#
+# Editors
+#
+CONFIG_AWK=y
+# CONFIG_FEATURE_AWK_LIBM is not set
+# CONFIG_CMP is not set
+CONFIG_DIFF=y
+CONFIG_FEATURE_DIFF_BINARY=y
+CONFIG_FEATURE_DIFF_DIR=y
+# CONFIG_FEATURE_DIFF_MINIMAL is not set
+# CONFIG_ED is not set
+CONFIG_PATCH=y
+CONFIG_SED=y
+CONFIG_VI=y
+CONFIG_FEATURE_VI_MAX_LEN=4096
+CONFIG_FEATURE_VI_8BIT=y
+CONFIG_FEATURE_VI_COLON=y
+CONFIG_FEATURE_VI_YANKMARK=y
+CONFIG_FEATURE_VI_SEARCH=y
+CONFIG_FEATURE_VI_USE_SIGNALS=y
+CONFIG_FEATURE_VI_DOT_CMD=y
+# CONFIG_FEATURE_VI_READONLY is not set
+# CONFIG_FEATURE_VI_SETOPTS is not set
+# CONFIG_FEATURE_VI_SET is not set
+CONFIG_FEATURE_VI_WIN_RESIZE=y
+CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
+CONFIG_FEATURE_ALLOW_EXEC=y
+
+#
+# Finding Utilities
+#
+CONFIG_FIND=y
+CONFIG_FEATURE_FIND_PRINT0=y
+CONFIG_FEATURE_FIND_MTIME=y
+CONFIG_FEATURE_FIND_MMIN=y
+CONFIG_FEATURE_FIND_PERM=y
+CONFIG_FEATURE_FIND_TYPE=y
+CONFIG_FEATURE_FIND_XDEV=y
+CONFIG_FEATURE_FIND_MAXDEPTH=y
+CONFIG_FEATURE_FIND_NEWER=y
+CONFIG_FEATURE_FIND_INUM=y
+CONFIG_FEATURE_FIND_EXEC=y
+CONFIG_FEATURE_FIND_USER=y
+CONFIG_FEATURE_FIND_GROUP=y
+CONFIG_FEATURE_FIND_NOT=y
+CONFIG_FEATURE_FIND_DEPTH=y
+CONFIG_FEATURE_FIND_PAREN=y
+CONFIG_FEATURE_FIND_SIZE=y
+CONFIG_FEATURE_FIND_PRUNE=y
+# CONFIG_FEATURE_FIND_DELETE is not set
+CONFIG_FEATURE_FIND_PATH=y
+CONFIG_FEATURE_FIND_REGEX=y
+# CONFIG_FEATURE_FIND_CONTEXT is not set
+CONFIG_GREP=y
+CONFIG_FEATURE_GREP_EGREP_ALIAS=y
+CONFIG_FEATURE_GREP_FGREP_ALIAS=y
+CONFIG_FEATURE_GREP_CONTEXT=y
+CONFIG_XARGS=y
+CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION=y
+CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y
+CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y
+CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
+
+#
+# Init Utilities
+#
+# CONFIG_INIT is not set
+# CONFIG_FEATURE_USE_INITTAB is not set
+# CONFIG_FEATURE_KILL_REMOVED is not set
+CONFIG_FEATURE_KILL_DELAY=0
+# CONFIG_FEATURE_INIT_SCTTY is not set
+# CONFIG_FEATURE_INIT_SYSLOG is not set
+# CONFIG_FEATURE_EXTRA_QUIET is not set
+# CONFIG_FEATURE_INIT_COREDUMPS is not set
+# CONFIG_FEATURE_INITRD is not set
+# CONFIG_HALT is not set
+# CONFIG_FEATURE_CALL_TELINIT is not set
+CONFIG_TELINIT_PATH=""
+# CONFIG_MESG is not set
+
+#
+# Login/Password Management Utilities
+#
+CONFIG_FEATURE_SHADOWPASSWDS=y
+# CONFIG_USE_BB_PWD_GRP is not set
+# CONFIG_USE_BB_SHADOW is not set
+# CONFIG_USE_BB_CRYPT is not set
+# CONFIG_USE_BB_CRYPT_SHA is not set
+CONFIG_ADDGROUP=y
+# CONFIG_FEATURE_ADDGROUP_LONG_OPTIONS is not set
+CONFIG_FEATURE_ADDUSER_TO_GROUP=y
+CONFIG_DELGROUP=y
+CONFIG_FEATURE_DEL_USER_FROM_GROUP=y
+# CONFIG_FEATURE_CHECK_NAMES is not set
+CONFIG_ADDUSER=y
+CONFIG_FEATURE_ADDUSER_LONG_OPTIONS=y
+CONFIG_FIRST_SYSTEM_ID=100
+CONFIG_LAST_SYSTEM_ID=999
+CONFIG_DELUSER=y
+CONFIG_GETTY=y
+CONFIG_FEATURE_UTMP=y
+# CONFIG_FEATURE_WTMP is not set
+CONFIG_LOGIN=y
+# CONFIG_PAM is not set
+# CONFIG_LOGIN_SCRIPTS is not set
+CONFIG_FEATURE_NOLOGIN=y
+CONFIG_FEATURE_SECURETTY=y
+CONFIG_PASSWD=y
+# CONFIG_FEATURE_PASSWD_WEAK_CHECK is not set
+# CONFIG_CRYPTPW is not set
+# CONFIG_CHPASSWD is not set
+# CONFIG_SU is not set
+# CONFIG_FEATURE_SU_SYSLOG is not set
+# CONFIG_FEATURE_SU_CHECKS_SHELLS is not set
+# CONFIG_SULOGIN is not set
+# CONFIG_VLOCK is not set
+
+#
+# Linux Ext2 FS Progs
+#
+CONFIG_CHATTR=y
+CONFIG_FSCK=y
+CONFIG_LSATTR=y
+
+#
+# Linux Module Utilities
+#
+# CONFIG_MODPROBE_SMALL is not set
+# CONFIG_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE is not set
+# CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED is not set
+CONFIG_INSMOD=y
+CONFIG_RMMOD=y
+CONFIG_LSMOD=y
+# CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set
+CONFIG_MODPROBE=y
+# CONFIG_FEATURE_MODPROBE_BLACKLIST is not set
+CONFIG_DEPMOD=y
+
+#
+# Options common to multiple modutils
+#
+# CONFIG_FEATURE_2_4_MODULES is not set
+# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
+# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set
+# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
+# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
+# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set
+CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
+CONFIG_FEATURE_MODUTILS_ALIAS=y
+CONFIG_FEATURE_MODUTILS_SYMBOLS=y
+CONFIG_DEFAULT_MODULES_DIR="/lib/modules"
+CONFIG_DEFAULT_DEPMOD_FILE="modules.dep"
+
+#
+# Linux System Utilities
+#
+# CONFIG_ACPID is not set
+# CONFIG_FEATURE_ACPID_COMPAT is not set
+# CONFIG_BLKID is not set
+CONFIG_DMESG=y
+CONFIG_FEATURE_DMESG_PRETTY=y
+CONFIG_FBSET=y
+CONFIG_FEATURE_FBSET_FANCY=y
+# CONFIG_FEATURE_FBSET_READMODE is not set
+# CONFIG_FDFLUSH is not set
+# CONFIG_FDFORMAT is not set
+CONFIG_FDISK=y
+CONFIG_FDISK_SUPPORT_LARGE_DISKS=y
+CONFIG_FEATURE_FDISK_WRITABLE=y
+# CONFIG_FEATURE_AIX_LABEL is not set
+# CONFIG_FEATURE_SGI_LABEL is not set
+# CONFIG_FEATURE_SUN_LABEL is not set
+# CONFIG_FEATURE_OSF_LABEL is not set
+# CONFIG_FEATURE_FDISK_ADVANCED is not set
+# CONFIG_FINDFS is not set
+# CONFIG_FREERAMDISK is not set
+# CONFIG_FSCK_MINIX is not set
+# CONFIG_MKFS_MINIX is not set
+# CONFIG_FEATURE_MINIX2 is not set
+# CONFIG_MKFS_VFAT is not set
+# CONFIG_GETOPT is not set
+# CONFIG_FEATURE_GETOPT_LONG is not set
+CONFIG_HEXDUMP=y
+CONFIG_FEATURE_HEXDUMP_REVERSE=y
+# CONFIG_HD is not set
+# CONFIG_HWCLOCK is not set
+# CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS is not set
+# CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS is not set
+# CONFIG_IPCRM is not set
+# CONFIG_IPCS is not set
+CONFIG_LOSETUP=y
+# CONFIG_MDEV is not set
+# CONFIG_FEATURE_MDEV_CONF is not set
+# CONFIG_FEATURE_MDEV_RENAME is not set
+# CONFIG_FEATURE_MDEV_RENAME_REGEXP is not set
+# CONFIG_FEATURE_MDEV_EXEC is not set
+# CONFIG_FEATURE_MDEV_LOAD_FIRMWARE is not set
+CONFIG_MKSWAP=y
+# CONFIG_FEATURE_MKSWAP_UUID is not set
+CONFIG_MORE=y
+CONFIG_FEATURE_USE_TERMIOS=y
+# CONFIG_VOLUMEID is not set
+# CONFIG_FEATURE_VOLUMEID_EXT is not set
+# CONFIG_FEATURE_VOLUMEID_REISERFS is not set
+# CONFIG_FEATURE_VOLUMEID_FAT is not set
+# CONFIG_FEATURE_VOLUMEID_HFS is not set
+# CONFIG_FEATURE_VOLUMEID_JFS is not set
+# CONFIG_FEATURE_VOLUMEID_XFS is not set
+# CONFIG_FEATURE_VOLUMEID_NTFS is not set
+# CONFIG_FEATURE_VOLUMEID_ISO9660 is not set
+# CONFIG_FEATURE_VOLUMEID_UDF is not set
+# CONFIG_FEATURE_VOLUMEID_LUKS is not set
+# CONFIG_FEATURE_VOLUMEID_LINUXSWAP is not set
+# CONFIG_FEATURE_VOLUMEID_CRAMFS is not set
+# CONFIG_FEATURE_VOLUMEID_ROMFS is not set
+# CONFIG_FEATURE_VOLUMEID_SYSV is not set
+# CONFIG_FEATURE_VOLUMEID_OCFS2 is not set
+# CONFIG_FEATURE_VOLUMEID_LINUXRAID is not set
+CONFIG_MOUNT=y
+# CONFIG_FEATURE_MOUNT_FAKE is not set
+# CONFIG_FEATURE_MOUNT_VERBOSE is not set
+# CONFIG_FEATURE_MOUNT_HELPERS is not set
+# CONFIG_FEATURE_MOUNT_LABEL is not set
+CONFIG_FEATURE_MOUNT_NFS=y
+CONFIG_FEATURE_MOUNT_CIFS=y
+CONFIG_FEATURE_MOUNT_FLAGS=y
+CONFIG_FEATURE_MOUNT_FSTAB=y
+CONFIG_PIVOT_ROOT=y
+# CONFIG_RDATE is not set
+# CONFIG_RDEV is not set
+CONFIG_READPROFILE=y
+# CONFIG_RTCWAKE is not set
+# CONFIG_SCRIPT is not set
+# CONFIG_SCRIPTREPLAY is not set
+# CONFIG_SETARCH is not set
+CONFIG_SWAPONOFF=y
+# CONFIG_FEATURE_SWAPON_PRI is not set
+CONFIG_SWITCH_ROOT=y
+CONFIG_UMOUNT=y
+CONFIG_FEATURE_UMOUNT_ALL=y
+
+#
+# Common options for mount/umount
+#
+CONFIG_FEATURE_MOUNT_LOOP=y
+# CONFIG_FEATURE_MTAB_SUPPORT is not set
+
+#
+# Miscellaneous Utilities
+#
+# CONFIG_ADJTIMEX is not set
+# CONFIG_BBCONFIG is not set
+# CONFIG_BEEP is not set
+CONFIG_FEATURE_BEEP_FREQ=0
+CONFIG_FEATURE_BEEP_LENGTH_MS=0
+# CONFIG_CHAT is not set
+# CONFIG_FEATURE_CHAT_NOFAIL is not set
+# CONFIG_FEATURE_CHAT_TTY_HIFI is not set
+# CONFIG_FEATURE_CHAT_IMPLICIT_CR is not set
+# CONFIG_FEATURE_CHAT_SWALLOW_OPTS is not set
+# CONFIG_FEATURE_CHAT_SEND_ESCAPES is not set
+# CONFIG_FEATURE_CHAT_VAR_ABORT_LEN is not set
+# CONFIG_FEATURE_CHAT_CLR_ABORT is not set
+# CONFIG_CHRT is not set
+CONFIG_CROND=y
+# CONFIG_FEATURE_CROND_D is not set
+# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
+CONFIG_FEATURE_CROND_DIR=""
+CONFIG_CRONTAB=y
+# CONFIG_DC is not set
+# CONFIG_FEATURE_DC_LIBM is not set
+# CONFIG_DEVFSD is not set
+# CONFIG_DEVFSD_MODLOAD is not set
+# CONFIG_DEVFSD_FG_NP is not set
+# CONFIG_DEVFSD_VERBOSE is not set
+# CONFIG_FEATURE_DEVFS is not set
+# CONFIG_DEVMEM is not set
+CONFIG_EJECT=y
+CONFIG_FEATURE_EJECT_SCSI=y
+# CONFIG_FBSPLASH is not set
+# CONFIG_FLASH_LOCK is not set
+# CONFIG_FLASH_UNLOCK is not set
+# CONFIG_FLASH_ERASEALL is not set
+# CONFIG_IONICE is not set
+# CONFIG_INOTIFYD is not set
+# CONFIG_LAST is not set
+# CONFIG_FEATURE_LAST_SMALL is not set
+# CONFIG_FEATURE_LAST_FANCY is not set
+CONFIG_LESS=y
+CONFIG_FEATURE_LESS_MAXLINES=9999999
+CONFIG_FEATURE_LESS_BRACKETS=y
+CONFIG_FEATURE_LESS_FLAGS=y
+# CONFIG_FEATURE_LESS_MARKS is not set
+# CONFIG_FEATURE_LESS_REGEXP is not set
+# CONFIG_FEATURE_LESS_WINCH is not set
+# CONFIG_FEATURE_LESS_DASHCMD is not set
+# CONFIG_FEATURE_LESS_LINENUMS is not set
+# CONFIG_HDPARM is not set
+# CONFIG_FEATURE_HDPARM_GET_IDENTITY is not set
+# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set
+# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set
+# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set
+# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set
+# CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set
+CONFIG_MAKEDEVS=y
+# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
+CONFIG_FEATURE_MAKEDEVS_TABLE=y
+# CONFIG_MAN is not set
+# CONFIG_MICROCOM is not set
+# CONFIG_MOUNTPOINT is not set
+# CONFIG_MT is not set
+# CONFIG_RAIDAUTORUN is not set
+# CONFIG_READAHEAD is not set
+# CONFIG_RUNLEVEL is not set
+# CONFIG_RX is not set
+# CONFIG_SETSID is not set
+# CONFIG_STRINGS is not set
+# CONFIG_TASKSET is not set
+CONFIG_TIME=y
+# CONFIG_TIMEOUT is not set
+# CONFIG_TTYSIZE is not set
+# CONFIG_VOLNAME is not set
+# CONFIG_WATCHDOG is not set
+
+#
+# Networking Utilities
+#
+# CONFIG_FEATURE_IPV6 is not set
+# CONFIG_FEATURE_UNIX_LOCAL is not set
+# CONFIG_FEATURE_PREFER_IPV4_ADDRESS is not set
+# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set
+CONFIG_ARP=y
+# CONFIG_ARPING is not set
+# CONFIG_BRCTL is not set
+# CONFIG_FEATURE_BRCTL_FANCY is not set
+# CONFIG_FEATURE_BRCTL_SHOW is not set
+# CONFIG_DNSD is not set
+CONFIG_ETHER_WAKE=y
+# CONFIG_FAKEIDENTD is not set
+# CONFIG_FTPD is not set
+# CONFIG_FEATURE_FTP_WRITE is not set
+# CONFIG_FTPGET is not set
+# CONFIG_FTPPUT is not set
+# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set
+CONFIG_HOSTNAME=y
+# CONFIG_HTTPD is not set
+# CONFIG_FEATURE_HTTPD_RANGES is not set
+# CONFIG_FEATURE_HTTPD_USE_SENDFILE is not set
+# CONFIG_FEATURE_HTTPD_SETUID is not set
+# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set
+# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set
+# CONFIG_FEATURE_HTTPD_CGI is not set
+# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set
+# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set
+# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set
+# CONFIG_FEATURE_HTTPD_ERROR_PAGES is not set
+# CONFIG_FEATURE_HTTPD_PROXY is not set
+CONFIG_IFCONFIG=y
+CONFIG_FEATURE_IFCONFIG_STATUS=y
+# CONFIG_FEATURE_IFCONFIG_SLIP is not set
+# CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set
+CONFIG_FEATURE_IFCONFIG_HW=y
+CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y
+# CONFIG_IFENSLAVE is not set
+# CONFIG_IFPLUGD is not set
+CONFIG_IFUPDOWN=y
+CONFIG_IFUPDOWN_IFSTATE_PATH="/var/run/ifstate"
+CONFIG_FEATURE_IFUPDOWN_IP=y
+CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN=y
+# CONFIG_FEATURE_IFUPDOWN_IFCONFIG_BUILTIN is not set
+CONFIG_FEATURE_IFUPDOWN_IPV4=y
+# CONFIG_FEATURE_IFUPDOWN_IPV6 is not set
+# CONFIG_FEATURE_IFUPDOWN_MAPPING is not set
+# CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP is not set
+CONFIG_INETD=y
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set
+# CONFIG_FEATURE_INETD_RPC is not set
+CONFIG_IP=y
+CONFIG_FEATURE_IP_ADDRESS=y
+CONFIG_FEATURE_IP_LINK=y
+CONFIG_FEATURE_IP_ROUTE=y
+CONFIG_FEATURE_IP_TUNNEL=y
+# CONFIG_FEATURE_IP_RULE is not set
+# CONFIG_FEATURE_IP_SHORT_FORMS is not set
+# CONFIG_FEATURE_IP_RARE_PROTOCOLS is not set
+# CONFIG_IPADDR is not set
+# CONFIG_IPLINK is not set
+# CONFIG_IPROUTE is not set
+# CONFIG_IPTUNNEL is not set
+# CONFIG_IPRULE is not set
+# CONFIG_IPCALC is not set
+# CONFIG_FEATURE_IPCALC_FANCY is not set
+# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set
+# CONFIG_NAMEIF is not set
+# CONFIG_FEATURE_NAMEIF_EXTENDED is not set
+CONFIG_NC=y
+CONFIG_NC_SERVER=y
+CONFIG_NC_EXTRA=y
+CONFIG_NETSTAT=y
+# CONFIG_FEATURE_NETSTAT_WIDE is not set
+# CONFIG_FEATURE_NETSTAT_PRG is not set
+CONFIG_NSLOOKUP=y
+CONFIG_PING=y
+# CONFIG_PING6 is not set
+CONFIG_FEATURE_FANCY_PING=y
+# CONFIG_PSCAN is not set
+CONFIG_ROUTE=y
+# CONFIG_SLATTACH is not set
+CONFIG_TELNET=y
+CONFIG_FEATURE_TELNET_TTYPE=y
+CONFIG_FEATURE_TELNET_AUTOLOGIN=y
+CONFIG_TELNETD=y
+# CONFIG_FEATURE_TELNETD_STANDALONE is not set
+# CONFIG_TFTP is not set
+# CONFIG_TFTPD is not set
+# CONFIG_FEATURE_TFTP_GET is not set
+# CONFIG_FEATURE_TFTP_PUT is not set
+# CONFIG_FEATURE_TFTP_BLOCKSIZE is not set
+# CONFIG_TFTP_DEBUG is not set
+CONFIG_TRACEROUTE=y
+# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
+# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
+# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
+# CONFIG_APP_UDHCPD is not set
+# CONFIG_APP_DHCPRELAY is not set
+# CONFIG_APP_DUMPLEASES is not set
+# CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set
+CONFIG_DHCPD_LEASES_FILE=""
+CONFIG_APP_UDHCPC=y
+CONFIG_FEATURE_UDHCPC_ARPING=y
+# CONFIG_FEATURE_UDHCP_PORT is not set
+CONFIG_UDHCP_DEBUG=0
+# CONFIG_FEATURE_UDHCP_RFC3397 is not set
+CONFIG_UDHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script"
+CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80
+CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS="-R -b -T3 -A10"
+# CONFIG_VCONFIG is not set
+CONFIG_WGET=y
+CONFIG_FEATURE_WGET_STATUSBAR=y
+CONFIG_FEATURE_WGET_AUTHENTICATION=y
+CONFIG_FEATURE_WGET_LONG_OPTIONS=y
+# CONFIG_ZCIP is not set
+# CONFIG_TCPSVD is not set
+# CONFIG_TUNCTL is not set
+# CONFIG_FEATURE_TUNCTL_UG is not set
+# CONFIG_UDPSVD is not set
+
+#
+# Print Utilities
+#
+# CONFIG_LPD is not set
+# CONFIG_LPR is not set
+# CONFIG_LPQ is not set
+
+#
+# Mail Utilities
+#
+# CONFIG_MAKEMIME is not set
+CONFIG_FEATURE_MIME_CHARSET=""
+# CONFIG_POPMAILDIR is not set
+# CONFIG_FEATURE_POPMAILDIR_DELIVERY is not set
+# CONFIG_REFORMIME is not set
+# CONFIG_FEATURE_REFORMIME_COMPAT is not set
+# CONFIG_SENDMAIL is not set
+
+#
+# Process Utilities
+#
+CONFIG_FREE=y
+CONFIG_FUSER=y
+CONFIG_KILL=y
+CONFIG_KILLALL=y
+# CONFIG_KILLALL5 is not set
+# CONFIG_NMETER is not set
+# CONFIG_PGREP is not set
+CONFIG_PIDOF=y
+# CONFIG_FEATURE_PIDOF_SINGLE is not set
+# CONFIG_FEATURE_PIDOF_OMIT is not set
+# CONFIG_PKILL is not set
+CONFIG_PS=y
+# CONFIG_FEATURE_PS_WIDE is not set
+# CONFIG_FEATURE_PS_TIME is not set
+# CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS is not set
+# CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS is not set
+CONFIG_RENICE=y
+CONFIG_BB_SYSCTL=y
+CONFIG_TOP=y
+CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
+CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y
+CONFIG_FEATURE_TOP_SMP_CPU=y
+CONFIG_FEATURE_TOP_DECIMALS=y
+CONFIG_FEATURE_TOP_SMP_PROCESS=y
+CONFIG_FEATURE_TOPMEM=y
+CONFIG_UPTIME=y
+# CONFIG_WATCH is not set
+
+#
+# Runit Utilities
+#
+# CONFIG_RUNSV is not set
+# CONFIG_RUNSVDIR is not set
+# CONFIG_FEATURE_RUNSVDIR_LOG is not set
+# CONFIG_SV is not set
+CONFIG_SV_DEFAULT_SERVICE_DIR=""
+# CONFIG_SVLOGD is not set
+# CONFIG_CHPST is not set
+# CONFIG_SETUIDGID is not set
+# CONFIG_ENVUIDGID is not set
+# CONFIG_ENVDIR is not set
+# CONFIG_SOFTLIMIT is not set
+# CONFIG_CHCON is not set
+# CONFIG_FEATURE_CHCON_LONG_OPTIONS is not set
+# CONFIG_GETENFORCE is not set
+# CONFIG_GETSEBOOL is not set
+# CONFIG_LOAD_POLICY is not set
+# CONFIG_MATCHPATHCON is not set
+# CONFIG_RESTORECON is not set
+# CONFIG_RUNCON is not set
+# CONFIG_FEATURE_RUNCON_LONG_OPTIONS is not set
+# CONFIG_SELINUXENABLED is not set
+# CONFIG_SETENFORCE is not set
+# CONFIG_SETFILES is not set
+# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set
+# CONFIG_SETSEBOOL is not set
+# CONFIG_SESTATUS is not set
+
+#
+# Shells
+#
+CONFIG_FEATURE_SH_IS_ASH=y
+# CONFIG_FEATURE_SH_IS_HUSH is not set
+# CONFIG_FEATURE_SH_IS_NONE is not set
+CONFIG_ASH=y
+CONFIG_ASH_BASH_COMPAT=y
+CONFIG_ASH_JOB_CONTROL=y
+CONFIG_ASH_READ_NCHARS=y
+CONFIG_ASH_READ_TIMEOUT=y
+CONFIG_ASH_ALIAS=y
+CONFIG_ASH_GETOPTS=y
+CONFIG_ASH_BUILTIN_ECHO=y
+CONFIG_ASH_BUILTIN_PRINTF=y
+CONFIG_ASH_BUILTIN_TEST=y
+# CONFIG_ASH_CMDCMD is not set
+# CONFIG_ASH_MAIL is not set
+CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
+# CONFIG_ASH_RANDOM_SUPPORT is not set
+CONFIG_ASH_EXPAND_PRMT=y
+# CONFIG_HUSH is not set
+# CONFIG_HUSH_BASH_COMPAT is not set
+# CONFIG_HUSH_HELP is not set
+# CONFIG_HUSH_INTERACTIVE is not set
+# CONFIG_HUSH_JOB is not set
+# CONFIG_HUSH_TICK is not set
+# CONFIG_HUSH_IF is not set
+# CONFIG_HUSH_LOOPS is not set
+# CONFIG_HUSH_CASE is not set
+# CONFIG_HUSH_FUNCTIONS is not set
+# CONFIG_HUSH_LOCAL is not set
+# CONFIG_HUSH_EXPORT_N is not set
+# CONFIG_LASH is not set
+# CONFIG_MSH is not set
+CONFIG_SH_MATH_SUPPORT=y
+# CONFIG_SH_MATH_SUPPORT_64 is not set
+CONFIG_FEATURE_SH_EXTRA_QUIET=y
+# CONFIG_FEATURE_SH_STANDALONE is not set
+# CONFIG_FEATURE_SH_NOFORK is not set
+# CONFIG_CTTYHACK is not set
+
+#
+# System Logging Utilities
+#
+CONFIG_SYSLOGD=y
+CONFIG_FEATURE_ROTATE_LOGFILE=y
+CONFIG_FEATURE_REMOTE_LOG=y
+# CONFIG_FEATURE_SYSLOGD_DUP is not set
+CONFIG_FEATURE_IPC_SYSLOG=y
+CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
+CONFIG_LOGREAD=y
+# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set
+CONFIG_KLOGD=y
+CONFIG_LOGGER=y
diff --git a/recipes/busybox/busybox-1.15.3/vuplus/dhcp-hostname.patch b/recipes/busybox/busybox-1.15.3/vuplus/dhcp-hostname.patch
new file mode 100755 (executable)
index 0000000..f16f3fd
--- /dev/null
@@ -0,0 +1,25 @@
+diff -Naur busybox-1.11.3/networking/udhcp/dhcpc.c busybox-1.11.3_dhcp-hostname/networking/udhcp/dhcpc.c
+--- busybox-1.11.3/networking/udhcp/dhcpc.c    2008-06-25 14:51:14.000000000 +0200
++++ busybox-1.11.3_dhcp-hostname/networking/udhcp/dhcpc.c      2008-12-05 11:41:36.000000000 +0100
+@@ -145,6 +145,7 @@
+       struct timeval tv;
+       struct dhcpMessage packet;
+       fd_set rfds;
++      char hostbuf[256];      /* SUSv2: hostnames are <= 255 bytes */
+ #if ENABLE_GETOPT_LONG
+       static const char udhcpc_longopts[] ALIGN1 =
+@@ -210,6 +211,13 @@
+       USE_FEATURE_UDHCP_PORT(CLIENT_PORT = 68;)
+       client_config.interface = "eth0";
+       client_config.script = DEFAULT_SCRIPT;
++      if (gethostname (hostbuf, sizeof (hostbuf)) == 0) {
++              int len = strlen (hostbuf);
++              client_config.hostname = xmalloc (len + 2);
++              client_config.hostname[OPT_CODE] = DHCP_HOST_NAME;
++              client_config.hostname[OPT_LEN] = len;
++              strncpy(client_config.hostname + 2, hostbuf, len);
++      }
+       /* Parse command line */
+       /* Cc: mutually exclusive; O: list; -T,-t,-A take numeric param */
diff --git a/recipes/busybox/busybox-1.15.3/vuplus/hdparm_M.patch b/recipes/busybox/busybox-1.15.3/vuplus/hdparm_M.patch
new file mode 100755 (executable)
index 0000000..50feee0
--- /dev/null
@@ -0,0 +1,66 @@
+--- busybox-1.15.3-org/miscutils/hdparm.c      2009-12-12 22:13:28.000000000 +0100
++++ busybox-1.15.3/miscutils/hdparm.c  2010-02-22 21:17:06.000000000 +0100
+@@ -288,6 +288,7 @@
+       smallint set_sleepnow;
+       smallint get_powermode;
+       smallint getset_apmmode;
++      smallint getset_acoustic;
+       int xfermode_requested;
+       unsigned long dkeep;
+       unsigned long standby_requested; /* 0..255 */
+@@ -297,6 +298,7 @@
+       unsigned long wcache;
+       unsigned long doorlock;
+       unsigned long apmmode;
++      unsigned long acoustic;
+ #endif
+       IF_FEATURE_HDPARM_GET_IDENTITY(        smallint get_IDentity;)
+       IF_FEATURE_HDPARM_HDIO_TRISTATE_HWIF(  smallint getset_busstate;)
+@@ -361,6 +363,7 @@
+ #define set_sleepnow       (G.set_sleepnow           )
+ #define get_powermode      (G.get_powermode          )
+ #define getset_apmmode     (G.getset_apmmode         )
++#define getset_acoustic    (G.getset_acoustic        )
+ #define xfermode_requested (G.xfermode_requested     )
+ #define dkeep              (G.dkeep                  )
+ #define standby_requested  (G.standby_requested      )
+@@ -370,6 +373,7 @@
+ #define wcache             (G.wcache                 )
+ #define doorlock           (G.doorlock               )
+ #define apmmode            (G.apmmode                )
++#define acoustic           (G.acoustic               )
+ #define get_IDentity       (G.get_IDentity           )
+ #define getset_busstate    (G.getset_busstate        )
+ #define perform_reset      (G.perform_reset          )
+@@ -1680,6 +1684,14 @@
+               ioctl_or_warn(fd, HDIO_DRIVE_CMD, &args);
+               args[1] = 0;
+       }
++      if (getset_acoustic == IS_SET) {
++              printf(" setting AAM level to 0x%02lX (%ld)\n", acoustic, acoustic);
++              ioctl_or_warn(fd, HDIO_SET_ACOUSTIC, (int*)acoustic);
++      }
++      if (getset_acoustic) {
++              ioctl_or_warn(fd, HDIO_GET_ACOUSTIC, (unsigned long*)&parm);
++              printf(" acoustic     = %2ld (128=quiet ... 254=fast)\n", parm);
++      }
+       if (getset_wcache == IS_SET) {
+ #ifdef DO_FLUSHCACHE
+ #ifndef WIN_FLUSHCACHE
+@@ -1986,7 +1998,7 @@
+       IF_FEATURE_HDPARM_GET_IDENTITY("iI")
+       IF_FEATURE_HDPARM_HDIO_GETSET_DMA("d::")
+ #ifdef HDIO_DRIVE_CMD
+-      "S:D:P:X:K:A:L:W:CyYzZ"
++      "S:D:P:X:K:A:L:W:CyYzZM:"
+ #endif
+       IF_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF("U:")
+ #ifdef HDIO_GET_QDMA
+@@ -2026,6 +2038,7 @@
+               if (c == 'k') getset_keep      = parse_opts_0_1(&keep);
+               if (c == 'a') getset_readahead = parse_opts_0_INTMAX(&Xreadahead);
+               if (c == 'B') getset_apmmode   = parse_opts(&apmmode, 1, 255);
++              if (c == 'M') getset_acoustic  = parse_opts(&acoustic, 1, 254);
+               do_flush |= do_timings |= (c == 't');
+               do_flush |= do_ctimings |= (c == 'T');
+ #ifdef HDIO_DRIVE_CMD
diff --git a/recipes/busybox/busybox-1.15.3/vuplus/keymap_endianess.patch b/recipes/busybox/busybox-1.15.3/vuplus/keymap_endianess.patch
new file mode 100755 (executable)
index 0000000..af07734
--- /dev/null
@@ -0,0 +1,42 @@
+diff -Naur busybox-1.11.3/console-tools/dumpkmap.c busybox-1.11.3_keymap-endianess/console-tools/dumpkmap.c
+--- busybox-1.11.3/console-tools/dumpkmap.c    2008-06-25 14:51:18.000000000 +0200
++++ busybox-1.11.3_keymap-endianess/console-tools/dumpkmap.c   2008-12-05 11:36:21.000000000 +0100
+@@ -10,6 +10,7 @@
+ /* no options, no getopt */
+ #include "libbb.h"
++#include <endian.h>
+ /* From <linux/kd.h> */
+ struct kbentry {
+@@ -56,6 +57,9 @@
+                                               (char *)&ke.kb_table,
+                                               &ke.kb_value)
+                               ) {
++#if __BYTE_ORDER == __LITTLE_ENDIAN
++                                      ke.kb_value = ((ke.kb_value&0xFF) << 8) | ((ke.kb_value&0xFF00) >> 8);
++#endif
+                                       write(STDOUT_FILENO, (void*)&ke.kb_value, 2);
+                               }
+                       }
+diff -Naur busybox-1.11.3/console-tools/loadkmap.c busybox-1.11.3_keymap-endianess/console-tools/loadkmap.c
+--- busybox-1.11.3/console-tools/loadkmap.c    2008-06-25 14:51:18.000000000 +0200
++++ busybox-1.11.3_keymap-endianess/console-tools/loadkmap.c   2008-12-05 11:36:53.000000000 +0100
+@@ -9,6 +9,7 @@
+  */
+ #include "libbb.h"
++#include <endian.h>
+ #define BINARY_KEYMAP_MAGIC "bkeymap"
+@@ -49,6 +50,9 @@
+                       for (j = 0; j < NR_KEYS; j++) {
+                               ke.kb_index = j;
+                               ke.kb_table = i;
++#if __BYTE_ORDER == __LITTLE_ENDIAN
++                              ibuff[j] = ((ibuff[j]&0xFF) << 8) | ((ibuff[j]&0xFF00) >> 8);
++#endif
+                               ke.kb_value = ibuff[j];
+                               ioctl(fd, KDSKBENT, &ke);
+                       }
diff --git a/recipes/busybox/busybox-1.15.3/vuplus/nptl_task.patch b/recipes/busybox/busybox-1.15.3/vuplus/nptl_task.patch
new file mode 100755 (executable)
index 0000000..7501e2b
--- /dev/null
@@ -0,0 +1,85 @@
+--- busybox-1.15.3-org/include/libbb.h 2010-04-23 16:11:13.000000000 +0200
++++ busybox-1.15.3/include/libbb.h     2010-04-23 15:07:04.000000000 +0200
+@@ -1279,6 +1279,8 @@
+       DIR *dir;
+       uint8_t shift_pages_to_bytes;
+       uint8_t shift_pages_to_kb;
++      DIR *taskdir;
++      unsigned parentpid;
+ /* Fields are set to 0/NULL if failed to determine (or not requested) */
+       uint16_t argv_len;
+       char *argv0;
+--- busybox-1.15.3-org/libbb/procps.c  2010-04-23 16:11:13.000000000 +0200
++++ busybox-1.15.3/libbb/procps.c      2010-04-23 16:06:55.000000000 +0200
+@@ -178,7 +178,7 @@
+ {
+       struct dirent *entry;
+       char buf[PROCPS_BUFSIZE];
+-      char filename[sizeof("/proc//cmdline") + sizeof(int)*3];
++      char filename[sizeof("/proc//task//cmdline//") + sizeof(int)*6];
+       char *filename_tail;
+       long tasknice;
+       unsigned pid;
+@@ -188,11 +188,14 @@
+       if (!sp)
+               sp = alloc_procps_scan();
+-      for (;;) {
+-              entry = readdir(sp->dir);
+-              if (entry == NULL) {
+-                      free_procps_scan(sp);
+-                      return NULL;
++      for(;;) {
++              if (!sp->taskdir)
++                      break;
++              entry = readdir(sp->taskdir);
++              if(entry == NULL) {
++                      closedir(sp->taskdir);
++                      sp->taskdir = 0;
++                      break;
+               }
+               pid = bb_strtou(entry->d_name, NULL, 10);
+               if (errno)
+@@ -216,7 +219,7 @@
+               }
+ #endif
+-              filename_tail = filename + sprintf(filename, "/proc/%u/", pid);
++              filename_tail = filename + sprintf(filename, "/proc/%u/task/%u/", sp->parentpid, pid);
+               if (flags & PSSCAN_UIDGID) {
+                       if (stat(filename, &sb))
+@@ -468,6 +471,33 @@
+               break;
+       } /* for (;;) */
++      if(sp->taskdir)
++              return sp;
++
++      for (;;) {
++              entry = readdir(sp->dir);
++              if (entry == NULL) {
++                      free_procps_scan(sp);
++                      return NULL;
++              }
++              pid = bb_strtou(entry->d_name, NULL, 10);
++              if (errno)
++                      continue;
++
++              filename_tail = filename + sprintf(filename, "/proc/%u/", pid);
++
++              if (!sp->taskdir) {
++                      strcpy(filename_tail, "task");
++                      sp->taskdir = opendir(filename);
++                      if(!sp->taskdir) {
++                              // ignore processes without taskdir
++                              continue;
++                      }
++                      sp->parentpid = pid;
++                      return procps_scan(sp, flags);
++              }
++      }
++
+       return sp;
+ }
diff --git a/recipes/busybox/busybox-1.15.3/vuplus/simple.script b/recipes/busybox/busybox-1.15.3/vuplus/simple.script
new file mode 100755 (executable)
index 0000000..2e4535f
--- /dev/null
@@ -0,0 +1,80 @@
+#!/bin/sh
+
+# udhcpc script edited by Tim Riker <Tim@Rikers.org>
+
+[ -z "$1" ] && echo "Error: should be called from udhcpc" && exit 1
+
+RESOLV_CONF="/etc/resolv.conf"
+[ -n "$broadcast" ] && BROADCAST="broadcast $broadcast"
+[ -n "$subnet" ] && NETMASK="netmask $subnet"
+
+# return 0 if root is mounted on a network filesystem
+root_is_nfs() {
+       grep -qe '^/dev/root.*\(nfs\|smbfs\|ncp\|coda\) .*' /proc/mounts
+}
+
+have_bin_ip=0
+if [ -x /bin/ip ]; then
+  have_bin_ip=1
+fi
+
+case "$1" in
+       deconfig)
+               if ! root_is_nfs ; then
+                        if [ $have_bin_ip -eq 1 ]; then
+                                ip addr flush dev $interface
+                                ip link set dev $interface up
+                        else
+                                /sbin/ifconfig $interface 0.0.0.0
+                        fi
+               fi
+               ;;
+
+       renew|bound)
+                if [ $have_bin_ip -eq 1 ]; then
+                        ip addr add dev $interface local $ip/$mask $BROADCAST
+                else
+                        /sbin/ifconfig $interface $ip $BROADCAST $NETMASK
+                fi
+
+               if [ -n "$router" ] ; then
+                       if ! root_is_nfs ; then
+                                if [ $have_bin_ip -eq 1 ]; then
+                                        while ip route del default dev $interface 2>/dev/null ; do
+                                                :
+                                        done
+                                else
+                                        while route del default gw 0.0.0.0 dev $interface 2>/dev/null ; do
+                                                :
+                                        done
+                                fi
+                       fi
+
+                       metric=0
+                       if [ -e /etc/default_gw ]; then
+                               default_gw=`cat /etc/default_gw`
+                       else
+                               default_gw=$interface
+                       fi
+                       if [ "$interface" == "$default_gw" ]; then
+                               for i in $router ; do
+                                       if [ $have_bin_ip -eq 1 ]; then
+                                               ip route add default dev $interface via $i metric $((metric++)) 2>/dev/null
+                                       else
+                                               route add default gw $i dev $interface metric $((metric++)) 2>/dev/null
+                                       fi
+                               done
+                       fi
+
+               fi
+
+               echo -n > $RESOLV_CONF
+               [ -n "$domain" ] && echo search $domain >> $RESOLV_CONF
+               for i in $dns ; do
+                       echo adding dns $i
+                       echo nameserver $i >> $RESOLV_CONF
+               done
+               ;;
+esac
+
+exit 0
diff --git a/recipes/busybox/busybox-1.15.3/vuplus/syslog.conf b/recipes/busybox/busybox-1.15.3/vuplus/syslog.conf
new file mode 100755 (executable)
index 0000000..047e824
--- /dev/null
@@ -0,0 +1,9 @@
+DESTINATION="file"             # log destinations (buffer file remote)
+MARKINT=20                     # interval between --mark-- entries [min]
+REDUCE=no                      # reduced-size logging
+BUFFERSIZE=64                  # buffer: size of circular buffer [kByte]
+LOGFILE=/var/log/messages      # file: where to log
+ROTATESIZE=32                  # file: rotate log if grown beyond X [kByte] (busybox 1.2+)
+ROTATEGENS=1                   # file: keep X generations of rotated logs (busybox 1.2+)
+REMOTE=loghost:514             # remote: where to log
+FOREGROUND=no                  # run in foreground (don't use!)
old mode 100644 (file)
new mode 100755 (executable)
index 1ce17a5..90549e7
@@ -1,5 +1,6 @@
 require busybox.inc
 PR = "${INC_PR}.4"
+PR_vuplus = "${INC_PR}.2"
 
 SRC_URI = "\
   http://www.busybox.net/downloads/busybox-${PV}.tar.gz \
@@ -30,6 +31,12 @@ SRC_URI_append_opendreambox = "\
   file://keymap_endianess.patch;patch=1 \
   file://nptl_task.patch;patch=1 \
 "
+SRC_URI_append_vuplus = "\
+  file://hdparm_M.patch;patch=1 \
+  file://dhcp-hostname.patch;patch=1 \
+  file://keymap_endianess.patch;patch=1 \
+  file://nptl_task.patch;patch=1 \
+"
 
 EXTRA_OEMAKE += "V=1 ARCH=${TARGET_ARCH} CROSS_COMPILE=${TARGET_PREFIX}"
 
diff --git a/recipes/busybox/files/vuplus/hwclock.sh b/recipes/busybox/files/vuplus/hwclock.sh
new file mode 100644 (file)
index 0000000..5acfb9f
--- /dev/null
@@ -0,0 +1,74 @@
+#!/bin/sh
+# hwclock.sh Set system clock to hardware clock, according to the UTC
+#               setting in /etc/default/rcS (see also rcS(5)).
+#
+# WARNING:      If your hardware clock is not in UTC/GMT, this script
+#               must know the local time zone. This information is
+#               stored in /etc/localtime. This might be a problem if
+#               your /etc/localtime is a symlink to something in
+#               /usr/share/zoneinfo AND /usr isn't in the root
+#               partition! The workaround is to define TZ either
+#               in /etc/default/rcS, or in the proper place below.
+
+[ ! -x /sbin/hwclock ] && exit 0
+
+. /etc/default/rcS
+
+case "$1" in
+        start)
+                if [ "$VERBOSE" != no ]
+                then
+                        echo "System time was `date`."
+                        echo "Setting the System Clock using the Hardware Clock as reference..."
+                fi
+
+               if [ "$HWCLOCKACCESS" != no ]
+               then
+                       if [ -z "$TZ" ]
+                       then
+                          hwclock --hctosys
+                       else
+                          TZ="$TZ" hwclock --hctosys
+                       fi
+               fi
+
+                if [ "$VERBOSE" != no ]
+                then
+                        echo "System Clock set. System local time is now `date`."
+                fi
+                ;;
+        stop|restart|reload|force-reload)
+               #
+               # Updates the Hardware Clock with the System Clock time.
+               # This will *override* any changes made to the Hardware Clock.
+               #
+               # WARNING: If you disable this, any changes to the system
+               #          clock will not be carried across reboots.
+               #
+               if [ "$VERBOSE" != no ]
+               then
+                       echo "Saving the System Clock time to the Hardware Clock..."
+               fi
+               if [ "$HWCLOCKACCESS" != no ]
+               then
+                       hwclock --systohc
+               fi
+               if [ "$VERBOSE" != no ]
+               then
+                       echo "Hardware Clock updated to `date`."
+               fi
+                exit 0
+                ;;
+       show)
+               if [ "$HWCLOCKACCESS" != no ]
+               then
+                       hwclock --show
+               fi
+               ;;
+        *)
+                echo "Usage: hwclock.sh {start|stop|show|reload|restart}" >&2
+               echo "       start sets kernel (system) clock from hardware (RTC) clock" >&2
+               echo "       stop and reload set hardware (RTC) clock from kernel (system) clock" >&2
+                exit 1
+                ;;
+esac
old mode 100644 (file)
new mode 100755 (executable)
index b5d1903..9389d00
@@ -10,6 +10,7 @@ SRC_URI="http://cdrkit.org/releases/cdrkit-${PV}.tar.gz \
        file://xconfig.patch;patch=1"
 
 SRC_URI_append_opendreambox = " file://cdrkit-1.1.9-glibc-2.10-3.patch;patch=1"
+SRC_URI_append_vuplus = " file://cdrkit-1.1.9-glibc-2.10-3.patch;patch=1"
 
 S="${WORKDIR}/cdrkit-${PV}"
 PR = "r3"
index cbebd42..05165b5 100644 (file)
@@ -4,6 +4,7 @@ SECTION = "base"
 LICENSE = "GPL"
 DEPENDS = "expat glib-2.0 virtual/libintl libsm libice virtual/libx11"
 DEPENDS_opendreambox = "expat glib-2.0 virtual/libintl"
+DEPENDS_vuplus = "expat glib-2.0 virtual/libintl"
 
 INC_PR = "r18"
 
@@ -22,6 +23,7 @@ inherit autotools pkgconfig update-rc.d gettext
 
 EXTRA_OECONF_X = "--with-x"
 EXTRA_OECONF_X_opendreambox = ""
+EXTRA_OECONF_X_vuplus = ""
 
 EXTRA_OECONF = "\
   --disable-qt \
@@ -109,3 +111,4 @@ CONFFILES_${PN} = "${sysconfdir}/dbus-1/system.conf ${sysconfdir}/dbus-1/session
 INITSCRIPT_NAME = "dbus-1"
 INITSCRIPT_PARAMS = "start 02 5 2 . stop 20 0 1 6 ."
 INITSCRIPT_PARAMS_opendreambox = "start 05 S 2 3 5 . stop 20 0 1 6 ."
+INITSCRIPT_PARAMS_vuplus = "start 05 S 2 3 5 . stop 20 0 1 6 ."
old mode 100644 (file)
new mode 100755 (executable)
index 4b6411c..26f6732
@@ -11,6 +11,7 @@ PR = "r0"
 PACKAGE_ARCH = "${MACHINE_ARCH}"
 
 SRC_URI = "http://sources.dreamboxupdate.com/download/opendreambox/dreambox-blindscan-utils-${MACHINE}-${PV}.tar.bz2"
+SRC_URI_vuplus = "http://sources.dreamboxupdate.com/download/opendreambox/dreambox-blindscan-utils-dm8000-${PV}.tar.bz2"
 
 S = "${WORKDIR}/blindscan-utils"
 
old mode 100644 (file)
new mode 100755 (executable)
index 952327f..74bb14e
@@ -99,6 +99,10 @@ do_install_append_opendreambox() {
        rm -rf ${D}${datadir}/zoneinfo/*
 }
 
+do_install_append_vuplus() {
+       rm -rf ${D}${datadir}/zoneinfo/*
+}
+
 TMP_LOCALE="/tmp/locale${libdir}/locale"
 
 locale_base_postinst() {
old mode 100644 (file)
new mode 100755 (executable)
index 34d070e..a0b5930
@@ -4,6 +4,7 @@ LICENSE = "proprietary"
 MAINTAINER = "tmbinc@elitedvb.net"
 
 PR = "r4"
+PR_vuplus = "r5"
 
 SRC_URI = "file://*"
 
index 4287532..03fd18a 100644 (file)
@@ -4,6 +4,8 @@ MAINTAINER = "Felix Domke <tmbinc@elitedvb.net>"
 PACKAGES_DYNAMIC = "enigma2-plugin-*"
 
 SRCDATE = "20100213"
+SRCDATE_vuplus = "20100621"
+
 
 # if you want the 2.7.0 release, use
 #TAG = ";tag=enigma2-plugins_rel27"
@@ -13,8 +15,16 @@ SRCDATE = "20100213"
 TAG = ""
 PV = "experimental-cvs${SRCDATE}"
 
+#if vuplus
+TAG_vuplus = ";tag=enigma2-plugins_rel28"
+PV_vuplus = "2.8cvs${SRCDATE}"
+
 SRC_URI = "cvs://anonymous@cvs.schwerkraft.elitedvb.net/cvsroot/enigma2-plugins;module=enigma2-plugins;method=pserver${TAG};date=${SRCDATE}"
 
+SRC_URI_append_vuplus = " \
+           file://dreamboxweb.png \
+           file://favicon.ico"
+
 FILES_${PN} += " /usr/share/enigma2 /usr/share/fonts "
 FILES_${PN}-meta = "${datadir}/meta"
 PACKAGES += "${PN}-meta"
@@ -27,6 +37,49 @@ S = "${WORKDIR}/enigma2-plugins"
 DEPENDS = "python-pyopenssl python-gdata streamripper python-mutagen"
 DEPENDS += "enigma2"
 
+
+def modify_po():
+       import os
+       try:
+               os.system("find ./ -name \"*.po\" > ./po_list")
+               os.system("find ./ -name \"*.pot\" >> ./po_list")
+               po_list = []
+               po_list = open('po_list','r+').readlines()
+               for x in po_list:
+                       changeword1(x)
+               changeword1('enigma2-plugins/networkwizard/src/networkwizard.xml ')
+               changeword2('enigma2-plugins/webinterface/src/web-data/tpl/default/index.html ')
+               os.system('rm po_list')
+       except:
+               print 'word patch error '
+               return
+
+def changeword1(file):
+       fn = file[:-1]
+       fnn = file[:-1]+'_n'
+       cmd = "sed s/Dreambox/STB/g "+fn+" > "+fnn
+       os.system(cmd)
+       cmd1 = "mv "+fnn+" "+fn
+       os.system(cmd1)
+
+def changeword2(file):
+       fn = file[:-1]
+       fnn = file[:-1]+'_n'
+       cmd = "sed s/Dreambox/Vu+/g "+fn+" > "+fnn
+       os.system(cmd)
+       cmd1 = "mv "+fnn+" "+fn
+       os.system(cmd1)
+
+do_unpack_append(){
+       modify_po()
+}
+
+
+do_install_append_vuplus() {
+       install -m 0644 ${WORKDIR}/dreamboxweb.png ${D}/usr/lib/enigma2/python/Plugins/Extensions/WebInterface/web-data/img/
+       install -m 0644 ${WORKDIR}/favicon.ico ${D}/usr/lib/enigma2/python/Plugins/Extensions/WebInterface/web-data/img/
+}
+
 python populate_packages_prepend () {
        enigma2_plugindir = bb.data.expand('${libdir}/enigma2/python/Plugins', d)
 
diff --git a/recipes/enigma2/enigma2-plugins/vuplus/dreamboxweb.png b/recipes/enigma2/enigma2-plugins/vuplus/dreamboxweb.png
new file mode 100755 (executable)
index 0000000..129934b
Binary files /dev/null and b/recipes/enigma2/enigma2-plugins/vuplus/dreamboxweb.png differ
diff --git a/recipes/enigma2/enigma2-plugins/vuplus/favicon.ico b/recipes/enigma2/enigma2-plugins/vuplus/favicon.ico
new file mode 100755 (executable)
index 0000000..0d6f325
Binary files /dev/null and b/recipes/enigma2/enigma2-plugins/vuplus/favicon.ico differ
index 7443ecd..8a208e5 100644 (file)
@@ -4,6 +4,7 @@ MAINTAINER = "Felix Domke <tmbinc@elitedvb.net>"
 PACKAGES_DYNAMIC = "enigma2-skin-*"
 
 SRCDATE = "20100213"
+SRCDATE_vuplus = "20100621"
 
 # if you want the 2.7 release, use
 #TAG = ";tag=enigma2-skins_rel27"
@@ -13,7 +14,12 @@ SRCDATE = "20100213"
 TAG = ""
 PV = "experimental-cvs${SRCDATE}"
 
+# if vuplus
+TAG_vuplus = ";tag=enigma2-skins_rel28"
+PV_vuplus = "2.8cvs${SRCDATE}"
+
 SRC_URI = "cvs://anonymous@cvs.schwerkraft.elitedvb.net/cvsroot/enigma2-skins;module=enigma2-skins;method=pserver${TAG};date=${SRCDATE}"
+
 FILES_${PN} += " /usr/share/enigma2 /usr/share/fonts "
 FILES_${PN}-meta = "${datadir}/meta"
 PACKAGES += "${PN}-meta"
old mode 100755 (executable)
new mode 100644 (file)
index a66801a..1a4f16e
@@ -27,6 +27,12 @@ RDEPENDS_append_dm800 = " gst-plugin-alsa alsa-conf gst-plugin-matroska gst-plug
 RDEPENDS_append_dm500hd = " gst-plugin-alsa alsa-conf gst-plugin-avi gst-plugin-matroska \
        gst-plugin-qtdemux gst-plugin-cdxaparse gst-plugin-cdio gst-plugin-vcdsrc gst-plugin-vorbis \
        ${RTSP_RDEPENDS}"
+RDEPENDS_append_vusolo = " gst-plugin-alsa alsa-conf gst-plugin-avi gst-plugin-matroska \
+       gst-plugin-qtdemux gst-plugin-cdxaparse gst-plugin-cdio gst-plugin-vcdsrc gst-plugin-vorbis \
+       ${RTSP_RDEPENDS}"
+RDEPENDS_append_bm750 = " gst-plugin-alsa alsa-conf gst-plugin-avi gst-plugin-matroska \
+       gst-plugin-qtdemux gst-plugin-cdxaparse gst-plugin-cdio gst-plugin-vcdsrc gst-plugin-vorbis \
+       ${RTSP_RDEPENDS}"
 RDEPENDS_append_dm800se = " gst-plugin-alsa alsa-conf gst-plugin-avi gst-plugin-matroska \
        gst-plugin-qtdemux gst-plugin-cdxaparse gst-plugin-cdio gst-plugin-vcdsrc gst-plugin-vorbis \
        ${RTSP_RDEPENDS}"
@@ -64,6 +70,7 @@ PN = "enigma2"
 PR = "r0"
 
 SRCDATE = "20100318"
+SRCDATE_vuplus = "20100719"
 #SRCDATE is NOT used by git to checkout a specific revision
 #but we need it to build a ipk package version
 #when you like to checkout a specific revision of e2 you need
@@ -91,10 +98,71 @@ SRCREV = ""
 #SRCREV = "d5a16c6e9d0ee1cc2dc0d65b4321842dea4b0891"
 ####################################################
 
+# if you want a vuplus release, use
+####################################################
+#BRANCH_vuplus = "vuplus"
+#PV_vuplus = "2.8git${SRCDATE}"
+#SRCREV_vuplus = "4186f8c308d9450353520a88eb5a5ee3940281d3"
+####################################################
+
+#if you want a vuplus experimental, use
+####################################################
+BRANCH_vuplus = "vuplus_experimental"
+PV_vuplus = "experimental-git${SRCDATE}"
+SRCREV_vuplus = ""
+####################################################
+
 SRC_URI = "git://git.opendreambox.org/git/enigma2.git;protocol=git;branch=${BRANCH};tag=${SRCREV} \
        file://new-hotplug.patch;patch=1;pnum=1 \
        file://enigma2.sh"
 
+SRC_URI_bm750 = "git://archive.vuplus.com/git/enigma2.git;protocol=http;branch=${BRANCH};tag=${SRCREV} \
+          file://enigma2_vuplus_duo.patch;patch=1;pnum=1 \
+           file://enigma2_vuplus_skin.patch;patch=1;pnum=1 \
+           file://MyriadPro-Regular.otf \
+           file://MyriadPro-Semibold.otf \
+           file://MyriadPro-SemiboldIt.otf \
+           file://750S \
+           file://Vu_HD \
+           file://number_key \
+           file://enigma2.sh"
+
+SRC_URI_vusolo = "git://archive.vuplus.com/git/enigma2.git;protocol=http;branch=${BRANCH};tag=${SRCREV} \
+           file://enigma2_vuplus_skin.patch;patch=1;pnum=1 \
+           file://MyriadPro-Regular.otf \
+           file://MyriadPro-Semibold.otf \
+           file://MyriadPro-SemiboldIt.otf \
+           file://750S \
+           file://Vu_HD \
+           file://number_key \
+           file://enigma2.sh"
+
+def change_po():
+        import os
+        try:
+                os.system("find ./ -name \"*.po\" > ./po_list")
+                os.system("find ./ -name \"*.pot\" >> ./po_list")
+                po_list = []
+                po_list = open('po_list','r+').readlines()
+                for x in po_list:
+                        changeword(x)
+                os.system('rm po_list')
+        except:
+                print 'word patch error '
+                return
+
+def changeword(file):
+        fn = file[:-1]
+        fnn = file[:-1]+'_n'
+        cmd = "sed s/Dreambox/STB/g "+fn+" > "+fnn
+        os.system(cmd)
+        cmd1 = "mv "+fnn+" "+fn
+        os.system(cmd1)
+
+do_unpack_append(){
+        change_po()
+}
+
 S = "${WORKDIR}/git"
 
 FILES_${PN} += "${datadir}/fonts"
@@ -109,6 +177,24 @@ sbindir = "/usr/sbin"
 
 EXTRA_OECONF = "--with-target=native --with-libsdl=no"
 
+do_compile_prepend_vuplus() {
+        install -m 0755 ${WORKDIR}/MyriadPro-Regular.otf ${S}/data/fonts/
+        install -m 0755 ${WORKDIR}/MyriadPro-Semibold.otf ${S}/data/fonts/
+        install -m 0755 ${WORKDIR}/MyriadPro-SemiboldIt.otf ${S}/data/fonts/
+        install -m 0755 ${WORKDIR}/750S/*.png ${S}/data/750S/
+        install -m 0755 ${WORKDIR}/750S/buttons/*.png ${S}/data/750S/buttons/
+        install -m 0755 ${WORKDIR}/750S/countries/*.png ${S}/data/750S/countries/
+        install -m 0755 ${WORKDIR}/750S/icons/*.png ${S}/data/750S/icons/
+        install -m 0755 ${WORKDIR}/750S/menu/*.png ${S}/data/750S/menu/
+        install -m 0755 ${WORKDIR}/750S/spinner/*.png ${S}/data/skin_default/spinner/
+        install -m 0755 ${WORKDIR}/Vu_HD/*.png ${S}/data/Vu_HD/
+        install -m 0755 ${WORKDIR}/Vu_HD/buttons/*.png ${S}/data/Vu_HD/buttons/
+        install -m 0755 ${WORKDIR}/Vu_HD/countries/*.png ${S}/data/Vu_HD/countries/
+        install -m 0755 ${WORKDIR}/Vu_HD/icons/*.png ${S}/data/Vu_HD/icons/
+        install -m 0755 ${WORKDIR}/Vu_HD/menu/*.png ${S}/data/Vu_HD/menu/
+        install -m 0755 ${WORKDIR}/number_key/*.png ${S}/data/skin_default/buttons/
+}
+
 do_install_append() {
        install -m 0755 ${WORKDIR}/enigma2.sh ${D}/usr/bin/
 }
diff --git a/recipes/enigma2/enigma2/vuplus/750S/arrowdown.png b/recipes/enigma2/enigma2/vuplus/750S/arrowdown.png
new file mode 100755 (executable)
index 0000000..436931d
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/arrowdown.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/arrowleft.png b/recipes/enigma2/enigma2/vuplus/750S/arrowleft.png
new file mode 100755 (executable)
index 0000000..654beca
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/arrowleft.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/arrowright.png b/recipes/enigma2/enigma2/vuplus/750S/arrowright.png
new file mode 100755 (executable)
index 0000000..a3af5c8
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/arrowright.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/arrowup.png b/recipes/enigma2/enigma2/vuplus/750S/arrowup.png
new file mode 100755 (executable)
index 0000000..e9a0357
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/arrowup.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/b_b.png b/recipes/enigma2/enigma2/vuplus/750S/b_b.png
new file mode 100755 (executable)
index 0000000..50fc6c6
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/b_b.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/b_bl.png b/recipes/enigma2/enigma2/vuplus/750S/b_bl.png
new file mode 100755 (executable)
index 0000000..c1f7dd6
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/b_bl.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/b_br.png b/recipes/enigma2/enigma2/vuplus/750S/b_br.png
new file mode 100755 (executable)
index 0000000..8584058
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/b_br.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/b_l.png b/recipes/enigma2/enigma2/vuplus/750S/b_l.png
new file mode 100755 (executable)
index 0000000..caa0f1f
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/b_l.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/b_r.png b/recipes/enigma2/enigma2/vuplus/750S/b_r.png
new file mode 100755 (executable)
index 0000000..5ad324f
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/b_r.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/b_t.png b/recipes/enigma2/enigma2/vuplus/750S/b_t.png
new file mode 100755 (executable)
index 0000000..20ba7f7
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/b_t.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/b_tl.png b/recipes/enigma2/enigma2/vuplus/750S/b_tl.png
new file mode 100755 (executable)
index 0000000..5cbf7d3
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/b_tl.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/b_tr.png b/recipes/enigma2/enigma2/vuplus/750S/b_tr.png
new file mode 100755 (executable)
index 0000000..7902358
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/b_tr.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/bar_ber.png b/recipes/enigma2/enigma2/vuplus/750S/bar_ber.png
new file mode 100755 (executable)
index 0000000..f94150a
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/bar_ber.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/bar_snr.png b/recipes/enigma2/enigma2/vuplus/750S/bar_snr.png
new file mode 100755 (executable)
index 0000000..18050ed
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/bar_snr.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/bg_list.png b/recipes/enigma2/enigma2/vuplus/750S/bg_list.png
new file mode 100755 (executable)
index 0000000..c1de3f0
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/bg_list.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/bg_main.png b/recipes/enigma2/enigma2/vuplus/750S/bg_main.png
new file mode 100755 (executable)
index 0000000..aaed82d
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/bg_main.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/bg_setup_600.png b/recipes/enigma2/enigma2/vuplus/750S/bg_setup_600.png
new file mode 100755 (executable)
index 0000000..624dade
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/bg_setup_600.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/bg_setup_650.png b/recipes/enigma2/enigma2/vuplus/750S/bg_setup_650.png
new file mode 100755 (executable)
index 0000000..fa3262b
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/bg_setup_650.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/border_epg.png b/recipes/enigma2/enigma2/vuplus/750S/border_epg.png
new file mode 100755 (executable)
index 0000000..9f586e9
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/border_epg.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/border_eventinfo.png b/recipes/enigma2/enigma2/vuplus/750S/border_eventinfo.png
new file mode 100755 (executable)
index 0000000..5108758
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/border_eventinfo.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/border_info.png b/recipes/enigma2/enigma2/vuplus/750S/border_info.png
new file mode 100755 (executable)
index 0000000..8393a9e
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/border_info.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/border_menu.png b/recipes/enigma2/enigma2/vuplus/750S/border_menu.png
new file mode 100755 (executable)
index 0000000..e7f9ede
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/border_menu.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/border_menu_300.png b/recipes/enigma2/enigma2/vuplus/750S/border_menu_300.png
new file mode 100755 (executable)
index 0000000..b81f37f
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/border_menu_300.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/border_menu_350.png b/recipes/enigma2/enigma2/vuplus/750S/border_menu_350.png
new file mode 100755 (executable)
index 0000000..4f6f49c
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/border_menu_350.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/border_menu_a.png b/recipes/enigma2/enigma2/vuplus/750S/border_menu_a.png
new file mode 100755 (executable)
index 0000000..0a6aa8e
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/border_menu_a.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/border_menu_c.png b/recipes/enigma2/enigma2/vuplus/750S/border_menu_c.png
new file mode 100755 (executable)
index 0000000..f26e6bf
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/border_menu_c.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/border_multiepg.png b/recipes/enigma2/enigma2/vuplus/750S/border_multiepg.png
new file mode 100755 (executable)
index 0000000..c1e3bf2
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/border_multiepg.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/bottombar.png b/recipes/enigma2/enigma2/vuplus/750S/bottombar.png
new file mode 100755 (executable)
index 0000000..cda483c
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/bottombar.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_130x23px.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_130x23px.png
new file mode 100755 (executable)
index 0000000..9d7fc72
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_130x23px.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_170x23px.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_170x23px.png
new file mode 100755 (executable)
index 0000000..c40bf8f
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_170x23px.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_230x23px.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_230x23px.png
new file mode 100755 (executable)
index 0000000..4bd5ec4
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_230x23px.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_230x27px.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_230x27px.png
new file mode 100755 (executable)
index 0000000..11355ae
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_230x27px.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_250x32px.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_250x32px.png
new file mode 100755 (executable)
index 0000000..3227078
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_250x32px.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_290x23px.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_290x23px.png
new file mode 100755 (executable)
index 0000000..a1df44e
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_290x23px.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_360x23px.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_360x23px.png
new file mode 100755 (executable)
index 0000000..aba4b0f
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_360x23px.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_360x32px.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_360x32px.png
new file mode 100755 (executable)
index 0000000..3080055
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_360x32px.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_380x23px.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_380x23px.png
new file mode 100755 (executable)
index 0000000..760a99e
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_380x23px.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_400x23px.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_400x23px.png
new file mode 100755 (executable)
index 0000000..b4b79d8
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_400x23px.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_440x23px.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_440x23px.png
new file mode 100755 (executable)
index 0000000..dcb6e22
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_440x23px.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_450x32px.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_450x32px.png
new file mode 100755 (executable)
index 0000000..9f37cbb
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_450x32px.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_480x23px.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_480x23px.png
new file mode 100755 (executable)
index 0000000..5e8b862
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_480x23px.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_500x23px.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_500x23px.png
new file mode 100755 (executable)
index 0000000..2ad248f
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_500x23px.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_520x23px.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_520x23px.png
new file mode 100755 (executable)
index 0000000..6de80e7
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_520x23px.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_520x27px.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_520x27px.png
new file mode 100755 (executable)
index 0000000..fe6a62f
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_520x27px.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_550x27px.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_550x27px.png
new file mode 100755 (executable)
index 0000000..b9ba933
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_550x27px.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_560x23px.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_560x23px.png
new file mode 100755 (executable)
index 0000000..19a191b
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/Selected_bar_560x23px.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/Thumbs.db b/recipes/enigma2/enigma2/vuplus/750S/buttons/Thumbs.db
new file mode 100755 (executable)
index 0000000..3bfe524
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/Thumbs.db differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/blue.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/blue.png
new file mode 100755 (executable)
index 0000000..d059fd0
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/blue.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/blue_pressed.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/blue_pressed.png
new file mode 100755 (executable)
index 0000000..0c2769f
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/blue_pressed.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/button_blue.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/button_blue.png
new file mode 100755 (executable)
index 0000000..b014975
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/button_blue.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/button_blue_off.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/button_blue_off.png
new file mode 100755 (executable)
index 0000000..43b3f8d
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/button_blue_off.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/button_green.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/button_green.png
new file mode 100755 (executable)
index 0000000..0f37970
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/button_green.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/button_green_off.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/button_green_off.png
new file mode 100755 (executable)
index 0000000..8402afa
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/button_green_off.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/button_red.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/button_red.png
new file mode 100755 (executable)
index 0000000..45af492
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/button_red.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/button_red_off.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/button_red_off.png
new file mode 100755 (executable)
index 0000000..3611f21
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/button_red_off.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/button_yellow.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/button_yellow.png
new file mode 100755 (executable)
index 0000000..0f9b962
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/button_yellow.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/button_yellow_off.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/button_yellow_off.png
new file mode 100755 (executable)
index 0000000..aaa7dac
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/button_yellow_off.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/green-big.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/green-big.png
new file mode 100755 (executable)
index 0000000..f92f09f
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/green-big.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/green.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/green.png
new file mode 100755 (executable)
index 0000000..c6dd5a4
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/green.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/key_0.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/key_0.png
new file mode 100755 (executable)
index 0000000..a7f24a9
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/key_0.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/key_1.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/key_1.png
new file mode 100755 (executable)
index 0000000..04adba9
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/key_1.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/key_2.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/key_2.png
new file mode 100755 (executable)
index 0000000..cdcb98b
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/key_2.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/key_3.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/key_3.png
new file mode 100755 (executable)
index 0000000..d872b50
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/key_3.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/key_4.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/key_4.png
new file mode 100755 (executable)
index 0000000..de5a3a4
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/key_4.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/key_5.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/key_5.png
new file mode 100755 (executable)
index 0000000..d9029cd
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/key_5.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/key_6.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/key_6.png
new file mode 100755 (executable)
index 0000000..63f43ae
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/key_6.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/key_7.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/key_7.png
new file mode 100755 (executable)
index 0000000..b9be24e
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/key_7.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/key_8.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/key_8.png
new file mode 100755 (executable)
index 0000000..2237f09
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/key_8.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/key_9.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/key_9.png
new file mode 100755 (executable)
index 0000000..19c1467
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/key_9.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/key_blue.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/key_blue.png
new file mode 100755 (executable)
index 0000000..2721ea9
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/key_blue.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/key_green.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/key_green.png
new file mode 100755 (executable)
index 0000000..8e3260d
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/key_green.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/key_info.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/key_info.png
new file mode 100755 (executable)
index 0000000..903b04a
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/key_info.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/key_menu.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/key_menu.png
new file mode 100755 (executable)
index 0000000..7986ed8
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/key_menu.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/key_red.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/key_red.png
new file mode 100755 (executable)
index 0000000..3b7a052
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/key_red.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/key_text.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/key_text.png
new file mode 100755 (executable)
index 0000000..8e91a12
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/key_text.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/key_yellow.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/key_yellow.png
new file mode 100755 (executable)
index 0000000..e26d5c6
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/key_yellow.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/red-big.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/red-big.png
new file mode 100755 (executable)
index 0000000..7436673
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/red-big.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/red.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/red.png
new file mode 100755 (executable)
index 0000000..e80dba2
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/red.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/singlelineList_left_arrow.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/singlelineList_left_arrow.png
new file mode 100755 (executable)
index 0000000..5f18c6a
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/singlelineList_left_arrow.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/singlelineList_right_arrow.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/singlelineList_right_arrow.png
new file mode 100755 (executable)
index 0000000..4da823e
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/singlelineList_right_arrow.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/singlelineList_selected_23p.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/singlelineList_selected_23p.png
new file mode 100755 (executable)
index 0000000..4823e66
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/singlelineList_selected_23p.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/singlelineList_selected_23px.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/singlelineList_selected_23px.png
new file mode 100755 (executable)
index 0000000..201a7af
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/singlelineList_selected_23px.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/singlelineList_selected_39p.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/singlelineList_selected_39p.png
new file mode 100755 (executable)
index 0000000..184aec2
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/singlelineList_selected_39p.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/singlelineList_selected_39px.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/singlelineList_selected_39px.png
new file mode 100755 (executable)
index 0000000..76386f5
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/singlelineList_selected_39px.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/singlelineList_selected_43p.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/singlelineList_selected_43p.png
new file mode 100755 (executable)
index 0000000..d59bdcb
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/singlelineList_selected_43p.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/singlelineList_selected_48p.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/singlelineList_selected_48p.png
new file mode 100755 (executable)
index 0000000..ac964ba
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/singlelineList_selected_48p.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/singlelineList_selected_48px.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/singlelineList_selected_48px.png
new file mode 100755 (executable)
index 0000000..792a677
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/singlelineList_selected_48px.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/singlelineList_selected_72p.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/singlelineList_selected_72p.png
new file mode 100755 (executable)
index 0000000..a89abe0
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/singlelineList_selected_72p.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/singlelineList_selected_72px.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/singlelineList_selected_72px.png
new file mode 100755 (executable)
index 0000000..f953fd3
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/singlelineList_selected_72px.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/buttons/yellow.png b/recipes/enigma2/enigma2/vuplus/750S/buttons/yellow.png
new file mode 100755 (executable)
index 0000000..81031c0
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/buttons/yellow.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/countries/Thumbs.db b/recipes/enigma2/enigma2/vuplus/750S/countries/Thumbs.db
new file mode 100755 (executable)
index 0000000..c043994
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/countries/Thumbs.db differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/countries/ad.png b/recipes/enigma2/enigma2/vuplus/750S/countries/ad.png
new file mode 100755 (executable)
index 0000000..1e215a9
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/countries/ad.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/countries/ae.png b/recipes/enigma2/enigma2/vuplus/750S/countries/ae.png
new file mode 100755 (executable)
index 0000000..f5807c2
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/countries/ae.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/countries/cz.png b/recipes/enigma2/enigma2/vuplus/750S/countries/cz.png
new file mode 100755 (executable)
index 0000000..00d0bd2
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/countries/cz.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/countries/de.png b/recipes/enigma2/enigma2/vuplus/750S/countries/de.png
new file mode 100755 (executable)
index 0000000..55f28f0
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/countries/de.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/countries/dk.png b/recipes/enigma2/enigma2/vuplus/750S/countries/dk.png
new file mode 100755 (executable)
index 0000000..a1b61d2
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/countries/dk.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/countries/en.png b/recipes/enigma2/enigma2/vuplus/750S/countries/en.png
new file mode 100755 (executable)
index 0000000..90fca70
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/countries/en.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/countries/es.png b/recipes/enigma2/enigma2/vuplus/750S/countries/es.png
new file mode 100755 (executable)
index 0000000..543b8fd
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/countries/es.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/countries/fi.png b/recipes/enigma2/enigma2/vuplus/750S/countries/fi.png
new file mode 100755 (executable)
index 0000000..3442265
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/countries/fi.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/countries/fr.png b/recipes/enigma2/enigma2/vuplus/750S/countries/fr.png
new file mode 100755 (executable)
index 0000000..28924eb
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/countries/fr.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/countries/gr.png b/recipes/enigma2/enigma2/vuplus/750S/countries/gr.png
new file mode 100755 (executable)
index 0000000..f052256
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/countries/gr.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/countries/hr.png b/recipes/enigma2/enigma2/vuplus/750S/countries/hr.png
new file mode 100755 (executable)
index 0000000..e769a80
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/countries/hr.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/countries/hu.png b/recipes/enigma2/enigma2/vuplus/750S/countries/hu.png
new file mode 100755 (executable)
index 0000000..1c59889
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/countries/hu.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/countries/is.png b/recipes/enigma2/enigma2/vuplus/750S/countries/is.png
new file mode 100755 (executable)
index 0000000..a276109
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/countries/is.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/countries/it.png b/recipes/enigma2/enigma2/vuplus/750S/countries/it.png
new file mode 100755 (executable)
index 0000000..6858d7c
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/countries/it.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/countries/lt.png b/recipes/enigma2/enigma2/vuplus/750S/countries/lt.png
new file mode 100755 (executable)
index 0000000..4bb0893
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/countries/lt.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/countries/missing.png b/recipes/enigma2/enigma2/vuplus/750S/countries/missing.png
new file mode 100755 (executable)
index 0000000..c677460
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/countries/missing.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/countries/nl.png b/recipes/enigma2/enigma2/vuplus/750S/countries/nl.png
new file mode 100755 (executable)
index 0000000..57829ae
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/countries/nl.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/countries/no.png b/recipes/enigma2/enigma2/vuplus/750S/countries/no.png
new file mode 100755 (executable)
index 0000000..9b4b6c1
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/countries/no.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/countries/pl.png b/recipes/enigma2/enigma2/vuplus/750S/countries/pl.png
new file mode 100755 (executable)
index 0000000..611604a
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/countries/pl.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/countries/pt.png b/recipes/enigma2/enigma2/vuplus/750S/countries/pt.png
new file mode 100755 (executable)
index 0000000..b302933
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/countries/pt.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/countries/ro.png b/recipes/enigma2/enigma2/vuplus/750S/countries/ro.png
new file mode 100755 (executable)
index 0000000..ea3b856
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/countries/ro.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/countries/ru.png b/recipes/enigma2/enigma2/vuplus/750S/countries/ru.png
new file mode 100755 (executable)
index 0000000..4dfa9fb
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/countries/ru.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/countries/se.png b/recipes/enigma2/enigma2/vuplus/750S/countries/se.png
new file mode 100755 (executable)
index 0000000..4966fc5
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/countries/se.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/countries/si.png b/recipes/enigma2/enigma2/vuplus/750S/countries/si.png
new file mode 100755 (executable)
index 0000000..72e753d
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/countries/si.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/countries/tr.png b/recipes/enigma2/enigma2/vuplus/750S/countries/tr.png
new file mode 100755 (executable)
index 0000000..19510ee
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/countries/tr.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/div-h.png b/recipes/enigma2/enigma2/vuplus/750S/div-h.png
new file mode 100755 (executable)
index 0000000..d6fcc7f
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/div-h.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/div-v.png b/recipes/enigma2/enigma2/vuplus/750S/div-v.png
new file mode 100755 (executable)
index 0000000..e97cab9
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/div-v.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/epg_more.png b/recipes/enigma2/enigma2/vuplus/750S/epg_more.png
new file mode 100755 (executable)
index 0000000..9ec1d8a
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/epg_more.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/epg_next.png b/recipes/enigma2/enigma2/vuplus/750S/epg_next.png
new file mode 100755 (executable)
index 0000000..33db35e
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/epg_next.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/epg_now.png b/recipes/enigma2/enigma2/vuplus/750S/epg_now.png
new file mode 100755 (executable)
index 0000000..16264e6
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/epg_now.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/expandable-plugins.png b/recipes/enigma2/enigma2/vuplus/750S/expandable-plugins.png
new file mode 100755 (executable)
index 0000000..9d6fa5f
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/expandable-plugins.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/expanded-plugins.png b/recipes/enigma2/enigma2/vuplus/750S/expanded-plugins.png
new file mode 100755 (executable)
index 0000000..af65583
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/expanded-plugins.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/Thumbs.db b/recipes/enigma2/enigma2/vuplus/750S/icons/Thumbs.db
new file mode 100755 (executable)
index 0000000..7e8518a
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/Thumbs.db differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/clock.png b/recipes/enigma2/enigma2/vuplus/750S/icons/clock.png
new file mode 100755 (executable)
index 0000000..f3d675a
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/clock.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/dish.png b/recipes/enigma2/enigma2/vuplus/750S/icons/dish.png
new file mode 100755 (executable)
index 0000000..3bb8fde
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/dish.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/dish_scan.png b/recipes/enigma2/enigma2/vuplus/750S/icons/dish_scan.png
new file mode 100755 (executable)
index 0000000..d0b9766
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/dish_scan.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/dmm_logo.png b/recipes/enigma2/enigma2/vuplus/750S/icons/dmm_logo.png
new file mode 100755 (executable)
index 0000000..56f2965
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/dmm_logo.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/epgclock.png b/recipes/enigma2/enigma2/vuplus/750S/icons/epgclock.png
new file mode 100755 (executable)
index 0000000..f3d675a
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/epgclock.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/epgclock_add.png b/recipes/enigma2/enigma2/vuplus/750S/icons/epgclock_add.png
new file mode 100755 (executable)
index 0000000..487ac48
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/epgclock_add.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/epgclock_post.png b/recipes/enigma2/enigma2/vuplus/750S/icons/epgclock_post.png
new file mode 100755 (executable)
index 0000000..5716d99
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/epgclock_post.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/epgclock_pre.png b/recipes/enigma2/enigma2/vuplus/750S/icons/epgclock_pre.png
new file mode 100755 (executable)
index 0000000..ff42463
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/epgclock_pre.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/epgclock_prepost.png b/recipes/enigma2/enigma2/vuplus/750S/icons/epgclock_prepost.png
new file mode 100755 (executable)
index 0000000..871b396
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/epgclock_prepost.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/folder.png b/recipes/enigma2/enigma2/vuplus/750S/icons/folder.png
new file mode 100755 (executable)
index 0000000..bc0facb
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/folder.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/ico_mp_forward.png b/recipes/enigma2/enigma2/vuplus/750S/icons/ico_mp_forward.png
new file mode 100755 (executable)
index 0000000..3ef0e3c
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/ico_mp_forward.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/ico_mp_pause.png b/recipes/enigma2/enigma2/vuplus/750S/icons/ico_mp_pause.png
new file mode 100755 (executable)
index 0000000..8081752
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/ico_mp_pause.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/ico_mp_play.png b/recipes/enigma2/enigma2/vuplus/750S/icons/ico_mp_play.png
new file mode 100755 (executable)
index 0000000..dfc5a1e
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/ico_mp_play.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/ico_mp_rewind.png b/recipes/enigma2/enigma2/vuplus/750S/icons/ico_mp_rewind.png
new file mode 100755 (executable)
index 0000000..7941ec5
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/ico_mp_rewind.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/ico_mp_stop.png b/recipes/enigma2/enigma2/vuplus/750S/icons/ico_mp_stop.png
new file mode 100755 (executable)
index 0000000..da764ef
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/ico_mp_stop.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/icon_channelselection_radio.png b/recipes/enigma2/enigma2/vuplus/750S/icons/icon_channelselection_radio.png
new file mode 100755 (executable)
index 0000000..2f03644
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/icon_channelselection_radio.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/icon_channelselection_tv.png b/recipes/enigma2/enigma2/vuplus/750S/icons/icon_channelselection_tv.png
new file mode 100755 (executable)
index 0000000..7e4f9df
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/icon_channelselection_tv.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/icon_crypt.png b/recipes/enigma2/enigma2/vuplus/750S/icons/icon_crypt.png
new file mode 100755 (executable)
index 0000000..774ddac
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/icon_crypt.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/icon_crypt_off.png b/recipes/enigma2/enigma2/vuplus/750S/icons/icon_crypt_off.png
new file mode 100755 (executable)
index 0000000..8f0cc9a
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/icon_crypt_off.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/icon_dolby.png b/recipes/enigma2/enigma2/vuplus/750S/icons/icon_dolby.png
new file mode 100755 (executable)
index 0000000..fc0dea6
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/icon_dolby.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/icon_dolby_off.png b/recipes/enigma2/enigma2/vuplus/750S/icons/icon_dolby_off.png
new file mode 100755 (executable)
index 0000000..dcae966
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/icon_dolby_off.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/icon_epg.png b/recipes/enigma2/enigma2/vuplus/750S/icons/icon_epg.png
new file mode 100755 (executable)
index 0000000..3d38f34
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/icon_epg.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/icon_event.png b/recipes/enigma2/enigma2/vuplus/750S/icons/icon_event.png
new file mode 100755 (executable)
index 0000000..1b7daf5
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/icon_event.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/icon_format.png b/recipes/enigma2/enigma2/vuplus/750S/icons/icon_format.png
new file mode 100755 (executable)
index 0000000..421b803
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/icon_format.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/icon_format_off.png b/recipes/enigma2/enigma2/vuplus/750S/icons/icon_format_off.png
new file mode 100755 (executable)
index 0000000..073ff74
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/icon_format_off.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/icon_mainmenu.png b/recipes/enigma2/enigma2/vuplus/750S/icons/icon_mainmenu.png
new file mode 100755 (executable)
index 0000000..e6ddf9e
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/icon_mainmenu.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/icon_media.png b/recipes/enigma2/enigma2/vuplus/750S/icons/icon_media.png
new file mode 100755 (executable)
index 0000000..6c33a88
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/icon_media.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/icon_note.png b/recipes/enigma2/enigma2/vuplus/750S/icons/icon_note.png
new file mode 100755 (executable)
index 0000000..f83134f
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/icon_note.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/icon_rec.png b/recipes/enigma2/enigma2/vuplus/750S/icons/icon_rec.png
new file mode 100755 (executable)
index 0000000..2f6e2a7
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/icon_rec.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/icon_rec_off.png b/recipes/enigma2/enigma2/vuplus/750S/icons/icon_rec_off.png
new file mode 100755 (executable)
index 0000000..f86204d
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/icon_rec_off.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/icon_recorded.png b/recipes/enigma2/enigma2/vuplus/750S/icons/icon_recorded.png
new file mode 100755 (executable)
index 0000000..453f39f
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/icon_recorded.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/icon_timerlist.png b/recipes/enigma2/enigma2/vuplus/750S/icons/icon_timerlist.png
new file mode 100755 (executable)
index 0000000..2e88441
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/icon_timerlist.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/icon_txt.png b/recipes/enigma2/enigma2/vuplus/750S/icons/icon_txt.png
new file mode 100755 (executable)
index 0000000..4a95661
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/icon_txt.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/icon_txt_off.png b/recipes/enigma2/enigma2/vuplus/750S/icons/icon_txt_off.png
new file mode 100755 (executable)
index 0000000..8b4c689
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/icon_txt_off.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/icon_txt_x.png b/recipes/enigma2/enigma2/vuplus/750S/icons/icon_txt_x.png
new file mode 100755 (executable)
index 0000000..c344c0a
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/icon_txt_x.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/icon_view.png b/recipes/enigma2/enigma2/vuplus/750S/icons/icon_view.png
new file mode 100755 (executable)
index 0000000..988b419
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/icon_view.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/icons_off.png b/recipes/enigma2/enigma2/vuplus/750S/icons/icons_off.png
new file mode 100755 (executable)
index 0000000..8cc9d2a
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/icons_off.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/icons_off_1.png b/recipes/enigma2/enigma2/vuplus/750S/icons/icons_off_1.png
new file mode 100755 (executable)
index 0000000..8cc9d2a
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/icons_off_1.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/icons_off_X.png b/recipes/enigma2/enigma2/vuplus/750S/icons/icons_off_X.png
new file mode 100755 (executable)
index 0000000..cbab99b
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/icons_off_X.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/input_error.png b/recipes/enigma2/enigma2/vuplus/750S/icons/input_error.png
new file mode 100755 (executable)
index 0000000..620c32d
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/input_error.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/input_info.png b/recipes/enigma2/enigma2/vuplus/750S/icons/input_info.png
new file mode 100755 (executable)
index 0000000..8aefdca
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/input_info.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/input_question.png b/recipes/enigma2/enigma2/vuplus/750S/icons/input_question.png
new file mode 100755 (executable)
index 0000000..fad2b96
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/input_question.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/lock.png b/recipes/enigma2/enigma2/vuplus/750S/icons/lock.png
new file mode 100755 (executable)
index 0000000..05d2d81
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/lock.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/lock_error.png b/recipes/enigma2/enigma2/vuplus/750S/icons/lock_error.png
new file mode 100755 (executable)
index 0000000..152028a
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/lock_error.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/lock_off.png b/recipes/enigma2/enigma2/vuplus/750S/icons/lock_off.png
new file mode 100755 (executable)
index 0000000..6dd6298
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/lock_off.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/lock_on.png b/recipes/enigma2/enigma2/vuplus/750S/icons/lock_on.png
new file mode 100755 (executable)
index 0000000..6daf601
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/lock_on.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/marker.png b/recipes/enigma2/enigma2/vuplus/750S/icons/marker.png
new file mode 100755 (executable)
index 0000000..82c21b5
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/marker.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/mp_buttons.png b/recipes/enigma2/enigma2/vuplus/750S/icons/mp_buttons.png
new file mode 100755 (executable)
index 0000000..42ad320
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/mp_buttons.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/plugin.png b/recipes/enigma2/enigma2/vuplus/750S/icons/plugin.png
new file mode 100755 (executable)
index 0000000..f75cde0
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/plugin.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/rass_logo.png b/recipes/enigma2/enigma2/vuplus/750S/icons/rass_logo.png
new file mode 100755 (executable)
index 0000000..c0a16cf
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/rass_logo.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/rass_page1.png b/recipes/enigma2/enigma2/vuplus/750S/icons/rass_page1.png
new file mode 100755 (executable)
index 0000000..ca690b2
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/rass_page1.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/rass_page2.png b/recipes/enigma2/enigma2/vuplus/750S/icons/rass_page2.png
new file mode 100755 (executable)
index 0000000..84f7f8c
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/rass_page2.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/rass_page3.png b/recipes/enigma2/enigma2/vuplus/750S/icons/rass_page3.png
new file mode 100755 (executable)
index 0000000..8e6a38f
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/rass_page3.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/rass_page4.png b/recipes/enigma2/enigma2/vuplus/750S/icons/rass_page4.png
new file mode 100755 (executable)
index 0000000..6916b60
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/rass_page4.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/record.png b/recipes/enigma2/enigma2/vuplus/750S/icons/record.png
new file mode 100755 (executable)
index 0000000..f71ca5c
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/record.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/redx.png b/recipes/enigma2/enigma2/vuplus/750S/icons/redx.png
new file mode 100755 (executable)
index 0000000..2bfbaac
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/redx.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/repeat_off.png b/recipes/enigma2/enigma2/vuplus/750S/icons/repeat_off.png
new file mode 100755 (executable)
index 0000000..3156255
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/repeat_off.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/repeat_on.png b/recipes/enigma2/enigma2/vuplus/750S/icons/repeat_on.png
new file mode 100755 (executable)
index 0000000..68daaec
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/repeat_on.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/scan-c.png b/recipes/enigma2/enigma2/vuplus/750S/icons/scan-c.png
new file mode 100755 (executable)
index 0000000..ca0c45d
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/scan-c.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/scan-s.png b/recipes/enigma2/enigma2/vuplus/750S/icons/scan-s.png
new file mode 100755 (executable)
index 0000000..875bd45
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/scan-s.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/scan-t.png b/recipes/enigma2/enigma2/vuplus/750S/icons/scan-t.png
new file mode 100755 (executable)
index 0000000..19a80c5
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/scan-t.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/icons/selectioncross.png b/recipes/enigma2/enigma2/vuplus/750S/icons/selectioncross.png
new file mode 100755 (executable)
index 0000000..63fe6b5
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/icons/selectioncross.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/info-bg.png b/recipes/enigma2/enigma2/vuplus/750S/info-bg.png
new file mode 100755 (executable)
index 0000000..9818251
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/info-bg.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/info-bg_mp.png b/recipes/enigma2/enigma2/vuplus/750S/info-bg_mp.png
new file mode 100755 (executable)
index 0000000..594afdb
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/info-bg_mp.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/mediaplayer_bg.png b/recipes/enigma2/enigma2/vuplus/750S/mediaplayer_bg.png
new file mode 100755 (executable)
index 0000000..7746cc8
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/mediaplayer_bg.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/menu/Thumbs.db b/recipes/enigma2/enigma2/vuplus/750S/menu/Thumbs.db
new file mode 100755 (executable)
index 0000000..aae3914
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/menu/Thumbs.db differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/menu/dvd_player.png b/recipes/enigma2/enigma2/vuplus/750S/menu/dvd_player.png
new file mode 100755 (executable)
index 0000000..a03c015
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/menu/dvd_player.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/menu/information.png b/recipes/enigma2/enigma2/vuplus/750S/menu/information.png
new file mode 100755 (executable)
index 0000000..d596493
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/menu/information.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/menu/media_player.png b/recipes/enigma2/enigma2/vuplus/750S/menu/media_player.png
new file mode 100755 (executable)
index 0000000..0d16cf3
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/menu/media_player.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/menu/plugins.png b/recipes/enigma2/enigma2/vuplus/750S/menu/plugins.png
new file mode 100755 (executable)
index 0000000..31348a9
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/menu/plugins.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/menu/scart.png b/recipes/enigma2/enigma2/vuplus/750S/menu/scart.png
new file mode 100755 (executable)
index 0000000..cf4c8ef
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/menu/scart.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/menu/setup.png b/recipes/enigma2/enigma2/vuplus/750S/menu/setup.png
new file mode 100755 (executable)
index 0000000..adb19ec
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/menu/setup.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/menu/shutdown.png b/recipes/enigma2/enigma2/vuplus/750S/menu/shutdown.png
new file mode 100755 (executable)
index 0000000..1786590
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/menu/shutdown.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/menu/subtitles.png b/recipes/enigma2/enigma2/vuplus/750S/menu/subtitles.png
new file mode 100755 (executable)
index 0000000..aeba0a7
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/menu/subtitles.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/menu/timer.png b/recipes/enigma2/enigma2/vuplus/750S/menu/timer.png
new file mode 100755 (executable)
index 0000000..b69a6fb
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/menu/timer.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/mute.png b/recipes/enigma2/enigma2/vuplus/750S/mute.png
new file mode 100755 (executable)
index 0000000..c535f43
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/mute.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/nim_active.png b/recipes/enigma2/enigma2/vuplus/750S/nim_active.png
new file mode 100755 (executable)
index 0000000..a61de30
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/nim_active.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/no_coverArt.png b/recipes/enigma2/enigma2/vuplus/750S/no_coverArt.png
new file mode 100755 (executable)
index 0000000..7ec2eca
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/no_coverArt.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/output.png b/recipes/enigma2/enigma2/vuplus/750S/output.png
new file mode 100755 (executable)
index 0000000..e8bac98
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/output.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/pal.png b/recipes/enigma2/enigma2/vuplus/750S/pal.png
new file mode 100755 (executable)
index 0000000..1d83395
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/pal.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/picon_default.png b/recipes/enigma2/enigma2/vuplus/750S/picon_default.png
new file mode 100755 (executable)
index 0000000..61ec818
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/picon_default.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/position_arrow.png b/recipes/enigma2/enigma2/vuplus/750S/position_arrow.png
new file mode 100755 (executable)
index 0000000..267c2da
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/position_arrow.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/position_pointer.png b/recipes/enigma2/enigma2/vuplus/750S/position_pointer.png
new file mode 100755 (executable)
index 0000000..8fd3929
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/position_pointer.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/position_pointer_580.png b/recipes/enigma2/enigma2/vuplus/750S/position_pointer_580.png
new file mode 100755 (executable)
index 0000000..aa49953
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/position_pointer_580.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/prev.png b/recipes/enigma2/enigma2/vuplus/750S/prev.png
new file mode 100755 (executable)
index 0000000..a367774
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/prev.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/progress_bg.png b/recipes/enigma2/enigma2/vuplus/750S/progress_bg.png
new file mode 100755 (executable)
index 0000000..ad8c315
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/progress_bg.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/progress_big.png b/recipes/enigma2/enigma2/vuplus/750S/progress_big.png
new file mode 100755 (executable)
index 0000000..ebe66a4
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/progress_big.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/progress_medium.png b/recipes/enigma2/enigma2/vuplus/750S/progress_medium.png
new file mode 100755 (executable)
index 0000000..be0cf11
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/progress_medium.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/progress_recording.png b/recipes/enigma2/enigma2/vuplus/750S/progress_recording.png
new file mode 100755 (executable)
index 0000000..91ee430
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/progress_recording.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/progress_small.png b/recipes/enigma2/enigma2/vuplus/750S/progress_small.png
new file mode 100755 (executable)
index 0000000..05e5a14
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/progress_small.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/rc.png b/recipes/enigma2/enigma2/vuplus/750S/rc.png
new file mode 100755 (executable)
index 0000000..52ae3fe
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/rc.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/rcold.png b/recipes/enigma2/enigma2/vuplus/750S/rcold.png
new file mode 100755 (executable)
index 0000000..77e06f1
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/rcold.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/screws.png b/recipes/enigma2/enigma2/vuplus/750S/screws.png
new file mode 100755 (executable)
index 0000000..25a4a3e
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/screws.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/screws_mp.png b/recipes/enigma2/enigma2/vuplus/750S/screws_mp.png
new file mode 100755 (executable)
index 0000000..625e331
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/screws_mp.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/scroll.png b/recipes/enigma2/enigma2/vuplus/750S/scroll.png
new file mode 100755 (executable)
index 0000000..c2d456f
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/scroll.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/singlelineList_selected_23p.png b/recipes/enigma2/enigma2/vuplus/750S/singlelineList_selected_23p.png
new file mode 100755 (executable)
index 0000000..4823e66
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/singlelineList_selected_23p.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/sleeptimer.png b/recipes/enigma2/enigma2/vuplus/750S/sleeptimer.png
new file mode 100755 (executable)
index 0000000..0334865
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/sleeptimer.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/spinner/Thumbs.db b/recipes/enigma2/enigma2/vuplus/750S/spinner/Thumbs.db
new file mode 100755 (executable)
index 0000000..5b547ce
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/spinner/Thumbs.db differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/spinner/wait1.png b/recipes/enigma2/enigma2/vuplus/750S/spinner/wait1.png
new file mode 100755 (executable)
index 0000000..49ffcc2
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/spinner/wait1.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/spinner/wait2.png b/recipes/enigma2/enigma2/vuplus/750S/spinner/wait2.png
new file mode 100755 (executable)
index 0000000..d19f3d3
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/spinner/wait2.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/spinner/wait3.png b/recipes/enigma2/enigma2/vuplus/750S/spinner/wait3.png
new file mode 100755 (executable)
index 0000000..229a91c
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/spinner/wait3.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/spinner/wait4.png b/recipes/enigma2/enigma2/vuplus/750S/spinner/wait4.png
new file mode 100755 (executable)
index 0000000..b96ad21
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/spinner/wait4.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/timeline-now.png b/recipes/enigma2/enigma2/vuplus/750S/timeline-now.png
new file mode 100755 (executable)
index 0000000..1220616
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/timeline-now.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/timeline.png b/recipes/enigma2/enigma2/vuplus/750S/timeline.png
new file mode 100755 (executable)
index 0000000..9fb0823
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/timeline.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/unhandled-key.png b/recipes/enigma2/enigma2/vuplus/750S/unhandled-key.png
new file mode 100755 (executable)
index 0000000..8e54349
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/unhandled-key.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/verticalline-plugins.png b/recipes/enigma2/enigma2/vuplus/750S/verticalline-plugins.png
new file mode 100755 (executable)
index 0000000..bf2575f
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/verticalline-plugins.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/vkey_backspace.png b/recipes/enigma2/enigma2/vuplus/750S/vkey_backspace.png
new file mode 100755 (executable)
index 0000000..ed49159
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/vkey_backspace.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/vkey_bg.png b/recipes/enigma2/enigma2/vuplus/750S/vkey_bg.png
new file mode 100755 (executable)
index 0000000..5151da4
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/vkey_bg.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/vkey_clr.png b/recipes/enigma2/enigma2/vuplus/750S/vkey_clr.png
new file mode 100755 (executable)
index 0000000..0c7734b
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/vkey_clr.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/vkey_esc.png b/recipes/enigma2/enigma2/vuplus/750S/vkey_esc.png
new file mode 100755 (executable)
index 0000000..56c52d3
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/vkey_esc.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/vkey_icon.png b/recipes/enigma2/enigma2/vuplus/750S/vkey_icon.png
new file mode 100755 (executable)
index 0000000..f27b7f8
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/vkey_icon.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/vkey_left.png b/recipes/enigma2/enigma2/vuplus/750S/vkey_left.png
new file mode 100755 (executable)
index 0000000..2e77e71
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/vkey_left.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/vkey_ok.png b/recipes/enigma2/enigma2/vuplus/750S/vkey_ok.png
new file mode 100755 (executable)
index 0000000..2c0c7e8
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/vkey_ok.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/vkey_right.png b/recipes/enigma2/enigma2/vuplus/750S/vkey_right.png
new file mode 100755 (executable)
index 0000000..fefb17c
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/vkey_right.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/vkey_sel.png b/recipes/enigma2/enigma2/vuplus/750S/vkey_sel.png
new file mode 100755 (executable)
index 0000000..b612b94
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/vkey_sel.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/vkey_shift.png b/recipes/enigma2/enigma2/vuplus/750S/vkey_shift.png
new file mode 100755 (executable)
index 0000000..477f8db
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/vkey_shift.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/vkey_shift_sel.png b/recipes/enigma2/enigma2/vuplus/750S/vkey_shift_sel.png
new file mode 100755 (executable)
index 0000000..339ddb4
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/vkey_shift_sel.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/vkey_space.png b/recipes/enigma2/enigma2/vuplus/750S/vkey_space.png
new file mode 100755 (executable)
index 0000000..5151da4
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/vkey_space.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/vkey_text.png b/recipes/enigma2/enigma2/vuplus/750S/vkey_text.png
new file mode 100755 (executable)
index 0000000..6bdb8c8
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/vkey_text.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/volume.png b/recipes/enigma2/enigma2/vuplus/750S/volume.png
new file mode 100755 (executable)
index 0000000..aa60fab
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/volume.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/volume_box.png b/recipes/enigma2/enigma2/vuplus/750S/volume_box.png
new file mode 100755 (executable)
index 0000000..f7c4df2
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/volume_box.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/750S/wizard.png b/recipes/enigma2/enigma2/vuplus/750S/wizard.png
new file mode 100755 (executable)
index 0000000..4a5df40
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/750S/wizard.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/MyriadPro-Regular.otf b/recipes/enigma2/enigma2/vuplus/MyriadPro-Regular.otf
new file mode 100755 (executable)
index 0000000..c9454bb
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/MyriadPro-Regular.otf differ
diff --git a/recipes/enigma2/enigma2/vuplus/MyriadPro-Semibold.otf b/recipes/enigma2/enigma2/vuplus/MyriadPro-Semibold.otf
new file mode 100755 (executable)
index 0000000..1b33d74
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/MyriadPro-Semibold.otf differ
diff --git a/recipes/enigma2/enigma2/vuplus/MyriadPro-SemiboldIt.otf b/recipes/enigma2/enigma2/vuplus/MyriadPro-SemiboldIt.otf
new file mode 100755 (executable)
index 0000000..e92ba39
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/MyriadPro-SemiboldIt.otf differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/Bg_EPG_list.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/Bg_EPG_list.png
new file mode 100755 (executable)
index 0000000..c43abc2
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/Bg_EPG_list.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/Bg_EPG_view.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/Bg_EPG_view.png
new file mode 100755 (executable)
index 0000000..3033e4a
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/Bg_EPG_view.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/Bg_List.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/Bg_List.png
new file mode 100755 (executable)
index 0000000..4acf507
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/Bg_List.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/Bg_Media.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/Bg_Media.png
new file mode 100755 (executable)
index 0000000..553bd75
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/Bg_Media.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/Bg_Media_info.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/Bg_Media_info.png
new file mode 100755 (executable)
index 0000000..397f037
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/Bg_Media_info.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/Bg_Subtitle.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/Bg_Subtitle.png
new file mode 100755 (executable)
index 0000000..4b953c4
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/Bg_Subtitle.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/Bg_divideline.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/Bg_divideline.png
new file mode 100755 (executable)
index 0000000..77c34d1
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/Bg_divideline.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/Solo_Menu_bg520.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/Solo_Menu_bg520.png
new file mode 100755 (executable)
index 0000000..c7037b4
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/Solo_Menu_bg520.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/Statusbar_white.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/Statusbar_white.png
new file mode 100755 (executable)
index 0000000..6e716ea
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/Statusbar_white.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/arrowdown.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/arrowdown.png
new file mode 100755 (executable)
index 0000000..2a1553a
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/arrowdown.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/arrowleft.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/arrowleft.png
new file mode 100755 (executable)
index 0000000..dafacee
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/arrowleft.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/arrowright.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/arrowright.png
new file mode 100755 (executable)
index 0000000..92f6164
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/arrowright.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/arrowup.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/arrowup.png
new file mode 100755 (executable)
index 0000000..47d8fd5
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/arrowup.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/b_b.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/b_b.png
new file mode 100755 (executable)
index 0000000..97bfb9a
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/b_b.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/b_bl.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/b_bl.png
new file mode 100755 (executable)
index 0000000..a1d9cb9
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/b_bl.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/b_br.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/b_br.png
new file mode 100755 (executable)
index 0000000..efe9531
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/b_br.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/b_l.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/b_l.png
new file mode 100755 (executable)
index 0000000..7095bb9
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/b_l.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/b_r.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/b_r.png
new file mode 100755 (executable)
index 0000000..5b28fed
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/b_r.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/b_t.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/b_t.png
new file mode 100755 (executable)
index 0000000..6130b08
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/b_t.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/b_tl.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/b_tl.png
new file mode 100755 (executable)
index 0000000..df2ad7c
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/b_tl.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/b_tr.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/b_tr.png
new file mode 100755 (executable)
index 0000000..b3482cf
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/b_tr.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/bar_ber.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/bar_ber.png
new file mode 100755 (executable)
index 0000000..8be0563
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/bar_ber.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/bar_snr.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/bar_snr.png
new file mode 100755 (executable)
index 0000000..973ae3a
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/bar_snr.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/bg.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/bg.png
new file mode 100755 (executable)
index 0000000..de085ba
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/bg.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/border_eventinfo.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/border_eventinfo.png
new file mode 100755 (executable)
index 0000000..5108758
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/border_eventinfo.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/border_info.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/border_info.png
new file mode 100755 (executable)
index 0000000..8393a9e
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/border_info.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/border_menu.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/border_menu.png
new file mode 100755 (executable)
index 0000000..6a64838
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/border_menu.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/FocusBar_H36.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/FocusBar_H36.png
new file mode 100755 (executable)
index 0000000..d2def92
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/FocusBar_H36.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/FocusBar_H42.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/FocusBar_H42.png
new file mode 100755 (executable)
index 0000000..ab58440
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/FocusBar_H42.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/FocusBar_H45.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/FocusBar_H45.png
new file mode 100755 (executable)
index 0000000..cab02ec
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/FocusBar_H45.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/blue.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/blue.png
new file mode 100755 (executable)
index 0000000..c2dcd16
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/blue.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/button_bluekey.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/button_bluekey.png
new file mode 100755 (executable)
index 0000000..077bd14
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/button_bluekey.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/button_off.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/button_off.png
new file mode 100755 (executable)
index 0000000..c2561a4
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/button_off.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/green.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/green.png
new file mode 100755 (executable)
index 0000000..8a149b6
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/green.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/key_0.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/key_0.png
new file mode 100755 (executable)
index 0000000..64ad839
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/key_0.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/key_1.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/key_1.png
new file mode 100755 (executable)
index 0000000..32255d7
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/key_1.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/key_2.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/key_2.png
new file mode 100755 (executable)
index 0000000..0293c8c
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/key_2.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/key_3.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/key_3.png
new file mode 100755 (executable)
index 0000000..b18fd0e
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/key_3.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/key_4.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/key_4.png
new file mode 100755 (executable)
index 0000000..cf160e7
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/key_4.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/key_5.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/key_5.png
new file mode 100755 (executable)
index 0000000..9eba495
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/key_5.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/key_6.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/key_6.png
new file mode 100755 (executable)
index 0000000..88ccfae
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/key_6.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/key_7.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/key_7.png
new file mode 100755 (executable)
index 0000000..05e146a
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/key_7.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/key_8.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/key_8.png
new file mode 100755 (executable)
index 0000000..09924f0
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/key_8.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/key_9.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/key_9.png
new file mode 100755 (executable)
index 0000000..be9b368
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/key_9.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/key_text.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/key_text.png
new file mode 100755 (executable)
index 0000000..8e91a12
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/key_text.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/red.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/red.png
new file mode 100755 (executable)
index 0000000..19d678d
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/red.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/yellow.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/yellow.png
new file mode 100755 (executable)
index 0000000..e5d8d84
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/buttons/yellow.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/ad.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/ad.png
new file mode 100755 (executable)
index 0000000..c80c0a2
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/ad.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/ae.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/ae.png
new file mode 100755 (executable)
index 0000000..e69242c
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/ae.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/cz.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/cz.png
new file mode 100755 (executable)
index 0000000..27ea03b
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/cz.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/de.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/de.png
new file mode 100755 (executable)
index 0000000..933e27a
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/de.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/dk.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/dk.png
new file mode 100755 (executable)
index 0000000..8e0c06b
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/dk.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/ee.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/ee.png
new file mode 100755 (executable)
index 0000000..73d266a
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/ee.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/en.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/en.png
new file mode 100755 (executable)
index 0000000..77d931d
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/en.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/es.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/es.png
new file mode 100755 (executable)
index 0000000..2b1d44b
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/es.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/fi.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/fi.png
new file mode 100755 (executable)
index 0000000..a6a24af
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/fi.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/fr.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/fr.png
new file mode 100755 (executable)
index 0000000..03b8ce9
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/fr.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/gr.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/gr.png
new file mode 100755 (executable)
index 0000000..e89b873
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/gr.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/hr.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/hr.png
new file mode 100755 (executable)
index 0000000..e289da3
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/hr.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/hu.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/hu.png
new file mode 100755 (executable)
index 0000000..fb17f3b
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/hu.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/is.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/is.png
new file mode 100755 (executable)
index 0000000..af66e5d
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/is.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/it.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/it.png
new file mode 100755 (executable)
index 0000000..8fd6217
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/it.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/lt.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/lt.png
new file mode 100755 (executable)
index 0000000..5d61532
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/lt.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/lv.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/lv.png
new file mode 100755 (executable)
index 0000000..360b658
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/lv.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/missing.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/missing.png
new file mode 100755 (executable)
index 0000000..3fbd23c
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/missing.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/nl.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/nl.png
new file mode 100755 (executable)
index 0000000..7419c69
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/nl.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/no.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/no.png
new file mode 100755 (executable)
index 0000000..f679af1
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/no.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/pl.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/pl.png
new file mode 100755 (executable)
index 0000000..13ab5f2
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/pl.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/pt.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/pt.png
new file mode 100755 (executable)
index 0000000..81131ca
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/pt.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/ro.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/ro.png
new file mode 100755 (executable)
index 0000000..8f21363
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/ro.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/ru.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/ru.png
new file mode 100755 (executable)
index 0000000..45ab022
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/ru.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/se.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/se.png
new file mode 100755 (executable)
index 0000000..5d416e8
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/se.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/si.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/si.png
new file mode 100755 (executable)
index 0000000..8dc690c
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/si.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/sk.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/sk.png
new file mode 100755 (executable)
index 0000000..d6d212e
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/sk.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/tr.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/tr.png
new file mode 100755 (executable)
index 0000000..d1b648d
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/tr.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/ua.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/ua.png
new file mode 100755 (executable)
index 0000000..a2c12a4
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/ua.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/x-fy.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/x-fy.png
new file mode 100755 (executable)
index 0000000..2b2c7e6
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/x-fy.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/yu.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/yu.png
new file mode 100755 (executable)
index 0000000..00c2819
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/countries/yu.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/div-h.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/div-h.png
new file mode 100755 (executable)
index 0000000..d6fcc7f
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/div-h.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/div-v.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/div-v.png
new file mode 100755 (executable)
index 0000000..e97cab9
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/div-v.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/epg_more.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/epg_more.png
new file mode 100755 (executable)
index 0000000..28a3077
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/epg_more.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/epg_next.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/epg_next.png
new file mode 100755 (executable)
index 0000000..7b349de
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/epg_next.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/epg_now.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/epg_now.png
new file mode 100755 (executable)
index 0000000..cec38f6
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/epg_now.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/Mediaplayerbar_gray.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/Mediaplayerbar_gray.png
new file mode 100755 (executable)
index 0000000..dcc157f
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/Mediaplayerbar_gray.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/Mediaplayerbar_purple.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/Mediaplayerbar_purple.png
new file mode 100755 (executable)
index 0000000..7ad44f5
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/Mediaplayerbar_purple.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/clock.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/clock.png
new file mode 100755 (executable)
index 0000000..430bd04
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/clock.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/dish.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/dish.png
new file mode 100755 (executable)
index 0000000..cde6be1
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/dish.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/dish_scan.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/dish_scan.png
new file mode 100755 (executable)
index 0000000..f9cbeaa
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/dish_scan.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/ico_Chlist_title.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/ico_Chlist_title.png
new file mode 100755 (executable)
index 0000000..8ad2570
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/ico_Chlist_title.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/ico_Radio_title.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/ico_Radio_title.png
new file mode 100755 (executable)
index 0000000..641ccd2
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/ico_Radio_title.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/ico_folder.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/ico_folder.png
new file mode 100755 (executable)
index 0000000..82dae56
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/ico_folder.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/ico_noreplay.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/ico_noreplay.png
new file mode 100755 (executable)
index 0000000..54ec7c0
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/ico_noreplay.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/ico_player.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/ico_player.png
new file mode 100755 (executable)
index 0000000..dac8ff3
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/ico_player.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/ico_replay.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/ico_replay.png
new file mode 100755 (executable)
index 0000000..b2baf0b
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/ico_replay.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icon_crypt.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icon_crypt.png
new file mode 100755 (executable)
index 0000000..745a645
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icon_crypt.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icon_crypt_off.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icon_crypt_off.png
new file mode 100755 (executable)
index 0000000..7d429d9
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icon_crypt_off.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icon_dolby.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icon_dolby.png
new file mode 100755 (executable)
index 0000000..403b34a
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icon_dolby.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icon_dolby_off.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icon_dolby_off.png
new file mode 100755 (executable)
index 0000000..d68c5c1
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icon_dolby_off.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icon_event.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icon_event.png
new file mode 100755 (executable)
index 0000000..1b7daf5
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icon_event.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icon_format.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icon_format.png
new file mode 100755 (executable)
index 0000000..5d2c39a
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icon_format.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icon_format_off.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icon_format_off.png
new file mode 100755 (executable)
index 0000000..b1424e1
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icon_format_off.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icon_rec.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icon_rec.png
new file mode 100755 (executable)
index 0000000..b7bf2e7
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icon_rec.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icon_rec_off.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icon_rec_off.png
new file mode 100755 (executable)
index 0000000..815d6e4
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icon_rec_off.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icon_txt.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icon_txt.png
new file mode 100755 (executable)
index 0000000..dded3a2
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icon_txt.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icon_txt_off.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icon_txt_off.png
new file mode 100755 (executable)
index 0000000..8267f55
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icon_txt_off.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icon_view.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icon_view.png
new file mode 100755 (executable)
index 0000000..988b419
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icon_view.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icons_off.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icons_off.png
new file mode 100755 (executable)
index 0000000..8cc9d2a
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/icons_off.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/input_error.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/input_error.png
new file mode 100755 (executable)
index 0000000..e1a6def
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/input_error.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/input_info.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/input_info.png
new file mode 100755 (executable)
index 0000000..96f4d94
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/input_info.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/input_question.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/input_question.png
new file mode 100755 (executable)
index 0000000..9517b86
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/input_question.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/lock.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/lock.png
new file mode 100755 (executable)
index 0000000..05d2d81
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/lock.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/lock_error.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/lock_error.png
new file mode 100755 (executable)
index 0000000..4f33190
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/lock_error.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/lock_off.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/lock_off.png
new file mode 100755 (executable)
index 0000000..8f215c7
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/lock_off.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/lock_on.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/lock_on.png
new file mode 100755 (executable)
index 0000000..0b11a00
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/lock_on.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/mp_buttons.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/mp_buttons.png
new file mode 100755 (executable)
index 0000000..b0be794
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/mp_buttons.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/plugin.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/plugin.png
new file mode 100755 (executable)
index 0000000..f75cde0
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/plugin.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/rass_logo.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/rass_logo.png
new file mode 100755 (executable)
index 0000000..c0a16cf
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/rass_logo.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/record.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/record.png
new file mode 100755 (executable)
index 0000000..f71ca5c
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/record.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/redx.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/redx.png
new file mode 100755 (executable)
index 0000000..246f6ba
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/redx.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/scan-c.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/scan-c.png
new file mode 100755 (executable)
index 0000000..ca0c45d
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/scan-c.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/scan-s.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/scan-s.png
new file mode 100755 (executable)
index 0000000..ae77c1a
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/scan-s.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/scan-t.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/scan-t.png
new file mode 100755 (executable)
index 0000000..19a80c5
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/icons/scan-t.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/info-bg.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/info-bg.png
new file mode 100755 (executable)
index 0000000..6544b44
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/info-bg.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_EPG_title.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_EPG_title.png
new file mode 100755 (executable)
index 0000000..f7a7736
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_EPG_title.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_Plugin_All_title.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_Plugin_All_title.png
new file mode 100755 (executable)
index 0000000..386c56c
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_Plugin_All_title.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_menu_Info.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_menu_Info.png
new file mode 100755 (executable)
index 0000000..3727f0b
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_menu_Info.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_menu_Media.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_menu_Media.png
new file mode 100755 (executable)
index 0000000..3b14a83
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_menu_Media.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_menu_Plugin.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_menu_Plugin.png
new file mode 100755 (executable)
index 0000000..e40aec1
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_menu_Plugin.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_menu_Setup.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_menu_Setup.png
new file mode 100755 (executable)
index 0000000..e597023
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_menu_Setup.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_menu_Standby.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_menu_Standby.png
new file mode 100755 (executable)
index 0000000..ee40b97
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_menu_Standby.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_menu_Subtitles.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_menu_Subtitles.png
new file mode 100755 (executable)
index 0000000..a9071bb
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_menu_Subtitles.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_menu_Timer.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_menu_Timer.png
new file mode 100755 (executable)
index 0000000..4035dbb
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_menu_Timer.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_title_Info.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_title_Info.png
new file mode 100755 (executable)
index 0000000..5236668
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_title_Info.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_title_MENU.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_title_MENU.png
new file mode 100755 (executable)
index 0000000..b46b985
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_title_MENU.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_title_Media.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_title_Media.png
new file mode 100755 (executable)
index 0000000..2370e1e
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_title_Media.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_title_Plugin.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_title_Plugin.png
new file mode 100755 (executable)
index 0000000..46d5c37
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_title_Plugin.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_title_Pluginall.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_title_Pluginall.png
new file mode 100755 (executable)
index 0000000..6d74bd5
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_title_Pluginall.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_title_Setup.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_title_Setup.png
new file mode 100755 (executable)
index 0000000..0f9fa3c
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_title_Setup.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_title_Standby.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_title_Standby.png
new file mode 100755 (executable)
index 0000000..d2f468c
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_title_Standby.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_title_Subtitles.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_title_Subtitles.png
new file mode 100755 (executable)
index 0000000..ccdfc8f
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_title_Subtitles.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_title_Timer.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_title_Timer.png
new file mode 100755 (executable)
index 0000000..31879f8
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_title_Timer.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_title_media-info.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_title_media-info.png
new file mode 100755 (executable)
index 0000000..41ba0e5
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/menu/ico_title_media-info.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/mute.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/mute.png
new file mode 100755 (executable)
index 0000000..a760869
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/mute.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/no_coverArt.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/no_coverArt.png
new file mode 100755 (executable)
index 0000000..352a1d5
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/no_coverArt.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/position_arrow.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/position_arrow.png
new file mode 100755 (executable)
index 0000000..267c2da
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/position_arrow.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/prev.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/prev.png
new file mode 100755 (executable)
index 0000000..17c5213
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/prev.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/progress_bg.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/progress_bg.png
new file mode 100755 (executable)
index 0000000..ad8c315
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/progress_bg.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/progress_big.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/progress_big.png
new file mode 100755 (executable)
index 0000000..2186259
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/progress_big.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/progress_medium.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/progress_medium.png
new file mode 100755 (executable)
index 0000000..0644f80
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/progress_medium.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/progress_small.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/progress_small.png
new file mode 100755 (executable)
index 0000000..2186259
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/progress_small.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/rc.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/rc.png
new file mode 100755 (executable)
index 0000000..59fdae4
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/rc.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/rcold.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/rcold.png
new file mode 100755 (executable)
index 0000000..62d579d
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/rcold.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/sleeptimer.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/sleeptimer.png
new file mode 100755 (executable)
index 0000000..5637c29
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/sleeptimer.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/timeline-now.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/timeline-now.png
new file mode 100755 (executable)
index 0000000..edc022e
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/timeline-now.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/timeline.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/timeline.png
new file mode 100755 (executable)
index 0000000..9fb0823
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/timeline.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/unhandled-key.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/unhandled-key.png
new file mode 100755 (executable)
index 0000000..51d6e6c
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/unhandled-key.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_backspace.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_backspace.png
new file mode 100755 (executable)
index 0000000..ed49159
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_backspace.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_bg.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_bg.png
new file mode 100755 (executable)
index 0000000..5151da4
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_bg.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_clr.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_clr.png
new file mode 100755 (executable)
index 0000000..0c7734b
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_clr.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_esc.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_esc.png
new file mode 100755 (executable)
index 0000000..56c52d3
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_esc.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_icon.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_icon.png
new file mode 100755 (executable)
index 0000000..f27b7f8
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_icon.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_left.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_left.png
new file mode 100755 (executable)
index 0000000..2e77e71
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_left.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_ok.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_ok.png
new file mode 100755 (executable)
index 0000000..2c0c7e8
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_ok.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_right.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_right.png
new file mode 100755 (executable)
index 0000000..fefb17c
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_right.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_sel.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_sel.png
new file mode 100755 (executable)
index 0000000..b612b94
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_sel.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_shift.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_shift.png
new file mode 100755 (executable)
index 0000000..477f8db
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_shift.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_shift_sel.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_shift_sel.png
new file mode 100755 (executable)
index 0000000..339ddb4
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_shift_sel.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_space.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_space.png
new file mode 100755 (executable)
index 0000000..5151da4
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_space.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_text.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_text.png
new file mode 100755 (executable)
index 0000000..6bdb8c8
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/vkey_text.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/volume_background.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/volume_background.png
new file mode 100755 (executable)
index 0000000..9bfdbae
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/volume_background.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/volume_up.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/volume_up.png
new file mode 100755 (executable)
index 0000000..8ee1439
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/volume_up.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/Vu_HD/wizard.png b/recipes/enigma2/enigma2/vuplus/Vu_HD/wizard.png
new file mode 100755 (executable)
index 0000000..4a5df40
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/Vu_HD/wizard.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/enigma2_vuplus_duo.patch b/recipes/enigma2/enigma2/vuplus/enigma2_vuplus_duo.patch
new file mode 100644 (file)
index 0000000..2570673
--- /dev/null
@@ -0,0 +1,261 @@
+diff --git a/acinclude.m4 b/acinclude.m4
+index ab3835e..dd6ef07 100755
+--- a/acinclude.m4
++++ b/acinclude.m4
+@@ -159,6 +159,8 @@ fi
+  #csh
+ AC_DEFINE(BUILD_VUPLUS,1,[Define to 1 for 750])
++ # ikseong
++AC_DEFINE(BUILD_VUPLUS_DUO,1,[Define to 1 for 750])
+ if test "$DVB_API_VERSION"; then
+       AC_DEFINE(HAVE_DVB,1,[Define to 1 if you have the dvb includes])
+diff --git a/lib/dvb/frontend.cpp b/lib/dvb/frontend.cpp
+index 6b09d3d..40c2289 100755
+--- a/lib/dvb/frontend.cpp
++++ b/lib/dvb/frontend.cpp
+@@ -2730,3 +2730,45 @@ arg_error:
+               "eDVBFrontend::setSlotInfo must get a tuple with first param slotid, second param slot description and third param enabled boolean");
+       return false;
+ }
++
++#ifdef BUILD_VUPLUS_DUO /* ikseong  */
++#ifndef SW_LOOP_THROUGH
++#define SW_LOOP_THROUGH       _IOW('o',103,int)
++#endif
++/*
++*     by ikseong
++*     for loopthrough
++*     onoff   1 - on
++*                     0 - off
++*/
++RESULT eDVBFrontend::setLoopthrough(int onoff)
++{     
++      char filename[128];
++      int result;
++      int fd;
++      if ( m_fd<0)
++      {
++              sprintf(filename, "/dev/dvb/adapter0/frontend%d",m_slotid);
++              fd = ::open(filename, O_RDWR|O_NONBLOCK);
++      }
++      else
++      {
++              eDebug("fd = %d",m_fd);
++              fd=m_fd;
++      }
++      if(fd > 0)
++      {
++              result =        ::ioctl(fd, SW_LOOP_THROUGH, &onoff);
++              eDebug("\n slot %d Loopthrough %d ->",m_slotid,onoff);
++              if (result < 0)
++                      eDebugNoNewLine(" %d = %m",result);
++              else
++                      eDebugNoNewLine("ok");
++              if(m_fd<0)
++                      ::close(fd);
++      }
++      else
++              eDebug("eDVBFrontend::setLoopthrough %d open error",m_slotid);  
++      return 0;
++}
++#endif                
+diff --git a/lib/dvb/frontend.h b/lib/dvb/frontend.h
+index bef4a18..9aebc71 100644
+--- a/lib/dvb/frontend.h
++++ b/lib/dvb/frontend.h
+@@ -152,6 +152,11 @@ public:
+       int closeFrontend(bool force=false, bool no_delayed=false);
+       const char *getDescription() const { return m_description; }
+       bool is_simulate() const { return m_simulate; }
++
++#ifdef BUILD_VUPLUS_DUO /* ikseong  */
++      RESULT setLoopthrough(int onoff);
++#endif
++
+ };
+ #endif // SWIG
+diff --git a/lib/dvb/sec.cpp b/lib/dvb/sec.cpp
+index 58fc5e3..6ece243 100644
+--- a/lib/dvb/sec.cpp
++++ b/lib/dvb/sec.cpp
+@@ -1018,6 +1018,9 @@ RESULT eDVBSatelliteEquipmentControl::clear()
+                       }
+               }
+               it->m_frontend->setData(eDVBFrontend::SATPOS_DEPENDS_PTR, -1);
++#ifdef BUILD_VUPLUS_DUO /* ikseong  */
++              it->m_frontend->setLoopthrough(0);
++#endif                
+               it->m_frontend->setData(eDVBFrontend::LINKED_PREV_PTR, -1);
+               it->m_frontend->setData(eDVBFrontend::LINKED_NEXT_PTR, -1);
+               it->m_frontend->setData(eDVBFrontend::ROTOR_POS, -1);
+@@ -1028,6 +1031,9 @@ RESULT eDVBSatelliteEquipmentControl::clear()
+       for (eSmartPtrList<eDVBRegisteredFrontend>::iterator it(m_avail_simulate_frontends.begin()); it != m_avail_simulate_frontends.end(); ++it)
+       {
+               it->m_frontend->setData(eDVBFrontend::SATPOS_DEPENDS_PTR, -1);
++#ifdef BUILD_VUPLUS_DUO /* ikseong  */
++              it->m_frontend->setLoopthrough(0);
++#endif                
+               it->m_frontend->setData(eDVBFrontend::LINKED_PREV_PTR, -1);
+               it->m_frontend->setData(eDVBFrontend::LINKED_NEXT_PTR, -1);
+               it->m_frontend->setData(eDVBFrontend::ROTOR_POS, -1);
+@@ -1459,6 +1465,9 @@ RESULT eDVBSatelliteEquipmentControl::setTunerLinked(int tu1, int tu2)
+                                       fclose(f);
+                               }
+                       }
++#ifdef BUILD_VUPLUS_DUO /* ikseong  */
++                      p1->m_frontend->setLoopthrough(1);
++#endif
+               }
+               p1=p2=NULL;
+@@ -1474,6 +1483,9 @@ RESULT eDVBSatelliteEquipmentControl::setTunerLinked(int tu1, int tu2)
+               {
+                       p1->m_frontend->setData(eDVBFrontend::LINKED_PREV_PTR, (long)p2);
+                       p2->m_frontend->setData(eDVBFrontend::LINKED_NEXT_PTR, (long)p1);
++#ifdef BUILD_VUPLUS_DUO /* ikseong  */
++                      p1->m_frontend->setLoopthrough(1);
++#endif
+                       return 0;
+               }
+       }
+diff --git a/lib/gdi/glcddc.cpp b/lib/gdi/glcddc.cpp
+index 096705e..bcf0f5f 100755
+--- a/lib/gdi/glcddc.cpp
++++ b/lib/gdi/glcddc.cpp
+@@ -34,6 +34,16 @@ void gLCDDC::exec(gOpcode *o)
+ {
+       switch (o->opcode)
+       {
++#ifdef BUILD_VUPLUS_DUO /* ikseong  */
++      case gOpcode::renderText:
++              if (o->parm.renderText->text)
++              {
++                      lcd->updates(gDC::m_current_offset,o->parm.renderText->text);
++                      free(o->parm.renderText->text);
++                      delete o->parm.renderText;
++              }
++              break;
++#endif                        
+       case gOpcode::flush:
+ //            if (update)
+ #ifndef BUILD_VUPLUS /* ikseong  */
+diff --git a/lib/gdi/lcd.cpp b/lib/gdi/lcd.cpp
+index 9cb657c..51af908 100755
+--- a/lib/gdi/lcd.cpp
++++ b/lib/gdi/lcd.cpp
+@@ -228,3 +228,32 @@ void eDBoxLCD::update()
+       }
+ }
++#ifdef BUILD_VUPLUS_DUO /* ikseong  */
++char *eDBoxLCD::remaketext(char *text)
++{
++      int len = strlen(text);
++      int i;
++      char *result;
++      for(i=0;i<len;i++)
++      {
++              if(text[i]==0x0a)
++                      result[i] = 0x20;
++              else
++                      result[i]=text[i];
++      }
++      return text;
++}
++
++void eDBoxLCD::updates(ePoint start,char *text)
++{
++      char *result;
++      if((lcdfd >= 0) && (start.y() < 5))
++      {
++//            eDebug("vfd output - %s",text);
++              result = remaketext(text);
++//            eDebug("vfd output - %s",result);
++              //write(lcdfd,text,strlen(text));
++              write(lcdfd,result,strlen(result));
++      }
++}
++#endif
+diff --git a/lib/gdi/lcd.h b/lib/gdi/lcd.h
+index e7b4c2c..561e3b0 100644
+--- a/lib/gdi/lcd.h
++++ b/lib/gdi/lcd.h
+@@ -36,6 +36,9 @@ public:
+       int stride() { return _stride; }
+       eSize size() { return res; }
+       virtual void update()=0;
++#ifdef BUILD_VUPLUS_DUO /* ikseong  */
++      virtual void updates(ePoint start,char *text) = 0;
++#endif
+ #endif
+ };
+@@ -59,6 +62,10 @@ public:
+       void setInverted( unsigned char );
+       bool isOled() const { return !!is_oled; }
+       void update();
++#ifdef BUILD_VUPLUS_DUO /* ikseong  */
++      char *remaketext(char *text);
++      void updates(ePoint start,char *text);
++#endif
+ };
+ #endif
+diff --git a/lib/python/Screens/ChoiceBox.py b/lib/python/Screens/ChoiceBox.py
+index 7c8b142..39e70d4 100644
+--- a/lib/python/Screens/ChoiceBox.py
++++ b/lib/python/Screens/ChoiceBox.py
+@@ -31,7 +31,9 @@ class ChoiceBox(Screen):
+                       pos += 1
+               self["list"] = ChoiceList(list = self.list, selection = selection)
+               self["summary_list"] = StaticText()
+-              self.updateSummary()
++#     ikseong
++#             self.updateSummary()
++              self.updateSummary(selection)
+                               
+               self["actions"] = NumberActionMap(["WizardActions", "InputActions", "ColorActions", "DirectionActions"], 
+               {
+@@ -120,14 +122,21 @@ class ChoiceBox(Screen):
+       def updateSummary(self, curpos=0):
+               pos = 0
+               summarytext = ""
++#     ikseong         
++#             for entry in self.summarylist:
++#                     if pos > curpos-2 and pos < curpos+5:
++#                             if pos == curpos:
++#                                     summarytext += ">"
++#                             else:
++#                                     summarytext += entry[0]
++#                             summarytext += ' ' + entry[1] + '\n'
++#                     pos += 1
+               for entry in self.summarylist:
+-                      if pos > curpos-2 and pos < curpos+5:
+-                              if pos == curpos:
+-                                      summarytext += ">"
+-                              else:
+-                                      summarytext += entry[0]
+-                              summarytext += ' ' + entry[1] + '\n'
++                      if pos == curpos:
++                              summarytext += entry[1] +'\n'
++                              break
+                       pos += 1
++#
+               self["summary_list"].setText(summarytext)
+       def cancel(self):
+diff --git a/lib/python/enigma_python.i b/lib/python/enigma_python.i
+index 0bddce1..040952d 100755
+--- a/lib/python/enigma_python.i
++++ b/lib/python/enigma_python.i
+@@ -131,6 +131,7 @@ is usually caused by not marking PSignals as immutable.
+ #define DEBUG
+ #define BUILD_VUPLUS
++#define BUILD_VUPLUS_DUO
+ typedef long time_t;
+ %include "typemaps.i"
+ %include "std_string.i"
diff --git a/recipes/enigma2/enigma2/vuplus/enigma2_vuplus_skin.patch b/recipes/enigma2/enigma2/vuplus/enigma2_vuplus_skin.patch
new file mode 100644 (file)
index 0000000..db0b8b2
--- /dev/null
@@ -0,0 +1,6061 @@
+diff --git a/configure.ac b/configure.ac
+index 0953e4c..85b8f78 100755
+--- a/configure.ac
++++ b/configure.ac
+@@ -98,6 +98,16 @@ data/skin_default/menu/Makefile
+ data/skin_default/icons/Makefile
+ data/skin_default/buttons/Makefile
+ data/skin_default/spinner/Makefile
++data/750S/Makefile
++data/750S/menu/Makefile
++data/750S/icons/Makefile
++data/750S/buttons/Makefile
++data/750S/countries/Makefile
++data/Vu_HD/Makefile
++data/Vu_HD/menu/Makefile
++data/Vu_HD/icons/Makefile
++data/Vu_HD/buttons/Makefile
++data/Vu_HD/countries/Makefile
+ include/Makefile
+ lib/Makefile
+ lib/actions/Makefile
+diff --git a/data/750S/Makefile.am b/data/750S/Makefile.am
+new file mode 100644
+index 0000000..a516e82
+--- /dev/null
++++ b/data/750S/Makefile.am
+@@ -0,0 +1,6 @@
++SUBDIRS = menu icons buttons countries
++
++installdir = $(DATADIR)/enigma2/750S
++
++install_DATA = \
++      *.xml *.png
+diff --git a/data/750S/buttons/Makefile.am b/data/750S/buttons/Makefile.am
+new file mode 100644
+index 0000000..eb83d1c
+--- /dev/null
++++ b/data/750S/buttons/Makefile.am
+@@ -0,0 +1,6 @@
++AUTOMAKE_OPTIONS = gnu
++
++installdir = $(DATADIR)/enigma2/750S/buttons
++
++install_DATA = \
++      *.png
+diff --git a/data/750S/countries/Makefile.am b/data/750S/countries/Makefile.am
+new file mode 100644
+index 0000000..4517ada
+--- /dev/null
++++ b/data/750S/countries/Makefile.am
+@@ -0,0 +1,6 @@
++AUTOMAKE_OPTIONS = gnu
++
++installdir = $(DATADIR)/enigma2/750S/countries
++
++install_DATA = \
++      *.png
+diff --git a/data/750S/icons/Makefile.am b/data/750S/icons/Makefile.am
+new file mode 100644
+index 0000000..9277cc5
+--- /dev/null
++++ b/data/750S/icons/Makefile.am
+@@ -0,0 +1,6 @@
++AUTOMAKE_OPTIONS = gnu
++
++installdir = $(DATADIR)/enigma2/750S/icons
++
++install_DATA = \
++      *.png
+diff --git a/data/750S/menu/Makefile.am b/data/750S/menu/Makefile.am
+new file mode 100644
+index 0000000..ff165af
+--- /dev/null
++++ b/data/750S/menu/Makefile.am
+@@ -0,0 +1,6 @@
++AUTOMAKE_OPTIONS = gnu
++
++installdir = $(DATADIR)/enigma2/750S/menu
++
++install_DATA = \
++      *.png
+diff --git a/data/750S/skin.xml b/data/750S/skin.xml
+new file mode 100755
+index 0000000..7be3bca
+--- /dev/null
++++ b/data/750S/skin.xml
+@@ -0,0 +1,2489 @@
++<skin>
++      <!-- VU+ skin (skin.xml)  -->
++      <output id="0">
++              <resolution xres="720" yres="576" bpp="32" />
++      </output>
++      <!-- Colors (#AARRGGBB) -->
++      <colors>
++              <color name="white" value="#ffffff" />
++              <color name="black" value="#000000" />
++              <color name="dark" value="#25062748" />
++              <color name="menu" value="#25062748" />
++              <color name="red" value="#f23d21" />
++              <color name="green" value="#389416" />
++              <color name="blue" value="#0064c7" />
++              <color name="yellow" value="#bab329" />
++              <color name="transparent" value="#ffffffff" />
++              <color name="transpBlack" value="#80000000" />
++              <color name="transpWhite" value="#80ffffff" />
++              <color name="background" value="#25e6e6e6" />
++              <color name="foreground" value="#ffffff" />
++      </colors>
++      <!-- Main screen colors (id=0 Framebuffer) -->
++      <windowstyle type="skinned" id="0">
++              <title offset="33,14" font="Regular;20" />
++              <color name="Background" color="#371e1c1a" /> 
++              <color name="LabelForeground" color="#ffffff" />
++              <color name="ListboxBackground" color="#371e1c1a" />
++              <color name="ListboxForeground" color="#ffffff" />
++<!--          <color name="ListboxSelectedBackground" color="#11252525" />    -->
++              <color name="ListboxSelectedBackground" color="#336c5f38" />
++              <color name="ListboxSelectedForeground" color="#ffffff" />
++              <color name="ListboxMarkedBackground" color="#ff0000" />
++              <color name="ListboxMarkedForeground" color="#ffffff" />
++              <color name="ListboxMarkedAndSelectedBackground" color="#800000" />
++              <color name="ListboxMarkedAndSelectedForeground" color="#ffffff" />
++              <color name="WindowTitleForeground" color="#ffffff" />
++              <color name="WindowTitleBackground" color="#25062748" />
++              <!-- Main screen border png's -->
++              <borderset name="bsWindow">
++                      <pixmap pos="bpTopLeft" filename="750S/b_tl.png" />
++                      <pixmap pos="bpTop" filename="750S/b_t.png"  />
++                      <pixmap pos="bpTopRight" filename="750S/b_tr.png" />
++                      <pixmap pos="bpLeft" filename="750S/b_l.png"  />
++                      <pixmap pos="bpRight" filename="750S/b_r.png"  />
++                      <pixmap pos="bpBottomLeft" filename="750S/b_bl.png" />
++                      <pixmap pos="bpBottom" filename="750S/b_b.png"  />
++                      <pixmap pos="bpBottomRight" filename="750S/b_br.png" />
++              </borderset>
++      </windowstyle>
++      <!-- Main screen colors (id=1 LCD) -->
++      <windowstyle type="skinned" id="1">
++              <color name="Background" color="#000000" />
++              <color name="LabelForeground" color="#ffffff" />
++              <color name="ListboxBackground" color="#000000" />
++              <color name="ListboxForeground" color="#ffffff" />
++              <color name="ListboxSelectedBackground" color="#000000" />
++              <color name="ListboxSelectedForeground" color="#ffffff" />
++              <color name="ListboxMarkedBackground" color="#000000" />
++              <color name="ListboxMarkedForeground" color="#ffffff" />
++              <color name="ListboxMarkedAndSelectedBackground" color="#000000" />
++              <color name="ListboxMarkedAndSelectedForeground" color="#ffffff" />
++              <color name="WindowTitleForeground" color="#ffffff" />
++              <color name="WindowTitleBackground" color="#000000" />
++      </windowstyle>
++      <!-- Fonts -->
++      <fonts>
++              <font filename="MyriadPro-Regular.otf" name="Regular" scale="90" />
++              <font filename="lcd.ttf" name="LCD" scale="100" />
++              <font filename="ae_AlMateen.ttf" name="Replacement" scale="90" replacement="1" />
++              <font filename="tuxtxt.ttf" name="Console" scale="100" />
++              <font filename="nmsbd.ttf" name="Subtitlefont" scale="90" />
++      </fonts>
++      <subtitles>
++              <sub name="Subtitle_TTX" font="Subtitlefont;30" shadowColor="#40101010" shadowOffset="3,3" />
++              <sub name="Subtitle_Regular" font="Subtitlefont;30" foregroundColor="#DCDCDC" shadowColor="#40101010" shadowOffset="3,3" />
++              <sub name="Subtitle_Bold" font="Replacement;30" foregroundColor="#DCDCDC" shadowColor="#40101010" shadowOffset="3,3" />
++              <sub name="Subtitle_Italic" font="Subtitlefont;30" foregroundColor="#DCAAAA" shadowColor="#40101010" shadowOffset="3,3" />
++              <!-- omitting foregroundColor attribute will enable auto-assignment of color -->
++      </subtitles>
++      <!-- Main infobar -->
++      <screen name="InfoBar" flags="wfNoBorder" position="0,380" size="720,164" title="InfoBar" backgroundColor="transparent">
++              <!-- Background -->
++              <ePixmap position="40,0" zPosition="-1" size="640,164" pixmap="750S/info-bg.png" />
++              <!-- Signal Quality -->
++              <eLabel text="SNR" position="320,6" size="40,22" font="Regular;18" backgroundColor="#102e59" foregroundColor="#cccccc" shadowColor="#27384f" shadowOffset="-1,-1" transparent="1" />
++              <widget source="session.FrontendStatus" render="Label" position="360,6" size="80,22" font="Regular;18" backgroundColor="#102e59" foregroundColor="#e7e7e7" shadowColor="#27384f" shadowOffset="-1,-1" transparent="1">
++                      <convert type="FrontendInfo">SNRdB</convert>
++              </widget>
++              <!-- Signal Strength -->
++              <eLabel text="AGC" position="440,6" size="40,22" font="Regular;18" backgroundColor="#102e59" foregroundColor="#cccccc" shadowColor="#27384f" shadowOffset="-1,-1" transparent="1" />
++              <widget source="session.FrontendStatus" render="Label" position="485,6" size="40,22" font="Regular;18" backgroundColor="#102e59" foregroundColor="#e7e7e7" shadowColor="#27384f" shadowOffset="-1,-1" transparent="1">
++                      <convert type="FrontendInfo">AGC</convert>
++              </widget>
++              <!-- Bit error rate -->
++<!--          <eLabel text="BER" position="595,6" size="40,22" font="Regular;18" backgroundColor="#102e59" foregroundColor="#cccccc" shadowColor="#27384f" shadowOffset="-1,-1" transparent="1" />
++              <widget source="session.FrontendStatus" render="Label" position="640,6" size="35,22" font="Regular;18" backgroundColor="#102e59" foregroundColor="#e7e7e7" shadowColor="#27384f" shadowOffset="-1,-1" transparent="1">
++                      <convert type="FrontendInfo">BER</convert>
++              </widget>       -->
++              <!-- Service name -->
++              <widget source="session.CurrentService" render="Label" position="130,30" size="360,27" font="Regular;21" valign="center" halign="left" noWrap="1" backgroundColor="#263c59" shadowColor="#1d354c" shadowOffset="-1,-1" transparent="1">
++                      <convert type="ServiceName">Name</convert>
++              </widget>
++              <!-- tuners in use? -->
++              <widget source="session.FrontendInfo" render="Pixmap" position="290,9" size="8,9" pixmap="750S/nim_active.png" alphatest="on">
++                      <convert type="FrontendInfo">NUMBER</convert>
++                      <convert type="ValueRange">0,0</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="session.FrontendInfo" render="Pixmap" position="290,9" size="8,9" pixmap="750S/nim_active.png" alphatest="on">
++                      <convert type="FrontendInfo">NUMBER</convert>
++                      <convert type="ValueRange">1,1</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="session.FrontendInfo" render="Pixmap" position="350,32" size="8,9" pixmap="750S/nim_active.png" alphatest="on">
++                      <convert type="FrontendInfo">NUMBER</convert>
++                      <convert type="ValueRange">2,2</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="session.FrontendInfo" render="Pixmap" position="350,45" size="8,9" pixmap="750S/nim_active.png" alphatest="on">
++                      <convert type="FrontendInfo">NUMBER</convert>
++                      <convert type="ValueRange">3,3</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="session.TunerInfo" render="FixedLabel" text="A" position="265,6" size="20,13" font="Regular;18" backgroundColor="#4e5a74" transparent="1">
++                      <convert type="TunerInfo">TunerUseMask</convert>
++                      <convert type="ValueBitTest">1</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="session.TunerInfo" render="FixedLabel" text="B" position="277,6" size="20,13" font="Regular;18" backgroundColor="#4e5a74" transparent="1">
++                      <convert type="TunerInfo">TunerUseMask</convert>
++                      <convert type="ValueBitTest">2</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="session.TunerInfo" render="FixedLabel" text="C" position="265,30" size="20,13" font="Regular;18" backgroundColor="#4e5a74" transparent="1">
++                      <convert type="TunerInfo">TunerUseMask</convert>
++                      <convert type="ValueBitTest">4</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="session.TunerInfo" render="FixedLabel" text="D" position="265,43" size="20,13" font="Regular;18" backgroundColor="#4e5a74" transparent="1">
++                      <convert type="TunerInfo">TunerUseMask</convert>
++                      <convert type="ValueBitTest">8</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <ePixmap pixmap="750S/icons/clock.png" position="568,4" zPosition="1" size="16,16" alphatest="on" />
++              <widget source="global.CurrentTime" render="Label" position="580,5" zPosition="1" size="50,20" font="Regular;19" halign="right">
++                      <convert type="ClockToText">Format:%H:%M</convert>
++              </widget>
++              <!--
++              <widget source="global.CurrentTime" render="Label" position="633,6" zPosition="1" size="26,18" font="Regular;16" valign="top">
++                      <convert type="ClockToText">Format:%S</convert>
++              </widget>       -->
++              <!-- Crypt icon (encrypted service?) -->
++              <ePixmap position="559,36" zPosition="0" size="70,15" pixmap="750S/icons/icons_off.png"  alphatest="on" />
++              <widget source="session.CurrentService" render="Pixmap" pixmap="750S/icons/icon_crypt.png" position="559,36" zPosition="1" size="11,15" alphatest="on">
++                      <convert type="ServiceInfo">IsCrypted</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <!-- Teletext icon (is teletext available?) -->
++              <widget source="session.CurrentService" render="Pixmap" pixmap="750S/icons/icon_txt.png" position="576,36" zPosition="1" size="18,15" alphatest="on">
++                      <convert type="ServiceInfo">HasTelext</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <!-- Videoformat icon (16:9?) -->
++              <widget source="session.CurrentService" render="Pixmap" pixmap="750S/icons/icon_format.png" position="600,36" zPosition="1" size="28,15" alphatest="on">
++                      <convert type="ServiceInfo">IsWidescreen</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <!-- Audio icon (is there multichannel audio?) -->
++              <widget source="session.CurrentService" render="Pixmap" pixmap="750S/icons/icon_dolby.png" position="634,36" zPosition="1" size="25,15" alphatest="on">
++                      <convert type="ServiceInfo">IsMultichannel</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <!-- Progressbar (current event duration)-->
++              <ePixmap pixmap="750S/progress_bg.png" position="60,77" size="84,7" transparent="1" alphatest="on" />
++              <widget source="session.Event_Now" render="Progress" pixmap="750S/progress_small.png" position="62,78" zPosition="1" size="80,5" transparent="1">
++                      <convert type="EventTime">Progress</convert>
++              </widget>
++              <!-- Blinking pixmap (recording in progress?) -->
++              <ePixmap pixmap="750S/icons/icon_rec_off.png" position="525,36" size="34,21" alphatest="on" />
++              <widget source="session.RecordState" render="Pixmap" pixmap="750S/icons/icon_rec.png" position="525,36" zPosition="1" size="34,21" alphatest="on" >
++                      <convert type="ConditionalShowHide">Blink</convert>
++              </widget>
++              <!-- Event (now) -->
++              <ePixmap pixmap="750S/nim_active.png" position="182,78" size="15,10" alphatest="on" />
++              <widget source="session.Event_Now" render="Label" position="205,73" size="60,24" font="Regular;20" backgroundColor="#34406f" shadowColor="#1d354c" shadowOffset="-1,-1" transparent="1">
++                      <convert type="EventTime">StartTime</convert>
++                      <convert type="ClockToText">Default</convert>
++              </widget>
++              <widget source="session.Event_Now" render="Label" position="265,73" size="310,24" font="Regular;20" noWrap="1" backgroundColor="#34406f" shadowColor="#1d354c" shadowOffset="-1,-1" transparent="1">
++                      <convert type="EventName">Name</convert>
++              </widget>
++              <widget source="session.Event_Now" render="Label" position="575,73" size="85,24" font="Regular;20" backgroundColor="#34406f" shadowColor="#1d354c" shadowOffset="-1,-1" halign="right" transparent="1">
++                      <convert type="EventTime">Remaining</convert>
++                      <convert type="RemainingToText">InMinutes</convert>
++              </widget>
++              <!-- Event (next) -->
++              <widget source="session.Event_Next" render="Label" position="205,97" size="60,24" font="Regular;20" backgroundColor="#071f38" foregroundColor="#c3c3c9" transparent="1">
++                      <convert type="EventTime">StartTime</convert>
++                      <convert type="ClockToText">Default</convert>
++              </widget>
++              <widget source="session.Event_Next" render="Label" position="265,97" size="310,24" font="Regular;20" noWrap="1" backgroundColor="#071f38" foregroundColor="#c3c3c9" transparent="1">
++                      <convert type="EventName">Name</convert>
++              </widget>
++              <widget source="session.Event_Next" render="Label" position="575,97" size="85,24" font="Regular;20" backgroundColor="#071f38" foregroundColor="#c3c3c9" halign="right" transparent="1">
++                      <convert type="EventTime">Duration</convert>
++                      <convert type="ClockToText">InMinutes</convert>
++              </widget>
++              <!-- Red button (is recording possible?) -->
++              <ePixmap pixmap="750S/buttons/button_red_off.png" position="60,132" size="22,22" alphatest="on" />
++              <widget source="RecordingPossible" render="Pixmap" pixmap="750S/buttons/button_red.png" position="60,132" zPosition="1" size="22,22" alphatest="on">
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="ShowRecordOnRed" render="FixedLabel" text="Record" position="90,132" zPosition="1" size="80,22" font="Regular;20" foregroundColor="#7f848d" backgroundColor="#182946" transparent="1">
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="RecordingPossible" render="FixedLabel" text="Record" position="90,132" zPosition="1" size="80,22" font="Regular;20" backgroundColor="#182946" shadowColor="#1d354c" shadowOffset="-1,-1" transparent="1">
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <!-- Green button (is subservices available?) -->
++              <ePixmap pixmap="750S/buttons/button_green_off.png" position="220,132" size="22,22" alphatest="on" />
++              <widget source="session.CurrentService" render="Pixmap" pixmap="750S/buttons/button_green.png" position="220,132" zPosition="1" size="22,22" alphatest="on">
++                      <convert type="ServiceInfo">SubservicesAvailable</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <eLabel text="Subservices" position="260,132" size="100,22" font="Regular;20" foregroundColor="#7f848d" backgroundColor="#182946" transparent="1" />
++              <widget source="session.CurrentService" render="FixedLabel" text="Subservices" position="250,132" zPosition="1" size="100,22" font="Regular;20" backgroundColor="#182946" shadowColor="#1d354c" shadowOffset="-1,-1" transparent="1">
++                      <convert type="ServiceInfo">SubservicesAvailable</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <!-- Yellow button (is timeshift possible?) -->
++              <ePixmap pixmap="750S/buttons/button_yellow_off.png" position="380,132" size="22,22" alphatest="on" />
++              <widget source="TimeshiftPossible" render="Pixmap" pixmap="750S/buttons/button_yellow.png" position="380,132" zPosition="1" size="22,22" alphatest="on">
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="ShowTimeshiftOnYellow" render="FixedLabel" text="Timeshift" position="410,132" zPosition="1" size="85,22" font="Regular;20" foregroundColor="#7f848d" backgroundColor="#182946" shadowOffset="-1,-1" transparent="1">
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="TimeshiftPossible" render="FixedLabel" text="Timeshift" position="410,132" zPosition="1" size="85,22" font="Regular;20" backgroundColor="#182946" shadowColor="#1d354c" shadowOffset="-1,-1" transparent="1">
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              
++              <!-- Yellow button (used for audio on boxes with new rc?) -->
++              <widget source="ShowAudioOnYellow" render="Pixmap" pixmap="750S/buttons/button_yellow.png" position="380,132" zPosition="1" size="22,22" alphatest="on">
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="ShowAudioOnYellow" render="FixedLabel" text="Audio" position="410,132" zPosition="1" size="85,22" font="Regular;20" backgroundColor="#182946" shadowColor="#1d354c" shadowOffset="-1,-1" transparent="1">
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <!-- Blue button (is extensions available?) -->
++              <ePixmap pixmap="750S/buttons/button_blue_off.png" position="540,132" size="22,22" alphatest="on" />
++              <widget source="ExtensionsAvailable" render="Pixmap" pixmap="750S/buttons/button_blue.png" position="540,132" zPosition="1" size="22,22" alphatest="on">
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <eLabel text="Extensions" position="570,132" size="110,22" font="Regular;20" foregroundColor="#7f848d" backgroundColor="#182946" transparent="1" />
++              <widget source="ExtensionsAvailable" render="FixedLabel" text="Extensions" position="570,132" zPosition="1" size="110,22" font="Regular;20" backgroundColor="#182946" shadowColor="#1d354c" shadowOffset="-1,-1" transparent="1">
++                      <convert type="ConditionalShowHide" />
++              </widget>
++      </screen>
++      <!-- Main menu -->
++      <screen name="menu_mainmenu" position="0,0" size="720,576" title="Main menu" flags="wfNoBorder" backgroundColor="transparent"> 
++              <ePixmap pixmap="750S/bg_main.png" zPosition="-1" position="94,85" size="530,415" alphatest="on"  transparent="1" />
++              <ePixmap pixmap="750S/icons/icon_mainmenu.png" position="110,100" size="44,44" alphatest="blend"  transparent="1" />
++              <eLabel text="Main menu" position="170,113" size="200,30" font="Regular;30" foregroundColor="#e1e1e1" backgroundColor="#371e1c1a" transparent="1" />
++              <widget source="menu" render="Listbox" selectionPixmap="750S/buttons/Selected_bar_250x32px.png" backgroundColorSelected="#371e1c1a" position="130,176" size="250,315"  transparent="1" backgroundColor="#371e1c1a" scrollbarMode="showNever">
++                      <convert type="TemplatedMultiContent">
++                              {"template": [  MultiContentEntryText(pos = (20, 5), size = (230, 30), flags = RT_HALIGN_LEFT, text = 0) ],
++                               "fonts": [gFont("Regular", 25)],
++                               "itemHeight": 39
++                              }
++                      </convert>
++              </widget>
++              <eLabel text=" " position="130,210" zPosition="-1" size="250,3" backgroundColor="#021a1816" />
++              <eLabel text=" " position="130,249" zPosition="-1" size="250,3" backgroundColor="#021a1816" />
++              <eLabel text=" " position="130,288" zPosition="-1" size="250,3" backgroundColor="#021a1816" />
++              <eLabel text=" " position="130,327" zPosition="-1" size="250,3" backgroundColor="#021a1816" />
++              <eLabel text=" " position="130,366" zPosition="-1" size="250,3" backgroundColor="#021a1816" />
++              <eLabel text=" " position="130,405" zPosition="-1" size="250,3" backgroundColor="#021a1816" />
++              <eLabel text=" " position="130,444" zPosition="-1" size="250,3" backgroundColor="#021a1816" />
++              <eLabel text=" " position="130,483" zPosition="-1" size="250,3" backgroundColor="#021a1816" />
++
++              <widget source="menu" render="Pixmap" pixmap="750S/menu/subtitles.png" position="400,190" size="155,140" alphatest="blend">
++                      <convert type="MenuEntryCompare">subtitle_selection</convert>
++                      <convert type="ConditionalShowHide"/>
++              </widget>
++              <widget source="menu" render="Pixmap" pixmap="750S/menu/setup.png" position="400,190" size="155,140" alphatest="blend">
++                      <convert type="MenuEntryCompare">setup_selection</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="menu" render="Pixmap" pixmap="750S/menu/shutdown.png" position="400,190" size="155,140" alphatest="blend">
++                      <convert type="MenuEntryCompare">standby_restart_list</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="menu" render="Pixmap" pixmap="750S/menu/plugins.png" position="400,190" size="155,140" alphatest="blend">
++                      <convert type="MenuEntryCompare">plugin_selection</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="menu" render="Pixmap" pixmap="750S/menu/information.png" position="400,190" size="155,140" alphatest="blend">
++                      <convert type="MenuEntryCompare">info_screen</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="menu" render="Pixmap" pixmap="750S/menu/scart.png" position="400,190" size="155,140" alphatest="blend">
++                      <convert type="MenuEntryCompare">scart_switch</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="menu" render="Pixmap" pixmap="750S/menu/timer.png" position="400,190" size="155,140" alphatest="blend">
++                      <convert type="MenuEntryCompare">timer_edit</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="menu" render="Pixmap" pixmap="750S/menu/media_player.png" position="400,190" size="155,140" alphatest="blend">
++                      <convert type="MenuEntryCompare">media_player</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="menu" render="FixedLabel" text="You can view available subtitles from current event." position="410,324" zPosition="1" size="190,130" font="Regular;19" backgroundColor="#182946" foregroundColor="#998462" shadowColor="#1d354c" shadowOffset="-1,-1" transparent="1">
++                      <convert type="MenuEntryCompare">subtitle_selection</convert>
++                      <convert type="ConditionalShowHide"/>
++              </widget>
++              <widget source="menu" render="FixedLabel" text="-Service Searching" position="410,324" zPosition="1" size="195,22" font="Regular;19" backgroundColor="#182946" foregroundColor="#998462" shadowColor="#1d354c" shadowOffset="-1,-1" transparent="1">
++                      <convert type="MenuEntryCompare">setup_selection</convert>
++                      <convert type="ConditionalShowHide"/>
++              </widget> 
++              <widget source="menu" render="FixedLabel" text="-System" position="410,349" zPosition="1" size="195,22" font="Regular;19" backgroundColor="#182946" foregroundColor="#998462" shadowColor="#1d354c" shadowOffset="-1,-1" transparent="1">
++                      <convert type="MenuEntryCompare">setup_selection</convert>
++                      <convert type="ConditionalShowHide"/>
++              </widget> 
++              <widget source="menu" render="FixedLabel" text="-Parental control" position="410,374" zPosition="1" size="195,22" font="Regular;19" backgroundColor="#182946" foregroundColor="#998462" shadowColor="#1d354c" shadowOffset="-1,-1" transparent="1">
++                      <convert type="MenuEntryCompare">setup_selection</convert>
++                      <convert type="ConditionalShowHide"/>
++              </widget> 
++              <widget source="menu" render="FixedLabel" text="-Factory reset" position="410,399" zPosition="1" size="195,22" font="Regular;19" backgroundColor="#182946" foregroundColor="#998462" shadowColor="#1d354c" shadowOffset="-1,-1" transparent="1">
++                      <convert type="MenuEntryCompare">setup_selection</convert>
++                      <convert type="ConditionalShowHide"/>
++              </widget> 
++              <widget source="menu" render="FixedLabel" text="-Standby" position="410,324" zPosition="1" size="195,22" font="Regular;19" backgroundColor="#182946" foregroundColor="#998462" shadowColor="#1d354c" shadowOffset="-1,-1" transparent="1">
++                      <convert type="MenuEntryCompare">standby_restart_list</convert>
++                      <convert type="ConditionalShowHide"/>
++              </widget>
++              <widget source="menu" render="FixedLabel" text="-Restart" position="410,349" zPosition="1" size="195,22" font="Regular;19" backgroundColor="#182946" foregroundColor="#998462" shadowColor="#1d354c" shadowOffset="-1,-1" transparent="1">
++                      <convert type="MenuEntryCompare">standby_restart_list</convert>
++                      <convert type="ConditionalShowHide"/>
++              </widget>
++              <widget source="menu" render="FixedLabel" text="-Deep Standby" position="410,374" zPosition="1" size="195,22" font="Regular;19" backgroundColor="#182946" foregroundColor="#998462" shadowColor="#1d354c" shadowOffset="-1,-1" transparent="1">
++                      <convert type="MenuEntryCompare">standby_restart_list</convert>
++                      <convert type="ConditionalShowHide"/>
++              </widget>
++              <widget source="menu" render="FixedLabel" text="This show the list of plug-ins you have installed." position="410,324" zPosition="1" size="200,120" font="Regular;19" backgroundColor="#182946" foregroundColor="#998462" shadowColor="#1d354c" shadowOffset="-1,-1" transparent="1">
++                      <convert type="MenuEntryCompare">plugin_selection</convert>
++                      <convert type="ConditionalShowHide"/>
++              </widget> 
++              <widget source="menu" render="FixedLabel" text="Your software version, memory usages and other Box information can be found from here." position="410,324" zPosition="1" size="200,120" font="Regular;19" backgroundColor="#182946" foregroundColor="#998462" shadowColor="#1d354c" shadowOffset="-1,-1" transparent="1">
++                      <convert type="MenuEntryCompare">info_screen</convert>
++                      <convert type="ConditionalShowHide"/>
++              </widget>
++              <widget source="menu" render="FixedLabel" text="-Switch to VCR scart" position="410,324" zPosition="1" size="195,22" font="Regular;19" backgroundColor="#182946" foregroundColor="#998462" shadowColor="#1d354c" shadowOffset="-1,-1" transparent="1">
++                      <convert type="MenuEntryCompare">scart_switch</convert>
++                      <convert type="ConditionalShowHide"/>
++              </widget>
++              <widget source="menu" render="FixedLabel" text="You can record or schedule to watch an event with this Timer function." position="410,324" zPosition="1" size="200,130" font="Regular;19" backgroundColor="#182946" foregroundColor="#998462" shadowColor="#1d354c" shadowOffset="-1,-1" transparent="1">
++                      <convert type="MenuEntryCompare">timer_edit</convert>
++                      <convert type="ConditionalShowHide"/>
++              </widget>
++              <widget source="menu" render="FixedLabel" text="This box can play various of multimedia file formats." position="410,324" zPosition="1" size="200,130" font="Regular;19" backgroundColor="#182946" foregroundColor="#998462" shadowColor="#1d354c" shadowOffset="-1,-1" transparent="1">
++                      <convert type="MenuEntryCompare">media_player</convert>
++                      <convert type="ConditionalShowHide"/>
++              </widget>
++<!--          
++              <widget source="menu" render="Pixmap" pixmap="750S/menu/dvd_player.png" position="400,190" size="218,202" alphatest="blend">
++                      <convert type="MenuEntryCompare">dvd_player</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++-->           
++      </screen>
++      <!-- Movieplayer infobar -->
++      <screen name="MoviePlayer" flags="wfNoBorder" position="0,380" size="720,164" title="InfoBar" backgroundColor="transparent">
++              <!-- Background -->
++              <ePixmap position="40,0" pixmap="750S/info-bg_mp.png" zPosition="-1" size="640,164" />
++              <!-- colorbuttons -->
++              <ePixmap position="275,120" pixmap="750S/icons/mp_buttons.png" size="169,30" alphatest="blend" />
++              <!-- Servicename -->
++              <widget source="session.CurrentService" render="Label" position="65,30" size="475,30" font="Regular;28" backgroundColor="#263c59" shadowColor="#1d354c" shadowOffset="-1,-1" transparent="1">
++                      <convert type="ServiceName">Name</convert>
++              </widget>
++              <!-- movie length -->
++              <widget source="session.CurrentService" render="Label" position="565,30" size="90,24" font="Regular;20" halign="right" backgroundColor="#4e5a74" transparent="1">
++                      <convert type="ServicePosition">Length</convert>
++              </widget>
++              <!-- Elapsed time -->
++              <widget source="session.CurrentService" render="Label" position="35,75" size="100,24" font="Regular;20" halign="center" valign="center" backgroundColor="#06224f" shadowColor="#1d354c" shadowOffset="-1,-1" transparent="1">
++                      <convert type="ServicePosition">Position</convert>
++              </widget>
++              <!-- Progressbar (movie position)-->
++              <widget source="session.CurrentService" render="PositionGauge" position="130,80" size="460,20" zPosition="2" pointer="750S/position_pointer.png:460,0" transparent="1">
++                      <convert type="ServicePosition">Gauge</convert>
++              </widget>
++              <!-- Remaining time -->
++              <widget source="session.CurrentService" render="Label" position="580,75" size="100,20" font="Regular;20" halign="center" valign="center" backgroundColor="#06224f" shadowColor="#1d354c" shadowOffset="-1,-1" transparent="1">
++                      <convert type="ServicePosition">Remaining</convert>
++              </widget>
++      </screen>
++
++      <!-- 750S skin (750S.xml)  -->
++      <!-- About screen -->
++      <screen name="About" position="0,0" size="720,576" title="Serviceinfo" flags="wfNoBorder" backgroundColor="transparent">
++              <ePixmap pixmap="750S/bg_main.png" zPosition="-1" position="90,70" size="530,415" alphatest="on"  transparent="1" />
++              <ePixmap pixmap="750S/icons/icon_mainmenu.png" position="110,85" size="44,44" alphatest="blend"  transparent="1" />
++              <eLabel text="Main menu > Information > " position="160,105" size="230,30" font="Regular;20" foregroundColor="#676767" backgroundColor="#371e1c1a" transparent="1" />
++              <eLabel text="About" position="380,100" size="200,30" font="Regular;30" foregroundColor="#d1a256" backgroundColor="#371e1c1a" transparent="1" />
++              <widget source="EnigmaVersion" render="Label" position="110,150" size="380,20" font="Regular;20" />
++              <widget source="ImageVersion" render="Label" position="110,180" size="380,20" font="Regular;20" />
++              <widget source="FPVersion" render="Label" position="110,210" size="380,20" font="Regular;20" />
++              <widget source="TunerHeader" render="Label" position="110,240" size="380,20" font="Regular;20" />
++              <widget source="Tuner0" render="Label" position="110,265" size="400,20" font="Regular;20" />
++              <widget source="Tuner1" render="Label" position="110,285" size="400,20" font="Regular;20" />
++              <widget source="Tuner2" render="Label" position="110,305" size="400,20" font="Regular;20" />
++              <widget source="Tuner3" render="Label" position="110,325" size="400,20" font="Regular;20" />
++              <widget source="HDDHeader" render="Label" position="110,355" size="380,20" font="Regular;20" />
++              <widget source="hddA" render="Label" position="110,380" size="380,40" font="Regular;20" />
++      </screen>
++      <!-- Adapter setup -->
++      <screen name="AdapterSetup" position="110,115" size="500,415" title="Network Setup" >
++              <ePixmap pixmap="750S/buttons/red.png" position="0,375" size="140,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/blue.png" position="360,375" size="140,40" alphatest="on" />
++              <widget source="key_red" render="Label" position="20,375" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget source="key_blue" render="Label" position="380,375" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#18188b" transparent="1" />
++
++              <widget name="config" position="10,10" transparent="1" backgroundColor="#371e1c1a" size="480,125" scrollbarMode="showOnDemand" />       
++              <ePixmap pixmap="750S/div-h.png" position="0,140" zPosition="1" size="550,2" />
++              <widget source="DNS1text" render="Label" position="10,145" size="190,21" zPosition="1" font="Regular;19" />
++              <widget source="DNS2text" render="Label" position="10,175" size="190,21" zPosition="1" font="Regular;19" />
++              <widget source="DNS1" render="Label" position="380,145" size="120,21" zPosition="1" font="Regular;17" />
++              <widget source="DNS2" render="Label" position="380,175" size="120,21" zPosition="1" font="Regular;17" />
++              <ePixmap pixmap="750S/div-h.png" position="0,200" zPosition="1" size="550,2" />         
++              
++              <widget source="introduction" render="Label" position="10,205" size="440,20" font="Regular;19" halign="center" />
++              <widget source="IPtext" render="Label" position="100,240" size="190,21" zPosition="1" font="Regular;19" />
++              <widget source="Netmasktext" render="Label" position="100,265" size="190,21" zPosition="1" font="Regular;19" />
++              <widget source="Gatewaytext" render="Label" position="100,290" size="190,21" zPosition="1" font="Regular;19" />
++              <widget source="IP" render="Label" position="300,240" size="440,21" zPosition="1" font="Regular;19" />
++              <widget source="Mask" render="Label" position="300,265" size="440,21" zPosition="1" font="Regular;19" />
++              <widget source="Gateway" render="Label" position="300,290" size="440,21" zPosition="1" font="Regular;19" />
++              
++              <widget source="Adaptertext" render="Label" position="20,325" size="100,21" zPosition="10" font="Regular;19" transparent="1" />
++              <widget source="Adapter" render="Label" position="110,325" size="300,21" zPosition="10" font="Regular;19" transparent="1" />
++              <widget source="introduction2" render="Label" position="110,355" size="300,20" zPosition="10" font="Regular;21" halign="center" transparent="1" />
++              <widget name="VKeyIcon" pixmap="750S/buttons/key_text.png" position="10,380" zPosition="10" size="35,25" transparent="1" alphatest="on" />
++              <widget name="HelpWindow" pixmap="750S/vkey_icon.png" position="160,315" zPosition="1" size="1,1" transparent="1" alphatest="on" />
++      </screen>
++      <screen name="AdapterSetupConfiguration" position="110,120" size="500,400" title="Network Configuration..." >
++              <ePixmap pixmap="750S/buttons/red.png" position="10,360" size="140,40" alphatest="on" />
++              <widget source="key_red" render="Label" position="30,360" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <ePixmap pixmap="750S/div-h.png" position="0,350" zPosition="1" size="560,2" />
++              <ePixmap pixmap="750S/border_menu_a.png" position="10,10" zPosition="1" size="250,300" transparent="1" alphatest="on" />
++              <widget name="menulist" position="20,20" size="230,260" selectionPixmap="750S/buttons/Selected_bar_230x23px.png" transparent="1" backgroundColor="#371e1c1a" zPosition="10" scrollbarMode="showOnDemand" />
++              <widget source="description" render="Label" position="305,10" size="195,300" font="Regular;19" halign="center" valign="center" />
++              <widget source="IFtext" render="Label" position="20,325" size="100,21" zPosition="10" font="Regular;19" transparent="1" />
++              <widget source="IF" render="Label" position="110,325" size="300,21" zPosition="10" font="Regular;19" transparent="1" />
++              <widget source="Statustext" render="Label" position="340,325" size="115,21" zPosition="10" font="Regular;19" transparent="1"/>
++              <widget name="statuspic" pixmaps="750S/buttons/button_green.png,750S/buttons/button_green_off.png" position="460,322" zPosition="10" size="22,22" transparent="1" alphatest="on"/>
++      </screen>
++      <!-- Audio selection -->
++      <screen name="AudioSelection" position="center,center" size="560,330" title="Audio">
++              <widget name="config" position="50,10" size="500,110" scrollbarMode="showOnDemand" />
++              
++              <widget source="key_red" render="Pixmap" pixmap="750S/buttons/button_red.png" position="10,10" size="22,22" alphatest="on">
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="key_green" render="Pixmap" pixmap="750S/buttons/button_green.png" position="10,35" size="22,22" alphatest="on">
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="key_yellow" render="Pixmap" pixmap="750S/buttons/button_yellow.png" position="10,60" size="22,22" alphatest="on">
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="key_blue" render="Pixmap" pixmap="750S/buttons/button_blue.png" position="10,85" size="22,22" alphatest="on">
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              
++              <ePixmap pixmap="skin_default/div-h.png" position="10,112" zPosition="10" size="540,2" />
++
++              <widget source="streams" render="Listbox" scrollbarMode="showOnDemand" position="10,120" size="540,200" zPosition="3" transparent="1" >
++                      <convert type="TemplatedMultiContent">
++                              {"templates":
++                                      {"default": (25, [ 
++                                              MultiContentEntryText(pos = (0, 0),   size = (35, 25),  font = 0, flags = RT_HALIGN_LEFT,  text = 1), # key,
++                                              MultiContentEntryText(pos = (40, 0),  size = (60, 25),  font = 0, flags = RT_HALIGN_LEFT,  text = 2), # number,
++                                              MultiContentEntryText(pos = (110, 0), size = (120, 25), font = 0, flags = RT_HALIGN_LEFT,  text = 3), # description,
++                                              MultiContentEntryText(pos = (240, 0), size = (200, 25), font = 0, flags = RT_HALIGN_LEFT,  text = 4), # language,
++                                              MultiContentEntryText(pos = (450, 4), size = (90, 25),  font = 1, flags = RT_HALIGN_RIGHT, text = 5), # selection,
++                                      ], True, "showNever"),
++                                      "notselected": (25, [ 
++                                              MultiContentEntryText(pos = (0, 0),   size = (35, 25),  font = 0, flags = RT_HALIGN_LEFT,  text = 1), # key,
++                                              MultiContentEntryText(pos = (40, 0),  size = (60, 25),  font = 0, flags = RT_HALIGN_LEFT,  text = 2), # number,
++                                              MultiContentEntryText(pos = (110, 0), size = (120, 25), font = 0, flags = RT_HALIGN_LEFT,  text = 3), # description,
++                                              MultiContentEntryText(pos = (240, 0), size = (200, 25), font = 0, flags = RT_HALIGN_LEFT,  text = 4), # language,
++                                              MultiContentEntryText(pos = (450, 4), size = (90, 25),  font = 1, flags = RT_HALIGN_RIGHT, text = 5), # selection,
++                                      ], False, "showNever")
++                                      },
++                              "fonts": [gFont("Regular", 20), gFont("Regular", 16)],
++                              "itemHeight": 25
++                              }
++                      </convert>
++              </widget>
++      </screen>
++      <!-- Bouquet selector -->
++      <screen name="BouquetSelector" position="210,160" size="300,240" title="Choose bouquet">
++              <widget name="menu" position="10,10" transparent="1" size="290,225" scrollbarMode="showOnDemand" />
++      </screen>
++      <!-- Channel context menu -->
++      <screen name="ChannelContextMenu" position="210,163" size="300,255" title="Channellist menu">
++              <widget name="menu" position="10,10" transparent="1" size="290,230" scrollbarMode="showOnDemand" />
++      </screen>
++      <!-- Channel selection - TV -->
++      <screen name="ChannelSelection" position="0, 0" size="720,576" flags="wfNoBorder" backgroundColor="transparent">
++              <ePixmap pixmap="750S/bg_list.png" position="60,25" size="600,520" zPosition="-1" alphatest="on"  transparent="1" />
++              <ePixmap pixmap="750S/icons/icon_channelselection_tv.png" position="90,35" size="44,44" alphatest="blend"  transparent="1" />
++              <widget name="etitle" position="140,50" size="450,30" font="Regular;30" halign="left" foregroundColor="#d1a256" backgroundColor="#371e1c1a" transparent="1" />
++              <ePixmap pixmap="750S/buttons/red.png" position="80,125" size="136,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/green.png" position="220,125" size="136,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/yellow.png" position="360,125" size="136,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/blue.png" position="500,125" size="136,40" alphatest="on" />
++              <widget name="key_red" position="100,125" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget name="key_green" position="240,125" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget name="key_yellow" position="380,125" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />
++              <widget name="key_blue" position="520,125" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#18188b" transparent="1" />
++              <widget name="list" position="80,185" size="555,228"  scrollbarMode="showOnDemand" transparent="1" />
++              <widget source="ServiceEvent" render="Label" position="95,422" zPosition="1" size="460,20" font="Regular;19" noWrap="1">
++                      <convert type="EventName">Name</convert>
++              </widget>
++              <ePixmap pixmap="750S/icons/clock.png" position="565,422" zPosition="1" size="16,16" alphatest="on" />
++              <widget source="global.CurrentTime" render="Label" position="585,422" zPosition="1" size="50,20" font="Regular;19" halign="right">
++                      <convert type="ClockToText"></convert>
++              </widget>
++              <widget source="ServiceEvent" render="Label" position="295,442" zPosition="1" size="340,20" font="Regular;19" halign="right" noWrap="1">
++                      <convert type="ServiceName">Name</convert>
++              </widget>
++              <widget source="ServiceEvent" render="Label" position="95,442" zPosition="1" size="50,22" font="Regular;19">
++                      <convert type="EventTime">StartTime</convert>
++                      <convert type="ClockToText"></convert>
++              </widget>
++              <widget source="ServiceEvent" render="Label" position="145,442" zPosition="1" size="70,22" font="Regular;19">
++                      <convert type="EventTime">EndTime</convert>
++                      <convert type="ClockToText">Format:- %H:%M</convert>
++              </widget>
++              <widget source="ServiceEvent" render="Progress" position="210,445" zPosition="1" pixmap="750S/progress_medium.png" size="80,11" borderWidth="2" borderColor="#cccccc">
++                      <convert type="EventTime">Progress</convert>
++              </widget>
++              <widget source="ServiceEvent" render="Label" position="95,463" zPosition="1" size="540,56" font="Regular;18" foregroundColor="#cccccc">
++                      <convert type="EventName">ExtendedDescription</convert>
++              </widget>
++      </screen>
++      <!-- Channel selection - Radio -->
++      <screen name="ChannelSelectionRadio" position="0,0" size="720,576" flags="wfNoBorder" backgroundColor="transparent">    
++              <ePixmap pixmap="750S/bg_list.png" position="60,25" size="600,520" zPosition="-1" alphatest="on" />
++              <ePixmap pixmap="750S/icons/icon_channelselection_radio.png" position="90,35" size="44,44" alphatest="blend"  transparent="1" />
++              <widget name="etitle" position="140,50" size="450,30" font="Regular;30" halign="left" foregroundColor="#d1a256" backgroundColor="#371e1c1a" transparent="1" />
++              <ePixmap pixmap="750S/buttons/red.png" position="80,125" size="136,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/green.png" position="220,125" size="136,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/yellow.png" position="360,125" size="136,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/blue.png" position="500,125" size="136,40" alphatest="on" />
++              <widget name="key_red" position="100,125" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget name="key_green" position="240,125" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget name="key_yellow" position="380,125" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />
++              <widget name="key_blue" position="520,125" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#18188b" transparent="1" />
++              <widget name="list" position="80,185" size="555,200" transparent="1" scrollbarMode="showOnDemand" />
++      </screen>
++      <!-- Choice box -->
++      <screen name="ChoiceBox" position="150,120" size="550,400" title="Input">
++              <widget name="text" position="10,10" size="550,25" font="Regular;20" />
++              <widget name="list" position="0,50" size="550,335" transparent="1" scrollbarMode="showOnDemand" />
++              <applet type="onLayoutFinish">
++# this should be factored out into some helper code, but currently demonstrates applets.
++from enigma import eSize, ePoint
++
++orgwidth = self.instance.size().width()
++orgpos = self.instance.position()
++textsize = self[&quot;text&quot;].getSize()
++
++# y size still must be fixed in font stuff...
++textsize = (textsize[0] + 50, textsize[1] + 50)
++count = len(self.list)
++if count &gt; 10:
++      count = 10
++offset = 25 * count
++wsizex = textsize[0] + 60
++wsizey = textsize[1] + offset
++
++if (520 &gt; wsizex):
++      wsizex = 520
++wsize = (wsizex, wsizey)
++
++# resize
++self.instance.resize(eSize(*wsize))
++
++# resize label
++self[&quot;text&quot;].instance.resize(eSize(*textsize))
++
++# move list
++listsize = (wsizex, 25 * count)
++self[&quot;list&quot;].instance.move(ePoint(0, textsize[1]))
++self[&quot;list&quot;].instance.resize(eSize(*listsize))
++
++# center window
++newwidth = wsize[0]
++self.instance.move(ePoint((720-wsizex)/2, (576-wsizey)/(count &gt; 7 and 2 or 3)))
++
++              </applet>
++      </screen>
++      <!-- Common interface -->
++      <screen name="MMIDialog" position="135,153" size="450,270">
++              <widget name="title" position="10,10" size="430,25" font="Regular;23" />
++              <widget name="subtitle" position="10,35" size="430,25" font="Regular;23" />
++              <widget name="entries" position="10,70" size="430,150" scrollbarMode="showOnDemand" />
++              <widget name="bottom" position="10,230" size="430,25" font="Regular;23" />
++      </screen>
++      <!-- Common interface - selection -->
++      <screen name="CiSelection" position="140,226" size="440,160" title="Common Interface">
++              <widget name="text" position="10,10" size="430,25" font="Regular;23" />
++              <widget name="entries" position="10,55" size="420,100" scrollbarMode="showOnDemand" />
++      </screen>
++      <!-- Console -->
++      <screen name="Console" position="110,120" size="500,400" title="Command execution...">
++              <widget name="text" position="10,10" size="480,380" font="Console;14" />
++      </screen>
++      <!-- Clock display -->
++      <screen name="clockDisplay" position="300,120" size="300,300">
++              <widget name="okbutton" position="10,10" size="280,40" />
++              <widget name="title" position="10,120" size="280,50" />
++              <widget name="theClock" position="10,60" size="280,50" />
++      </screen>
++      <!-- Config OSD -->
++      <screen name="configOSD" position="130,120" size="460,350" title="OSD Settings">
++              <widget name="okbutton" position="20,270" size="205,40" />
++              <widget name="txt_alpha" position="20,20" size="110,20" />
++              <widget name="sld_alpha" position="150,20" size="290,20" />
++              <widget name="txt_brightness" position="20,60" size="120,20" />
++              <widget name="sld_brightness" position="150,20" size="290,20" />
++              <widget name="txt_gamma" position="20,100" size="120,20" />
++              <widget name="sld_gamma" position="150,100" size="290,20" />
++      </screen>
++      <!-- Config test -->
++      <screen name="configTest" position="300,100" size="300,300" title="config menu">
++              <widget name="config" position="10,30" size="420,220" />
++      </screen>
++      <!-- Default wizard -->
++      <screen name="DefaultWizard" position="0,0" size="720,576" title="Welcome..." flags="wfNoBorder" >
++                      <widget name="text" position="153,50" size="340,270" font="Regular;23" />
++                      <widget source="list" render="Listbox" selectionPixmap="750S/buttons/Selected_bar_440x23px.png" backgroundColor="#371e1c1a" position="50,300" size="440,200" scrollbarMode="showOnDemand" >
++                              <convert type="StringList" />
++                      </widget>
++                      <ePixmap pixmap="750S/buttons/button_red.png" position="40,227" size="22,22" alphatest="on" />
++                      <widget name="languagetext" position="66,230" size="95,30" font="Regular;18" />
++                      <widget name="config" backgroundColor="#371e1c1a" position="50,300" zPosition="1" size="440,200" transparent="1" scrollbarMode="showOnDemand" />            
++                      <widget name="rc" pixmap="750S/rc.png" position="520,600" zPosition="10" size="154,471" transparent="1" alphatest="blend"/>
++                      <widget name="arrowdown" pixmap="750S/arrowdown.png" position="-100,-150" zPosition="11" size="37,70" transparent="1" alphatest="blend"/>
++                      <widget name="arrowup" pixmap="750S/arrowup.png" position="-100,-150" zPosition="11" size="37,70" transparent="1" alphatest="blend"/>
++                      <widget name="arrowup2" pixmap="750S/arrowup.png" position="-100,-150" zPosition="11" size="37,70" transparent="1" alphatest="blend"/>
++      </screen>
++      <screen name="DefaultSatLists" position="0,0" size="720,576" title="Welcome..." flags="wfNoBorder" >
++                      <widget name="text" position="153,50" size="340,270" font="Regular;23" />
++                      <widget source="list" render="Listbox" transparent="1" position="50,300" size="440,200" scrollbarMode="showOnDemand" >
++                              <convert type="StringList" />
++                      </widget>
++                      <ePixmap pixmap="750S/buttons/button_red.png" position="40,227" size="22,22" alphatest="on" />
++                      <widget name="languagetext" position="66,230" size="95,30" font="Regular;18" />
++                      <widget name="config" position="50,300" zPosition="1" size="440,200" transparent="1" scrollbarMode="showOnDemand" />            
++                      <widget name="rc" pixmap="750S/rc.png" position="520,600" zPosition="10" size="154,471" transparent="1" alphatest="blend"/>
++                      <widget name="arrowdown" pixmap="750S/arrowdown.png" position="-100,-100" zPosition="11" size="37,70" transparent="1" alphatest="blend"/>
++                      <widget name="arrowup" pixmap="750S/arrowup.png" position="-100,-100" zPosition="11" size="37,70" transparent="1" alphatest="blend"/>
++                      <widget name="arrowup2" pixmap="750S/arrowup.png" position="-100,-100" zPosition="11" size="37,70" transparent="1" alphatest="blend"/>
++      </screen>
++      <screen name="DreamPackageWizard" position="0,0" size="720,576" title="Welcome..." flags="wfNoBorder" >
++                      <widget name="text" position="153,50" size="340,270" font="Regular;23" />
++                      <widget source="list" render="Listbox" position="50,300" size="440,200" scrollbarMode="showOnDemand" >
++                              <convert type="StringList" />
++                      </widget>
++                      <ePixmap pixmap="750S/buttons/button_red.png" position="40,227" size="22,22" alphatest="on" />
++                      <widget name="languagetext" position="66,230" size="95,30" font="Regular;18" />
++                      <widget name="config" position="50,300" zPosition="1" size="440,200" transparent="1" scrollbarMode="showOnDemand" />            
++                      <widget name="rc" pixmap="750S/rc.png" position="520,600" zPosition="10" size="154,471" transparent="1" alphatest="blend"/>
++                      <widget name="arrowdown" pixmap="750S/arrowdown.png" position="-100,-100" zPosition="11" size="37,70" transparent="1" alphatest="blend"/>
++                      <widget name="arrowup" pixmap="750S/arrowup.png" position="-100,-100" zPosition="11" size="37,70" transparent="1" alphatest="blend"/>
++                      <widget name="arrowup2" pixmap="750S/arrowup.png" position="-100,-100" zPosition="11" size="37,70" transparent="1" alphatest="blend"/>
++      </screen>
++      <!-- Dish -->
++      <screen name="Dish" flags="wfNoBorder" position="300,110" size="130,160" title="Dish" zPosition="-1" backgroundColor="transparent">
++              <widget name="Dishpixmap" pixmap="750S/icons/dish.png" position="0,0" size="130,160" alphatest="off" />
++      </screen>
++      <!-- unhandled key pressed -->
++      <screen name="UnhandledKey" flags="wfNoBorder" position="620,50" size="34,45" title="UnhandledKey" zPosition="100" backgroundColor="transparent">
++              <widget name="UnhandledKeyPixmap" pixmap="750S/unhandled-key.png" position="0,0" size="34,45" alphatest="off" />
++      </screen>
++      <!-- EPG Selection - Single -->
++      <screen name="EPGSelection" position="0,0" size="720,576" title="EPG Selection" flags="wfNoBorder" backgroundColor="transparent">       
++              <ePixmap pixmap="750S/bg_list.png" position="60,25" size="600,520" zPosition="-1" alphatest="on" />
++              <ePixmap pixmap="750S/icons/icon_epg.png" position="90,35" size="44,44" alphatest="blend"  transparent="1" />
++              <eLabel text="EPG Selection" position="140,45" size="220,30" font="Regular;30" foregroundColor="#d1a256" backgroundColor="#371e1c1a" transparent="1" />
++              <ePixmap pixmap="750S/buttons/red.png" position="80,125" size="136,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/green.png" position="220,125" size="136,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/yellow.png" position="360,125" size="136,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/blue.png" position="500,125" size="136,40" alphatest="on" />
++              <widget name="key_red" position="100,125" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget name="key_green" position="240,125" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget name="key_yellow" position="380,125" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />
++              <widget name="key_blue" position="520,125" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#18188b" transparent="1" />
++              <widget name="list" position="80,180" size="555,350" transparent="1" scrollbarMode="showOnDemand" />
++      </screen>
++      <!-- EPG Selection - Multi -->
++      <screen name="EPGSelectionMulti" position="0,0" size="720,576" title="EPG Selection" flags="wfNoBorder" backgroundColor="transparent">  
++              <ePixmap pixmap="750S/bg_list.png" zPosition="-1" position="60,25" size="600,520" alphatest="on" />
++              <ePixmap pixmap="750S/icons/icon_epg.png" position="90,35" size="44,44" alphatest="blend"  transparent="1" />
++              <eLabel text="EPG Selection Multi" position="140,45" size="250,30" font="Regular;30" foregroundColor="#d1a256" backgroundColor="#371e1c1a" transparent="1" />
++              <ePixmap pixmap="750S/buttons/red.png" position="80,125" size="136,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/green.png" position="220,125" size="136,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/yellow.png" position="360,125" size="136,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/blue.png" position="500,125" size="136,40" alphatest="on" />
++              <widget name="key_red" position="100,125" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget name="key_green" position="240,125" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget name="key_yellow" position="380,125" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />
++              <widget name="key_blue" position="520,125" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#18188b" transparent="1" />
++              <widget name="now_button_sel" pixmap="750S/epg_now.png" position="90,175" zPosition="1" size="320,25" alphatest="on" />
++              <widget name="next_button_sel" pixmap="750S/epg_next.png" position="90,175" zPosition="1" size="320,25" alphatest="on" />
++              <widget name="more_button_sel" pixmap="750S/epg_more.png" position="90,175" zPosition="1" size="320,25" alphatest="on" />
++              <widget name="now_text" position="90,175" zPosition="2" size="108,22" text="NOW" font="Regular;16" halign="center" valign="center" backgroundColor="#371e1c1a" transparent="1" />
++              <widget name="next_text" position="196,175" zPosition="2" size="108,22" text="NEXT" font="Regular;16" halign="center" valign="center" backgroundColor="#371e1c1a" transparent="1" />
++              <widget name="more_text" position="301,175" zPosition="2" size="108,22" text="MORE" font="Regular;16" halign="center" valign="center" backgroundColor="#371e1c1a" transparent="1" />
++              <widget name="date" position="495,160" size="110,45" font="Regular;18" valign="center" halign="right" />
++              <widget name="list" position="96,203" size="520,320" transparent="1" scrollbarMode="showOnDemand" />
++      </screen>
++      <!-- Eventview -->
++      <screen name="EventView" position="0,0" size="720,576" title="Eventview" flags="wfNoBorder" backgroundColor="transparent">      
++              <ePixmap pixmap="750S/bg_list.png" zPosition="-1" position="60,25" size="600,520" alphatest="on" />
++              <ePixmap pixmap="750S/icons/icon_epg.png" position="90,35" size="44,44" alphatest="blend"  transparent="1" />
++              <eLabel text="Eventview" position="140,45" size="250,30" font="Regular;30" foregroundColor="#d1a256" backgroundColor="#371e1c1a" transparent="1" />
++              <ePixmap pixmap="750S/buttons/red.png" position="80,125" size="136,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/green.png" position="220,125" size="136,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/yellow.png" position="360,125" size="136,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/blue.png" position="500,125" size="136,40" alphatest="on" />
++              <widget name="key_red" position="100,125" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget name="key_green" position="240,125" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget name="key_yellow" position="380,125" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />
++              <widget name="key_blue" position="520,125" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#18188b" transparent="1" />
++              <widget name="epg_description" position="95,175" size="530,325" font="Regular;22" />
++              <widget name="datetime" position="95,500" size="120,25" font="Regular;22" />
++              <widget name="duration" position="215,500" size="90,25" font="Regular;22" />
++              <widget name="channel" position="335,500" size="280,25" font="Regular;22" halign="right" />
++      </screen>
++      <!-- Graphical Multi EPG -->
++      <screen name="GraphMultiEPG" position="0,0" size="720,576" title="Electronic Program Guide" flags="wfNoBorder" backgroundColor="transparent">   
++              <ePixmap pixmap="750S/bg_list.png" zPosition="-1" position="60,25" size="600,520" alphatest="on" />
++              <ePixmap pixmap="750S/icons/icon_epg.png" position="90,35" size="44,44" alphatest="blend"  transparent="1" />
++              <eLabel text="Electronic Program Guide" position="140,45" size="300,30" font="Regular;30" foregroundColor="#d1a256" backgroundColor="#371e1c1a" transparent="1" />
++              <ePixmap pixmap="750S/buttons/red.png" position="80,125" size="136,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/green.png" position="220,125" size="136,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/yellow.png" position="360,125" size="136,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/blue.png" position="500,125" size="136,40" alphatest="on" />
++              <widget name="key_red" position="100,125" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget name="key_green" position="240,125" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget name="timeline_text" position="85,166" size="520,20" />
++              <widget name="list" position="80,190" size="550,270" transparent="1" backgroundColor="#371e1c1a" EntryBorderColor="#071930" EntryBackgroundColor="#2f4964" EntryBackgroundColorSelected="#25688caf" scrollbarMode="showOnDemand" />
++              <widget name="timeline0" position="85,190" zPosition="1" size="1,270" pixmap="750S/timeline.png" />
++              <widget name="timeline1" position="85,190" zPosition="1" size="1,270" pixmap="750S/timeline.png" />
++              <widget name="timeline2" position="85,190" zPosition="1" size="1,270" pixmap="750S/timeline.png" />
++              <widget name="timeline3" position="85,190" zPosition="1" size="1,270" pixmap="750S/timeline.png" />
++              <widget name="timeline4" position="85,190" zPosition="1" size="1,270" pixmap="750S/timeline.png" />
++              <widget name="timeline5" position="85,190" zPosition="1" size="1,270" pixmap="750S/timeline.png" />
++              <widget name="timeline_now" position="80,189" zPosition="2" size="19,273" pixmap="750S/timeline-now.png" alphatest="on" />
++              <ePixmap pixmap="750S/border_multiepg.png" position="80,167" zPosition="1" size="520,358" transparent="1" alphatest="on" />
++              <widget source="Event" render="Label" position="90,462" zPosition="1" size="450,20" font="Regular;19" noWrap="1">
++                      <convert type="EventName">Name</convert>
++              </widget>
++              <ePixmap pixmap="750S/icons/clock.png" position="550,462" zPosition="1" size="16,16" alphatest="on" />
++              <widget source="global.CurrentTime" render="Label" position="566,462" zPosition="1" size="50,20" font="Regular;18" halign="right">
++                      <convert type="ClockToText"></convert>
++              </widget>
++              <widget source="Event" render="Label" position="90,482" zPosition="1" size="50,22" font="Regular;18">
++                      <convert type="EventTime">StartTime</convert>
++                      <convert type="ClockToText"></convert>
++              </widget>
++              <widget source="Event" render="Label" position="140,482" zPosition="1" size="70,22" font="Regular;18">
++                      <convert type="EventTime">EndTime</convert>
++                      <convert type="ClockToText">Format:- %H:%M</convert>
++              </widget>
++              <widget source="Event" render="Progress" position="200,485" zPosition="1" pixmap="750S/progress_medium.png" size="65,11" borderWidth="2" borderColor="#cccccc">
++                      <convert type="EventTime">Progress</convert>
++              </widget>
++              <widget source="Event" render="Label" position="280,482" zPosition="1" size="320,20" font="Regular;18" noWrap="1">
++                      <convert type="EventTime">StartTime</convert>
++                      <convert type="ClockToText">Format:(%A)</convert>
++              </widget>
++              <widget source="Event" render="Label" position="90,502" zPosition="1" size="500,40" font="Regular;18" foregroundColor="#cccccc">
++                      <convert type="EventName">ExtendedDescription</convert>
++              </widget>
++      </screen>
++      <!-- Harddisk selection -->
++      <screen name="HarddiskSelection" position="100,150" size="540,285" title="Select HDD">
++              <widget name="hddlist" position="10,10" size="520,275" />
++      </screen>
++      <!-- Harddisk setup -->
++      <screen name="HarddiskSetup" position="140,200" size="420,160" title="Harddisk">
++              <widget name="model" position="20,10" size="380,25" font="Regular;23" />
++              <widget name="capacity" position="20,40" size="380,25" font="Regular;23" />
++              <widget name="bus" position="20,70" size="380,25" font="Regular;23" />
++              <widget name="initialize" pixmap="750S/buttons/red.png" position="140,110" size="136,40" alphatest="on" />
++              <widget name="initializetext" position="160,110" size="115,40" zPosition="1" font="Regular;20" halign="center" valign="center" transparent="1" />
++      </screen>
++      <!-- Harddisk wait -->
++      <screen name="HarddiskWait" position="100,150" size="540,60">
++              <widget name="wait" position="20,10" size="500,25" font="Regular;23" />
++      </screen>
++      <!-- Help menu -->
++      <screen name="HelpMenu" position="0,0" size="720,576" title="Menu" flags="wfNoBorder">
++              <eLabel text="help..." position="400,40" size="220,60" font="Regular;40" />
++              <widget name="list" position="50,100" size="440,380" transparent="1" scrollbarMode="showOnDemand" />
++              <widget name="rc" pixmaps="750S/rc.png,750S/rcold.png" position="550,40" zPosition="10" size="154,500" alphatest="blend" />
++              <widget name="arrowdown" pixmap="750S/arrowdown.png" position="-100,-100" zPosition="11" size="37,70" alphatest="blend" />
++              <widget name="arrowdown2" pixmap="750S/arrowdown.png" position="-100,-100" zPosition="11" size="37,70" alphatest="blend" />
++              <widget name="arrowup" pixmap="750S/arrowup.png" position="-100,-100" zPosition="11" size="37,70" alphatest="blend" />
++              <widget name="arrowup2" pixmap="750S/arrowup.png" position="-100,-100" zPosition="11" size="37,70" alphatest="blend" />
++              <widget name="long_key" position="320,520" size="350,50" font="Regular;25" halign="right" foregroundColor="yellow" />
++      </screen>
++      <!-- Image Wizard -->
++      <screen name="ImageWizard" position="0,0" size="720,576" title="Welcome..." flags="wfNoBorder">
++              <widget name="text" position="50,100" size="440,250" font="Regular;22" />
++              <widget name="list" position="50,350" zPosition="1" size="440,200" />
++              <widget name="config" position="50,350" zPosition="1" size="440,200" transparent="1" scrollbarMode="showOnDemand" />
++      </screen>
++      <!-- Inputbox -->
++      <screen name="InputBox" position="80,250" size="550,90" title="Input">
++              <widget name="text" position="10,20" size="550,25" font="Regular;23" />
++              <widget name="input" position="10,55" size="550,25" font="Regular;20" />
++      </screen>
++      <!-- IPKG -->
++      <screen name="Ipkg" position="100,120" size="550,200" title="Installing Software...">
++              <widget name="activityslider" position="0,0" size="550,5" pixmap="750S/progress_small.png" />
++              <widget name="package" position="10,30" size="550,20" font="Regular;18" />
++              <widget name="status" position="10,60" size="550,45" font="Regular;18" />
++              <widget name="slider" position="10,100" size="530,15" pixmap="750S/progress_big.png" borderWidth="2" borderColor="#cccccc" />
++      </screen>
++      <!-- Language selection -->
++      <screen name="LanguageSelection" position="170,143" size="380,300" title="Language selection">
++              <widget source="languages" render="Listbox" position="0,0" size="380,300" scrollbarMode="showOnDemand">
++                      <convert type="TemplatedMultiContent">
++                              {"template": [
++                                              MultiContentEntryText(pos = (80, 10), size = (200, 50), flags = RT_HALIGN_LEFT, text = 1), # index 1 is the language name,
++#                                             MultiContentEntryPixmap(pos = (10, 5), size = (53, 35), png = 2), # index 2 is the pixmap
++                                              MultiContentEntryPixmap(pos = (7, 5), size = (60, 40), png = 2), # index 2 is the pixmap
++                                      ],
++                               "fonts": [gFont("Regular", 20)],
++                               "itemHeight": 50
++                              }
++                      </convert>
++              </widget>
++      </screen>
++      <screen name="LanguageWizard" position="0,0" size="720,576" title="Welcome..." flags="wfNoBorder">
++              <widget name="text" position="153,50" size="340,240" font="Regular;23" />
++              <widget source="languages" render="Listbox" position="50,300" size="440,200" scrollbarMode="showOnDemand">
++                      <convert type="TemplatedMultiContent">
++                              {"template": [
++                                              MultiContentEntryText(pos = (80, 10), size = (200, 50), flags = RT_HALIGN_LEFT, text = 1), # index 1 is the language name,
++#                                             MultiContentEntryPixmap(pos = (10, 5), size = (53, 35), png = 2), # index 2 is the pixmap
++                                              MultiContentEntryPixmap(pos = (7, 5), size = (60, 40), png = 2), # index 2 is the pixmap
++                                      ],
++                               "fonts": [gFont("Regular", 20)],
++                               "itemHeight": 50
++                              }
++                      </convert>
++              </widget>
++              <widget name="rc" pixmaps="750S/rc.png,750S/rcold.png" position="520,50" zPosition="10" size="154,500" alphatest="blend" />
++              <widget name="arrowdown" pixmap="750S/arrowdown.png" position="-100,-100" zPosition="11" size="37,70" alphatest="blend" />
++              <widget name="arrowdown2" pixmap="750S/arrowdown.png" position="-100,-100" zPosition="11" size="37,70" alphatest="blend" />
++              <widget name="arrowup" pixmap="750S/arrowup.png" position="-100,-100" zPosition="11" size="37,70" alphatest="blend" />
++              <widget name="arrowup2" pixmap="750S/arrowup.png" position="-100,-100" zPosition="11" size="37,70" alphatest="blend" />
++      </screen>
++      <!-- Location Box -->
++      <screen name="LocationBox" position="100,120" size="540,460" >
++              <widget name="text" position="0,2" size="540,22" font="Regular;22" />
++              <widget name="target" position="0,23" size="540,22" valign="center" font="Regular;22" />
++              <widget name="filelist" position="0,55" zPosition="1" size="540,210" scrollbarMode="showOnDemand" selectionDisabled="1" />
++              <widget name="textbook" position="0,272" size="540,22" font="Regular;22" />
++              <widget name="booklist" position="5,302" zPosition="2" size="535,100" scrollbarMode="showOnDemand" />
++              <widget name="red" position="0,415" zPosition="1" size="136,40" pixmap="750S/buttons/red.png" transparent="1" alphatest="on" />
++              <widget name="key_red" position="20,415" zPosition="2" size="115,40" halign="center" valign="center" font="Regular;22" transparent="1" shadowColor="black" shadowOffset="-1,-1" />      
++              <widget name="green" position="135,415" zPosition="1" size="136,40" pixmap="750S/buttons/green.png" transparent="1" alphatest="on" />
++              <widget name="key_green" position="155,415" zPosition="2" size="115,40" halign="center" valign="center" font="Regular;22" transparent="1" shadowColor="black" shadowOffset="-1,-1" />
++              <widget name="yellow" position="270,415" zPosition="1" size="136,40" pixmap="750S/buttons/yellow.png" transparent="1" alphatest="on" />
++              <widget name="key_yellow" position="290,415" zPosition="2" size="115,40" halign="center" valign="center" font="Regular;22" transparent="1" shadowColor="black" shadowOffset="-1,-1" />
++              <widget name="blue" position="405,415" zPosition="1" size="136,40" pixmap="750S/buttons/blue.png" transparent="1" alphatest="on" />
++              <widget name="key_blue" position="425,415" zPosition="2" size="115,40" halign="center" valign="center" font="Regular;22" transparent="1" shadowColor="black" shadowOffset="-1,-1" />                    
++      </screen>
++      <!-- Mediaplayer -->
++      <screen name="MediaPlayer" position="0,0" size="720,576" title="MediaPlayer" flags="wfNoBorder" backgroundColor="transparent">
++              <ePixmap pixmap="750S/bg_setup_650.png" zPosition="-1" position="48,20" size="630,525" alphatest="on"  transparent="1" />
++              <ePixmap pixmap="750S/icons/icon_media.png" position="80,35" size="44,44" alphatest="blend"  transparent="1" />
++              <ePixmap pixmap="750S/mediaplayer_bg.png" position="70,100" zPosition="-1" size="594,390" alphatest="on" />
++              <eLabel name="thistory" position="140,55" size="300,30" text = "Main menu > " font="Regular;20" foregroundColor="#676767" backgroundColor="#371e1c1a" transparent="1" />
++              <eLabel name="title1" position="245,50" size="200,30" text="Media player" font="Regular;30" foregroundColor="#d1a256" backgroundColor="#371e1c1a" transparent="1" />
++              <widget name="artisttext" position="85,105" size="74,22" font="Regular;20" valign="top" foregroundColor="#cccccc" backgroundColor="#371e1c1a"  transparent="1" />
++              <widget name="artist" position="160,105" size="339,22" font="Regular;20" valign="top" backgroundColor="#371e1c1a" transparent="1" /> 
++              <widget name="albumtext" position="85,138" size="74,22" font="Regular;20" valign="top" foregroundColor="#cccccc" backgroundColor="#371e1c1a" transparent="1" />
++              <widget name="album" position="160,138" size="339,22" font="Regular;20" valign="top" backgroundColor="#371e1c1a" transparent="1" />
++              <widget name="yeartext" position="85,170" size="74,22" font="Regular;20" valign="top" foregroundColor="#cccccc" backgroundColor="#371e1c1a" transparent="1" />
++              <widget name="year" position="160,170" size="150,22" font="Regular;20" valign="top" backgroundColor="#371e1c1a" transparent="1" />
++              <widget name="genretext" position="315,170" size="74,22" font="Regular;20" valign="top" foregroundColor="#cccccc" backgroundColor="#371e1c1a" transparent="1" />
++              <widget name="genre" position="390,170" size="150,22" font="Regular;20" valign="top" backgroundColor="#371e1c1a" transparent="1" />
++              <eLabel name="nowPlaying" position="84,210" size="130,22" text="Now Playing :" font="Regular;22" foregroundColor="#ffc435" backgroundColor="#371e1c1a" transparent="1" />
++              <widget name="title" position="200,210" size="430,24" font="Regular;22" valign="top" backgroundColor="#371e1c1a" transparent="1" />
++              <widget name="coverArt" pixmap="750S/no_coverArt.png" position="553,100" size="111,96" transparent="1" alphatest="blend" />
++              <ePixmap pixmap="750S/icons/mp_buttons.png" position="275,510" size="169,30" alphatest="blend" />
++<!--          <widget name="PositionGauge" position="120,493" size="500,10" pointer="750S/position_pointer.png:660,0" seek_pointer="750S/position_pointer.png:660,0" transparent="1" />-->
++              <widget name="PositionGauge" position="77,493" size="580,10" pointer="750S/position_pointer_580.png:580,0" seek_pointer="750S/position_pointer_580.png:580,0" transparent="1" />
++              <widget name="filelist" position="115,245" transparent="1" size="545,117" scrollbarMode="showOnDemand" />
++              <widget name="playlist" position="115,370" transparent="1" size="545,117" scrollbarMode="showOnDemand" selectionDisabled="1" />
++              <widget name="currenttext" position="65,80" size="0,0" />
++              <widget name="titletext" position="65,80" size="0,0" />
++      </screen>
++      <!-- Menu screens -->
++      <screen name="Menu" position="0,0" size="720,576" title="Main menu" flags="wfNoBorder" backgroundColor="transparent">
++              <ePixmap pixmap="750S/bg_main.png" zPosition="-1" position="94,85" size="530,415" alphatest="on"  transparent="1" />
++              <ePixmap pixmap="750S/icons/icon_mainmenu.png" position="110,100" size="44,44" alphatest="blend"  transparent="1" />
++              <widget source="thistory" render="Label" position="170,120" size="300,30" font="Regular;20" foregroundColor="#676767" backgroundColor="#371e1c1a" transparent="1" />
++              <widget source="title1" render="Label" position="340,113" size="200,30" font="Regular;30" foregroundColor="#d1a256" backgroundColor="#371e1c1a" transparent="1" />
++              <widget source="title2" render="Label" position="410,113" size="200,30" font="Regular;30" foregroundColor="#d1a256" backgroundColor="#371e1c1a" transparent="1" />
++              <widget source="title0" render="Label" position="275,113" size="200,30" font="Regular;30" foregroundColor="#d1a256" backgroundColor="#371e1c1a" transparent="1" />
++              <widget source="menu" render="Listbox" selectionPixmap="750S/buttons/Selected_bar_450x32px.png" backgroundColorSelected="#371e1c1a" backgroundColor="#371e1c1a" transparent="1" position="125, 176" size="480,315" scrollbarMode="showOnDemand">
++                      <convert type="TemplatedMultiContent">
++                              {"template": [  MultiContentEntryText(pos = (20, 5), size = (450, 25), flags = RT_HALIGN_LEFT, text = 0) ],
++                               "fonts": [gFont("Regular", 25)],
++                               "itemHeight": 35
++                              }
++                      </convert>
++              </widget>
++              <eLabel text=" " position="130,207" zPosition="-1" size="440,3" font="Regular;10" foregroundColor="#1e1e1e" backgroundColor="#021a1816" />
++              <eLabel text=" " position="130,242" zPosition="-1" size="440,3" font="Regular;10" foregroundColor="#1e1e1e" backgroundColor="#021a1816" />
++              <eLabel text=" " position="130,277" zPosition="-1" size="440,3" font="Regular;10" foregroundColor="#1e1e1e" backgroundColor="#021a1816" />
++              <eLabel text=" " position="130,312" zPosition="-1" size="440,3" font="Regular;10" foregroundColor="#1e1e1e" backgroundColor="#021a1816" />
++              <eLabel text=" " position="130,347" zPosition="-1" size="440,3" font="Regular;10" foregroundColor="#1e1e1e" backgroundColor="#021a1816" />
++              <eLabel text=" " position="130,382" zPosition="-1" size="440,3" font="Regular;10" foregroundColor="#1e1e1e" backgroundColor="#021a1816" />
++              <eLabel text=" " position="130,417" zPosition="-1" size="440,3" font="Regular;10" foregroundColor="#1e1e1e" backgroundColor="#021a1816" />
++              <eLabel text=" " position="130,452" zPosition="-1" size="440,3" font="Regular;10" foregroundColor="#1e1e1e" backgroundColor="#021a1816" />
++              <eLabel text=" " position="130,487" zPosition="-1" size="440,3" font="Regular;10" foregroundColor="#1e1e1e" backgroundColor="#021a1816" />
++      </screen>               
++      <!-- Messagebox -->
++      <screen name="MessageBox" position="110,245" size="500,10" title="Message">
++              <widget name="text" position="65,8" size="420,0" font="Regular;22" />
++              <widget name="ErrorPixmap" pixmap="750S/icons/input_error.png" position="5,5" size="53,53" alphatest="blend" />
++              <widget name="QuestionPixmap" pixmap="750S/icons/input_question.png" position="5,5" size="53,53" alphatest="blend" />
++              <widget name="InfoPixmap" pixmap="750S/icons/input_info.png" position="5,5" size="53,53" alphatest="blend" />
++              <widget name="list" position="100,100" size="380,375" transparent="1" backgroundColor="#371e1c1a" />
++              <applet type="onLayoutFinish">
++# this should be factored out into some helper code, but currently demonstrates applets.
++from enigma import eSize, ePoint
++
++orgwidth = self.instance.size().width()
++orgpos = self.instance.position()
++textsize = self[&quot;text&quot;].getSize()
++
++# y size still must be fixed in font stuff...
++textsize = (textsize[0] + 50, textsize[1] + 50)
++offset = 0
++if self.type == self.TYPE_YESNO:
++      offset = 60
++wsizex = textsize[0] + 60
++wsizey = textsize[1] + offset
++if (280 &gt; wsizex):
++      wsizex = 280
++wsize = (wsizex, wsizey)
++
++
++# resize
++self.instance.resize(eSize(*wsize))
++
++# resize label
++self[&quot;text&quot;].instance.resize(eSize(*textsize))
++
++# move list
++listsize = (wsizex, 50)
++self[&quot;list&quot;].instance.move(ePoint(0, textsize[1]))
++self[&quot;list&quot;].instance.resize(eSize(*listsize))
++
++# center window
++newwidth = wsize[0]
++self.instance.move(ePoint(orgpos.x() + (orgwidth - newwidth)/2, orgpos.y()))
++              </applet>
++      </screen>
++      <!-- Minute input -->
++      <screen name="MinuteInput" position="200,140" size="280,60" title="Seek">
++              <widget name="minutes" position="80,15" size="160,25" halign="right" font="Regular;23" />
++      </screen>
++      <!-- Movie context menu -->
++      <screen name="MovieContextMenu" position="150,160" size="400,260" title="Movielist menu">
++              <widget name="menu" position="10,10" size="380,250" transparent="1" scrollbarMode="showOnDemand" />
++      </screen>
++      <!-- Movieselection -->
++      <screen name="MovieSelection" position="0, 0" size="720,576" title="Channel Selection" flags="wfNoBorder" backgroundColor="transparent">
++              <ePixmap pixmap="750S/bg_list.png" position="60,25" size="600,520" zPosition="-1" alphatest="on"  transparent="1" />
++              <ePixmap pixmap="750S/icons/icon_recorded.png" position="90,35" size="44,44" alphatest="blend"  transparent="1" />
++              <eLabel text="Recorded files..." position="140,45" size="220,30" font="Regular;30" foregroundColor="#d1a256" backgroundColor="#371e1c1a" transparent="1" />
++              <ePixmap pixmap="750S/buttons/red.png" position="80,110" size="136,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/green.png" position="220,110" size="136,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/yellow.png" position="360,110" size="136,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/blue.png" position="500,110" size="136,40" alphatest="on" />
++              <widget name="key_red" position="100,110" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget name="key_green" position="240,110" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget name="key_yellow" position="380,110" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />
++              <widget name="key_blue" position="520,110" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#18188b" transparent="1" />
++              <widget name="list" position="80,160" size="555,328" zPosition="2" scrollbarMode="showOnDemand" transparent="1" />
++              <widget name="DescriptionBorder" pixmap="750S/border_eventinfo.png" position="75,388" zPosition="1" size="560,103" transparent="1" alphatest="on" />
++              <widget source="Service" render="Label" position="80,390" zPosition="1" size="480,35" font="Regular;17" foregroundColor="#cccccc">
++                      <convert type="MovieInfo">ShortDescription</convert>
++              </widget>
++              <widget source="Service" render="Label" position="570,390" zPosition="1" size="60,22" font="Regular;17" halign="right">
++                      <convert type="ServiceTime">Duration</convert>
++                      <convert type="ClockToText">AsLength</convert>
++              </widget>
++              <widget source="Service" render="Label" position="455,410" zPosition="2" size="175,22" font="Regular;17" halign="right">
++                      <convert type="MovieInfo">RecordServiceName</convert>
++              </widget>
++              <widget source="Service" render="Label" position="80,430" zPosition="1" size="550,58" font="Regular;19">
++                      <convert type="EventName">ExtendedDescription</convert>
++              </widget>
++              <widget name="freeDiskSpace" position="75,500" size="540,20" font="Regular;19" valign="center" halign="right" />
++      </screen>
++      <!-- Mute -->
++      <screen name="Mute" position="50,50" zPosition="10" size="40,24" backgroundColor="transparent" title="Mute" flags="wfNoBorder">
++              <ePixmap position="0,0" size="40,24" pixmap="750S/mute.png" transparent="1" alphatest="on" />
++      </screen>
++      <!-- Nameserver -->
++      <screen name="NameserverSetup" position="110,120" size="500,400" title="Nameserver Setup" >
++              <widget name="config" position="10,10" transparent="1" backgroundColor="#371e1c1a" size="480,175" scrollbarMode="showOnDemand" />
++              <widget source="key_red" render="Label" position="430,330" size="120,21" zPosition="10" font="Regular;21" transparent="1" />
++              <widget source="key_green" render="Label" position="60,330" size="150,21" zPosition="10" font="Regular;21" transparent="1" />
++              <widget source="key_yellow" render="Label" position="60,360" size="150,21" zPosition="10" font="Regular;21" transparent="1" />
++              <ePixmap pixmap="750S/buttons/button_red.png" position="400,328" zPosition="10" size="22,22" transparent="1" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/button_green.png" position="20,328" zPosition="10" size="22,22" transparent="1" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/button_yellow.png" position="20,358" zPosition="10" size="22,22" transparent="1" alphatest="on" />
++              <widget name="introduction" position="140,360" size="300,20" zPosition="10" font="Regular;21" halign="center" transparent="1" />
++      </screen>
++      <!-- Network adapter selection -->
++      <screen name="NetworkAdapterSelection" position="110,120" size="500,400" title="Select Network Adapter">
++              <widget source="key_red" render="Label" position="430,330" size="120,21" zPosition="10" font="Regular;21" transparent="1" />
++              <widget source="key_green" render="Label" position="60,330" size="150,21" zPosition="10" font="Regular;21" transparent="1" />
++              <widget source="key_yellow" render="Label" position="60,360" size="150,21" zPosition="10" font="Regular;21" transparent="1" />
++              <ePixmap pixmap="750S/buttons/button_red.png" position="400,328" zPosition="10" size="22,22" transparent="1" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/button_green.png" position="20,328" zPosition="10" size="22,22" transparent="1" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/button_yellow.png" position="20,358" zPosition="10" size="22,22" transparent="1" alphatest="on" />
++              <widget source="list" render="Listbox" position="10,10" size="550,280" zPosition="10" scrollbarMode="showOnDemand">
++                      <convert type="TemplatedMultiContent"> <!--  iface, name, description, interfacepng, defaultpng, activepng, divpng  -->
++                              {"template": [
++                                              MultiContentEntryText(pos = (85, 6), size = (440, 28), font=0, flags = RT_HALIGN_LEFT|RT_VALIGN_TOP, text = 1), # index 1 is the interfacename
++                                              MultiContentEntryText(pos = (85, 43), size = (440, 20), font=1, flags = RT_HALIGN_LEFT|RT_VALIGN_BOTTOM, text = 2), # index 2 is the description
++                                              MultiContentEntryPixmapAlphaTest(pos = (2, 8), size = (54, 54), png = 3), # index 3 is the interface pixmap
++                                              MultiContentEntryPixmapAlphaTest(pos = (63, 46), size = (15, 16), png = 4), # index 4 is the default pixmap
++                                      ],
++                              "fonts": [gFont("Regular", 28),gFont("Regular", 20)],
++                              "itemHeight": 70
++                              }
++                      </convert>
++              </widget>
++              <widget source="introduction" render="Label" position="140,360" size="300,21" zPosition="10" font="Regular;21" halign="center" transparent="1" />
++      </screen>       
++      <!-- Network adapter test Black = "#000000" Grey = "#8c8c93" Green = "#1cff1c" Red = #f23d21-->
++      <screen name="NetworkAdapterTest" position="110,120" size="520,400" title="Network test..." >
++              <ePixmap pixmap="750S/buttons/button_red.png" position="380,328" zPosition="10" size="22,22" transparent="1" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/button_green.png" position="30,328" zPosition="10" size="22,22" transparent="1" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/button_yellow.png" position="30,358" zPosition="10" size="22,22" transparent="1" alphatest="on" />
++              <widget source="key_red" render="Label" position="420,330" size="120,21" zPosition="10" font="Regular;21" transparent="1" />
++              <widget source="key_green" render="Label" position="70,330" size="250,21" zPosition="10" font="Regular;21" transparent="1" />
++              <widget source="key_yellow" render="Label" position="70,360" size="250,21" zPosition="10" font="Regular;21" transparent="1" />
++              <widget name="Adaptertext" position="10,20" size="120,21" zPosition="1" font="Regular;19" foregroundColors="#8c8c93,#1cff1c" />                 
++              <widget name="Adapter" position="120,20" size="270,21" zPosition="1" font="Regular;19" halign="center" foregroundColors="#8c8c93,#f23d21,#1cff1c" />
++              <widget name="AdapterInfo" pixmaps="750S/buttons/blue.png,750S/buttons/blue_pressed.png" position="370,10" zPosition="1" size="140,40" transparent="1" alphatest="on" />
++              <widget name="AdapterInfo_Text" position="410,20" size="110,21" zPosition="2" font="Regular;19" transparent="1" foregroundColors="#8c8c93,#7fafaf,#1cff1c" />
++              <widget name="AdapterInfo_OK" pixmap="750S/icons/lock_on.png" position="345,15" size="38,31" alphatest="on" zPosition="2" />
++              <widget name="Networktext" position="10,70" size="120,21" zPosition="1" font="Regular;19" foregroundColors="#8c8c93,#1cff1c" />                 
++              <widget name="Network" position="150,70" size="240,21" zPosition="1" font="Regular;19" halign="center" foregroundColors="#8c8c93,#f23d21,#1cff1c" />
++              <widget name="NetworkInfo" pixmaps="750S/buttons/blue.png,750S/buttons/blue_pressed.png" position="370,60" zPosition="1" size="140,40" transparent="1" alphatest="on" />
++              <widget name="NetworkInfo_Text" position="410,70" size="110,21" zPosition="2" font="Regular;19" transparent="1" foregroundColors="#8c8c93,#7fafaf,#1cff1c" />
++              <widget name="NetworkInfo_Check" pixmaps="750S/icons/lock_on.png,750S/icons/lock_error.png" position="345,65" size="38,31" alphatest="on" zPosition="2" />
++              <widget name="Dhcptext" position="10,120" size="120,21" zPosition="1" font="Regular;19" foregroundColors="#8c8c93,#1cff1c" />                   
++              <widget name="Dhcp" position="150,120" size="240,21" zPosition="1" font="Regular;19" halign="center" foregroundColors="#8c8c93,#f23d21,#1cff1c" />
++              <widget name="DhcpInfo" pixmaps="750S/buttons/blue.png,750S/buttons/blue_pressed.png" position="370,110" zPosition="1" size="140,40" transparent="1" alphatest="on" />
++              <widget name="DhcpInfo_Text" position="410,120" size="110,21" zPosition="2" font="Regular;19" transparent="1" foregroundColors="#8c8c93,#7fafaf,#1cff1c" />
++              <widget name="DhcpInfo_Check" pixmaps="750S/icons/lock_on.png,750S/icons/lock_error.png" position="345,115" size="38,31" alphatest="on" zPosition="2" />
++              <widget name="IPtext" position="10,170" size="120,21" zPosition="1" font="Regular;19" foregroundColors="#8c8c93,#1cff1c" />                     
++              <widget name="IP" position="150,170" size="210,21" zPosition="1" font="Regular;19" halign="center" foregroundColors="#8c8c93,#f23d21,#1cff1c" />
++              <widget name="IPInfo" pixmaps="750S/buttons/blue.png,750S/buttons/blue_pressed.png" position="370,160" zPosition="1" size="140,40" transparent="1" alphatest="on" />
++              <widget name="IPInfo_Text" position="410,170" size="110,21" zPosition="2" font="Regular;19" transparent="1" foregroundColors="#8c8c93,#7fafaf,#1cff1c" />
++              <widget name="IPInfo_Check" pixmaps="750S/icons/lock_on.png,750S/icons/lock_error.png" position="345,165" size="38,31" alphatest="on" zPosition="2" />
++              <widget name="DNStext" position="10,220" size="120,21" zPosition="1" font="Regular;19" foregroundColors="#8c8c93,#1cff1c" />                    
++              <widget name="DNS" position="150,220" size="210,21" zPosition="1" font="Regular;19" halign="center" foregroundColors="#8c8c93,#f23d21,#1cff1c" />
++              <widget name="DNSInfo" pixmaps="750S/buttons/blue.png,750S/buttons/blue_pressed.png" position="370,210" zPosition="1" size="140,40" transparent="1" alphatest="on" />
++              <widget name="DNSInfo_Text" position="410,220" size="110,21" zPosition="2" font="Regular;19" transparent="1" foregroundColors="#8c8c93,#7fafaf,#1cff1c" />
++              <widget name="DNSInfo_Check" pixmaps="750S/icons/lock_on.png,750S/icons/lock_error.png" position="345,215" size="38,31" alphatest="on" zPosition="2" />
++              <widget name="EditSettingsButton" pixmaps="750S/buttons/blue.png,750S/buttons/blue_pressed.png" position="350,260" zPosition="1" size="130,40" transparent="1" alphatest="on" />
++              <widget name="EditSettings_Text" position="370,270" size="110,21" zPosition="2" font="Regular;17" halign="center" transparent="1" foregroundColors="#7fafaf,#8c8c93,#1cff1c" />
++
++              <widget name="InfoText" position="5,5" size="515,290" zPosition="25" font="Regular;21" />
++      </screen>
++      <!-- Network setup -->
++      <screen name="NetworkSetup" position="130,140" size="510,330" title="Network Setup">
++              <widget name="menu" position="10,10" selectionPixmap="750S/buttons/Selected_bar_440x23px.png" transparent="1" backgroundColor="#371e1c1a" size="440,310" />
++      </screen>
++      <!-- Nim selection -->
++      <screen name="NimSelection" position="150,123" size="420,330" title="Choose Tuner">
++              <widget source="nimlist" render="Listbox" transparent="1" position="0,0" size="420,300" scrollbarMode="showOnDemand">
++                      <convert type="TemplatedMultiContent">
++                              {"template": [
++                                              MultiContentEntryText(pos = (10, 5), size = (400, 30), flags = RT_HALIGN_LEFT, text = 1), # index 1 is the nim name,
++                                              MultiContentEntryText(pos = (50, 30), size = (320, 30), font = 1, flags = RT_HALIGN_LEFT, text = 2), # index 2 is a description of the nim settings,
++                                      ],
++                               "fonts": [gFont("Regular", 20), gFont("Regular", 15)],
++                               "itemHeight": 70
++                              }
++                      </convert>
++              </widget>
++      </screen>
++      <!-- Nim setup -->
++      <screen name="NimSetup" position="110,120" size="500,412" title="Reception Settings">
++              <widget name="config" position="10,10" transparent="1" size="480,402" scrollbarMode="showOnDemand" />
++      </screen>
++      <!-- Numberzap -->
++      <screen name="NumberZap" position="235,255" size="250,60" title="Channel">
++              <widget name="channel" position="35,15" size="110,25" font="Regular;23" />
++              <widget name="number" position="145,15" size="80,25" halign="right" font="Regular;23" />
++      </screen>
++      <!-- Numerical help dialog -->
++      <screen name="NumericalTextInputHelpDialog" position="170,420" zPosition="2" size="394,94" backgroundColor="#202020" flags="wfNoBorder">
++              <eLabel position="0,0" size="392,92" backgroundColor="#c0c0c0" zPosition="-1" />
++              <widget name="key1" position="2,2" size="130,30" font="Console;16" halign="center" valign="center" />
++              <widget name="key2" position="132,2" size="130,30" font="Console;16" halign="center" valign="center" />
++              <widget name="key3" position="262,2" size="130,30" font="Console;16" halign="center" valign="center" />
++              <widget name="key4" position="2,32" size="130,30" font="Console;16" halign="center" valign="center" />
++              <widget name="key5" position="132,32" size="130,30" font="Console;16" halign="center" valign="center" />
++              <widget name="key6" position="262,32" size="130,30" font="Console;16" halign="center" valign="center" />
++              <widget name="key7" position="2,62" size="130,30" font="Console;16" halign="center" valign="center" />
++              <widget name="key8" position="132,62" size="130,30" font="Console;16" halign="center" valign="center" />
++              <widget name="key9" position="262,62" size="130,30" font="Console;16" halign="center" valign="center" />
++      </screen>
++      <!-- Parental control - change pin -->
++      <screen name="ParentalControlChangePin" position="100,200" size="520,160" title="Change pin code">
++              <widget name="config" position="10,10" size="500,350" transparent="1" backgroundColor="#371e1c1a" scrollbarMode="showOnDemand" />
++      </screen>
++      <!-- Parental control - editor -->
++      <screen name="ParentalControlEditor" position="100,120" size="520,400" title="Parental control services Editor">
++              <widget name="servicelist" position="10,10" size="500,350" selectionPixmap="750S/buttons/Selected_bar_500x23px.png" transparent="1" backgroundColorSelected="#371e1c1a" scrollbarMode="showOnDemand" />
++      </screen>
++      <!-- Parental control - setup -->
++      <screen name="ParentalControlSetup" position="100,120" size="520,400" title="Parental control setup">
++              <widget name="config" position="10,10" transparent="1" backgroundColor="#371e1c1a" size="500,350" scrollbarMode="showOnDemand" />
++      </screen>
++      <!-- Picture in picture -->
++      <screen name="PictureInPicture" position="400,60" zPosition="-1" size="240,192" flags="wfNoBorder">
++              <widget name="video" position="0,0" size="240,192" backgroundColor="transparent" />
++      </screen>
++      <!-- Pin input -->
++      <screen name="PinInput" position="110,205" size="500,170" title="Pin code needed">
++              <widget name="service" position="10,10" size="480,25" font="Regular;20" />
++              <widget name="text" position="10,40" size="480,25" font="Regular;20" halign="center" />
++              <widget name="tries" position="10,70" size="480,25" font="Regular;20" halign="center" />
++              <widget name="input" position="10,110" size="480,40" font="Regular;50" halign="center" />
++      </screen>
++      <!-- Picture in picture setup -->
++      <screen name="PiPSetup" position="70,400" size="600,150" backgroundColor="transparent" flags="wfNoBorder" title="PiPSetup">
++              <widget name="text" position="0,0" size="600,150" font="Regular;23" />
++      </screen>
++      <!-- Plugin browser -->
++      <screen name="PluginBrowser" position="150,120" size="410,410" title="Plugin browser">
++              <ePixmap pixmap="750S/buttons/red-big.png" position="0,0" size="200,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/green-big.png" position="210,0" size="200,40" alphatest="on" />
++              <widget name="red" position="30,0" zPosition="1" size="170,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget name="green" position="240,0" zPosition="1" size="170,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget name="list" position="0,45" size="410,355" scrollbarMode="showOnDemand" />
++      </screen>
++      <!-- Plugin downloads -->
++      <screen name="PluginDownloadBrowser" position="110,120" size="500,420" title="Downloadable plugins">
++              <widget name="text" position="0,0" zPosition="1" size="500,430" font="Regular;20" halign="center" valign="center" />
++              <widget name="list" position="10,10" zPosition="2" size="480,405" scrollbarMode="showOnDemand" />
++      </screen>
++      <!-- PVR state -->
++      <screen name="PVRState" position="70,70" zPosition="2" size="150,30" backgroundColor="transpBlack" flags="wfNoBorder">
++              <widget name="state" position="0,0" size="150,30" font="Regular;25" halign="center" backgroundColor="transpBlack" foregroundColor="white" />
++      </screen>
++      <!-- Radio infobar -->
++      <screen name="RadioInfoBar" position="75,408" size="560,120" zPosition="1" flags="wfNoBorder" title="Radio">
++              <widget source="session.CurrentService" render="Label" position="5,1" size="325,26" font="Regular;20" noWrap="1" transparent="1">
++                      <convert type="ServiceName">Name</convert>
++              </widget>
++              <widget source="RdsDecoder" render="Pixmap" pixmap="750S/icons/rass_logo.png" position="330,1" size="50,21" alphatest="on">
++                      <convert type="RdsInfo">RasInteractiveAvailable</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="session.RecordState" render="Pixmap" pixmap="750S/icons/record.png" position="480,3" zPosition="2" size="14,14" alphatest="on" >
++                      <convert type="ConditionalShowHide">Blink</convert>
++              </widget>
++              <ePixmap pixmap="750S/icons/clock.png" position="478,0" zPosition="1" size="16,16" alphatest="on" />
++              <widget source="session.Event_Now" render="Progress" pixmap="750S/progress_medium.png" position="395,5" zPosition="2" size="71,11" borderWidth="2" borderColor="#cccccc" transparent="1">
++                      <convert type="EventTime">Progress</convert>
++              </widget>
++              <widget source="global.CurrentTime" render="Label" position="500,1" size="55,28" font="Regular;20" halign="right" transparent="1">
++                      <convert type="ClockToText">Default</convert>
++              </widget>
++              <widget source="session.Event_Now" render="Label" position="5,25" size="60,22" font="Regular;20" transparent="1">
++                      <convert type="EventTime">StartTime</convert>
++                      <convert type="ClockToText">Default</convert>
++              </widget>
++              <widget source="session.Event_Now" render="Label" position="73,25" size="390,22" font="Regular;20" valign="top" noWrap="1" transparent="1">
++                      <convert type="EventName">Name</convert>
++              </widget>
++              <widget source="session.Event_Now" render="Label" position="465,25" size="90,22" font="Regular;20" halign="right" transparent="1">
++                      <convert type="EventTime">Remaining</convert>
++                      <convert type="RemainingToText">InMinutes</convert>
++              </widget>
++              <widget source="session.Event_Next" render="Label" position="5,47" size="60,22" font="Regular;20" transparent="1">
++                      <convert type="EventTime">StartTime</convert>
++                      <convert type="ClockToText">Default</convert>
++              </widget>
++              <widget source="session.Event_Next" render="Label" position="73,47" size="390,22" font="Regular;20" valign="top" noWrap="1" transparent="1">
++                      <convert type="EventName">Name</convert>
++              </widget>
++              <widget source="session.Event_Next" render="Label" position="465,47" size="90,22" font="Regular;20" halign="right" transparent="1">
++                      <convert type="EventTime">Duration</convert>
++                      <convert type="ClockToText">InMinutes</convert>
++              </widget>
++              <eLabel position="5,68" size="550,1" backgroundColor="#384472" />
++              <eLabel position="5,69" size="550,1" backgroundColor="#04060a" />
++              <widget source="RdsDecoder" render="Label" position="5,71" size="550,50" font="LCD;20" foregroundColor="#80ffff">
++                      <convert type="RdsInfo">RadioText</convert>
++              </widget>
++      </screen>
++      <!-- RASS -->
++      <screen name="RassInteractive" position="50,180" size="100,275" backgroundColor="transpWhite" flags="wfNoBorder">
++              <ePixmap pixmap="750S/icons/rass_logo.png" position="25,0" size="50,21" transparent="1" alphatest="on" />
++              <eLabel text="Index" position="36,25" size="60,25" font="Regular;21" foregroundColor="black" backgroundColor="transpWhite" />
++              <eLabel text="0" position="5,25" size="16,25" font="Regular;21" foregroundColor="black" backgroundColor="transpWhite" />
++              <widget name="Marker" position="21,25" size="16,25" font="Regular;21" foregroundColor="black" backgroundColor="transpWhite" />
++              <eLabel text="1" position="5,50" size="16,25" font="Regular;21" foregroundColor="black" backgroundColor="transpWhite" />
++              <widget name="subpages_1" position="35,50" size="36,20" alphatest="on" />
++              <eLabel text="2" position="5,75" size="16,25" font="Regular;21" foregroundColor="black" backgroundColor="transpWhite" />
++              <widget name="subpages_2" position="35,75" size="36,20" alphatest="on" />
++              <eLabel text="3" position="5,100" size="16,25" font="Regular;21" foregroundColor="black" backgroundColor="transpWhite" />
++              <widget name="subpages_3" position="35,100" size="36,20" alphatest="on" />
++              <eLabel text="4" position="5,125" size="16,25" font="Regular;21" foregroundColor="black" backgroundColor="transpWhite" />
++              <widget name="subpages_4" position="35,125" size="36,20" alphatest="on" />
++              <eLabel text="5" position="5,150" size="16,25" font="Regular;21" foregroundColor="black" backgroundColor="transpWhite" />
++              <widget name="subpages_5" position="35,150" size="36,20" alphatest="on" />
++              <eLabel text="6" position="5,175" size="16,25" font="Regular;21" foregroundColor="black" backgroundColor="transpWhite" />
++              <widget name="subpages_6" position="35,175" size="36,20" alphatest="on" />
++              <eLabel text="7" position="5,200" size="16,25" font="Regular;21" foregroundColor="black" backgroundColor="transpWhite" />
++              <widget name="subpages_7" position="35,200" size="36,20" alphatest="on" />
++              <eLabel text="8" position="5,225" size="16,25" font="Regular;21" foregroundColor="black" backgroundColor="transpWhite" />
++              <widget name="subpages_8" position="35,225" size="36,20" alphatest="on" />
++              <eLabel text="9" position="5,250" size="16,25" font="Regular;21" foregroundColor="black" backgroundColor="transpWhite" />
++              <widget name="subpages_9" position="35,250" size="36,20" alphatest="on" />
++      </screen>
++      <!-- RDS info -->
++      <screen name="RdsInfoDisplay" position="0,0" zPosition="-2" size="720,576" backgroundColor="transparent" flags="wfNoBorder">
++              <widget name="RadioText" position="50,481" size="620,29" font="Regular;21" noWrap="1" backgroundColor="#003258" shadowOffset="-2,-2" shadowColor="transpBlack" />
++              <widget name="RtpText" position="50,510" size="620,29" font="Regular;21" halign="right" noWrap="1" backgroundColor="#003258" shadowOffset="-2,-2" shadowColor="transpBlack" />
++              <widget name="RassLogo" pixmap="750S/icons/rass_logo.png" position="50,445" size="50,21" />
++      </screen>
++      <!-- Satfinder -->
++      <screen name="Satfinder" position="90,120" size="520,400" title="Satfinder">
++              <widget name="introduction" position="0,0" size="0,0" font="Regular;23" />
++              <ePixmap pixmap="750S/icons/dish_scan.png" position="5,25" zPosition="0" size="119,110" transparent="1" alphatest="on" />
++              <widget source="Frontend" render="Label" position="190,10" zPosition="2" size="260,20" font="Regular;19" halign="center" valign="center" transparent="1">
++                      <convert type="FrontendInfo">SNRdB</convert>
++              </widget>
++              <eLabel name="snr" text="SNR:" position="120,35" size="60,22" font="Regular;21" halign="right" transparent="1" />
++              <widget source="Frontend" render="Progress" position="190,35" size="260,20" pixmap="750S/bar_snr.png" borderWidth="2" borderColor="#cccccc">
++                      <convert type="FrontendInfo">SNR</convert>
++              </widget>
++              <widget source="Frontend" render="Label" position="460,35" size="60,22" font="Regular;21">
++                      <convert type="FrontendInfo">SNR</convert>
++              </widget>
++              <eLabel name="agc" text="AGC:" position="120,60" size="60,22" font="Regular;21" halign="right" transparent="1" />
++              <widget source="Frontend" render="Progress" position="190,60" size="260,20" pixmap="750S/bar_snr.png" borderWidth="2" borderColor="#cccccc">
++                      <convert type="FrontendInfo">AGC</convert>
++              </widget>
++              <widget source="Frontend" render="Label" position="460,60" size="60,22" font="Regular;21">
++                      <convert type="FrontendInfo">AGC</convert>
++              </widget>
++              <eLabel name="ber" text="BER:" position="120,85" size="60,22" font="Regular;21" halign="right" transparent="1" />
++              <widget source="Frontend" render="Progress" position="190,85" size="260,20" pixmap="750S/bar_ber.png" borderWidth="2" borderColor="#cccccc">
++                      <convert type="FrontendInfo">BER</convert>
++              </widget>
++              <widget source="Frontend" render="Label" position="460,85" size="60,22" font="Regular;21">
++                      <convert type="FrontendInfo">BER</convert>
++              </widget>
++              <eLabel name="lock" text="Lock:" position="120,115" size="60,22" font="Regular;21" halign="right" />
++              <widget source="Frontend" render="Pixmap" pixmap="750S/icons/lock_on.png" position="190,110" zPosition="1" size="38,31" alphatest="on">
++                      <convert type="FrontendInfo">LOCK</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="Frontend" render="Pixmap" pixmap="750S/icons/lock_off.png" position="190,110" zPosition="1" size="38,31" alphatest="on">
++                      <convert type="FrontendInfo">LOCK</convert>
++                      <convert type="ConditionalShowHide">Invert</convert>
++              </widget>
++              <ePixmap pixmap="750S/div-h.png" position="10,152" zPosition="1" size="500,2" />
++              <widget name="config" position="10,165" transparent="1" backgroundColor="#371e1c1a" size="500,240" scrollbarMode="showOnDemand" />
++      </screen>
++      <!-- Scan setup -->
++      <screen name="ScanSetup" position="100,120" size="520,405" title="Service scan">
++              <widget name="config" position="10,10" transparent="1" backgroundColor="#371e1c1a" size="500,350" scrollbarMode="showOnDemand" />
++              <widget name="introduction" position="10,365" size="500,40" font="Regular;20" halign="center" />
++      </screen>
++      <!-- Scan simple -->
++      <screen name="ScanSimple" position="150,130" size="420,350" title="Service scan">
++              <widget name="header" position="10,10" size="400,25" font="Regular;23" />
++              <widget name="config" position="10,55" transparent="1" backgroundColor="#371e1c1a" size="400,250" scrollbarMode="showOnDemand" />
++              <widget name="footer" position="10,310" size="400,20" font="Regular;20" halign="center" />
++      </screen>
++      <!-- Scart -->
++      <screen name="Scart" position="0,0" size="720,576" backgroundColor="transparent" />
++      <!-- Service info -->
++      <screen name="ServiceInfo" position="0,0" size="720,576" title="Serviceinfo" flags="wfNoBorder" backgroundColor="transparent">
++              <ePixmap pixmap="750S/bg_setup_600.png" zPosition="-1" position="65,35" size="600,500" alphatest="on"  transparent="1" />
++              <ePixmap pixmap="750S/icons/icon_mainmenu.png" position="95,50" size="44,44" alphatest="blend"  transparent="1" />
++              <eLabel text="Main menu > Information > " position="150,70" size="230,30" font="Regular;20" foregroundColor="#676767" backgroundColor="#371e1c1a" transparent="1" />
++              <eLabel text="Serviceinfo" position="370,65" size="200,30" font="Regular;30" foregroundColor="#d1a256" backgroundColor="#371e1c1a" transparent="1" />
++              <ePixmap pixmap="750S/buttons/red.png" position="80,130" size="136,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/green.png" position="220,130" size="136,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/yellow.png" position="360,130" size="136,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/blue.png" position="500,130" size="136,40" alphatest="on" />
++              <widget name="red" position="100,130" zPosition="1" size="115,40" font="Regular;17" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget name="green" position="240,130" zPosition="1" size="115,40" font="Regular;17" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget name="yellow" position="380,130" zPosition="1" size="115,40" font="Regular;17" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />
++              <widget name="blue" position="520,130" zPosition="1" size="115,40" font="Regular;17" halign="center" valign="center" backgroundColor="#18188b" transparent="1" />
++              <widget name="infolist" position="110,175" size="510,340" selectionDisabled="1" />
++      </screen>
++      <!-- Service scan -->
++      <screen name="ServiceScan" position="150,120" size="420,390" title="Service Scan">
++              <widget source="FrontendInfo" render="Pixmap" pixmap="750S/icons/scan-s.png" position="5,5" size="64,64" transparent="1" alphatest="blend">
++                      <convert type="FrontendInfo">TYPE</convert>
++                      <convert type="ValueRange">0,0</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="FrontendInfo" render="Pixmap" pixmap="750S/icons/scan-c.png" position="5,5" size="64,64" transparent="1" alphatest="on">
++                      <convert type="FrontendInfo">TYPE</convert>
++                      <convert type="ValueRange">1,1</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="FrontendInfo" render="Pixmap" pixmap="750S/icons/scan-t.png" position="5,5" size="64,64" transparent="1" alphatest="on">
++                      <convert type="FrontendInfo">TYPE</convert>
++                      <convert type="ValueRange">2,2</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget name="network" position="80,15" size="330,20" font="Regular;20" />
++              <widget name="transponder" position="80,40" size="330,20" font="Regular;20" />
++              <widget name="scan_state" position="10,80" zPosition="2" size="400,20" font="Regular;18" />
++              <widget name="pass" position="10,80" size="400,20" font="Regular;18" />
++              <widget name="scan_progress" position="10,105" size="400,15" pixmap="750S/progress_big.png" borderWidth="2" borderColor="#cccccc" />
++              <widget name="servicelist" position="10,135" size="400,265" selectionDisabled="1" />
++      </screen>
++      <!-- Setup -->
++      <screen name="Setup" position="0,0" size="720,576" title="Setup" flags="wfNoBorder" backgroundColor="transparent">
++              <ePixmap pixmap="750S/bg_setup_650.png" zPosition="-1" position="40,25" size="630,525" alphatest="on"  transparent="1" />
++              <ePixmap pixmap="750S/icons/icon_mainmenu.png" position="80,40" size="44,44" alphatest="blend"  transparent="1" />
++              <eLabel text="Main menu > Setup > System > " position="130,60" size="300,30" font="Regular;20" foregroundColor="#676767" backgroundColor="#371e1c1a" transparent="1" />
++              <widget source="Title" render="Label" position="380,55" size="220,35" font="Regular;30" foregroundColor="#d1a256" backgroundColor="#371e1c1a" transparent="1" />
++              <ePixmap pixmap="750S/buttons/red.png" position="70,110" size="136,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/green.png" position="210,110" size="136,40" alphatest="on" />
++              <widget source="key_red" render="Label" position="90,110" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget source="key_green" render="Label" position="230,110" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
++              <ePixmap pixmap="750S/buttons/yellow.png" position="350,110" size="136,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/blue.png" position="490,110" size="136,40" alphatest="on" />
++              <widget name="config" position="80,165" itemHeight="30" backgroundColor="#371e1c1a" transparent="1" size="520,360" scrollbarMode="showNever" />
++              <eLabel text=" " position="80,192" zPosition="-1" size="520,3" font="Regular;10" foregroundColor="#1e1e1e" backgroundColor="#021a1816" />
++              <eLabel text=" " position="80,222" zPosition="-1" size="520,3" font="Regular;10" foregroundColor="#1e1e1e" backgroundColor="#021a1816" />
++              <eLabel text=" " position="80,252" zPosition="-1" size="520,3" font="Regular;10" foregroundColor="#1e1e1e" backgroundColor="#021a1816" />
++              <eLabel text=" " position="80,282" zPosition="-1" size="520,3" font="Regular;10" foregroundColor="#1e1e1e" backgroundColor="#021a1816" />
++              <eLabel text=" " position="80,312" zPosition="-1" size="520,3" font="Regular;10" foregroundColor="#1e1e1e" backgroundColor="#021a1816" />
++              <eLabel text=" " position="80,342" zPosition="-1" size="520,3" font="Regular;10" foregroundColor="#1e1e1e" backgroundColor="#021a1816" />
++              <eLabel text=" " position="80,372" zPosition="-1" size="520,3" font="Regular;10" foregroundColor="#1e1e1e" backgroundColor="#021a1816" />
++              <eLabel text=" " position="80,402" zPosition="-1" size="520,3" font="Regular;10" foregroundColor="#1e1e1e" backgroundColor="#021a1816" />
++              <eLabel text=" " position="80,432" zPosition="-1" size="520,3" font="Regular;10" foregroundColor="#1e1e1e" backgroundColor="#021a1816" />
++              <eLabel text=" " position="80,462" zPosition="-1" size="520,3" font="Regular;10" foregroundColor="#1e1e1e" backgroundColor="#021a1816" />
++              <eLabel text=" " position="80,492" zPosition="-1" size="520,3" font="Regular;10" foregroundColor="#1e1e1e" backgroundColor="#021a1816" />
++              <eLabel text=" " position="80,522" zPosition="-1" size="520,3" font="Regular;10" foregroundColor="#1e1e1e" backgroundColor="#021a1816" />
++      </screen>
++      <!-- Simple channelselection -->
++      <screen name="SimpleChannelSelection" position="90,120" size="550,430" title="Channel Selection">
++              <ePixmap pixmap="750S/buttons/red.png" position="0,0" size="136,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/green.png" position="140,0" size="136,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/yellow.png" position="280,0" size="136,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/blue.png" position="420,0" size="136,40" alphatest="on" />
++              <widget name="key_red" position="20,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget name="key_green" position="160,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget name="key_yellow" position="300,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />
++              <widget name="key_blue" position="440,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#18188b" transparent="1" />
++              <widget name="list" position="00,45" size="555,364" transparent="1" scrollbarMode="showOnDemand" />
++      </screen>
++      <!-- Skin Selector -->
++      <screen name="SkinSelector" position="0,0" size="720,576" title="Choose your Skin" flags="wfNoBorder" backgroundColor="transparent">
++              <ePixmap pixmap="750S/bg_main.png" zPosition="-1" position="90,70" size="530,415" alphatest="on"  transparent="1" />
++              <ePixmap pixmap="750S/icons/icon_mainmenu.png" position="110,80" size="44,44" alphatest="blend"  transparent="1" />
++              <eLabel text="Main menu > Setup > System > " position="160,105" size="300,30" font="Regular;20" foregroundColor="#676767" backgroundColor="#371e1c1a" transparent="1" />
++              <eLabel text="Choose your Skin" position="405,100" size="200,35" font="Regular;30" foregroundColor="#d1a256" backgroundColor="#371e1c1a" transparent="1" />
++              <ePixmap pixmap="750S/buttons/red.png" position="480,435" size="140,40" zPosition="1" alphatest="on" />
++              <widget source="key_red" render="Label" position="500,435" zPosition="2" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget source="introduction" render="Label" position="90,435" size="380,30" zPosition="10" font="Regular;21" halign="center" valign="center" backgroundColor="#25062748" transparent="1" />
++              <widget name="SkinList" position="98,160" size="230,250" selectionPixmap="750S/buttons/Selected_bar_230x23px.png" backgroundColor="#371e1c1a" transparent="1" scrollbarMode="showOnDemand" />
++              <widget name="Preview" position="332,210" size="280,210" alphatest="on" />
++      </screen>
++      <!-- Sleeptimer edit -->
++      <screen name="SleepTimerEdit" position="110,215" size="520,200" title="Sleep Timer">
++              <widget name="current_status" position="40,40" size="400,30" valign="center" font="Regular;20" />
++              <widget name="red" pixmap="750S/buttons/button_red.png" position="2,84" size="22,22" alphatest="on" />
++              <widget name="green" pixmap="750S/buttons/button_green.png" position="2,123" size="22,22" alphatest="on" />
++              <widget name="yellow" pixmap="750S/buttons/button_yellow.png" position="2,163" size="22,22" alphatest="on" />
++              <widget name="blue" pixmap="750S/buttons/button_blue.png" position="2,163" size="22,22" alphatest="on" />
++              <widget name="red_text" position="40,80" size="400,30" valign="center" font="Regular;20" />
++              <widget name="green_text" position="40,120" size="400,30" valign="center" font="Regular;20" />
++              <widget name="yellow_text" position="40,160" size="400,30" valign="center" font="Regular;20" />
++              <widget name="blue_text" position="40,200" size="400,30" valign="center" font="Regular;20" />
++              <widget name="pretext" position="15,10" size="235,25" font="Regular;19" />
++              <widget name="input" position="260,10" size="40,25" font="Regular;19" />
++              <widget name="aftertext" position="305,10" size="100,25" font="Regular;19" />
++              <ePixmap pixmap="750S/sleeptimer.png" position="390,17" size="116,142" alphatest="blend" />
++      </screen>
++      <!-- Standby mode -->
++      <screen name="Standby" flags="wfNoBorder" position="0,0" size="720,576" title="Standby" />
++      <!-- Start Wizard -->
++      <screen name="StartWizard" position="0,0" size="720,576" title="Welcome..." flags="wfNoBorder">
++              <widget name="text" position="153,50" size="340,270" font="Regular;23" />
++              <widget source="list" render="Listbox" transparent="1" position="50,300" size="440,200" scrollbarMode="showOnDemand" >
++                      <convert type="StringList" />
++              </widget>
++              <widget name="config" position="50,300" size="440,200" scrollbarMode="showOnDemand" zPosition="1" transparent="1" />
++              <ePixmap pixmap="750S/buttons/button_red.png" position="40,227" size="22,22" alphatest="on" />
++              <widget name="languagetext" position="66,230" size="95,30" font="Regular;18" />
++              <widget name="rc" pixmaps="750S/rc.png,750S/rcold.png" position="520,50" zPosition="10" size="154,500" alphatest="blend" />
++              <widget name="arrowdown" pixmap="750S/arrowdown.png" position="-100,-100" zPosition="11" size="37,70" alphatest="blend" />
++              <widget name="arrowdown2" pixmap="750S/arrowdown.png" position="-100,-100" zPosition="11" size="37,70" alphatest="blend" />
++              <widget name="arrowup" pixmap="750S/arrowup.png" position="-100,-100" zPosition="11" size="37,70" alphatest="blend" />
++              <widget name="arrowup2" pixmap="750S/arrowup.png" position="-100,-100" zPosition="11" size="37,70" alphatest="blend" />
++      </screen>
++      <!-- Network Wizard -->
++      <screen name="NetworkWizard" position="0,0" size="720,576" title="Welcome..." flags="wfNoBorder" >
++              <widget name="text" position="153,40" size="340,300" font="Regular;22" />
++              <widget source="list" render="Listbox" position="53,340" size="440,180" scrollbarMode="showOnDemand" >
++                      <convert type="StringList" />
++              </widget>
++              <widget name="config" position="53,340" zPosition="1" size="440,180" transparent="1" scrollbarMode="showOnDemand" />
++              <ePixmap pixmap="750S/buttons/button_red.png" position="40,222" zPosition="0" size="22,22" transparent="1" alphatest="on" />
++              <widget name="languagetext" position="66,225" size="95,30" font="Regular;18" />
++              <widget name="rc" pixmaps="750S/rc.png,skin_default/rcold.png" position="530,50" zPosition="10" size="154,500" alphatest="blend" />
++              <widget name="arrowdown" pixmap="750S/arrowdown.png" position="-100,-100" zPosition="11" size="37,70" alphatest="blend" />
++              <widget name="arrowdown2" pixmap="750S/arrowdown.png" position="-100,-100" zPosition="11" size="37,70" alphatest="blend" />
++              <widget name="arrowup" pixmap="750S/arrowup.png" position="-100,-100" zPosition="11" size="37,70" alphatest="blend" />
++              <widget name="arrowup2" pixmap="750S/arrowup.png" position="-100,-100" zPosition="11" size="37,70" alphatest="blend" />
++              <widget source="VKeyIcon" render="Pixmap" pixmap="750S/buttons/key_text.png" position="40,260" zPosition="0" size="35,25" transparent="1" alphatest="on" >
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget name="HelpWindow" pixmap="750S/buttons/key_text.png" position="125,170" zPosition="1" size="1,1" transparent="1" alphatest="on" />      
++      </screen>"""    
++      <!-- Subservice quickzap -->
++      <screen name="SubservicesQuickzap" position="124,470" size="512,200" title="Subservices" backgroundColor="transparent" flags="wfNoBorder">
++              <widget source="session.RecordState" render="Pixmap" pixmap="750S/icons/record.png" position="450,0" zPosition="2" size="14,14" alphatest="on" >
++                      <convert type="ConditionalShowHide">Blink</convert>
++              </widget>
++              <eLabel text="Subservices" position="0,0" size="470,20" font="Regular;13" backgroundColor="#33294a6b" />
++              <widget name="CurrentSubserviceNumber" position="0,20" size="50,34" font="Regular;22" backgroundColor="#33294a6b" shadowColor="black" shadowOffset="-1,-1" />
++              <widget source="session.CurrentService" render="Label" position="50,20" size="420,34" font="Regular;22" backgroundColor="#33294a6b" shadowColor="black" shadowOffset="-1,-1">
++                      <convert type="ServiceName">Name</convert>
++              </widget>
++      </screen>
++      <!-- Subtitle selection -->
++      <screen name="Subtitles" position="170,150" size="380,285" title="Subtitle selection">
++              <widget name="config" position="10,10" backgroundColor="#371e1c1a" transparent="1" zPosition="1" size="360,275" scrollbarMode="showOnDemand" />
++      </screen>
++      <!-- Subtitle area -->
++      <screen name="SubtitleDisplay" position="0,0" size="720,576" zPosition="-1" flags="wfNoBorder" backgroundColor="transparent" />
++      <!-- Time & date input -->
++      <screen name="TimeDateInput" position="160,150" size="400,200" title="Time/Date Input">
++              <widget name="cancel" pixmap="750S/buttons/red.png" position="10,0" size="136,40" alphatest="on" />
++              <widget name="ok" pixmap="750S/buttons/green.png" position="260,0" size="136,40" alphatest="on" />
++              <widget name="canceltext" position="30,0" zPosition="1" size="115,40" font="Regular;19" halign="center" valign="center" transparent="1" />
++              <widget name="oktext" position="280,0" zPosition="1" size="115,40" font="Regular;19" halign="center" valign="center" transparent="1" />
++              <widget name="config" position="10,40" transparent="1" size="380,150" />
++      </screen>
++      <!-- Timer edit -->
++      <screen name="TimerEdit" position="70,130" size="590,335" title="Timer Edit">
++              <widget name="description" position="10,10" size="580,40" font="Regular;25" />
++              <widget name="lbegin" position="405,102" size="103,30" font="Regular;25" foregroundColor="red" />
++              <widget name="lend" position="405,158" size="103,30" font="Regular;25" foregroundColor="green" />
++              <widget name="begin" position="508,105" size="72,35" font="Regular;25" />
++              <widget name="end" position="508,150" size="72,35" font="Regular;25" />
++              <widget name="apply" position="10,240" size="250,35" />
++      </screen>
++      <!-- Timer edit list -->
++      <screen name="TimerEditList" position="0,0" size="720,576" title="Timer Editor" flags="wfNoBorder" backgroundColor="transparent">
++              <ePixmap pixmap="750S/bg_setup_650.png" zPosition="-1" position="48,20" size="630,525" alphatest="on"  transparent="1" />
++              <ePixmap pixmap="750S/icons/icon_timerlist.png" position="80,35" size="44,44" alphatest="blend"  transparent="1" />
++              <eLabel name="title1" position="140,45" size="200,30" text="Timer List" font="Regular;30" foregroundColor="#d1a256" backgroundColor="#371e1c1a" transparent="1" />
++              <ePixmap pixmap="750S/buttons/red.png" position="80,100" size="136,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/green.png" position="220,100" size="136,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/yellow.png" position="360,100" size="136,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/blue.png" position="500,100" size="136,40" alphatest="on" />
++              <widget name="key_red" position="100,100" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget name="key_green" position="240,100" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget name="key_yellow" position="380,100" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />
++              <widget name="key_blue" position="520,100" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#18188b" transparent="1" />
++              <widget name="timerlist" position="80,160" transparent="1" size="555,350" scrollbarMode="showOnDemand" />
++      </screen>
++      <!-- Timer entry -->
++      <screen name="TimerEntry" position="0,0" size="720,576" title="Timer entry" flags="wfNoBorder" backgroundColor="transparent">
++              <ePixmap pixmap="750S/bg_setup_650.png" zPosition="-1" position="48,20" size="630,525" alphatest="on"  transparent="1" />
++              <ePixmap pixmap="750S/icons/icon_timerlist.png" position="80,35" size="44,44" alphatest="blend"  transparent="1" />
++              <eLabel name="title1" position="130,50" size="200,30" text="Timer entry" font="Regular;30" foregroundColor="#d1a256" backgroundColor="#371e1c1a" transparent="1" />
++              <widget name="cancel" pixmap="750S/buttons/red.png" position="80,100" size="136,40" alphatest="on" />
++              <widget name="ok" pixmap="750S/buttons/green.png" position="220,100" size="136,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/yellow.png" position="360,100" size="136,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/blue.png" position="500,100" size="136,40" alphatest="on" />
++              <widget name="canceltext" position="100,100" zPosition="2" size="115,40" halign="center" valign="center" font="Regular;21" backgroundColor="#9f1313" transparent="1" />
++              <widget name="oktext" position="240,100" zPosition="2" size="115,40" halign="center" valign="center" font="Regular;21" backgroundColor="#1f771f" transparent="1" />
++              <widget name="config" position="90,145" transparent="1" backgroundColor="#371e1c1a" size="520,385" scrollbarMode="showOnDemand" />
++              <eLabel text=" " position="80,382" zPosition="-1" size="540,3" font="Regular;10" foregroundColor="#1e1e1e" backgroundColor="#021a1816" />
++      </screen>
++      <!-- Timer log -->
++      <screen name="TimerLog" position="90,120" size="550,380" title="Timer log">
++              <ePixmap pixmap="750S/buttons/red.png" position="0,0" size="136,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/green.png" position="140,0" size="136,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/yellow.png" position="280,0" size="136,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/blue.png" position="420,0" size="136,40" alphatest="on" />
++              <widget name="key_red" position="20,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget name="key_green" position="160,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget name="key_yellow" position="300,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />
++              <widget name="key_blue" position="440,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#18188b" transparent="1" />
++              <widget name="loglist" position="0,45" size="555,250" scrollbarMode="showOnDemand" />
++              <widget name="logentry" position="0,300" size="555,130" font="Regular;20" />
++      </screen>
++      <!-- Timer sanity conflict -->
++      <screen name="TimerSanityConflict" position="90,120" size="550,430" title="Timer sanity error">
++              <ePixmap pixmap="750S/buttons/red.png" position="0,0" zPosition="0" size="136,40" transparent="1" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/green.png" position="140,0" zPosition="0" size="136,40" transparent="1" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/yellow.png" position="0,120" zPosition="0" size="136,40" transparent="1" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/blue.png" position="140,120" zPosition="0" size="136,40" transparent="1" alphatest="on" />
++              <widget name="key_red" position="20,0" zPosition="1" size="115,40" font="Regular;20" valign="center" halign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget name="key_green" position="160,0" zPosition="1" size="115,40" font="Regular;20" valign="center" halign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget name="key_yellow" position="20,120" zPosition="1" size="115,40" font="Regular;20" valign="center" halign="center" backgroundColor="#a08500" transparent="1" />
++              <widget name="key_blue" position="160,120" zPosition="1" size="115,40" font="Regular;20" valign="center" halign="center" backgroundColor="#18188b" transparent="1" />
++              <widget name="timer1" position="0,45" size="555,75" scrollbarMode="showNever" />
++              <widget name="timer2" position="0,165" size="555,75" scrollbarMode="showNever" />
++              <widget name="list" position="0,260" size="555,144" transparent="1" scrollbarMode="showOnDemand" />
++      </screen>
++      <!-- Timer Selection -->
++      <screen name="TimerSelection" position="90,120" size="550,430" title="Timer selection">
++              <widget name="timerlist" position="0,45" size="550,350" scrollbarMode="showOnDemand" />
++      </screen>
++      <!-- Timeshift state -->
++      <screen name="TimeshiftState" position="70,70" zPosition="2" size="150,60" backgroundColor="transpBlack" flags="wfNoBorder">
++              <widget name="state" position="0,0" size="150,30" font="Regular;25" halign="center" backgroundColor="transpBlack" />
++              <widget source="session.CurrentService" render="Label" position="0,30" size="150,30" font="Regular;25" halign="center" foregroundColor="white" backgroundColor="transpBlack">
++                      <convert type="ServicePosition">Remaining</convert>
++              </widget>
++      </screen>
++      <!-- Translator Info -->
++      <screen name="TranslationInfo" position="150,130" size="420,350" title="Translation">
++              <eLabel position="10,20" size="380,23" font="Regular;23" text="Translation:" />
++              <widget source="TranslatorName" render="Label" position="10,55" size="380,20" font="Regular;20" />
++              <widget source="TranslationInfo" render="Label" position="10,100" size="380,250" font="Regular;20" />
++      </screen>
++      <!-- Tutorial Wizard -->
++      <screen name="TutorialWizard" position="0,0" size="720,576" title="Welcome..." flags="wfNoBorder">
++              <widget name="text" position="50,100" size="440,200" font="Regular;23" />
++              <widget name="list" position="50,300" zPosition="1" size="440,200"  />
++              <widget name="rc" pixmap="750S/rc.png" position="520,600" zPosition="10" size="154,475" alphatest="blend"/>
++              <widget name="arrowdown" pixmap="750S/arrowdown.png" position="0,0" zPosition="11" size="37,70" alphatest="blend"/>
++              <widget name="arrowup" pixmap="750S/arrowup.png" position="-100,-100" zPosition="11" size="37,70" alphatest="blend"/>
++              <widget name="arrowup2" pixmap="750S/arrowup.png" position="-100,-100" zPosition="11" size="37,70" alphatest="blend"/>
++      </screen>
++      <!-- Volumebar -->
++      <screen name="Volume" position="92,40" zPosition="1" size="539,44" title="Volume" flags="wfNoBorder" >
++              <ePixmap pixmap="750S/volume.png" position="0,0" size="539,44" />
++              <widget name="Volume" pixmap="750S/volume_box.png" position="70,16" zPosition="1" size="452,12" transparent="1" />
++      </screen>
++      <screen name="JobView" position="84,122" size="520,350" title="Job View">
++              <widget source="job_name" render="Label" position="20,12" size="480,60" font="Regular;28" />
++              <widget source="job_task" render="Label" position="20,90" size="480,50" font="Regular;23" />
++              <widget source="job_progress" render="Progress" position="20,162" size="480,36" borderWidth="2" backgroundColor="#254f7497" />
++              <widget source="job_progress" render="Label" position="120,166" size="280,32" font="Regular;28" foregroundColor="#000000" zPosition="2" halign="center" transparent="1"  >
++                      <convert type="ProgressToText" />
++              </widget>
++              <widget source="job_status" render="Label" position="20,212" size="480,26" font="Regular;23" />
++              <widget name="config" position="20,254" size="480,20" />
++              <widget source="cancelable" render="Pixmap" pixmap="750S/buttons/red.png" position="20,300" size="136,40" alphatest="on" >
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="cancelable" render="FixedLabel" text="Cancel" position="40,300" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" >
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="finished" render="Pixmap" pixmap="750S/buttons/green.png" position="190,300" size="136,40" alphatest="on" >
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="finished" render="FixedLabel" text="OK" font="Regular;20" halign="center" valign="center" position="210,300" size="115,40" transparent="1" backgroundColor="#1f771f" >
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="backgroundable" render="Pixmap" pixmap="750S/buttons/blue.png" position="360,300" size="136,40" alphatest="on" >
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="backgroundable" render="FixedLabel" text="Continue in background" font="Regular;20" halign="center" valign="center" position="380,300" size="115,40" transparent="1" backgroundColor="#18188b" >
++                      <convert type="ConditionalShowHide" />
++              </widget>
++      </screen>
++      <!-- VirtualKeyBoard -->
++      <screen name="VirtualKeyBoard" position="center,center" size="560,350" zPosition="99" title="Virtual KeyBoard">
++              <ePixmap pixmap="skin_default/vkey_text.png" position="9,35" zPosition="-4" size="542,52" alphatest="on" />
++              <widget name="header" position="10,10" size="500,20" font="Regular;20" transparent="1" noWrap="1" />
++              <widget name="text" position="12,35" size="536,46" font="Regular;46" transparent="1" noWrap="1" halign="right" />
++              <widget name="list" position="10,100" size="540,225" selectionDisabled="1" transparent="1" />
++      </screen>
++      <!-- FileBrowser -->
++      <screen name="FileBrowser" position="center,120" size="520,420" title="DVD File Browser" >
++              <ePixmap pixmap="750S/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
++              <widget source="key_red" render="Label" position="20,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget source="key_green" render="Label" position="160,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget name="filelist" position="5,50" size="510,370" scrollbarMode="showOnDemand" />
++      </screen>
++      <screen name="CutListEditor" position="0,0" size="720,576" title="Cutlist editor" flags="wfNoBorder">
++              <eLabel text="Cutlist editor" position="65,60" size="300,25" font="Regular;20" />
++              <widget source="global.CurrentTime" render="Label" position="268,60" size="394,20" font="Regular;20" halign="right">
++                      <convert type="ClockToText">Format:%A %B %d, %H:%M</convert>
++              </widget>
++              <eLabel position="268,98" size="394,304" backgroundColor="#505555" />
++              <widget name="Video" position="270,100" zPosition="1" size="390,300" backgroundColor="transparent" />
++              <widget source="session.CurrentService" render="Label" position="135,405" size="450,50" font="Regular;22" halign="center" valign="center">
++                      <convert type="ServiceName">Name</convert>
++              </widget>
++              <widget source="session.CurrentService" render="Label" position="320,450" zPosition="1" size="420,25" font="Regular;20" halign="left" valign="center">
++                      <convert type="ServicePosition">Position,Detailed</convert>
++              </widget>
++              <widget name="SeekState" position="210,450" zPosition="1" size="100,25" halign="right" font="Regular;20" valign="center" />
++              <eLabel position="48,98" size="204,274" backgroundColor="#505555" />
++              <eLabel position="50,100" size="200,270" backgroundColor="#000000" />
++              <widget source="cutlist" position="50,100" zPosition="1" size="200,270" scrollbarMode="showOnDemand" transparent="1" render="Listbox" >
++                      <convert type="TemplatedMultiContent">
++                              {"template": [
++                                              MultiContentEntryText(size=(125, 20), text = 1, backcolor = MultiContentTemplateColor(3)),
++                                              MultiContentEntryText(pos=(125,0), size=(50, 20), text = 2, flags = RT_HALIGN_RIGHT, backcolor = MultiContentTemplateColor(3))
++                                      ],
++                               "fonts": [gFont("Regular", 18)],
++                               "itemHeight": 20
++                              }
++                      </convert>
++              </widget>
++              <widget name="Timeline" position="50,485" size="615,20" backgroundColor="#505555" pointer="750S/position_arrow.png:3,5" foregroundColor="black" />
++              <ePixmap pixmap="750S/icons/mp_buttons.png" position="275,515" size="169,30" alphatest="blend" />
++      </screen>       
++      <screen name="DVDToolbox" position="center,120"  size="560,420" title="DVD media toolbox" >
++              <ePixmap pixmap="750S/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/yellow.png" position="280,0" size="140,40" alphatest="on" />
++              <widget source="key_red" render="Label" position="20,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget source="key_green" render="Label" position="160,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget source="key_yellow" render="Label" position="300,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />
++              <widget source="info" render="Label" position="20,50" size="520,100" font="Regular;20" />
++              <widget name="details" position="20,180" size="520,200" font="Regular;16" />
++              <widget source="space_bar" render="Progress" position="10,390" size="540,26" borderWidth="1" backgroundColor="#254f7497" />
++              <widget source="space_label" render="Label" position="20,394" size="520,22" zPosition="2" font="Regular;18" halign="center" transparent="1" foregroundColor="#000000" />
++      </screen>
++      <screen name="ProjectSettings" position="center,120" size="560,420" title="Collection settings" >
++              <ePixmap pixmap="750S/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/yellow.png" position="280,0" size="140,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/blue.png" position="420,0" size="140,40" alphatest="on" />
++              <widget source="key_red" render="Label" position="20,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget source="key_green" render="Label" position="160,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget source="key_yellow" render="Label" position="300,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />
++              <widget source="key_blue" render="Label" position="440,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#18188b" transparent="1" />
++              <widget name="config" position="5,50" size="550,276" scrollbarMode="showOnDemand" />
++              <ePixmap pixmap="750S/div-h.png" position="0,330" zPosition="1" size="560,2" />
++              <widget source="info" render="Label" position="10,340" size="550,80" font="Regular;18" halign="center" valign="center" />
++      </screen>       
++      <screen name="TitleList" position="center,120" size="560,425" title="DVD Tool" >
++              <ePixmap pixmap="750S/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/yellow.png" position="280,0" size="140,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/blue.png" position="420,0" size="140,40" alphatest="on" />
++              <widget source="key_red" render="Label" position="15,0" zPosition="1" size="120,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget source="key_green" render="Label" position="155,0" zPosition="1" size="120,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget source="key_yellow" render="Label" position="300,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />
++              <widget source="key_blue" render="Label" position="435,0" zPosition="1" size="120,40" font="Regular;20" halign="center" valign="center" backgroundColor="#18188b" transparent="1" />
++              <widget source="title_label" render="Label" position="10,48" size="540,38" font="Regular;18" transparent="1" />
++              <widget source="error_label" render="Label" position="10,48" size="540,340" zPosition="3" font="Regular;20" transparent="1" />
++              <widget source="titles" render="Listbox" scrollbarMode="showOnDemand" position="10,86" size="540,277" zPosition="3" transparent="1" >
++                      <convert type="TemplatedMultiContent">
++                              {"template": [
++                                              MultiContentEntryText(pos = (0, 0), size = (420, 20), font = 0, flags = RT_HALIGN_LEFT, text = 1), # index 1 Title,
++                                              MultiContentEntryText(pos = (0, 20), size = (328, 17), font = 1, flags = RT_HALIGN_LEFT, text = 2), # index 2 description,
++                                              MultiContentEntryText(pos = (420, 6), size = (120, 20), font = 1, flags = RT_HALIGN_RIGHT, text = 3), # index 3 begin time,
++                                              MultiContentEntryText(pos = (328, 20), size = (154, 17), font = 1, flags = RT_HALIGN_RIGHT, text = 4), # index 4 channel,
++                                              MultiContentEntryText(pos = (482, 20), size = (58, 20), font = 1, flags = RT_HALIGN_RIGHT, text = 5), # index 4 channel,
++                                      ],
++                                      "fonts": [gFont("Regular", 20), gFont("Regular", 14)],
++                                      "itemHeight": 37
++                              }
++                      </convert>
++              </widget>
++              <widget source="space_bar" render="Progress" position="10,390" size="540,26" borderWidth="1" backgroundColor="#254f7497" />
++              <widget source="space_label" render="Label" position="40,394" size="480,22" zPosition="2" font="Regular;18" halign="center" transparent="1" foregroundColor="#000000" />
++      </screen>
++      <screen name="DVDMovieSelection" position="center,120" size="560,425" title="Select a movie">
++              <ePixmap pixmap="750S/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/yellow.png" position="280,0" size="140,40" alphatest="on" />
++              <widget source="key_red" render="Label" position="20,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget source="key_green" render="Label" position="160,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget source="key_yellow" render="Label" position="300,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />
++              <widget name="waitingtext" position="0,45" size="560,375" zPosition="4" font="Regular;22" halign="center" valign="center" />
++              <widget name="list" position="5,40" size="550,355" zPosition="2" scrollbarMode="showOnDemand" />
++              <widget name="DescriptionBorder" pixmap="750S/border_eventinfo.png" position="0,296" zPosition="1" size="560,103" transparent="1" alphatest="on" />
++              <widget source="Service" render="Label" position="5,298" zPosition="1" size="480,35" font="Regular;17" foregroundColor="#cccccc">
++                      <convert type="MovieInfo">ShortDescription</convert>
++              </widget>
++              <widget source="Service" render="Label" position="495,298" zPosition="1" size="60,22" font="Regular;17" halign="right">
++                      <convert type="ServiceTime">Duration</convert>
++                      <convert type="ClockToText">AsLength</convert>
++              </widget>
++              <widget source="Service" render="Label" position="380,317" zPosition="2" size="175,22" font="Regular;17" halign="right">
++                      <convert type="MovieInfo">RecordServiceName</convert>
++              </widget>
++              <widget source="Service" render="Label" position="5,337" zPosition="1" size="550,58" font="Regular;19">
++                      <convert type="EventName">ExtendedDescription</convert>
++              </widget>
++              <widget name="freeDiskSpace" position="10,405" size="540,20" font="Regular;19" valign="center" halign="right" />
++      </screen>       
++      <screen name="TitleProperties" position="center,120" size="560,425" title="Properties of current title" >
++              <ePixmap pixmap="750S/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/blue.png" position="420,0" size="140,40" alphatest="on" />
++              <widget source="key_red" render="Label" position="20,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget source="key_green" render="Label" position="160,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget source="key_blue" render="Label" position="440,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#18188b" transparent="1" />
++              <widget source="serviceinfo" render="Label" position="10,46" size="350,144" font="Regular;18" />
++              <widget name="thumbnail" position="370,46" size="180,144" alphatest="on" />
++              <widget name="config" position="10,196" size="540,228" scrollbarMode="showOnDemand" />
++      </screen>
++      <screen name="DVDPlayer" flags="wfNoBorder" position="0,380" size="720,165" title="InfoBar" backgroundColor="transparent" >
++              <!-- Background -->
++              <ePixmap position="40,0" pixmap="750S/info-bg_mp.png" zPosition="-1" size="640,164" />
++              <!-- colorbuttons -->
++              <ePixmap position="275,125" pixmap="750S/icons/mp_buttons.png" size="169,30" alphatest="blend" />
++              <!-- Servicename -->
++              <ePixmap pixmap="750S/icons/icon_event.png" position="65,30" zPosition="1" size="15,10" alphatest="on" />
++              <widget source="session.CurrentService" render="Label" position="95,25" size="300,22" font="Regular;20" backgroundColor="#263c59" shadowColor="#1d354c" shadowOffset="-1,-1" transparent="1" noWrap="1">
++                      <convert type="ServiceName">Name</convert>
++              </widget>
++              <!-- Chapter info -->
++              <widget name="chapterLabel" position="95,50" size="360,22" font="Regular;20" foregroundColor="#c3c3c9" backgroundColor="#263c59" transparent="1" />
++              <!-- Audio track info -->
++              <ePixmap pixmap="750S/icons/icon_dolby.png" position="540,25" zPosition="1" size="26,16" alphatest="on"/>
++              <widget name="audioLabel" position="570,25" size="130,22" font="Regular;18" backgroundColor="#263c59" shadowColor="#1d354c" shadowOffset="-1,-1" transparent="1" />
++              <!-- Subtitle track info -->
++              <widget source="session.CurrentService" render="Pixmap" pixmap="750S/icons/icon_txt.png" position="540,45" zPosition="1" size="26,16" alphatest="on" >
++                      <convert type="ServiceInfo">HasTelext</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget name="subtitleLabel" position="570,45" size="130,22" font="Regular;18" backgroundColor="#263c59" shadowColor="#1d354c" shadowOffset="-1,-1" transparent="1" />
++              <!-- Angle info -->
++              <widget name="anglePix" pixmap="750S/icons/icon_view.png" position="540,70" size="26,16" alphatest="on" />
++              <widget name="angleLabel" position="570,70" size="130,22" font="Regular;18" backgroundColor="#263c59" shadowColor="#1d354c" shadowOffset="-1,-1" transparent="1" />
++              <!-- Elapsed time -->
++              <widget source="session.CurrentService" render="Label" position="40,100" size="90,20" font="Regular;18" halign="center" valign="center" backgroundColor="#06224f" shadowColor="#1d354c" shadowOffset="-1,-1" transparent="1" >
++                      <convert type="ServicePosition">Position,ShowHours</convert>
++              </widget>
++              <!-- Progressbar (movie position)-->
++              <widget source="session.CurrentService" render="PositionGauge" position="130,105" size="460,10" zPosition="2" pointer="750S/position_pointer.png:460,0" transparent="1" >
++                      <convert type="ServicePosition">Gauge</convert>
++              </widget>
++              <!-- Remaining time -->
++              <widget source="session.CurrentService" render="Label" position="590,100" size="90,20" font="Regular;18" halign="center" valign="center" backgroundColor="#06224f" shadowColor="#1d354c" shadowOffset="-1,-1" transparent="1" >
++                      <convert type="ServicePosition">Remaining,Negate,ShowHours</convert>
++              </widget>
++      </screen>       
++      <screen name="ModemSetup" position="180,100" size="320,300" title="Modem" >
++              <ePixmap pixmap="750S/buttons/green.png" position="10,10" size="140,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/red.png" position="160,10" size="140,40" alphatest="on" />
++              <widget name="key_green" position="30,10" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget name="key_red" position="180,10" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget name="list" position="10,60" size="300,120" />
++              <widget name="state" position="10,210" size="300,80" font="Regular;20" />
++      </screen>
++      <screen name="picshow" position="center,120" size="560,420" title="PicturePlayer" >
++              <ePixmap pixmap="750S/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/yellow.png" position="280,0" size="140,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/blue.png" position="420,0" size="140,40" alphatest="on" />
++              <widget source="key_red" render="Label" position="20,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget source="key_green" render="Label" position="160,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget source="key_yellow" render="Label" position="300,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />
++              <widget source="key_blue" render="Label" position="440,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#18188b" transparent="1" />
++              <widget source="label" render="Label" position="5,55" size="350,140" font="Regular;19" backgroundColor="#25062748" transparent="1"  />
++              <widget name="thn" position="360,40" size="180,160" alphatest="on" />
++              <widget name="filelist" position="5,205" zPosition="2" size="550,210" scrollbarMode="showOnDemand" />
++      </screen>       
++      <screen name="Pic_Exif" position="center,center" size="560,360" title="Info" >
++              <ePixmap pixmap="750S/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
++              <widget source="key_red" render="Label" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget source="menu" render="Listbox" position="5,50" size="550,310" scrollbarMode="showOnDemand" selectionDisabled="1" >
++                      <convert type="TemplatedMultiContent">
++                      {
++                              "template": [  MultiContentEntryText(pos = (5, 5), size = (250, 30), flags = RT_HALIGN_LEFT, text = 0), MultiContentEntryText(pos = (260, 5), size = (290, 30), flags = RT_HALIGN_LEFT, text = 1)],
++                              "fonts": [gFont("Regular", 20)],
++                              "itemHeight": 30
++                      }
++                      </convert>
++              </widget>
++      </screen>
++      <screen name="CleanupWizard" position="0,0" size="720,576" title="Welcome..." flags="wfNoBorder" >
++              <widget name="text" position="153,40" size="380,330" font="Regular;22" />
++              <widget source="list" render="Listbox" position="43,300" size="460,220" scrollbarMode="showOnDemand" >
++                      <convert type="StringList" />
++              </widget>
++              <widget name="config" position="53,340" zPosition="1" size="440,180" transparent="1" scrollbarMode="showOnDemand" />
++              <ePixmap pixmap="750S/buttons/button_red.png" position="40,222" zPosition="0" size="22,22" transparent="1" alphatest="on" />
++              <widget name="languagetext" position="66,225" size="95,30" font="Regular;18" />
++              <widget name="rc" pixmaps="750S/rc.png,750S/rcold.png" position="530,50" zPosition="10" size="154,500" alphatest="on" />
++              <widget name="arrowdown" pixmap="750S/arrowdown.png" position="-100,-100" zPosition="11" size="37,70" alphatest="on" />
++              <widget name="arrowdown2" pixmap="750S/arrowdown.png" position="-100,-100" zPosition="11" size="37,70" alphatest="on" />
++              <widget name="arrowup" pixmap="750S/arrowup.png" position="-100,-100" zPosition="11" size="37,70" alphatest="on" />
++              <widget name="arrowup2" pixmap="750S/arrowup.png" position="-100,-100" zPosition="11" size="37,70" alphatest="on" />
++      </screen>       
++      <screen name="CleanupWizardConfiguration" position="center,120" size="560,420" title="CleanupWizard settings" >
++              <ePixmap pixmap="750S/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
++              <widget source="key_red" render="Label" position="20,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget source="key_green" render="Label" position="160,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget name="config" zPosition="2" position="5,50" size="550,300" scrollbarMode="showOnDemand" transparent="1" />
++              <ePixmap pixmap="750S/div-h.png" position="0,370" zPosition="10" size="560,2" transparent="1" alphatest="on" />
++              <widget source="status" render="Label" position="10,380" size="540,40" zPosition="10" font="Regular;20" halign="center" valign="center" backgroundColor="#25062748" transparent="1"/>
++      </screen>
++      <screen name="CIselectMainMenu" position="center,center" size="500,250" title="CI assignment" >
++              <ePixmap pixmap="750S/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
++              <widget source="key_red" render="Label" position="20,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget source="key_green" render="Label" position="160,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget name="CiList" position="5,50" size="490,200" scrollbarMode="showOnDemand" />
++      </screen>       
++      <screen name="CIconfigMenu" position="center,120" size="560,420" title="CI assignment" >
++              <ePixmap pixmap="750S/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/yellow.png" position="280,0" size="140,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/blue.png" position="420,0" size="140,40" alphatest="on" />
++              <widget source="key_red" render="Label" position="20,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget source="key_green" render="Label" position="160,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget source="key_yellow" render="Label" position="300,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />
++              <widget source="key_blue" render="Label" position="440,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#18188b" transparent="1" />
++              <widget source="CAidList_desc" render="Label" position="5,50" size="550,22" font="Regular;20"  backgroundColor="#25062748" transparent="1" />
++              <widget source="CAidList" render="Label" position="5,80" size="550,45" font="Regular;20"  backgroundColor="#25062748" transparent="1" />
++              <ePixmap pixmap="750S/div-h.png" position="0,125" zPosition="1" size="560,2" />
++              <widget source="ServiceList_desc" render="Label" position="5,130" size="550,22" font="Regular;20" backgroundColor="#25062748" transparent="1"  />
++              <widget name="ServiceList" position="5,160" size="550,250" zPosition="1" scrollbarMode="showOnDemand" />
++              <widget source="ServiceList_info" render="Label" position="5,160" size="550,250" zPosition="2" font="Regular;20" backgroundColor="#25062748" transparent="1"  />
++      </screen>
++      <screen name="easyCIconfigMenu" position="center,120" size="560,420" title="CI assignment" >
++              <ePixmap pixmap="750S/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/yellow.png" position="280,0" size="140,40" alphatest="on" />
++              <widget source="key_red" render="Label" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget source="key_green" render="Label" position="140,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget source="key_yellow" render="Label" position="280,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />
++              <widget source="ServiceList_desc" render="Label" position="5,50" size="550,22" font="Regular;20" backgroundColor="#25062748" transparent="1"  />
++              <widget name="ServiceList" position="5,80" size="550,300" zPosition="1" scrollbarMode="showOnDemand" />
++              <widget source="ServiceList_info" render="Label" position="5,80" size="550,300" zPosition="2" font="Regular;20" backgroundColor="#25062748" transparent="1"  />
++      </screen>       
++      <screen name="CAidSelect" position="center,120" size="450,420" title="select CAId's" >
++              <ePixmap pixmap="750S/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
++              <widget source="key_red" render="Label" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget source="key_green" render="Label" position="140,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget name="list" position="5,50" size="440,310" scrollbarMode="showOnDemand" />
++              <ePixmap pixmap="750S/div-h.png" position="0,370" zPosition="1" size="450,2" />
++              <widget source="introduction" render="Label" position="0,380" size="450,40" zPosition="10" font="Regular;21" halign="center" valign="center" backgroundColor="#25062748" transparent="1" />
++      </screen>
++      <screen name="myProviderSelection" position="center,120" size="560,420" title="Select provider to add...">
++              <ePixmap pixmap="750S/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
++              <widget source="key_red" render="Label" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget source="key_green" render="Label" position="140,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget source="key_yellow" render="Label" position="280,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />
++              <widget source="key_blue" render="Label" position="420,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#18188b" transparent="1" />
++              <widget name="list" position="5,50" size="550,310" scrollbarMode="showOnDemand" />
++              <ePixmap pixmap="750S/div-h.png" position="0,370" zPosition="1" size="560,2" />
++              <widget source="introduction" render="Label" position="0,380" size="560,40" zPosition="10" font="Regular;21" halign="center" valign="center" backgroundColor="#25062748" transparent="1" />
++      </screen>
++      <screen name="myChannelSelection" position="center,120" size="560,420" title="Select service to add...">
++              <ePixmap pixmap="750S/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/blue.png" position="420,0" size="140,40" alphatest="on" />
++              <widget source="key_red" render="Label" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget source="key_green" render="Label" position="140,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget source="key_yellow" render="Label" position="280,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />
++              <widget source="key_blue" render="Label" position="420,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#18188b" transparent="1" />
++              <widget name="list" position="5,50" size="550,310" scrollbarMode="showOnDemand" />
++              <ePixmap pixmap="750S/div-h.png" position="0,370" zPosition="1" size="560,2" />
++              <widget source="introduction" render="Label" position="0,380" size="560,40" zPosition="10" font="Regular;21" halign="center" valign="center" backgroundColor="#25062748" transparent="1" />
++      </screen>
++      <screen name="CrashlogAutoSubmitConfiguration" position="center,120" size="560,420" title="CrashlogAutoSubmit settings" >
++              <ePixmap pixmap="750S/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
++              <widget source="key_red" render="Label" position="20,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget source="key_green" render="Label" position="160,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget name="config" zPosition="2" position="5,50" size="550,300" scrollbarMode="showOnDemand" transparent="1" />
++              <ePixmap pixmap="750S/div-h.png" position="0,360" zPosition="10" size="560,2" transparent="1" alphatest="on" />
++              <widget source="status" render="Label" position="10,370" size="540,40" zPosition="10" font="Regular;20" halign="center" valign="center" backgroundColor="#25062748" transparent="1"/>
++              <widget name="VKeyIcon" pixmap="750S/buttons/key_text.png" position="10,390" zPosition="10" size="35,25" transparent="1" alphatest="on" />
++              <widget name="HelpWindow" pixmap="750S/vkey_icon.png" position="160,300" zPosition="1" size="1,1" transparent="1" alphatest="on" />
++      </screen>
++      <screen name="DefaultServiceScan" position="150,115" size="420,390" title="Service Scan">
++              <widget source="FrontendInfo" render="Pixmap" pixmap="750S/icons/scan-s.png" position="5,5" size="64,64" transparent="1" alphatest="blend">
++                      <convert type="FrontendInfo">TYPE</convert>
++                      <convert type="ValueRange">0,0</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="FrontendInfo" render="Pixmap" pixmap="750S/icons/scan-c.png" position="5,5" size="64,64" transparent="1" alphatest="on">
++                      <convert type="FrontendInfo">TYPE</convert>
++                      <convert type="ValueRange">1,1</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="FrontendInfo" render="Pixmap" pixmap="750S/icons/scan-t.png" position="5,5" size="64,64" transparent="1" alphatest="on">
++                      <convert type="FrontendInfo">TYPE</convert>
++                      <convert type="ValueRange">2,2</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget name="network" position="80,15" size="330,20" font="Regular;20" />
++              <widget name="transponder" position="80,40" size="330,20" font="Regular;20" />
++              <widget name="scan_state" position="10,80" zPosition="2" size="400,20" font="Regular;18" />
++              <widget name="pass" position="10,80" size="400,20" font="Regular;18" />
++              <widget name="scan_progress" position="10,105" size="400,15" pixmap="750S/progress_big.png" borderWidth="2" borderColor="#cccccc" />
++              <widget name="servicelist" position="10,135" size="400,265" selectionDisabled="1" />
++      </screen>
++      <screen name="DiseqcTester" position="90,100" size="520,400" title="DiSEqC Tester" >
++              <!--ePixmap pixmap="750S/icons/dish_scan.png" position="5,25" zPosition="0" size="119,110" transparent="1" alphatest="on" />
++              <widget source="Frontend" render="Label" position="190,10" zPosition="2" size="260,20" font="Regular;19" halign="center" valign="center" transparent="1">
++                      <convert type="FrontendInfo">SNRdB</convert>
++              </widget>
++              <eLabel name="snr" text="SNR:" position="120,35" size="60,22" font="Regular;21" halign="right" transparent="1" />
++              <widget source="Frontend" render="Progress" position="190,35" size="260,20" pixmap="750S/bar_snr.png" borderWidth="2" borderColor="#cccccc">
++                      <convert type="FrontendInfo">SNR</convert>
++              </widget>
++              <widget source="Frontend" render="Label" position="460,35" size="60,22" font="Regular;21">
++                      <convert type="FrontendInfo">SNR</convert>
++              </widget>
++              <eLabel name="agc" text="AGC:" position="120,60" size="60,22" font="Regular;21" halign="right" transparent="1" />
++              <widget source="Frontend" render="Progress" position="190,60" size="260,20" pixmap="750S/bar_snr.png" borderWidth="2" borderColor="#cccccc">
++                      <convert type="FrontendInfo">AGC</convert>
++              </widget>
++              <widget source="Frontend" render="Label" position="460,60" size="60,22" font="Regular;21">
++                      <convert type="FrontendInfo">AGC</convert>
++              </widget>
++              <eLabel name="ber" text="BER:" position="120,85" size="60,22" font="Regular;21" halign="right" transparent="1" />
++              <widget source="Frontend" render="Progress" position="190,85" size="260,20" pixmap="750S/bar_ber.png" borderWidth="2" borderColor="#cccccc">
++                      <convert type="FrontendInfo">BER</convert>
++              </widget>
++              <widget source="Frontend" render="Label" position="460,85" size="60,22" font="Regular;21">
++                      <convert type="FrontendInfo">BER</convert>
++              </widget>
++              <eLabel name="lock" text="Lock:" position="120,115" size="60,22" font="Regular;21" halign="right" />
++              <widget source="Frontend" render="Pixmap" pixmap="750S/icons/lock_on.png" position="190,110" zPosition="1" size="38,31" alphatest="on">
++                      <convert type="FrontendInfo">LOCK</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="Frontend" render="Pixmap" pixmap="skin_default/icons/lock_off.png" position="190,110" zPosition="1" size="38,31" alphatest="on">
++                      <convert type="FrontendInfo">LOCK</convert>
++                      <convert type="ConditionalShowHide">Invert</convert>
++              </widget-->
++              <widget source="progress_list" render="Listbox" position="0,0" size="510,150" scrollbarMode="showOnDemand">
++                      <convert type="TemplatedMultiContent">
++                              {"template": [
++                                              MultiContentEntryText(pos = (10, 0), size = (330, 25), flags = RT_HALIGN_LEFT, text = 1), # index 1 is the index name,
++                                              MultiContentEntryText(pos = (330, 0), size = (150, 25), flags = RT_HALIGN_RIGHT, text = 2) # index 2 is the status,
++                                      ],
++                               "fonts": [gFont("Regular", 20)],
++                               "itemHeight": 25
++                              }
++                      </convert>
++              </widget>
++              <eLabel name="overall_progress" text="Overall progress:" position="20,162" size="480,22" font="Regular;21" halign="center" transparent="1" />
++              <widget source="overall_progress" render="Progress" position="20,192" size="480,20" borderWidth="2" backgroundColor="#254f7497" />
++              <eLabel name="overall_progress" text="Progress:" position="20,222" size="480,22" font="Regular;21" halign="center" transparent="1" />
++              <widget source="sub_progress" render="Progress" position="20,252" size="480,20" borderWidth="2" backgroundColor="#254f7497" />
++              
++              <eLabel name="" text="Failed:" position="20,282" size="140,22" font="Regular;21" halign="left" transparent="1" />
++              <widget source="failed_counter" render="Label" position="160,282" size="100,20" font="Regular;21" />
++              
++              <eLabel name="" text="Succeeded:" position="20,312" size="140,22" font="Regular;21" halign="left" transparent="1" />
++              <widget source="succeeded_counter" render="Label" position="160,312" size="100,20" font="Regular;21" />
++              
++              <eLabel name="" text="With errors:" position="20,342" size="140,22" font="Regular;21" halign="left" transparent="1" />
++              <widget source="witherrors_counter" render="Label" position="160,342" size="100,20" font="Regular;21" />
++              
++              <eLabel name="" text="Not tested:" position="20,372" size="140,22" font="Regular;21" halign="left" transparent="1" />
++              <widget source="untestable_counter" render="Label" position="160,372" size="100,20" font="Regular;21" />
++              
++              <widget source="CmdText" render="Label" position="300,282" size="180,200" font="Regular;21" />
++      </screen>
++      <screen name="DiseqcTesterNimSelection" position="160,123" size="400,330" title="Choose Tuner">
++              <widget source="nimlist" render="Listbox" position="0,0" size="380,300" scrollbarMode="showOnDemand">
++                      <convert type="TemplatedMultiContent">
++                              {"template": [
++                                              MultiContentEntryText(pos = (10, 5), size = (360, 30), flags = RT_HALIGN_LEFT, text = 1), # index 1 is the nim name,
++                                              MultiContentEntryText(pos = (50, 30), size = (320, 30), font = 1, flags = RT_HALIGN_LEFT, text = 2), # index 2 is a description of the nim settings,
++                                      ],
++                               "fonts": [gFont("Regular", 20), gFont("Regular", 15)],
++                               "itemHeight": 70
++                              }
++                      </convert>
++              </widget>
++      </screen>       
++      <screen name="FPUpgrade" position="150,200" size="450,200" title="FP upgrade required" >
++              <widget name="text" position="0,0" size="550,50" font="Regular;20" />
++              <widget name="oldversion_label" position="10,100" size="290,25" font="Regular;20" />
++              <widget name="newversion_label" position="10,125" size="290,25" font="Regular;20" />
++              <widget name="oldversion" position="300,100" size="50,25" font="Regular;20" />
++              <widget name="newversion" position="300,125" size="50,25" font="Regular;20" />
++      </screen>
++      <screen name="SystemMessage" position="150,200" size="450,200" title="System Message" >
++              <widget source="text" position="0,0" size="450,200" font="Regular;20" halign="center" valign="center" render="Label" />
++              <ePixmap pixmap="750S/icons/input_error.png" position="5,5" size="53,53" alphatest="on" />
++      </screen>
++      <screen name="NFIDownload" position="90,95" size="560,420" title="Image download utility">
++              <ePixmap pixmap="750S/buttons/red.png" position="0,0" zPosition="0" size="140,40" transparent="1" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/green.png" position="140,0" zPosition="0" size="140,40" transparent="1" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/yellow.png" position="280,0" zPosition="0" size="140,40" transparent="1" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/blue.png" position="420,0" zPosition="0" size="140,40" transparent="1" alphatest="on" />
++              <widget source="key_red" render="Label" position="20,0" zPosition="1" size="115,40" font="Regular;19" valign="center" halign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget source="key_green" render="Label" position="160,0" zPosition="1" size="115,40" font="Regular;19" valign="center" halign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget source="key_yellow" render="Label" position="300,0" zPosition="1" size="115,40" font="Regular;19" valign="center" halign="center" backgroundColor="#a08500" transparent="1" />
++              <widget source="key_blue" render="Label" position="440,0" zPosition="1" size="115,40" font="Regular;19" valign="center" halign="center" backgroundColor="#18188b" transparent="1" />
++              
++              <widget source="label_top" render="Label" position="10,44" size="240,20" font="Regular;16" />
++              <widget name="feedlist" position="10,66" size="250,222" scrollbarMode="showOnDemand" />
++              <widget name="destlist" position="0,66" size="260,222" scrollbarMode="showOnDemand" />
++
++              <widget source="label_bottom" render="Label" position="10,312" size="240,18" font="Regular;16"/>
++              <widget source="path_bottom" render="Label" position="10,330" size="250,42" font="Regular;18" />
++              
++              <widget source="infolabel" render="Label" position="270,44" size="280,284" font="Regular;16" />
++              <widget source="job_progressbar" render="Progress" position="10,374" size="540,26" borderWidth="1" backgroundColor="#254f7497" />
++              <widget source="job_progresslabel" render="Label" position="130,378" zPosition="2" font="Regular;18" halign="center" transparent="1" size="300,22" foregroundColor="#000000" />
++              <widget source="statusbar" render="Label" position="10,404" size="540,16" font="Regular;16" foregroundColor="#cccccc" />
++      </screen>
++      <screen name="NFIFlash" position="90,95" size="560,420" title="Image flash utility">
++              <ePixmap pixmap="750S/buttons/green.png" position="140,0" zPosition="0" size="140,40" transparent="1" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/yellow.png" position="280,0" zPosition="0" size="140,40" transparent="1" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/blue.png" position="420,0" zPosition="0" size="140,40" transparent="1" alphatest="on" />
++              <widget source="key_green" render="Label" position="140,0" zPosition="1" size="140,40" font="Regular;20" valign="center" halign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget source="key_yellow" render="Label" position="280,0" zPosition="1" size="140,40" font="Regular;20" valign="center" halign="center" backgroundColor="#a08500" transparent="1" />
++              <widget source="key_blue" render="Label" position="420,0" zPosition="1" size="140,40" font="Regular;20" valign="center" halign="center" backgroundColor="#18188b" transparent="1" />
++              <widget source="listlabel" render="Label" position="16,44" size="200,21" valign="center" font="Regular;18" />
++              <widget name="filelist" position="0,68" size="260,260" scrollbarMode="showOnDemand" />
++              <widget source="infolabel" render="Label" position="270,44" size="280,284" font="Regular;16" />
++              <widget source="job_progressbar" render="Progress" position="10,374" size="540,26" borderWidth="1" backgroundColor="#254f7497" />
++              <widget source="job_progresslabel" render="Label" position="180,378" zPosition="2" font="Regular;18" halign="center" transparent="1" size="200,22" foregroundColor="#000000" />
++              <widget source="statusbar" render="Label" position="10,404" size="540,16" font="Regular;16" foregroundColor="#cccccc" />
++      </screen>
++      <screen name="BackupSelection" position="center,130" size="560,400" title="Select files/folders to backup">
++              <ePixmap pixmap="750S/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/yellow.png" position="280,0" size="140,40" alphatest="on" />
++              <widget source="key_red" render="Label" position="20,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget source="key_green" render="Label" position="160,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget source="key_yellow" render="Label" position="300,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />
++              <widget name="checkList" position="5,50" size="550,250" transparent="1" scrollbarMode="showOnDemand" />
++      </screen>
++      <screen name="RestoreMenu" position="center,130" size="560,400" title="Restore backups" >
++              <ePixmap pixmap="750S/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/yellow.png" position="280,0" size="140,40" alphatest="on" />
++              <widget source="key_red" render="Label" position="20,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget source="key_green" render="Label" position="160,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget source="key_yellow" render="Label" position="300,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />
++              <widget name="filelist" position="5,50" size="550,230" scrollbarMode="showOnDemand" />
++      </screen>
++      <screen name="ImageWizard" position="0,0" size="720,576" title="Welcome..." flags="wfNoBorder" >
++              <widget name="text" position="153,40" size="340,330" font="Regular;22" />
++              <widget source="list" render="Listbox" position="43,340" size="490,180" scrollbarMode="showOnDemand" >
++                      <convert type="StringList" />
++              </widget>
++              <widget name="config" position="53,340" zPosition="1" size="440,180" transparent="1" scrollbarMode="showOnDemand" />
++              <ePixmap pixmap="750S/buttons/button_red.png" position="33,222" zPosition="0" size="22,22" transparent="1" alphatest="on" />
++              <widget name="languagetext" position="55,225" size="95,30" font="Regular;18" />
++<!--                  <widget name="wizard" pixmap="skin_default/wizard.png" position="40,50" zPosition="10" size="110,174" alphatest="on" />         -->
++              <widget name="rc" pixmaps="750S/rc.png,750S/rcold.png" position="530,50" zPosition="10" size="154,500" alphatest="blend" />
++              <widget name="arrowdown" pixmap="750S/arrowdown.png" position="-100,-100" zPosition="11" size="37,70" alphatest="blend" />
++              <widget name="arrowdown2" pixmap="750S/arrowdown.png" position="-100,-100" zPosition="11" size="37,70" alphatest="blend" />
++              <widget name="arrowup" pixmap="750S/arrowup.png" position="-100,-100" zPosition="11" size="37,70" alphatest="blend" />
++              <widget name="arrowup2" pixmap="750S/arrowup.png" position="-100,-100" zPosition="11" size="37,70" alphatest="blend" />
++      </screen>
++      <screen name="UpdatePluginMenu" position="center,120" size="610,410" title="Software management" >
++              <ePixmap pixmap="750S/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
++              <widget source="key_red" render="Label" position="20,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <ePixmap pixmap="750S/border_menu_350.png" position="5,50" zPosition="1" size="350,300" transparent="1" alphatest="on" />
++              <widget source="menu" render="Listbox" position="15,60" size="330,290" scrollbarMode="showOnDemand">
++                      <convert type="TemplatedMultiContent">
++                              {"template": [
++                                              MultiContentEntryText(pos = (2, 2), size = (330, 24), flags = RT_HALIGN_LEFT, text = 1), # index 0 is the MenuText,
++                                      ],
++                              "fonts": [gFont("Regular", 22)],
++                              "itemHeight": 25
++                              }
++                      </convert>
++              </widget>
++              <widget source="menu" render="Listbox" position="360,50" size="240,300" scrollbarMode="showNever" selectionDisabled="1">
++                      <convert type="TemplatedMultiContent">
++                              {"template": [
++                                              MultiContentEntryText(pos = (2, 2), size = (240, 300), flags = RT_HALIGN_CENTER|RT_VALIGN_CENTER|RT_WRAP, text = 2), # index 2 is the Description,
++                                      ],
++                              "fonts": [gFont("Regular", 22)],
++                              "itemHeight": 300
++                              }
++                      </convert>
++              </widget>
++              <widget source="status" render="Label" position="5,360" zPosition="10" size="600,50" halign="center" valign="center" font="Regular;22" transparent="1" shadowColor="black" shadowOffset="-1,-1" />
++      </screen>
++      <screen name="PluginManager" position="center,120" size="560,420" title="Extensions management" >
++              <ePixmap pixmap="750S/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/yellow.png" position="280,0" size="140,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/blue.png" position="420,0" size="140,40" alphatest="on" />
++              <widget source="key_red" render="Label" position="20,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget source="key_green" render="Label" position="160,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget source="key_yellow" render="Label" position="300,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />
++              <widget source="key_blue" render="Label" position="440,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#18188b" transparent="1" />
++              <widget source="list" render="Listbox" position="5,50" size="550,340" scrollbarMode="showOnDemand">
++                      <convert type="TemplatedMultiContent">
++                      {"templates":
++                              {"default": (51,[
++                                              MultiContentEntryText(pos = (30, 1), size = (470, 24), font=0, flags = RT_HALIGN_LEFT, text = 0), # index 0 is the name
++                                              MultiContentEntryText(pos = (30, 25), size = (470, 24), font=1, flags = RT_HALIGN_LEFT, text = 2), # index 2 is the description
++                                              MultiContentEntryPixmapAlphaTest(pos = (475, 0), size = (48, 48), png = 5), # index 5 is the status pixmap
++                                              MultiContentEntryPixmapAlphaTest(pos = (0, 49), size = (550, 2), png = 6), # index 6 is the div pixmap
++                                      ]),
++                              "category": (40,[
++                                              MultiContentEntryText(pos = (30, 0), size = (500, 22), font=0, flags = RT_HALIGN_LEFT, text = 0), # index 0 is the name
++                                              MultiContentEntryText(pos = (30, 22), size = (500, 16), font=2, flags = RT_HALIGN_LEFT, text = 1), # index 1 is the description
++                                              MultiContentEntryPixmapAlphaTest(pos = (0, 38), size = (550, 2), png = 3), # index 3 is the div pixmap
++                                      ])
++                              },
++                              "fonts": [gFont("Regular", 22),gFont("Regular", 20),gFont("Regular", 16)],
++                              "itemHeight": 52
++                      }
++                      </convert>
++              </widget>
++              <widget source="status" render="Label" position="5,390" zPosition="10" size="540,30" halign="center" valign="center" font="Regular;22" transparent="1" shadowColor="black" shadowOffset="-1,-1" />
++      </screen>
++      <screen name="PluginManagerInfo" position="center,120" size="560,420" title="Plugin manager activity information" >
++              <ePixmap pixmap="750S/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
++              <widget source="key_red" render="Label" position="20,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget source="key_green" render="Label" position="160,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget source="list" render="Listbox" position="5,60" size="550,300" scrollbarMode="showOnDemand" selectionDisabled="1">
++                      <convert type="TemplatedMultiContent">
++                              {"template": [
++                                              MultiContentEntryText(pos = (50, 0), size = (150, 26), font=0, flags = RT_HALIGN_LEFT, text = 0), # index 0 is the name
++                                              MultiContentEntryText(pos = (50, 27), size = (540, 23), font=1, flags = RT_HALIGN_LEFT, text = 1), # index 1 is the state
++                                              MultiContentEntryPixmapAlphaTest(pos = (0, 1), size = (48, 48), png = 2), # index 2 is the status pixmap
++                                              MultiContentEntryPixmapAlphaTest(pos = (0, 48), size = (550, 2), png = 3), # index 3 is the div pixmap
++                                      ],
++                              "fonts": [gFont("Regular", 24),gFont("Regular", 22)],
++                              "itemHeight": 50
++                              }
++                      </convert>
++              </widget>
++              <ePixmap pixmap="750S/div-h.png" position="0,370" zPosition="10" size="560,2" transparent="1" alphatest="on" />
++              <widget source="status" render="Label" position="5,375" zPosition="10" size="550,44" halign="center" valign="center" font="Regular;22" transparent="1" shadowColor="black" shadowOffset="-1,-1" />
++      </screen>
++      <screen name="PluginManagerHelp" position="center,120" size="560,420" title="Plugin manager help" >
++              <ePixmap pixmap="750S/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
++              <widget source="key_red" render="Label" position="20,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget source="list" render="Listbox" position="5,60" size="550,300" scrollbarMode="showOnDemand" selectionDisabled="1">
++                      <convert type="TemplatedMultiContent">
++                              {"template": [
++                                              MultiContentEntryText(pos = (50, 0), size = (540, 26), font=0, flags = RT_HALIGN_LEFT, text = 0), # index 0 is the name
++                                              MultiContentEntryText(pos = (50, 27), size = (540, 23), font=1, flags = RT_HALIGN_LEFT, text = 1), # index 1 is the state
++                                              MultiContentEntryPixmapAlphaTest(pos = (0, 1), size = (48, 48), png = 2), # index 2 is the status pixmap
++                                              MultiContentEntryPixmapAlphaTest(pos = (0, 48), size = (550, 2), png = 3), # index 3 is the div pixmap
++                                      ],
++                              "fonts": [gFont("Regular", 24),gFont("Regular", 22)],
++                              "itemHeight": 50
++                              }
++                      </convert>
++              </widget>
++              <ePixmap pixmap="750S/div-h.png" position="0,370" zPosition="10" size="560,2" transparent="1" alphatest="on" />
++              <widget source="status" render="Label" position="5,375" zPosition="10" size="550,44" halign="center" valign="center" font="Regular;22" transparent="1" shadowColor="black" shadowOffset="-1,-1" />
++      </screen>
++      <screen name="PluginDetails" position="center,120" size="600,420" title="Plugin details" >
++              <ePixmap pixmap="750S/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
++              <widget source="key_red" render="Label" position="20,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget source="key_green" render="Label" position="160,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget source="author" render="Label" position="10,50" size="500,25" zPosition="10" font="Regular;21" transparent="1" />
++              <widget name="statuspic" position="550,40" size="48,48" alphatest="on"/>
++              <widget name="divpic" position="0,80" size="600,2" alphatest="on"/>
++              <widget name="detailtext" position="10,90" size="270,330" zPosition="10" font="Regular;21" transparent="1" halign="left" valign="top"/>
++              <widget name="screenshot" position="290,90" size="300,330" alphatest="on"/>
++      </screen>
++      <screen name="UpdatePlugin" position="center,center" size="550,200" title="Software update" >
++              <widget name="activityslider" position="0,0" size="550,5"  />
++              <widget name="slider" position="0,150" size="550,30"  />
++              <widget source="package" render="Label" position="10,30" size="540,20" font="Regular;18" halign="center" valign="center" backgroundColor="#25062748" transparent="1" />
++              <widget source="status" render="Label" position="10,60" size="540,45" font="Regular;20" halign="center" valign="center" backgroundColor="#25062748" transparent="1" />
++      </screen>
++      <screen name="IPKGMenu" position="center,130" size="560,400" title="Select upgrade source to edit." >
++              <ePixmap pixmap="750S/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
++              <widget source="key_red" render="Label" position="20,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget source="key_green" render="Label" position="160,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget name="filelist" position="5,50" size="550,340" scrollbarMode="showOnDemand" />
++      </screen>
++      <screen name="IPKGSource" position="center,center" size="560,80" title="Edit upgrade source url." >
++              <ePixmap pixmap="750S/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
++              <widget source="key_red" render="Label" position="20,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget source="key_green" render="Label" position="160,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget name="text" position="5,50" size="550,25" font="Regular;20" backgroundColor="background" foregroundColor="#cccccc" />
++      </screen>
++      <screen name="PacketManager" position="center,120" size="530,420" title="Packet manager" >
++              <ePixmap pixmap="750S/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
++              <widget source="key_red" render="Label" position="20,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget source="key_green" render="Label" position="160,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget source="list" render="Listbox" position="5,50" size="520,365" scrollbarMode="showOnDemand">
++                      <convert type="TemplatedMultiContent">
++                              {"template": [
++                                              MultiContentEntryText(pos = (5, 1), size = (440, 28), font=0, flags = RT_HALIGN_LEFT, text = 0), # index 0 is the name
++                                              MultiContentEntryText(pos = (5, 26), size = (440, 20), font=1, flags = RT_HALIGN_LEFT, text = 2), # index 2 is the description
++                                              MultiContentEntryPixmapAlphaTest(pos = (445, 2), size = (48, 48), png = 4), # index 4 is the status pixmap
++                                              MultiContentEntryPixmapAlphaTest(pos = (5, 50), size = (510, 2), png = 5), # index 4 is the div pixmap
++                                      ],
++                              "fonts": [gFont("Regular", 22),gFont("Regular", 14)],
++                              "itemHeight": 52
++                              }
++                      </convert>
++              </widget>
++      </screen>
++      <screen name="IpkgInstaller" position="center,120" size="550,420" title="Install extensions" >
++              <ePixmap pixmap="750S/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
++              <ePixmap pixmap="750S/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
++              <widget source="key_red" render="Label" position="20,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget source="key_green" render="Label" position="160,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget name="list" position="5,50" size="540,330" />
++              <ePixmap pixmap="750S/div-h.png" position="0,380" zPosition="10" size="560,2" transparent="1" alphatest="on" />
++              <widget source="introduction" render="Label" position="5,390" zPosition="10" size="550,30" halign="center" valign="center" font="Regular;22" transparent="1" shadowColor="black" shadowOffset="-1,-1" />
++      </screen>
++      <screen name="VideoWizard" position="0,0" size="720,576" title="Welcome..." flags="wfNoBorder" >
++              <widget name="text" position="153,50" size="340,270" font="Regular;23" />
++              <widget source="list" render="Listbox" position="200,300" size="290,200" scrollbarMode="showOnDemand" >
++                      <convert type="StringList" />
++              </widget>
++              <widget name="config" position="50,300" zPosition="1" size="440,200" transparent="1" scrollbarMode="showOnDemand" />
++<!--                  <widget name="wizard" pixmap="skin_default/wizard.png" position="40,50" zPosition="10" size="110,174" transparent="1" alphatest="on"/>  -->
++              <ePixmap pixmap="750S/buttons/button_red.png" position="33,222" zPosition="0" size="22,22" transparent="1" alphatest="on" />
++              <widget name="languagetext" position="55,225" size="95,30" font="Regular;18" />
++              <widget name="portpic" position="50,300" zPosition="10" size="150,150" transparent="1" alphatest="on"/>
++              <widget name="rc" pixmaps="750S/rc.png,750S/rcold.png" position="500,50" zPosition="10" size="154,500" transparent="1" alphatest="blend"/>
++              <widget name="arrowdown" pixmap="750S/arrowdown.png" position="0,0" zPosition="11" size="37,70" transparent="1" alphatest="blend"/>
++              <widget name="arrowdown2" pixmap="750S/arrowdown.png" position="0,0" zPosition="11" size="37,70" transparent="1" alphatest="blend"/>
++              <widget name="arrowup" pixmap="750S/arrowup.png" position="-100,-100" zPosition="11" size="37,70" transparent="1" alphatest="blend"/>
++              <widget name="arrowup2" pixmap="750S/arrowup.png" position="-100,-100" zPosition="11" size="37,70" transparent="1" alphatest="blend"/>
++      </screen>
++      <screen name="LocationBox" position="100,75" size="540,460" >
++              <widget name="text" position="0,2" size="540,22" font="Regular;22" />
++              <widget name="target" position="0,23" size="540,22" valign="center" font="Regular;22" />
++              <widget name="filelist" position="0,55" zPosition="1" size="540,210" scrollbarMode="showOnDemand" selectionDisabled="1" />
++              <widget name="textbook" position="0,272" size="540,22" font="Regular;22" />
++              <widget name="booklist" position="5,302" zPosition="2" size="535,100" scrollbarMode="showOnDemand" />
++              <widget name="red" position="0,415" zPosition="1" size="135,40" pixmap="750S/buttons/red.png" transparent="1" alphatest="on" />
++              <widget name="key_red" position="20,415" zPosition="2" size="115,40" halign="center" valign="center" font="Regular;22" transparent="1" shadowColor="black" shadowOffset="-1,-1" />   
++              <widget name="green" position="135,415" zPosition="1" size="135,40" pixmap="750S/buttons/green.png" transparent="1" alphatest="on" />
++              <widget name="key_green" position="155,415" zPosition="2" size="115,40" halign="center" valign="center" font="Regular;22" transparent="1" shadowColor="black" shadowOffset="-1,-1" />
++              <widget name="yellow" position="270,415" zPosition="1" size="135,40" pixmap="750S/buttons/yellow.png" transparent="1" alphatest="on" />
++              <widget name="key_yellow" position="290,415" zPosition="2" size="115,40" halign="center" valign="center" font="Regular;22" transparent="1" shadowColor="black" shadowOffset="-1,-1" />
++              <widget name="blue" position="405,415" zPosition="1" size="135,40" pixmap="750S/buttons/blue.png" transparent="1" alphatest="on" />
++              <widget name="key_blue" position="425,415" zPosition="2" size="115,40" halign="center" valign="center" font="Regular;22" transparent="1" shadowColor="black" shadowOffset="-1,-1" />            
++      </screen>
++      <!-- LCD/OLED Screens -->
++      
++      <!-- LCD screen (channelselection) -->
++      <screen name="ChannelSelection_summary" position="0,0" size="132,64" id="1">
++              <widget source="parent.ServiceEvent" render="Label" position="6,0" size="120,25" font="Regular;14" halign="center" valign="center" >
++                      <convert type="ServiceName">Name</convert>
++              </widget>
++              <widget source="parent.ServiceEvent" render="Progress" position="16,27" size="100,5" borderWidth="1">
++                      <convert type="EventTime">Progress</convert>
++              </widget>
++              <widget source="global.CurrentTime" render="Label" position="6,32" size="90,32" font="Regular;32" halign="right" valign="top">
++                      <convert type="ClockToText">Format:%H:%M</convert>
++              </widget>
++              <widget source="global.CurrentTime" render="Label" position="100,34" zPosition="1" size="26,30" font="Regular;16" valign="top">
++                      <convert type="ClockToText">Format:%S</convert>
++              </widget>
++      </screen> 
++      <!-- Color OLED screen (ChannelSelection) -->
++      <screen name="ChannelSelection_summary" position="0,0" size="96,64" id="2">
++              <widget source="parent.ServiceEvent" render="Label" position="0,0" size="96,25" font="Regular;14" halign="center" valign="center" >
++                      <convert type="ServiceName">Name</convert>
++              </widget>
++              <widget source="parent.ServiceEvent" render="Progress" position="0,27" size="96,5" borderWidth="1" >
++                      <convert type="EventTime">Progress</convert>
++              </widget>
++              <widget source="global.CurrentTime" render="Label" position="0,32" size="96,32" font="Regular;32" halign="center" valign="center" foregroundColor="#FFFFFF" backgroundColor="#000000" >
++                      <convert type="ClockToText">Format:%H:%M</convert>
++              </widget>
++      </screen>
++      <!-- LCD screen (main) -->
++      <screen name="InfoBarSummary" position="0,0" size="132,64" id="1">
++              <widget source="session.CurrentService" render="Label" position="6,0" size="120,25" font="Regular;14" halign="center" valign="center" >
++                      <convert type="ServiceName">Name</convert>
++              </widget>
++              <widget source="session.Event_Now" render="Progress" position="16,27" size="100,5" borderWidth="1">
++                      <convert type="EventTime">Progress</convert>
++              </widget>
++              <widget source="global.CurrentTime" render="Label" position="6,32" size="90,32" font="Regular;32" halign="right" valign="top">
++                      <convert type="ClockToText">Format:%H:%M</convert>
++              </widget>
++              <widget source="global.CurrentTime" render="Label" position="100,34" zPosition="1" size="26,30" font="Regular;16" valign="top">
++                      <convert type="ClockToText">Format:%S</convert>
++              </widget>
++              <widget source="session.RecordState" render="FixedLabel" text=" " position="6,30" zPosition="1" size="120,34">
++                      <convert type="ConfigEntryTest">config.usage.blinking_display_clock_during_recording,True,CheckSourceBoolean</convert>
++                      <convert type="ConditionalShowHide">Blink</convert>
++              </widget>
++      </screen>
++      <!-- Color OLED screen (main) -->
++      <screen name="InfoBarSummary" position="0,0" size="96,64" id="2">
++              <widget source="session.CurrentService" render="Label" position="0,0" size="96,25" font="Regular;14" halign="center" valign="center" >
++                      <convert type="ServiceName">Name</convert>
++              </widget>
++              <widget source="session.Event_Now" render="Progress" position="0,27" size="96,5" borderWidth="1" >
++                      <convert type="EventTime">Progress</convert>
++              </widget>
++              <widget source="global.CurrentTime" render="Label" position="0,32" size="96,32" font="Regular;32" halign="center" valign="center" foregroundColor="#FFFFFF" backgroundColor="#000000" >
++                      <convert type="ClockToText">Format:%H:%M</convert>
++              </widget>
++              <widget source="session.RecordState" render="FixedLabel" text=" " position="0,32" zPosition="1" size="96,32">
++                      <convert type="ConfigEntryTest">config.usage.blinking_display_clock_during_recording,True,CheckSourceBoolean</convert>
++                      <convert type="ConditionalShowHide">Blink</convert>
++              </widget>
++      </screen>
++      <!-- LCD screen (movieplayer) -->
++      <screen name="InfoBarMoviePlayerSummary" position="0,0" size="132,64" id="1">
++              <widget source="session.CurrentService" render="Label" position="6,0" size="120,25" font="Regular;14" halign="center" valign="center" >
++                      <convert type="ServiceName">Name</convert>
++              </widget>
++              <widget source="session.CurrentService" render="Progress" position="16,27" size="100,5" borderWidth="1">
++                      <convert type="ServicePosition">Position</convert>
++              </widget>
++              <widget source="global.CurrentTime" render="Label" position="6,32" size="120,32" font="Regular;32" halign="center" valign="center">
++                      <convert type="ClockToText">Format:%H:%M</convert>
++              </widget>
++              <widget source="session.RecordState" render="FixedLabel" text=" " position="6,32" zPosition="1" size="120,32">
++                      <convert type="ConfigEntryTest">config.usage.blinking_display_clock_during_recording,True,CheckSourceBoolean</convert>
++                      <convert type="ConditionalShowHide">Blink</convert>
++              </widget>
++      </screen>
++      <!-- Color OLED screen (movieplayer) -->
++      <screen name="InfoBarMoviePlayerSummary" position="0,0" size="96,64" id="2">
++              <widget source="session.CurrentService" render="Label" position="0,0" size="96,25" font="Regular;14" halign="center" valign="center" >
++                      <convert type="ServiceName">Name</convert>
++              </widget>
++              <widget source="session.CurrentService" render="Progress" position="0,27" size="96,5" borderWidth="1" >
++                      <convert type="ServicePosition">Position</convert>
++              </widget>
++              <widget source="global.CurrentTime" render="Label" position="0,32" size="96,32" font="Regular;32" halign="center" valign="center" foregroundColor="#FFFFFF" backgroundColor="#000000" >
++                      <convert type="ClockToText">Format:%H:%M</convert>
++              </widget>
++              <widget source="session.RecordState" render="FixedLabel" text=" " position="0,32" zPosition="1" size="96,32">
++                      <convert type="ConfigEntryTest">config.usage.blinking_display_clock_during_recording,True,CheckSourceBoolean</convert>
++                      <convert type="ConditionalShowHide">Blink</convert>
++              </widget>
++      </screen>
++      <!-- LCD screen (ChoiceBox) -->
++      <screen name="ChoiceBox_summary" position="0,0" size="132,64" id="1">
++              <widget source="parent.summary_list" render="Label" position="6,0" size="126,64" font="Regular;11" />
++      </screen>
++      <!-- Color OLED screen (ChoiceBox) -->
++      <screen name="ChoiceBox_summary" position="0,0" size="96,64" id="2">
++              <widget source="parent.summary_list" render="Label" position="0,0" size="96,64" font="Regular;10" />
++      </screen>       
++      <!-- LCD screen (MessageBox) -->
++      <screen name="MessageBox_summary" position="0,0" size="132,64" id="1">
++              <widget source="parent.Text" render="Label" position="0,0" size="132,52" font="Regular;11" halign="center" valign="center" />
++              <widget source="parent.selectedChoice" render="Label" position="6,50" size="120,14" font="Regular;14" halign="center" valign="center" />
++      </screen>
++      <!-- Color OLED screen (MessageBox) -->
++      <screen name="MessageBox_summary" position="0,0" size="96,64" id="2">
++              <widget source="parent.Text" render="Label" position="0,0" size="96,52" font="Regular;10" halign="center" valign="center" />
++              <widget source="parent.selectedChoice" render="Label" position="0,50" size="96,14" font="Regular;12" halign="center" valign="center" />
++      </screen>
++
++      <!-- LCD screen (menus) -->
++      <screen name="MenuSummary" position="0,0" size="132,64" id="1">
++              <widget source="parent.title" render="Label" position="6,0" size="120,32" font="Regular;14" halign="center" valign="center"/>
++              <widget source="parent.menu" render="Label" position="6,32" size="120,32" font="Regular;16" halign="center" valign="center">
++                      <convert type="StringListSelection" />
++              </widget>
++      </screen> 
++      <!-- Color OLED screen (menus) -->
++      <screen name="MenuSummary" position="0,0" size="96,64" id="2">
++              <widget source="parent.title" render="Label" position="0,0" size="96,32" font="Regular;14" halign="center" valign="center"/>
++              <widget source="parent.menu" render="Label" position="0,32" size="96,32" font="Regular;14" halign="center" valign="center">
++                      <convert type="StringListSelection" />
++              </widget>
++      </screen>       
++      <!-- LCD screen (ServiceScan) -->
++      <screen name="ServiceScanSummary" position="0,0" size="132,64" id="1">
++              <widget name="Title" position="6,4" size="120,42" font="Regular;16" transparent="1" />
++              <widget name="Service" position="6,22" size="120,26" font="Regular;12" transparent="1" />
++              <widget name="scan_progress" position="6,50" zPosition="1" borderWidth="1" size="56,12" backgroundColor="dark" />
++      </screen>
++      <!-- Color OLED screen (ServiceScan) -->
++      <screen name="ServiceScanSummary" position="0,0" size="96,64" id="2">
++              <widget name="Title" position="0,0" size="96,30" font="Regular;14" transparent="1" />
++              <widget name="Service" position="0,30" size="96,20" font="Regular;10" transparent="1" />
++              <widget name="scan_progress" position="0,50" zPosition="1" borderWidth="1" size="96,12" backgroundColor="dark" />
++      </screen>
++      <!-- LCD screen (setup) -->
++      <screen name="SetupSummary" position="0,0" size="132,64" id="1">
++              <widget source="SetupTitle" render="Label" position="6,0" size="120,16" font="Regular;12" />
++              <widget source="SetupEntry" render="Label" position="6,16" size="120,32" font="Regular;12" />
++              <widget source="SetupValue" render="Label" position="6,48" size="120,16" font="Regular;12" />
++      </screen>
++      <!-- Color OLED screen (setup) -->
++      <screen name="SetupSummary" position="0,0" size="96,64" id="2">
++              <widget source="SetupTitle" render="Label" position="0,0" size="96,16" font="Regular;10" />
++              <widget source="SetupEntry" render="Label" position="0,16" size="96,32" font="Regular;10" />
++              <widget source="SetupValue" render="Label" position="0,48" size="96,16" font="Regular;10" />
++      </screen>
++      <!-- LCD screen (misc) -->
++      <screen name="SimpleSummary" position="0,0" size="132,64" id="1">
++              <widget source="parent.Title" render="Label" position="6,0" size="120,64" font="Regular;16" halign="center" valign="center" />
++      </screen>
++      <!-- Color OLED screen (misc) -->
++      <screen name="SimpleSummary" position="0,0" size="96,64" id="2">
++              <widget source="parent.Title" render="Label" position="0,0" size="96,64" font="Regular;14" halign="center" valign="center" />
++      </screen>
++      <!-- LCD screen (standby) -->
++      <screen name="StandbySummary" position="0,0" size="132,64" id="1">
++              <widget source="global.CurrentTime" render="Label" position="6,0" size="120,64" font="Regular;40" halign="center" valign="center">
++                      <convert type="ClockToText">Format:%H:%M</convert>
++              </widget>
++              <widget source="session.RecordState" render="FixedLabel" position="6,0" zPosition="1" size="120,64" text=" ">
++                      <convert type="ConfigEntryTest">config.usage.blinking_display_clock_during_recording,True,CheckSourceBoolean</convert>
++                      <convert type="ConditionalShowHide">Blink</convert>
++              </widget>
++      </screen>
++      <!-- Color OLED screen (standby) -->
++      <screen name="StandbySummary" position="0,0" size="96,64" id="2">
++              <widget source="global.CurrentTime" render="Label" position="0,0" size="96,64" font="Regular;40" halign="center" valign="center">
++                      <convert type="ClockToText">Format:%H:%M</convert>
++              </widget>
++              <widget source="session.RecordState" render="FixedLabel" position="0,0" zPosition="1" size="96,64" text=" ">
++                      <convert type="ConfigEntryTest">config.usage.blinking_display_clock_during_recording,True,CheckSourceBoolean</convert>
++                      <convert type="ConditionalShowHide">Blink</convert>
++              </widget>
++      </screen>
++      <!-- LCD screen (JobView) -->
++      <screen name="JobView_summary" position="0,0" size="132,64" id="1">
++              <widget source="parent.summary_job_name" render="Label" position="6,4" size="120,42" font="Regular;16" />
++              <widget source="parent.summary_job_task" render="Label" position="6,22" size="120,26" font="Regular;12" />
++              <widget source="parent.summary_job_progress" render="Progress" position="6,50" size="60,12" borderWidth="1" zPosition="1" />
++              <widget source="parent.summary_job_progress" render="Label" position="66,50" size="50,12" font="Regular;12" zPosition="2" halign="center" transparent="1"  >
++                      <convert type="ProgressToText" />
++              </widget>
++      </screen>
++      <!-- Color OLED screen (JobView) -->
++      <screen name="JobView_summary" position="0,0" size="96,64" id="2">
++              <widget source="parent.summary_job_name" render="Label" position="0,4" size="96,42" font="Regular;14" />
++              <widget source="parent.summary_job_task" render="Label" position="0,22" size="96,26" font="Regular;10" />
++              <widget source="parent.summary_job_progress" render="Progress" position="0,50" size="60,12" borderWidth="1" zPosition="1" />
++              <widget source="parent.summary_job_progress" render="Label" position="60,50" size="36,12" font="Regular;10" zPosition="2" halign="center" transparent="1"  >
++                      <convert type="ProgressToText" />
++              </widget>
++      </screen>
++      <!-- LCD screen (Wizard) -->
++      <screen name="WizardSummary" position="0,0" size="132,64" id="1">
++              <widget source="text" render="Label" position="6,0" size="120,16" font="Regular;16" transparent="1" />
++              <widget source="parent.list" render="Label" position="6,18" size="120,46" font="Regular;12">
++                      <convert type="StringListSelection" />
++              </widget>
++      </screen>
++      <!-- Color OLED screen (Wizard) -->
++      <screen name="WizardSummary" position="0,0" size="96,64" id="2">
++              <widget source="text" render="Label" position="0,0" size="96,16" font="Regular;14" transparent="1" />
++              <widget source="parent.list" render="Label" position="0,18" size="96,46" font="Regular;12">
++                      <convert type="StringListSelection" />
++              </widget>
++      </screen>
++      
++</skin>
+diff --git a/data/Makefile.am b/data/Makefile.am
+index 1ed9444..d75b822 100644
+--- a/data/Makefile.am
++++ b/data/Makefile.am
+@@ -1,4 +1,4 @@
+-SUBDIRS = countries fonts defaults extensions skin_default
++SUBDIRS = countries fonts defaults extensions skin_default 750S Vu_HD
+ dist_pkgdata_DATA = \
+       defaultsatlists.xml \
+diff --git a/data/Vu_HD/Makefile.am b/data/Vu_HD/Makefile.am
+new file mode 100644
+index 0000000..ee39535
+--- /dev/null
++++ b/data/Vu_HD/Makefile.am
+@@ -0,0 +1,6 @@
++SUBDIRS = menu icons buttons countries
++
++installdir = $(DATADIR)/enigma2/Vu_HD
++
++install_DATA = \
++      *.xml *.png
+diff --git a/data/Vu_HD/buttons/Makefile.am b/data/Vu_HD/buttons/Makefile.am
+new file mode 100644
+index 0000000..cd14ba2
+--- /dev/null
++++ b/data/Vu_HD/buttons/Makefile.am
+@@ -0,0 +1,6 @@
++AUTOMAKE_OPTIONS = gnu
++
++installdir = $(DATADIR)/enigma2/Vu_HD/buttons
++
++install_DATA = \
++      *.png
+diff --git a/data/Vu_HD/countries/Makefile.am b/data/Vu_HD/countries/Makefile.am
+new file mode 100644
+index 0000000..9a025db
+--- /dev/null
++++ b/data/Vu_HD/countries/Makefile.am
+@@ -0,0 +1,6 @@
++AUTOMAKE_OPTIONS = gnu
++
++installdir = $(DATADIR)/enigma2/Vu_HD/countries
++
++install_DATA = \
++      *.png
+diff --git a/data/Vu_HD/icons/Makefile.am b/data/Vu_HD/icons/Makefile.am
+new file mode 100644
+index 0000000..0351458
+--- /dev/null
++++ b/data/Vu_HD/icons/Makefile.am
+@@ -0,0 +1,6 @@
++AUTOMAKE_OPTIONS = gnu
++
++installdir = $(DATADIR)/enigma2/Vu_HD/icons
++
++install_DATA = \
++      *.png
+diff --git a/data/Vu_HD/menu/Makefile.am b/data/Vu_HD/menu/Makefile.am
+new file mode 100644
+index 0000000..ed47ec9
+--- /dev/null
++++ b/data/Vu_HD/menu/Makefile.am
+@@ -0,0 +1,6 @@
++AUTOMAKE_OPTIONS = gnu
++
++installdir = $(DATADIR)/enigma2/Vu_HD/menu
++
++install_DATA = \
++      *.png
+diff --git a/data/Vu_HD/skin.xml b/data/Vu_HD/skin.xml
+new file mode 100755
+index 0000000..469b314
+--- /dev/null
++++ b/data/Vu_HD/skin.xml
+@@ -0,0 +1,3036 @@
++<skin>
++      <!-- VU+ skin (skin.xml)  -->
++      <output id="0">
++              <resolution xres="1280" yres="720" bpp="32" />
++      </output>
++      <!-- Colors (#AARRGGBB) -->
++      <colors>
++              <color name="white" value="#ffffff" />
++              <color name="black" value="#000000" />
++              <color name="dark" value="#25062748" />
++              <color name="menu" value="#25062748" />
++              <color name="red" value="#f23d21" />
++              <color name="green" value="#389416" />
++              <color name="blue" value="#0064c7" />
++              <color name="yellow" value="#bab329" />
++              <color name="transparent" value="#ffffffff" />
++              <color name="transpBlack" value="#80000000" />
++              <color name="transpWhite" value="#80ffffff" />
++              <color name="background" value="#27d8dee2" />
++              <color name="foreground" value="#1c1c1c" />
++              <color name="darkgrey" value="#279e9fa4" />             
++      </colors>
++      <!-- Main screen colors (id=0 Framebuffer) -->
++      <windowstyle type="skinned" id="0">
++              <title offset="33,14" font="Regular;20" />
++              <color name="Background" color="#279e9fa4" /> 
++              <color name="LabelForeground" color="#3c3c3c" />
++              <color name="ListboxBackground" color="#279e9fa4" />
++              <color name="ListboxForeground" color="#1c1c1c" />
++<!--          <color name="ListboxSelectedBackground" color="#11252525" />    -->
++              <color name="ListboxSelectedBackground" color="#1a53bb" />
++              <color name="ListboxSelectedForeground" color="#ffffff" />
++              <color name="ListboxMarkedBackground" color="#ff0000" />
++              <color name="ListboxMarkedForeground" color="#ffffff" />
++              <color name="ListboxMarkedAndSelectedBackground" color="#800000" />
++              <color name="ListboxMarkedAndSelectedForeground" color="#ffffff" />
++              <color name="WindowTitleForeground" color="#1c1c1c" />
++              <color name="WindowTitleBackground" color="#27dddfe1" />
++              <!-- Main screen border png's -->
++              <borderset name="bsWindow">
++                      <pixmap pos="bpTopLeft" filename="Vu_HD/b_tl.png" />
++                      <pixmap pos="bpTop" filename="Vu_HD/b_t.png"  />
++                      <pixmap pos="bpTopRight" filename="Vu_HD/b_tr.png" />
++                      <pixmap pos="bpLeft" filename="Vu_HD/b_l.png"  />
++                      <pixmap pos="bpRight" filename="Vu_HD/b_r.png"  />
++                      <pixmap pos="bpBottomLeft" filename="Vu_HD/b_bl.png" />
++                      <pixmap pos="bpBottom" filename="Vu_HD/b_b.png"  />
++                      <pixmap pos="bpBottomRight" filename="Vu_HD/b_br.png" />
++              </borderset>
++      </windowstyle>
++      <!-- Main screen colors (id=1 LCD) -->
++      <windowstyle type="skinned" id="1">
++              <color name="Background" color="#000000" />
++              <color name="LabelForeground" color="#ffffff" />
++              <color name="ListboxBackground" color="#000000" />
++              <color name="ListboxForeground" color="#ffffff" />
++              <color name="ListboxSelectedBackground" color="#000000" />
++              <color name="ListboxSelectedForeground" color="#ffffff" />
++              <color name="ListboxMarkedBackground" color="#000000" />
++              <color name="ListboxMarkedForeground" color="#ffffff" />
++              <color name="ListboxMarkedAndSelectedBackground" color="#000000" />
++              <color name="ListboxMarkedAndSelectedForeground" color="#ffffff" />
++              <color name="WindowTitleForeground" color="#ffffff" />
++              <color name="WindowTitleBackground" color="#000000" />
++      </windowstyle>
++      <!-- Fonts -->
++      <fonts>
++              <font filename="MyriadPro-Regular.otf" name="Regular" scale="100" />
++              <font filename="MyriadPro-Semibold.otf" name="Semibold" scale="100" />
++              <font filename="MyriadPro-SemiboldIt.otf" name="Semiboldit" scale="100" />
++              <font filename="lcd.ttf" name="LCD" scale="100" />
++              <font filename="ae_AlMateen.ttf" name="Replacement" scale="90" replacement="1" />
++              <font filename="tuxtxt.ttf" name="Console" scale="100" />
++              <font filename="nmsbd.ttf" name="Subtitlefont" scale="90" />
++      </fonts>
++      <subtitles>
++              <sub name="Subtitle_TTX" font="Subtitlefont;30" shadowColor="#40101010" shadowOffset="3,3" />
++              <sub name="Subtitle_Regular" font="Subtitlefont;30" foregroundColor="#DCDCDC" shadowColor="#40101010" shadowOffset="3,3" />
++              <sub name="Subtitle_Bold" font="Replacement;30" foregroundColor="#DCDCDC" shadowColor="#40101010" shadowOffset="3,3" />
++              <sub name="Subtitle_Italic" font="Subtitlefont;30" foregroundColor="#DCAAAA" shadowColor="#40101010" shadowOffset="3,3" />
++              <!-- omitting foregroundColor attribute will enable auto-assignment of color -->
++      </subtitles>
++      <!-- Main infobar -->
++      <screen name="InfoBar" flags="wfNoBorder" position="145,498" size="990,162" title="InfoBar" backgroundColor="transparent">
++              <!-- Background -->
++              <ePixmap position="0,0" zPosition="-1" size="990,162" pixmap="Vu_HD/info-bg.png" />
++              <!-- Signal Quality -->
++              <eLabel text="SNR" position="850,60" size="40,22" font="Regular;20" backgroundColor="#aeaeae" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="session.FrontendStatus" render="Label" position="890,60" size="80,22" font="Regular;20" backgroundColor="#aeaeae" foregroundColor="#1e1e1e" transparent="1">
++                      <convert type="FrontendInfo">SNRdB</convert>
++              </widget>
++              <!-- Signal Strength -->
++              <eLabel text="AGC" position="850,90" size="40,22" font="Regular;20" backgroundColor="#aeaeae" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="session.FrontendStatus" render="Label" position="890,90" size="40,22" font="Regular;20" backgroundColor="#aeaeae" foregroundColor="#1e1e1e" transparent="1">
++                      <convert type="FrontendInfo">AGC</convert>
++              </widget>
++              <!-- Bit error rate -->
++<!--          <eLabel text="BER" position="595,6" size="40,22" font="Regular;18" backgroundColor="#102e59" foregroundColor="#cccccc" shadowColor="#27384f" shadowOffset="-1,-1" transparent="1" />
++              <widget source="session.FrontendStatus" render="Label" position="640,6" size="35,22" font="Regular;18" backgroundColor="#102e59" foregroundColor="#e7e7e7" shadowColor="#27384f" shadowOffset="-1,-1" transparent="1">
++                      <convert type="FrontendInfo">BER</convert>
++              </widget>       -->
++              <!-- Service name -->
++              <widget source="session.CurrentService" render="Label" position="60,15" size="400,30" font="Semiboldit;28" valign="center" halign="left" noWrap="1" foregroundColor="#07255d" backgroundColor="#d9dee2" transparent="1">
++                      <convert type="ServiceName">Name</convert>
++              </widget>
++              <!--
++              <widget source="session.FrontendInfo" render="Pixmap" position="350,32" size="8,9" pixmap="Vu_HD/nim_active.png" alphatest="on">
++                      <convert type="FrontendInfo">NUMBER</convert>
++                      <convert type="ValueRange">2,2</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="session.FrontendInfo" render="Pixmap" position="350,45" size="8,9" pixmap="Vu_HD/nim_active.png" alphatest="on">
++                      <convert type="FrontendInfo">NUMBER</convert>
++                      <convert type="ValueRange">3,3</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              -->
++              <eLabel text="Tuner" position="845,125" size="60,20" font="Regular;20" backgroundColor="#d9dee2" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="session.TunerInfo" render="FixedLabel" text="A" position="905,125" size="30,20" font="Semibold;20" foregroundColor="#5c5c5c" backgroundColor="#d9dee2" transparent="1">
++                      <convert type="TunerInfo">TunerUseMask</convert>
++                      <convert type="ValueBitTest">1</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="session.TunerInfo" render="FixedLabel" text="B" position="917,125" size="30,20" font="Semibold;20" foregroundColor="#5c5c5c" backgroundColor="#d9dee2" transparent="1">
++                      <convert type="TunerInfo">TunerUseMask</convert>
++                      <convert type="ValueBitTest">2</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="session.TunerInfo" render="FixedLabel" text="C" position="929,125" size="30,20" font="Semibold;20" foregroundColor="#1c1c1c" backgroundColor="#d9dee2" transparent="1">
++                      <convert type="TunerInfo">TunerUseMask</convert>
++                      <convert type="ValueBitTest">4</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="session.TunerInfo" render="FixedLabel" text="D" position="941,125" size="30,20" font="Semibold;20" foregroundColor="#1c1c1c" backgroundColor="#d9dee2" transparent="1">
++                      <convert type="TunerInfo">TunerUseMask</convert>
++                      <convert type="ValueBitTest">8</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <ePixmap pixmap="Vu_HD/icons/clock.png" position="862,18" zPosition="1" size="20,20" alphatest="blend" />
++              <widget source="global.CurrentTime" render="Label" position="882,20" zPosition="1" size="50,20" font="Regular;20" foregroundColor="#1c1c1c" halign="right" backgroundColor="#acacac" transparent="1">
++                      <convert type="ClockToText">Format:%H:%M</convert>
++              </widget>
++              <!-- tuners in use? -->
++              <widget source="session.FrontendInfo" render="FixedLabel" position="905,125" size="30,20" text="A" font="Semibold;20" foregroundColor="#1c1c1c" backgroundColor="#d9dee2" transparent="1">
++                      <convert type="FrontendInfo">NUMBER</convert>
++                      <convert type="ValueRange">0,0</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="session.FrontendInfo" render="FixedLabel" position="917,125" size="30,20" text="B" font="Semibold;20" foregroundColor="#1c1c1c" backgroundColor="#d9dee2" transparent="1">
++                      <convert type="FrontendInfo">NUMBER</convert>
++                      <convert type="ValueRange">1,1</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <!--
++              <widget source="global.CurrentTime" render="Label" position="633,6" zPosition="1" size="26,18" font="Regular;16" valign="top">
++                      <convert type="ClockToText">Format:%S</convert>
++              </widget>       -->
++              <ePixmap position="720,20" zPosition="0" size="70,20" pixmap="Vu_HD/icons/icon_crypt_off.png"  alphatest="blend" />
++              <ePixmap position="740,20" zPosition="0" size="70,20" pixmap="Vu_HD/icons/icon_txt_off.png"  alphatest="blend" />
++              <ePixmap position="770,20" zPosition="0" size="70,20" pixmap="Vu_HD/icons/icon_format_off.png"  alphatest="blend" />
++              <ePixmap position="804,20" zPosition="0" size="70,20" pixmap="Vu_HD/icons/icon_dolby_off.png"  alphatest="blend" />
++              <!-- Blinking pixmap (recording in progress?) -->
++              <ePixmap pixmap="Vu_HD/icons/icon_rec_off.png" position="680,18" size="31,20" alphatest="blend" />
++              <widget source="session.RecordState" render="Pixmap" pixmap="Vu_HD/icons/icon_rec.png" position="680,18" zPosition="1" size="31,20" alphatest="blend" >
++                      <convert type="ConditionalShowHide">Blink</convert>
++              </widget>
++              <!-- Crypt icon (encrypted service?) -->
++              <widget source="session.CurrentService" render="Pixmap" pixmap="Vu_HD/icons/icon_crypt.png" position="720,20" zPosition="1" size="11,15" alphatest="blend">
++                      <convert type="ServiceInfo">IsCrypted</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <!-- Teletext icon (is teletext available?) -->
++              <widget source="session.CurrentService" render="Pixmap" pixmap="Vu_HD/icons/icon_txt.png" position="740,20" zPosition="1" size="18,15" alphatest="blend">
++                      <convert type="ServiceInfo">HasTelext</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <!-- Videoformat icon (16:9?) -->
++              <widget source="session.CurrentService" render="Pixmap" pixmap="Vu_HD/icons/icon_format.png" position="770,20" zPosition="1" size="28,15" alphatest="blend">
++                      <convert type="ServiceInfo">IsWidescreen</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <!-- Audio icon (is there multichannel audio?) -->
++              <widget source="session.CurrentService" render="Pixmap" pixmap="Vu_HD/icons/icon_dolby.png" position="804,20" zPosition="1" size="43,15" alphatest="blend">
++                      <convert type="ServiceInfo">IsMultichannel</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <!-- Progressbar (current event duration)-->
++              <ePixmap pixmap="Vu_HD/Statusbar_white.png" position="60,65" size="100,10" transparent="1" alphatest="on" />
++              <widget source="session.Event_Now" render="Progress" pixmap="Vu_HD/progress_medium.png" position="60,65" zPosition="1" size="100,10" backgroundColor="#ffffff" transparent="1">
++                      <convert type="EventTime">Progress</convert>
++              </widget>
++              <!-- Event (now) -->
++<!--          
++              <ePixmap pixmap="Vu_HD/nim_active.png" position="182,78" size="15,10" alphatest="on" />
++-->           
++              <widget source="session.Event_Now" render="Label" position="190,60" size="70,24" font="Semibold;22" backgroundColor="#aeaeae" foregroundColor="#1c1c1c" transparent="1">
++                      <convert type="EventTime">StartTime</convert>
++                      <convert type="ClockToText">Default</convert>
++              </widget>
++              <widget source="session.Event_Now" render="Label" position="260,60" size="420,24" font="Semibold;22" noWrap="1" backgroundColor="#aeaeae" foregroundColor="#1c1c1c" transparent="1">
++                      <convert type="EventName">Name</convert>
++              </widget>
++              <widget source="session.Event_Now" render="Label" position="690,60" size="100,24" font="Semibold;22" backgroundColor="#aeaeae" foregroundColor="#1c1c1c" halign="right" transparent="1">
++                      <convert type="EventTime">Remaining</convert>
++                      <convert type="RemainingToText">InMinutes</convert>
++              </widget>
++              <!-- Event (next) -->
++              <widget source="session.Event_Next" render="Label" position="190,87" size="70,24" font="Regular;22" backgroundColor="#aeaeae" foregroundColor="#1c1c1c" transparent="1">
++                      <convert type="EventTime">StartTime</convert>
++                      <convert type="ClockToText">Default</convert>
++              </widget>
++              <widget source="session.Event_Next" render="Label" position="260,87" size="420,24" font="Regular;22" noWrap="1" backgroundColor="#aeaeae" foregroundColor="#1c1c1c" transparent="1">
++                      <convert type="EventName">Name</convert>
++              </widget>
++              <widget source="session.Event_Next" render="Label" position="690,87" size="100,24" font="Regular;22" backgroundColor="#aeaeae" foregroundColor="#1c1c1c" halign="right" transparent="1">
++                      <convert type="EventTime">Duration</convert>
++                      <convert type="ClockToText">InMinutes</convert>
++              </widget>
++              <!-- Red button (is recording possible?) -->
++              <ePixmap pixmap="Vu_HD/buttons/button_off.png" position="60,122" size="25,25" alphatest="blend" />
++              <widget source="RecordingPossible" render="Pixmap" pixmap="Vu_HD/buttons/red.png" position="60,122" zPosition="1" size="25,25" alphatest="blend">
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="ShowRecordOnRed" render="FixedLabel" text="Record" position="100,125" zPosition="1" size="130,22" font="Regular;20" foregroundColor="#1c1c1c" backgroundColor="#d9dee2" transparent="1">
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="RecordingPossible" render="FixedLabel" text="Record" position="100,125" zPosition="1" size="130,22" font="Regular;20" foregroundColor="#1c1c1c" backgroundColor="#d2dee2" transparent="1">
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <!-- Green button (is subservices available?) -->
++              <ePixmap pixmap="Vu_HD/buttons/button_off.png" position="250,122" size="25,25" alphatest="blend" />
++              <widget source="session.CurrentService" render="Pixmap" pixmap="Vu_HD/buttons/green.png" position="250,122" zPosition="1" size="25,25" alphatest="blend">
++                      <convert type="ServiceInfo">SubservicesAvailable</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <eLabel text="Subservices" position="290,125" size="130,22" font="Regular;20" backgroundColor="#d2dee2" transparent="1" />
++              <widget source="session.CurrentService" render="FixedLabel" text="Subservices" position="290,125" zPosition="1" size="130,22" font="Regular;20" foregroundColor="#1c1c1c" backgroundColor="#d2dee2" transparent="1">
++                      <convert type="ServiceInfo">SubservicesAvailable</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <!-- Yellow button (is timeshift possible?) -->
++              <ePixmap pixmap="Vu_HD/buttons/button_off.png" position="440,122" size="25,25" alphatest="blend" />
++              <widget source="TimeshiftPossible" render="Pixmap" pixmap="Vu_HD/buttons/yellow.png" position="440,122" zPosition="1" size="25,25" alphatest="blend">
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="ShowTimeshiftOnYellow" render="FixedLabel" text="Timeshift" position="480,125" zPosition="1" size="130,22" font="Regular;20" foregroundColor="#1c1c1c" backgroundColor="#d2dee2" transparent="1">
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="TimeshiftPossible" render="FixedLabel" text="Timeshift" position="480,125" zPosition="1" size="130,22" font="Regular;20" foregroundColor="#1c1c1c" backgroundColor="#d2dee2" transparent="1">
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              
++              <!-- Yellow button (used for audio on boxes with new rc?) -->
++              <widget source="ShowAudioOnYellow" render="Pixmap" pixmap="Vu_HD/buttons/yellow.png" position="440,122" zPosition="1" size="25,25" alphatest="blend">
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="ShowAudioOnYellow" render="FixedLabel" text="Audio" position="480,125" zPosition="1" size="130,22" font="Regular;20" foregroundColor="#1c1c1c" backgroundColor="#d2dee2" transparent="1">
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <!-- Blue button (is extensions available?) -->
++              <ePixmap pixmap="Vu_HD/buttons/button_off.png" position="630,122" size="25,25" alphatest="blend" />
++              <widget source="ExtensionsAvailable" render="Pixmap" pixmap="Vu_HD/buttons/blue.png" position="630,122" zPosition="1" size="25,25" alphatest="blend">
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <eLabel text="Extensions" position="670,125" size="130,22" font="Regular;20" backgroundColor="#d2dee2" transparent="1" />
++              <widget source="ExtensionsAvailable" render="FixedLabel" text="Extensions" position="670,125" zPosition="1" size="130,22" font="Regular;20" foregroundColor="#1c1c1c" backgroundColor="#d2dee2" transparent="1">
++                      <convert type="ConditionalShowHide" />
++              </widget>
++      </screen>
++      <!-- Main menu -->
++      <!-- Menu screens -->
++      <screen name="menu_mainmenu" position="0,0" size="580,720" title="Main menu" flags="wfNoBorder" backgroundColor="transparent"> 
++              <ePixmap pixmap="Vu_HD/bg.png" zPosition="-1" position="60,0" size="520,720" alphatest="blend"  transparent="1" />
++<!--
++              <eLabel text=" " position="60,0" size="520,170" zPosition="-1" backgroundColor="#27cbd0d2"  />
++              <eLabel text=" " position="60,170" size="520,500" zPosition="-1" backgroundColor="#27b9bdc1" />         
++              <eLabel text=" " position="60,670" size="520,50" zPosition="-1" backgroundColor="#27cbd0d2"  />         
++-->           
++              <eLabel text="Main menu" position="110,120" size="350,38" font="Regular;38" foregroundColor="#5c5c5c" backgroundColor="#27d8dee2" transparent="1" />
++              <widget source="menu" render="Listbox" selectionPixmap="Vu_HD/buttons/FocusBar_H45.png" foregroundColor="#4c4c4c" foregroundColorSelected="#ececec" backgroundColorSelected="#271a53bb" backgroundColor="#27b9bdc1" transparent="1" position="84, 175" size="472,495" scrollbarMode="showOnDemand">
++<!--          <widget source="menu" render="Listbox" selectionPixmap="Vu_HD/FocusBar_menu01.png" foregroundColor="#4c4c4c" foregroundColorSelected="#ececec" backgroundColorSelected="#acacac" position="84,190" size="370,480" transparent="1" backgroundColor="#ececec" scrollbarMode="showNever"> -->
++                      <convert type="TemplatedMultiContent">
++                              {"template": [  MultiContentEntryText(pos = (30, 8), size = (410, 28), flags = RT_HALIGN_LEFT, text = 0  ) ],
++                               "fonts": [gFont("Regular", 28)],
++                               "itemHeight": 45
++                              }
++                      </convert>
++              </widget>
++              <widget source="menu" render="Pixmap" pixmap="Vu_HD/menu/ico_Plugin_All_title.png" position="475,70" size="88,88" alphatest="blend">
++                      <convert type="MenuEntryCompare">dvd_player</convert>
++                      <convert type="ConditionalShowHide"/>
++              </widget>
++              <widget source="menu" render="Pixmap" pixmap="Vu_HD/menu/ico_Plugin_All_title.png" position="475,70" size="88,88" alphatest="blend">
++                      <convert type="MenuEntryCompare">filecommand</convert>
++                      <convert type="ConditionalShowHide"/>
++              </widget>               
++              <widget source="menu" render="Pixmap" pixmap="Vu_HD/menu/ico_menu_Subtitles.png" position="475,70" size="88,88" alphatest="blend">
++                      <convert type="MenuEntryCompare">subtitle_selection</convert>
++                      <convert type="ConditionalShowHide"/>
++              </widget>
++              <widget source="menu" render="Pixmap" pixmap="Vu_HD/menu/ico_menu_Setup.png" position="475,70" size="88,88" alphatest="blend">
++                      <convert type="MenuEntryCompare">setup_selection</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="menu" render="Pixmap" pixmap="Vu_HD/menu/ico_menu_Standby.png" position="475,70" size="88,88" alphatest="blend">
++                      <convert type="MenuEntryCompare">standby_restart_list</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="menu" render="Pixmap" pixmap="Vu_HD/menu/ico_menu_Plugin.png" position="475,70" size="88,88" alphatest="blend">
++                      <convert type="MenuEntryCompare">plugin_selection</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="menu" render="Pixmap" pixmap="Vu_HD/menu/ico_menu_Info.png" position="475,70" size="88,88" alphatest="blend">
++                      <convert type="MenuEntryCompare">info_screen</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="menu" render="Pixmap" pixmap="Vu_HD/menu/ico_Plugin_All_title.png" position="475,70" size="88,88" alphatest="blend">
++                      <convert type="MenuEntryCompare">scart_switch</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="menu" render="Pixmap" pixmap="Vu_HD/menu/ico_menu_Timer.png" position="475,70" size="88,88" alphatest="blend">
++                      <convert type="MenuEntryCompare">timer_edit</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="menu" render="Pixmap" pixmap="Vu_HD/menu/ico_menu_Media.png" position="475,70" size="88,88" alphatest="blend">
++                      <convert type="MenuEntryCompare">media_player</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++      </screen>
++      <!-- Movieplayer infobar -->
++      <screen name="MoviePlayer" flags="wfNoBorder" position="200,516" size="880,162" title="InfoBar" backgroundColor="transparent">
++              <!-- Background -->
++              <ePixmap position="0,0" zPosition="-1" size="880,144" pixmap="Vu_HD/Bg_Media_info.png" />
++              <ePixmap position="35,18" size="37,28" pixmap="Vu_HD/menu/ico_title_media-info.png" alphatest="blend" />                
++              <!-- colorbuttons -->
++              <ePixmap position="50,75" pixmap="Vu_HD/icons/ico_player.png" size="152,18" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/icons/clock.png" position="770,15" zPosition="1" size="20,20" alphatest="blend" />
++              <widget source="global.CurrentTime" render="Label" position="790,17" zPosition="1" size="50,20" font="Regular;20" foregroundColor="#1c1c1c" backgroundColor="#27d9dee2" halign="right" transparent="1">
++                      <convert type="ClockToText">Format:%H:%M</convert>
++              </widget>
++              <!-- Servicename -->
++              <widget source="session.CurrentService" render="Label" position="85,18" size="475,30" font="Semiboldit;30" foregroundColor="#240256" backgroundColor="#27d9dee2" transparent="1">
++                      <convert type="ServiceName">Name</convert>
++              </widget>
++              <!-- movie length -->
++              <widget source="session.CurrentService" render="Label" position="700,55" size="95,24" font="Regular;18" halign="right" backgroundColor="#27aeaeae" transparent="1">
++                      <convert type="ServicePosition">Length</convert>
++              </widget>
++              <!-- Elapsed time -->
++              <widget source="session.CurrentService" render="Label" position="240,95" size="100,24" font="Semiboldit;18" halign="left" valign="center" foregroundColor="#3d0e82" backgroundColor="#27aeaeae" transparent="1">
++                      <convert type="ServicePosition">Position</convert>
++              </widget>
++              <!-- Progressbar (movie position)-->
++              <ePixmap position="240,75" size="563,18" pixmap="Vu_HD/icons/Mediaplayerbar_gray.png" alphatest="blend" />              
++              <ePixmap position="235,75" size="5,18" pixmap="Vu_HD/icons/Mediaplayerbar_purple.png" alphatest="blend" />              
++              <widget source="session.CurrentService" render="PositionGauge" position="239,68" size="563,25" zPosition="2" pointer="Vu_HD/icons/Mediaplayerbar_purple.png:563,0" transparent="1">
++                      <convert type="ServicePosition">Gauge</convert>
++              </widget>
++              <!-- Remaining time -->
++              <widget source="session.CurrentService" render="Label" position="700,95" size="95,20" font="Regular;18" halign="right" valign="center" foregroundColor="#3c3c3c" backgroundColor="#27aeaeae" transparent="1">
++                      <convert type="ServicePosition">Remaining</convert>
++              </widget>
++      </screen>
++
++      <!-- Vu_HD skin (Vu_HD.xml)  -->
++      <!-- About screen -->
++      <screen name="About" position="209,48" size="865,623" title="Serviceinfo" flags="wfNoBorder" backgroundColor="transparent">     
++              <ePixmap pixmap="Vu_HD/Bg_EPG_list.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_title_Info.png" position="32,41" size="40,40" alphatest="blend"  transparent="1" />
++              <eLabel text="About" position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
++              <widget source="EnigmaVersion" render="Label" position="110,140" size="600,36" foregroundColor="#3c3c3c" backgroundColor="#27b5b9bd" font="Regular;22" transparent="1" />
++              <widget source="ImageVersion" render="Label" position="110,176" size="600,36" foregroundColor="#3c3c3c" backgroundColor="#27b5b9bd" font="Regular;22" transparent="1" />
++              <widget source="FPVersion" render="Label" position="110,212" size="600,36" foregroundColor="#3c3c3c" backgroundColor="#27b5b9bd" font="Regular;22" transparent="1" />
++              <widget source="TunerHeader" render="Label" position="110,248" size="600,36" foregroundColor="#3c3c3c" backgroundColor="#27b5b9bd" font="Regular;22" transparent="1" />
++              <widget source="Tuner0" render="Label" position="110,284" size="600,36" foregroundColor="#3c3c3c" backgroundColor="#27b5b9bd" font="Regular;22" transparent="1" />
++              <widget source="Tuner1" render="Label" position="110,320" size="600,36" foregroundColor="#3c3c3c" backgroundColor="#27b5b9bd" font="Regular;22" transparent="1" />
++              <widget source="Tuner2" render="Label" position="110,356" size="600,36" foregroundColor="#3c3c3c" backgroundColor="#27b5b9bd" font="Regular;22" transparent="1" />
++              <widget source="Tuner3" render="Label" position="110,392" size="600,36" foregroundColor="#3c3c3c" backgroundColor="#27b5b9bd" font="Regular;22" transparent="1" />
++              <widget source="HDDHeader" render="Label" position="110,428" size="600,36" foregroundColor="#3c3c3c" backgroundColor="#27b5b9bd" font="Regular;22" transparent="1" />
++              <widget source="hddA" render="Label" position="110,467" size="600,72" foregroundColor="#3c3c3c" backgroundColor="#27b5b9bd" font="Regular;22" transparent="1" />
++      </screen>
++      <!-- Adapter setup -->
++      <screen name="AdapterSetup" position="209,48" size="865,623" title="Network Setup" flags="wfNoBorder" backgroundColor="transparent">    
++              <ePixmap pixmap="Vu_HD/Bg_EPG_view.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_title_Setup.png" position="32,41" size="40,40" alphatest="blend"  transparent="1" />
++              <eLabel text="Network Setup" position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
++              <ePixmap pixmap="Vu_HD/icons/clock.png" position="750,55" zPosition="1" size="20,20" alphatest="blend" />
++              <widget source="global.CurrentTime" render="Label" position="770,57" zPosition="1" size="50,20" font="Regular;20" foregroundColor="#1c1c1c" backgroundColor="#27d9dee2" halign="right" transparent="1">
++                      <convert type="ClockToText">Format:%H:%M</convert>
++              </widget>
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="45,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/button_off.png" position="240,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/button_off.png" position="435,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/blue.png" position="630,98" size="25,25" alphatest="blend" />
++              <widget source="key_red" render="Label" position="66,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="key_blue" render="Label" position="668,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="config" position="160,140" transparent="1" backgroundColor="#27d9dee2" size="500,125" scrollbarMode="showOnDemand" />     
++              <eLabel text=" " position="150,270" zPosition="1" size="550,2" backgroundColor="#8c8c8c"/>
++              <widget source="DNS1text" render="Label" position="160,275" size="190,21" zPosition="1" font="Regular;19" transparent="1" backgroundColor="#27d9dee2"/>
++              <widget source="DNS2text" render="Label" position="160,305" size="190,21" zPosition="1" font="Regular;19" transparent="1" backgroundColor="#27d9dee2"/>
++              <widget source="DNS1" render="Label" position="530,275" size="120,21" zPosition="1" font="Regular;17" transparent="1" backgroundColor="#27d9dee2"/>
++              <widget source="DNS2" render="Label" position="530,305" size="120,21" zPosition="1" font="Regular;17" transparent="1" backgroundColor="#27d9dee2"/>
++              <eLabel text=" " position="150,330" zPosition="1" size="550,2" backgroundColor="#8c8c8c"/>
++              
++              <widget source="introduction" render="Label" position="160,335" size="440,20" font="Regular;19" halign="center" transparent="1" backgroundColor="#27d9dee2"/>
++              <widget source="IPtext" render="Label" position="250,370" size="190,21" zPosition="1" font="Regular;19" transparent="1" backgroundColor="#27d9dee2"/>
++              <widget source="Netmasktext" render="Label" position="250,395" size="190,21" zPosition="1" font="Regular;19" transparent="1" backgroundColor="#27d9dee2"/>
++              <widget source="Gatewaytext" render="Label" position="250,420" size="190,21" zPosition="1" font="Regular;19" transparent="1" backgroundColor="#27d9dee2"/>
++              <widget source="IP" render="Label" position="450,370" size="240,21" zPosition="1" font="Regular;19" transparent="1" backgroundColor="#27d9dee2"/>
++              <widget source="Mask" render="Label" position="450,395" size="240,21" zPosition="1" font="Regular;19" transparent="1" backgroundColor="#27d9dee2"/>
++              <widget source="Gateway" render="Label" position="450,420" size="240,21" zPosition="1" font="Regular;19" transparent="1" backgroundColor="#27d9dee2"/>
++              
++              <widget source="Adaptertext" render="Label" position="200,460" size="100,21" zPosition="10" foregroundColor="#3c3c3c" backgroundColor="#27d9dee2" font="Regular;19" transparent="1" />
++              <widget source="Adapter" render="Label" position="290,460" size="300,21" zPosition="10" foregroundColor="#3c3c3c" backgroundColor="#27d9dee2" font="Regular;19" transparent="1" />
++              <widget source="introduction2" render="Label" position="260,500" size="300,20" zPosition="10" foregroundColor="#3c3c3c" backgroundColor="#27d9dee2" font="Regular;21" halign="center" transparent="1" />
++              <widget name="VKeyIcon" pixmap="Vu_HD/buttons/key_text.png" position="160,510" zPosition="10" size="35,25" transparent="1" alphatest="on" />
++              <widget name="HelpWindow" pixmap="Vu_HD/vkey_icon.png" position="310,445" zPosition="1" size="1,1" transparent="1" alphatest="on" />
++      </screen>
++      <screen name="AdapterSetupConfiguration" position="209,48" size="865,623" title="Network Configuration..." flags="wfNoBorder" backgroundColor="transparent">    
++              <ePixmap pixmap="Vu_HD/Bg_EPG_view.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_title_Setup.png" position="32,41" size="40,40" alphatest="blend"  transparent="1" />
++              <eLabel text="Network Configuration..." position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
++              <ePixmap pixmap="Vu_HD/icons/clock.png" position="750,55" zPosition="1" size="20,20" alphatest="blend" />
++              <widget source="global.CurrentTime" render="Label" position="770,57" zPosition="1" size="50,20" font="Regular;20" foregroundColor="#1c1c1c" backgroundColor="#27d9dee2" halign="right" transparent="1">
++                      <convert type="ClockToText">Format:%H:%M</convert>
++              </widget>
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="45,98" size="25,25" alphatest="blend" />
++              <widget source="key_red" render="Label" position="66,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <ePixmap pixmap="Vu_HD/border_menu.png" position="120,140" zPosition="-1" size="342,358" transparent="1" alphatest="blend" />
++              <widget name="menulist" position="130,150" size="322,338" transparent="1" backgroundColor="#27d9dee2" zPosition="10" scrollbarMode="showOnDemand" />
++              <widget source="description" render="Label" position="500,140" size="280,360" font="Regular;19" halign="center" valign="center" backgroundColor="#c5c9cc" transparent="1"/>
++              <widget source="IFtext" render="Label" position="170,520" size="100,22" zPosition="10" foregroundColor="#3c3c3c" backgroundColor="#27aeaeae" font="Regular;20" transparent="1" />
++              <widget source="IF" render="Label" position="280,520" size="300,22" zPosition="10" foregroundColor="#3c3c3c" backgroundColor="#27aeaeae" font="Regular;20" transparent="1" />
++              <widget source="Statustext" render="Label" position="500,100" size="150,25" zPosition="10" font="Regular;20" halign="center" valign="right" backgroundColor="#c5c9cc" foregroundColor="#1c1c1c" transparent="1"/>
++              <widget name="statuspic" pixmaps="Vu_HD/buttons/green.png,Vu_HD/buttons/button_off.png" position="630,98" zPosition="10" size="25,25" transparent="1" alphatest="blend"/>
++      </screen>
++      <!-- Audio selection -->
++      <screen name="AudioSelection" position="center,center" size="560,330" title="Audio">
++              <widget name="config" position="50,10" size="500,110" scrollbarMode="showOnDemand" />
++              
++              <widget source="key_red" render="Pixmap" pixmap="Vu_HD/buttons/red.png" position="10,10" size="25,25" alphatest="on">
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="key_green" render="Pixmap" pixmap="Vu_HD/buttons/green.png" position="10,35" size="25,25" alphatest="on">
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="key_yellow" render="Pixmap" pixmap="Vu_HD/buttons/yellow.png" position="10,60" size="25,25" alphatest="on">
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="key_blue" render="Pixmap" pixmap="Vu_HD/buttons/blue.png" position="10,85" size="25,25" alphatest="on">
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              
++              <widget source="streams" render="Listbox" scrollbarMode="showOnDemand" position="10,120" size="540,200" zPosition="3" transparent="1" >
++                      <convert type="TemplatedMultiContent">
++                              {"templates":
++                                      {"default": (25, [ 
++                                              MultiContentEntryText(pos = (0, 0),   size = (35, 25),  font = 0, flags = RT_HALIGN_LEFT,  text = 1), # key,
++                                              MultiContentEntryText(pos = (40, 0),  size = (60, 25),  font = 0, flags = RT_HALIGN_LEFT,  text = 2), # number,
++                                              MultiContentEntryText(pos = (110, 0), size = (120, 25), font = 0, flags = RT_HALIGN_LEFT,  text = 3), # description,
++                                              MultiContentEntryText(pos = (240, 0), size = (200, 25), font = 0, flags = RT_HALIGN_LEFT,  text = 4), # language,
++                                              MultiContentEntryText(pos = (450, 4), size = (90, 25),  font = 1, flags = RT_HALIGN_RIGHT, text = 5), # selection,
++                                      ], True, "showNever"),
++                                      "notselected": (25, [ 
++                                              MultiContentEntryText(pos = (0, 0),   size = (35, 25),  font = 0, flags = RT_HALIGN_LEFT,  text = 1), # key,
++                                              MultiContentEntryText(pos = (40, 0),  size = (60, 25),  font = 0, flags = RT_HALIGN_LEFT,  text = 2), # number,
++                                              MultiContentEntryText(pos = (110, 0), size = (120, 25), font = 0, flags = RT_HALIGN_LEFT,  text = 3), # description,
++                                              MultiContentEntryText(pos = (240, 0), size = (200, 25), font = 0, flags = RT_HALIGN_LEFT,  text = 4), # language,
++                                              MultiContentEntryText(pos = (450, 4), size = (90, 25),  font = 1, flags = RT_HALIGN_RIGHT, text = 5), # selection,
++                                      ], False, "showNever")
++                                      },
++                              "fonts": [gFont("Regular", 20), gFont("Regular", 16)],
++                              "itemHeight": 25
++                              }
++                      </convert>
++              </widget>
++      </screen>
++      <!-- Bouquet selector -->
++      <screen name="BouquetSelector" position="center,center" size="300,240" title="Choose bouquet">
++              <widget name="menu" position="10,10" transparent="1" size="290,225" scrollbarMode="showOnDemand" />
++      </screen>
++      <!-- Channel context menu -->
++      <screen name="ChannelContextMenu" position="0,0" size="1280,720" zPosition="2" title="Channellist menu" flags="wfNoBorder" backgroundColor="transparent">
++              <ePixmap pixmap="Vu_HD/Bg_Subtitle.png" position="280,90" size="520,538" zPosition="-1" alphatest="on" />
++              <eLabel text="Channellist menu" position="349,135" size="400,32" font="Semiboldit;32" foregroundColor="#4c4c4c" backgroundColor="#27b5b9bd" transparent="1" />
++              <widget name="menu" position="295,173" itemHeight="42" selectionPixmap="Vu_HD/buttons/FocusBar_H42.png" transparent="1" zPosition="1" size="490,420" scrollbarMode="showOnDemand" />
++      </screen>
++      <!-- Channel selection - TV -->
++      <screen name="ChannelSelection" position="145, 55" size="990,610" flags="wfNoBorder" backgroundColor="transparent">
++              <ePixmap pixmap="Vu_HD/Bg_List.png" position="0,0" size="990,610" zPosition="-1" alphatest="on"  transparent="1" />
++              <ePixmap pixmap="Vu_HD/icons/ico_Chlist_title.png" position="44,37" size="38,34" alphatest="blend"  transparent="1" />
++              <widget source="Title" render="Label" position="95,40" size="700,32" zPosition="3" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27d8dee2" transparent="1" />
++<!--          <widget name="etitle" position="95,43" size="450,32" font="Semiboldit;32" halign="left" foregroundColor="#5d5d5d" backgroundColor="#27d8dee2" transparent="1" />-->
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="44,82" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="271,82" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/yellow.png" position="498,82" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/blue.png" position="725,82" size="25,25" alphatest="blend" />
++              <widget name="key_red" position="89,84" zPosition="1" size="182,20" font="Regular;20" halign="left" valign="center" foregroundColor="#1c1c1c" backgroundColor="#27ebebeb" transparent="1" />
++              <widget name="key_green" position="316,84" zPosition="1" size="182,20" font="Regular;20" halign="left" valign="center" foregroundColor="#1c1c1c" backgroundColor="#27ebebeb" transparent="1" />
++              <widget name="key_yellow" position="543,84" zPosition="1" size="182,20" font="Regular;20" halign="left" valign="center" foregroundColor="#1c1c1c" backgroundColor="#27ebebeb" transparent="1" />
++              <widget name="key_blue" position="770,84" zPosition="1" size="182,20" font="Regular;20" halign="left" valign="center" foregroundColor="#1c1c1c" backgroundColor="#27ebebeb" transparent="1" />
++              <widget name="list" position="30,127" size="615,462" zPosition="3" scrollbarMode="showOnDemand" foregroundColor="#1c1c1c" backgroundColor="#27ebebeb" selectionPixmap="Vu_HD/buttons/FocusBar_H42.png" foregroundColorServiceNotAvail="#2c2c2c" serviceItemHeight="42" serviceNumberFont="Regular;24" serviceNameFont="Regular;24" serviceInfoFont="Semibold;21" transparent="1" />
++              <eLabel text=" " backgroundColor="#9c9c9c" position="655,127" size="2,450" />
++              <widget source="ServiceEvent" render="Label" position="670,130" zPosition="1" size="300,24" foregroundColor="#07255d" backgroundColor="#27d8dee2" font="Semibold;24" noWrap="1" transparent="1">
++                      <convert type="EventName">Name</convert>
++              </widget>
++              <ePixmap pixmap="Vu_HD/icons/clock.png" position="880,50" zPosition="1" size="20,20" alphatest="blend" />
++              <widget source="global.CurrentTime" render="Label" position="900,52" zPosition="1" size="50,20" font="Regular;20" foregroundColor="#1c1c1c" backgroundColor="#27d8dee2" halign="right" transparent="1">
++                      <convert type="ClockToText"></convert>
++              </widget>
++              <widget source="ServiceEvent" render="Label" position="670,160" zPosition="1" size="300,24" font="Regular;24" foregroundColor="#07255d" backgroundColor="#27d8dee2" halign="left" noWrap="1" transparent="1">
++                      <convert type="ServiceName">Name</convert>
++              </widget>
++              <widget source="ServiceEvent" render="Label" position="670,190" zPosition="1" size="50,22" font="Regular;20" foregroundColor="#07255d" backgroundColor="#27d8dee2"  transparent="1">
++                      <convert type="EventTime">StartTime</convert>
++                      <convert type="ClockToText"></convert>
++              </widget>
++              <widget source="ServiceEvent" render="Label" position="725,190" zPosition="1" size="70,22" font="Regular;20" foregroundColor="#07255d" backgroundColor="#27d8dee2"  transparent="1">
++                      <convert type="EventTime">EndTime</convert>
++                      <convert type="ClockToText">Format:- %H:%M</convert>
++              </widget>
++              <widget source="ServiceEvent" render="Progress" position="835,195" zPosition="1" pixmap="Vu_HD/progress_medium.png" size="124,10" backgroundColor="#ffffff" >
++                      <convert type="EventTime">Progress</convert>
++              </widget>
++              <widget source="ServiceEvent" render="Label" position="670,220" zPosition="1" size="300,360" font="Regular;20" foregroundColor="#273c3c3c" backgroundColor="#27d8dee2"  transparent="1">
++                      <convert type="EventName">ExtendedDescription</convert>
++              </widget>
++      </screen>
++      <!-- Channel selection - Radio -->
++      <screen name="ChannelSelectionRadio" position="145, 55" size="990,610" zPosition="-10" flags="wfNoBorder" backgroundColor="transparent">
++              <ePixmap pixmap="Vu_HD/Bg_List.png" position="0,0" size="990,610" zPosition="-10" alphatest="on"  transparent="1" />
++              <ePixmap pixmap="Vu_HD/icons/ico_Radio_title.png" position="44,37" size="38,34" alphatest="blend"  transparent="1" />
++              <widget source="Title" render="Label" position="95,40" size="700,32" zPosition="3" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27d8dee2" transparent="1" />
++<!--          <widget name="etitle" position="95,43" size="450,32" font="Semiboldit;32" halign="left" foregroundColor="#5d5d5d" backgroundColor="#27d8dee2" transparent="1" />-->
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="44,82" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="271,82" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/yellow.png" position="498,82" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/blue.png" position="725,82" size="25,25" alphatest="blend" />
++              <widget name="key_red" position="89,84" zPosition="1" size="182,20" font="Regular;20" halign="left" valign="center" foregroundColor="#1c1c1c" backgroundColor="#27ebebeb" transparent="1" />
++              <widget name="key_green" position="316,84" zPosition="1" size="182,20" font="Regular;20" halign="left" valign="center" foregroundColor="#1c1c1c" backgroundColor="#27ebebeb" transparent="1" />
++              <widget name="key_yellow" position="543,84" zPosition="1" size="182,20" font="Regular;20" halign="left" valign="center" foregroundColor="#1c1c1c" backgroundColor="#27ebebeb" transparent="1" />
++              <widget name="key_blue" position="770,84" zPosition="1" size="182,20" font="Regular;20" halign="left" valign="center" foregroundColor="#1c1c1c" backgroundColor="#27ebebeb" transparent="1" />
++              <widget name="list" position="30,127" size="615,462" zPosition="3" scrollbarMode="showOnDemand" foregroundColor="#271c1c1c" backgroundColor="#27ebebeb" selectionPixmap="Vu_HD/buttons/FocusBar_H42.png" foregroundColorServiceNotAvail="#6c6c6c" serviceItemHeight="42" serviceNumberFont="Semibold;24" serviceNameFont="Semibold;24" serviceInfoFont="Semibold;21" transparent="1" />
++              <eLabel text=" " backgroundColor="#9c9c9c" position="655,127" size="2,450" />
++              <ePixmap pixmap="Vu_HD/icons/clock.png" position="880,50" zPosition="1" size="20,20" alphatest="blend" />
++              <widget source="global.CurrentTime" render="Label" position="900,52" zPosition="1" size="50,20" font="Regular;20" foregroundColor="#1c1c1c" backgroundColor="#27d8dee2" halign="right" transparent="1">
++                      <convert type="ClockToText"></convert>
++              </widget>
++      </screen>
++      <!-- Choice box -->
++      <screen name="ChoiceBox" position="130,100" size="550,400" title="Input">
++              <widget name="text" position="10,10" size="550,25" font="Regular;22" transparent="1" />
++              <widget name="list" position="0,30" size="550,335" scrollbarMode="showOnDemand" transparent="1" />
++              <applet type="onLayoutFinish">
++# this should be factored out into some helper code, but currently demonstrates applets.
++from enigma import eSize, ePoint
++
++orgwidth = self.instance.size().width()
++orgpos = self.instance.position()
++textsize = self[&quot;text&quot;].getSize()
++
++# y size still must be fixed in font stuff...
++textsize = (textsize[0] + 80, textsize[1] + 80)
++count = len(self.list)
++if count &gt; 10:
++      count = 10
++offset = 25 * count
++wsizex = textsize[0] + 80
++wsizey = textsize[1] + offset + 10
++
++if (640 &gt; wsizex):
++      wsizex = 640
++wsize = (wsizex, wsizey)
++
++# resize
++self.instance.resize(eSize(*wsize))
++
++# resize label
++self[&quot;text&quot;].instance.resize(eSize(*textsize))
++
++# move list
++listsize = (wsizex - 20, 25 * count)
++self[&quot;list&quot;].instance.move(ePoint(10, textsize[1]))
++self[&quot;list&quot;].instance.resize(eSize(*listsize))
++
++# center window
++newwidth = wsize[0]
++self.instance.move(ePoint((1280-wsizex)/2, (720-wsizey)/(count &gt; 7 and 2 or 3)))
++
++              </applet>
++      </screen>
++
++      <!-- Common interface -->
++      <screen name="MMIDialog" position="center,center" size="450,270">
++              <widget name="title" position="10,10" size="430,25" font="Regular;23" />
++              <widget name="subtitle" position="10,35" size="430,25" font="Regular;23" />
++              <widget name="entries" position="10,70" size="430,150" scrollbarMode="showOnDemand" />
++              <widget name="bottom" position="10,230" size="430,25" font="Regular;23" />
++      </screen>
++      <!-- Common interface - selection -->
++      <screen name="CiSelection" position="center,center" size="440,160" title="Common Interface">
++              <widget name="text" position="10,10" size="430,25" font="Regular;23" />
++              <widget name="entries" position="10,55" size="420,100" scrollbarMode="showOnDemand" />
++      </screen>
++      <!-- Console -->
++      <screen name="Console" position="center,center" size="900,500" title="Command execution...">
++              <widget name="text" position="10,10" size="880,480" foregroundColor="#3c3c3c" font="Console;14" />
++      </screen>
++      <!-- Clock display -->
++      <screen name="clockDisplay" position="300,120" size="300,300">
++              <widget name="okbutton" position="10,10" size="280,40" />
++              <widget name="title" position="10,120" size="280,50" />
++              <widget name="theClock" position="10,60" size="280,50" />
++      </screen>
++      <!-- Config OSD -->
++      <screen name="configOSD" position="130,120" size="460,350" title="OSD Settings">
++              <widget name="okbutton" position="20,270" size="205,40" />
++              <widget name="txt_alpha" position="20,20" size="110,20" />
++              <widget name="sld_alpha" position="150,20" size="290,20" />
++              <widget name="txt_brightness" position="20,60" size="120,20" />
++              <widget name="sld_brightness" position="150,20" size="290,20" />
++              <widget name="txt_gamma" position="20,100" size="120,20" />
++              <widget name="sld_gamma" position="150,100" size="290,20" />
++      </screen>
++      <!-- Config test -->
++      <screen name="configTest" position="center,center" size="300,300" title="config menu">
++              <widget name="config" position="10,30" size="420,220" />
++      </screen>
++      <!-- Default wizard -->
++      <screen name="DefaultWizard" position="0,0" size="1280,720" title="Welcome..." flags="wfNoBorder" >
++                      <widget name="text" position="400,100" size="550,270" font="Regular;23" />
++                      <widget source="list" render="Listbox" transparent="1" position="150,300" size="600,300" scrollbarMode="showOnDemand" >
++                              <convert type="StringList" />
++                      </widget>
++                      <ePixmap pixmap="Vu_HD/buttons/red.png" position="150,250" size="25,25" alphatest="blend" />
++                      <widget name="languagetext" position="200,253" size="120,30" font="Regular;18" />
++                      <widget name="config" position="300,300" zPosition="1" size="400,300" transparent="1" scrollbarMode="showOnDemand" />            
++                      <widget name="rc" pixmap="Vu_HD/rc.png" position="950,150" zPosition="10" size="154,500" transparent="1" alphatest="blend"/>
++                      <widget name="arrowdown" pixmap="Vu_HD/arrowdown.png" position="-100,-100" zPosition="11" size="37,70" transparent="1" alphatest="blend"/>
++                      <widget name="arrowup" pixmap="Vu_HD/arrowup.png" position="-100,-100" zPosition="11" size="37,70" transparent="1" alphatest="blend"/>
++                      <widget name="arrowup2" pixmap="Vu_HD/arrowup.png" position="-100,-100" zPosition="11" size="37,70" transparent="1" alphatest="blend"/>
++      </screen>
++      <screen name="DefaultSatLists" position="0,0" size="1280,720" title="Welcome..." flags="wfNoBorder" >
++                      <widget name="text" position="300,100" size="650,270" font="Regular;23" />
++                      <widget source="list" render="Listbox" transparent="1" position="150,300" size="600,300" scrollbarMode="showOnDemand" >
++                              <convert type="StringList" />
++                      </widget>
++                      <ePixmap pixmap="Vu_HD/buttons/red.png" position="150,250" size="25,25" alphatest="blend" />
++                      <widget name="languagetext" position="200,253" size="120,30" font="Regular;18" />
++                      <widget name="config" position="150,300" zPosition="1" size="600,300" transparent="1" scrollbarMode="showOnDemand" />            
++                      <widget name="rc" pixmap="Vu_HD/rc.png" position="950,150" zPosition="10" size="154,500" transparent="1" alphatest="blend"/>
++                      <widget name="arrowdown" pixmap="Vu_HD/arrowdown.png" position="-100,-100" zPosition="11" size="37,70" transparent="1" alphatest="blend"/>
++                      <widget name="arrowup" pixmap="Vu_HD/arrowup.png" position="-100,-100" zPosition="11" size="37,70" transparent="1" alphatest="blend"/>
++                      <widget name="arrowup2" pixmap="Vu_HD/arrowup.png" position="-100,-100" zPosition="11" size="37,70" transparent="1" alphatest="blend"/>
++      </screen>
++      <screen name="DreamPackageWizard" position="0,0" size="1280,720" title="Welcome..." flags="wfNoBorder" >
++                      <widget name="text" position="300,100" size="650,270" font="Regular;23" />
++                      <widget source="list" render="Listbox" transparent="1" position="150,300" size="600,300" scrollbarMode="showOnDemand" >
++                              <convert type="StringList" />
++                      </widget>
++                      <ePixmap pixmap="Vu_HD/buttons/red.png" position="150,250" size="25,25" alphatest="blend" />
++                      <widget name="languagetext" position="200,253" size="120,30" font="Regular;18" />
++                      <widget name="config" position="150,300" zPosition="1" size="600,300" transparent="1" scrollbarMode="showOnDemand" />            
++                      <widget name="rc" pixmap="Vu_HD/rc.png" position="950,150" zPosition="10" size="154,500" transparent="1" alphatest="blend"/>
++                      <widget name="arrowdown" pixmap="Vu_HD/arrowdown.png" position="-100,-100" zPosition="11" size="37,70" transparent="1" alphatest="blend"/>
++                      <widget name="arrowup" pixmap="Vu_HD/arrowup.png" position="-100,-100" zPosition="11" size="37,70" transparent="1" alphatest="blend"/>
++                      <widget name="arrowup2" pixmap="Vu_HD/arrowup.png" position="-100,-100" zPosition="11" size="37,70" transparent="1" alphatest="blend"/>
++      </screen>
++      <!-- Dish -->
++      <screen name="Dish" flags="wfNoBorder" position="300,110" size="130,160" title="Dish" zPosition="-1" backgroundColor="transparent">
++              <widget name="Dishpixmap" pixmap="Vu_HD/icons/dish.png" position="0,0" size="130,160" alphatest="off" />
++      </screen>
++      <!-- unhandled key pressed -->
++      <screen name="UnhandledKey" flags="wfNoBorder" position="1110,50" size="90,80" title="UnhandledKey" zPosition="100" backgroundColor="transparent">
++              <widget name="UnhandledKeyPixmap" pixmap="Vu_HD/unhandled-key.png" position="0,0" size="90,80" alphatest="off" />
++      </screen>
++      <!-- EPG Selection - Single -->
++      <screen name="EPGSelection" position="209,48" size="865,624" title="EPG Selection" flags="wfNoBorder" backgroundColor="transparent">    
++              <ePixmap pixmap="Vu_HD/Bg_EPG_list.png" position="0,0" size="865,624" zPosition="-1" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_EPG_title.png" position="34,45" size="45,36" alphatest="blend"  transparent="1" />
++              <eLabel text="EPG Selection" position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
++              <ePixmap pixmap="Vu_HD/icons/clock.png" position="750,55" zPosition="1" size="20,20" alphatest="blend" />
++              <widget source="global.CurrentTime" render="Label" position="770,57" zPosition="1" size="50,20" font="Regular;20" foregroundColor="#1c1c1c" halign="right" backgroundColor="#27b5b9bd" transparent="1">
++                      <convert type="ClockToText">Format:%H:%M</convert>
++              </widget>
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="45,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="240,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/yellow.png" position="435,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/blue.png" position="630,98" size="25,25" alphatest="blend" />
++              <widget name="key_red" position="66,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="key_green" position="268,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="key_yellow" position="463,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="key_blue" position="658,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="list" position="40,130" size="800,468" itemHeight="36" selectionPixmap="Vu_HD/buttons/FocusBar_H36.png" transparent="1" scrollbarMode="showOnDemand" />
++      </screen>
++      <!-- EPG Selection - Multi -->
++      <screen name="EPGSelectionMulti" position="209,48" size="865,624" title="EPG Selection" flags="wfNoBorder" backgroundColor="transparent">       
++              <ePixmap pixmap="Vu_HD/Bg_EPG_list.png" position="0,0" size="865,624" zPosition="-1" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_EPG_title.png" position="34,45" size="45,36" alphatest="blend"  transparent="1" />
++              <eLabel text="EPG Selection Multi" position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
++              <ePixmap pixmap="Vu_HD/icons/clock.png" position="750,55" zPosition="1" size="20,20" alphatest="blend" />
++              <widget source="global.CurrentTime" render="Label" position="770,57" zPosition="1" size="50,20" font="Regular;20" foregroundColor="#1c1c1c" backgroundColor="#27b5b9bd" halign="right" transparent="1">
++                      <convert type="ClockToText">Format:%H:%M</convert>
++              </widget>
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="45,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="240,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/yellow.png" position="435,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/blue.png" position="630,98" size="25,25" alphatest="blend" />
++              <widget name="key_red" position="66,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="key_green" position="268,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="key_yellow" position="463,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="key_blue" position="658,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="now_button_sel" pixmap="Vu_HD/epg_now.png" position="50,132" zPosition="1" size="463,34" alphatest="on" />
++              <widget name="next_button_sel" pixmap="Vu_HD/epg_next.png" position="50,132" zPosition="1" size="463,34" alphatest="on" />
++              <widget name="more_button_sel" pixmap="Vu_HD/epg_more.png" position="50,132" zPosition="1" size="463,34" alphatest="on" />
++              <widget name="now_text" position="50,132" zPosition="2" size="140,34" text="NOW" font="Regular;20" halign="center" valign="center" foregroundColor="#efefef" backgroundColor="#3c3c3c" transparent="1" />
++              <widget name="next_text" position="211,132" zPosition="2" size="140,34" text="NEXT" font="Regular;20" halign="center" valign="center" foregroundColor="#efefef" backgroundColor="#3c3c3c" transparent="1" />
++              <widget name="more_text" position="370,132" zPosition="2" size="140,34" text="MORE" font="Regular;20" halign="center" valign="center" foregroundColor="#efefef" backgroundColor="#3c3c3c" transparent="1" />
++              <widget name="date" position="600,130" size="110,35" font="Regular;18" foregroundColor="#3d3d3d" backgroundColor="#27d9dee2" valign="center" halign="right" transparent="1"/>
++              <widget name="list" position="46,166" size="779,396" itemHeight="36" selectionPixmap="Vu_HD/buttons/FocusBar_H36.png" transparent="1" scrollbarMode="showOnDemand" />
++      </screen>
++      <!-- Eventview -->
++      <screen name="EventView" position="209,48" size="865,623" title="Eventview" flags="wfNoBorder" backgroundColor="transparent">   
++              <ePixmap pixmap="Vu_HD/Bg_EPG_view.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_EPG_title.png" position="34,45" size="45,36" alphatest="blend"  transparent="1" />
++              <eLabel text="Eventview" position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
++              <ePixmap pixmap="Vu_HD/icons/clock.png" position="750,55" zPosition="1" size="20,20" alphatest="blend" />
++              <widget source="global.CurrentTime" render="Label" position="770,57" zPosition="1" size="50,20" font="Regular;20" foregroundColor="#1c1c1c" halign="right" backgroundColor="#27b5b9bd" transparent="1">
++                      <convert type="ClockToText">Format:%H:%M</convert>
++              </widget>
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="45,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="240,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/yellow.png" position="435,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/blue.png" position="630,98" size="25,25" alphatest="blend" />
++              <widget name="key_red" position="66,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="key_green" position="268,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="key_yellow" position="463,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="key_blue" position="658,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="epg_description" position="40,190" size="800,418" font="Regular;22" foregroundColor="#1c1c1c" backgroundColor="#27d9dee2" transparent="1"/>
++              <widget name="datetime" position="600,150" size="130,25" font="Regular;22" foregroundColor="#1c1c1c" backgroundColor="#27d9dee2" transparent="1"/>
++              <widget name="duration" position="740,150" size="100,25" font="Regular;22" foregroundColor="#1c1c1c" backgroundColor="#27d9dee2" transparent="1"/>
++              <widget name="channel" position="40,150" size="300,25" font="Semiboldit;24" foregroundColor="#1c1c1c" backgroundColor="#27d9dee2" halign="left"  transparent="1"/>
++      </screen>
++      <!-- Graphical Multi EPG -->
++      <screen name="GraphMultiEPG" position="209,48" size="865,624" title="Electronic Program Guide" flags="wfNoBorder" backgroundColor="transparent">        
++              <ePixmap pixmap="Vu_HD/Bg_EPG_view.png" position="0,0" size="865,624" zPosition="-1" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_EPG_title.png" position="34,45" size="45,36" alphatest="blend"  transparent="1" />
++              <eLabel text="Electronic Program Guide" position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
++              <ePixmap pixmap="Vu_HD/icons/clock.png" position="750,55" zPosition="1" size="20,20" alphatest="blend" />
++              <widget source="global.CurrentTime" render="Label" position="770,57" zPosition="1" size="50,20" font="Regular;20" foregroundColor="#1c1c1c" backgroundColor="#27d9dee2" halign="right" transparent="1">
++                      <convert type="ClockToText">Format:%H:%M</convert>
++              </widget>
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="45,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="240,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/yellow.png" position="435,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/blue.png" position="630,98" size="25,25" alphatest="blend" />
++              <widget name="key_red" position="66,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="key_green" position="268,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++
++              <eLabel position="30,160" zPosition="-1" size="152,324" backgroundColor="#278c8c8c" />
++              <widget name="timeline_text" position="0,135" size="830,25" backgroundColor="#27d9dee2" transparent="1"/>
++              <widget name="list" position="30,160" size="800,324" transparent="1" backgroundColor="#27d9dee2" backgroundColorSelected="#279c9c9c" EntryBorderColor="#27727f98" EntryBackgroundColor="#27727f98" EntryBackgroundColorSelected="#27366ee0" scrollbarMode="showOnDemand" />
++              <eLabel position="30,160" size="773,1" backgroundColor="#6c6c6c" />
++              <eLabel position="30,214" size="773,1" backgroundColor="#6c6c6c" />
++              <eLabel position="30,268" size="773,1" backgroundColor="#6c6c6c" />
++              <eLabel position="30,322" size="773,1" backgroundColor="#6c6c6c" />
++              <eLabel position="30,376" size="773,1" backgroundColor="#6c6c6c" />
++              <eLabel position="30,430" size="773,1" backgroundColor="#6c6c6c" />
++              <eLabel position="30,484" size="773,1" backgroundColor="#6c6c6c" />
++              <widget name="timeline0" position="85,160" zPosition="1" size="1,324" pixmap="Vu_HD/timeline.png" />
++              <widget name="timeline1" position="85,160" zPosition="1" size="1,324" pixmap="Vu_HD/timeline.png" />
++              <widget name="timeline2" position="85,160" zPosition="1" size="1,324" pixmap="Vu_HD/timeline.png" />
++              <widget name="timeline3" position="85,160" zPosition="1" size="1,324" pixmap="Vu_HD/timeline.png" />
++              <widget name="timeline4" position="85,160" zPosition="1" size="1,324" pixmap="Vu_HD/timeline.png" />
++              <widget name="timeline5" position="85,160" zPosition="1" size="1,324" pixmap="Vu_HD/timeline.png" />
++              <widget name="timeline_now" position="80,160" zPosition="2" size="19,324" pixmap="Vu_HD/timeline-now.png" alphatest="on" />
++<!--
++              <ePixmap pixmap="Vu_HD/border_multiepg.png" position="80,167" zPosition="1" size="560,393" transparent="1" alphatest="on" />
++-->           
++              <widget source="Event" render="Label" position="40,495" zPosition="1" size="500,24" font="Semibold;24" backgroundColor="#27d9dee2" foregroundColor="#07255d" noWrap="1" transparent="1">
++                      <convert type="EventName">Name</convert>
++              </widget>
++              <widget source="Event" render="Label" position="700,490" zPosition="1" size="50,18" font="Regular;18" backgroundColor="#27d9dee2" transparent="1">
++                      <convert type="EventTime">StartTime</convert>
++                      <convert type="ClockToText"></convert>
++              </widget>
++              <widget source="Event" render="Label" position="750,490" zPosition="1" size="70,18" font="Regular;18" backgroundColor="#27d9dee2" transparent="1">
++                      <convert type="EventTime">EndTime</convert>
++                      <convert type="ClockToText">Format:- %H:%M</convert>
++              </widget>
++              <widget source="Event" render="Progress" position="680,510" zPosition="1" pixmap="Vu_HD/progress_medium.png" size="120,11" borderWidth="2" backgroundColor="#ffffff" borderColor="#cccccc" >
++                      <convert type="EventTime">Progress</convert>
++              </widget>
++              <widget source="Event" render="Label" position="540,490" zPosition="1" size="150,20" halign="right" font="Regular;18" noWrap="1" backgroundColor="#27d9dee2" transparent="1">
++                      <convert type="EventTime">StartTime</convert>
++                      <convert type="ClockToText">Format:(%A)</convert>
++              </widget>
++              <widget source="Event" render="Label" position="40,525" zPosition="1" size="780,72" font="Regular;20" foregroundColor="#3c3c3c" backgroundColor="#27d9dee2" transparent="1">
++                      <convert type="EventName">ExtendedDescription</convert>
++              </widget>
++      </screen>
++      <!-- Harddisk selection -->
++      <screen name="HarddiskSelection" position="100,80" size="520,538" title="Select HDD" flags="wfNoBorder" backgroundColor="transparent">  
++              <ePixmap pixmap="Vu_HD/Bg_Subtitle.png" position="0,0" size="520,538" zPosition="-1" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_title_Setup.png" position="16,36" size="40,40" alphatest="blend"  transparent="1" />
++              <eLabel text="Select HDD" position="69,45" size="400,32" font="Semiboldit;32" foregroundColor="#4c4c4c" backgroundColor="#b5b9bd" transparent="1" />
++              <widget name="hddlist" position="10,83" itemHeight="42" size="500,275" transparent="1" />
++      </screen>
++      <!-- Harddisk setup -->
++      <screen name="HarddiskSetup" position="center,center" size="420,160" title="Harddisk">
++              <widget name="model" position="20,10" size="380,25" font="Regular;23" />
++              <widget name="capacity" position="20,40" size="380,25" font="Regular;23" />
++              <widget name="bus" position="20,70" size="380,25" font="Regular;23" />
++              <widget name="initialize" pixmap="Vu_HD/buttons/red.png" position="140,110" size="25,25" alphatest="blend" />
++              <widget name="initializetext" position="165,112" size="120,20" zPosition="1" font="Regular;20" halign="center" valign="center" transparent="1" />
++      </screen>
++      <!-- Harddisk wait -->
++      <screen name="HarddiskWait" position="center,center" size="540,60">
++              <widget name="wait" position="20,10" size="500,25" font="Regular;23" />
++      </screen>
++      <!-- Help menu -->
++      <screen name="HelpMenu" position="0,0" size="1280,720" title="Menu" flags="wfNoBorder">
++              <eLabel text="help..." position="500,60" size="280,60" font="Regular;40" />
++              <widget name="list" position="100,150" size="700,456" transparent="1" scrollbarMode="showOnDemand" />
++              <widget name="rc" pixmaps="Vu_HD/rc.png,Vu_HD/rcold.png" position="950,150" zPosition="10" size="154,500" alphatest="blend" />
++              <widget name="arrowdown" pixmap="Vu_HD/arrowdown.png" position="-100,-100" zPosition="11" size="37,70" alphatest="blend" />
++              <widget name="arrowdown2" pixmap="Vu_HD/arrowdown.png" position="-100,-100" zPosition="11" size="37,70" alphatest="blend" />
++              <widget name="arrowup" pixmap="Vu_HD/arrowup.png" position="-100,-100" zPosition="11" size="37,70" alphatest="blend" />
++              <widget name="arrowup2" pixmap="Vu_HD/arrowup.png" position="-100,-100" zPosition="11" size="37,70" alphatest="blend" />
++              <widget name="long_key" position="760,660" size="250,50" font="Regular;25" halign="right" foregroundColor="yellow" />
++      </screen>
++      <!-- Image Wizard -->
++      <screen name="ImageWizard" position="0,0" size="1280,720" title="Welcome..." flags="wfNoBorder" >
++                      <widget name="text" position="400,100" size="550,270" font="Regular;23" />
++                      <widget source="list" render="Listbox" transparent="1" position="150,300" size="600,300" scrollbarMode="showOnDemand" >
++                              <convert type="StringList" />
++                      </widget>
++                      <ePixmap pixmap="Vu_HD/buttons/red.png" position="150,250" size="25,25" alphatest="blend" />
++                      <widget name="languagetext" position="200,253" size="120,30" font="Regular;18" />
++                      <widget name="config" position="300,300" zPosition="1" size="400,300" transparent="1" scrollbarMode="showOnDemand" />            
++                      <widget name="rc" pixmap="Vu_HD/rc.png" position="950,150" zPosition="10" size="154,500" transparent="1" alphatest="blend"/>
++                      <widget name="arrowdown" pixmap="Vu_HD/arrowdown.png" position="-100,-100" zPosition="11" size="37,70" transparent="1" alphatest="blend"/>
++                      <widget name="arrowup" pixmap="Vu_HD/arrowup.png" position="-100,-100" zPosition="11" size="37,70" transparent="1" alphatest="blend"/>
++                      <widget name="arrowup2" pixmap="Vu_HD/arrowup.png" position="-100,-100" zPosition="11" size="37,70" transparent="1" alphatest="blend"/>
++      </screen>
++      <!-- Inputbox -->
++      <screen name="InputBox" position="center,center" size="550,90" title="Input">
++              <widget name="text" position="10,20" size="550,25" font="Regular;23" />
++              <widget name="input" position="10,55" size="550,25" font="Regular;20" />
++      </screen>
++      <!-- IPKG -->
++      <screen name="Ipkg" position="center,center" size="550,200" title="Installing Software...">
++              <widget name="activityslider" position="0,0" size="550,5" pixmap="Vu_HD/progress_small.png" />
++              <widget name="package" position="10,30" size="550,20" font="Regular;18" />
++              <widget name="status" position="10,60" size="550,45" font="Regular;18" />
++              <widget name="slider" position="10,100" size="530,15" pixmap="Vu_HD/progress_big.png" borderWidth="2" borderColor="#cccccc" />
++      </screen>
++      <!-- Language selection -->
++      <screen name="LanguageSelection" position="center,80" size="520,538" title="Language selection" flags="wfNoBorder" backgroundColor="transparent">       
++              <ePixmap pixmap="Vu_HD/Bg_Subtitle.png" position="0,0" size="520,538" zPosition="-1" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_title_Setup.png" position="16,36" size="40,40" alphatest="blend"  transparent="1" />
++              <eLabel text="Language selection" position="69,45" size="400,32" font="Semiboldit;32" foregroundColor="#4c4c4c" backgroundColor="#27b5b9bd" transparent="1" />
++              <widget source="languages" render="Listbox" selectionPixmap="Vu_HD/buttons/FocusBar_H42.png" position="22,84" size="475,420" scrollbarMode="showOnDemand" transparent="1">
++                      <convert type="TemplatedMultiContent">
++                              {"template": [
++                                              MultiContentEntryText(pos = (80, 11), size = (360, 20), flags = RT_HALIGN_LEFT, text = 1), # index 1 is the language name,
++                                              MultiContentEntryPixmap(pos = (10, 6), size = (45, 30), png = 2), # index 2 is the pixmap
++                                      ],
++                               "fonts": [gFont("Regular", 20)],
++                               "itemHeight": 42
++                              }
++                      </convert>
++              </widget>
++      </screen>
++      <screen name="LanguageWizard" position="0,0" size="1280,720" title="Welcome..." flags="wfNoBorder" >
++                      <widget name="text" position="300,100" size="650,270" font="Regular;23" />
++                      <widget source="languages" render="Listbox" position="150,400" size="440,210" scrollbarMode="showOnDemand" transparent="1" >
++                              <convert type="TemplatedMultiContent">
++                              {"template": [
++                                              MultiContentEntryText(pos = (80, 11), size = (200, 20), flags = RT_HALIGN_LEFT, text = 1), # index 1 is the language name,
++                                              MultiContentEntryPixmap(pos = (10, 6), size = (45, 30), png = 2), # index 2 is the pixmap
++                                      ],
++                               "fonts": [gFont("Regular", 20)],
++                               "itemHeight": 42
++                              }
++                              </convert>
++                      </widget>
++                      <widget name="rc" pixmap="Vu_HD/rc.png" position="950,150" zPosition="10" size="154,500" transparent="1" alphatest="blend"/>
++                      <widget name="arrowdown" pixmap="Vu_HD/arrowdown.png" position="-100,-100" zPosition="11" size="37,70" transparent="1" alphatest="blend"/>
++                      <widget name="arrowup" pixmap="Vu_HD/arrowup.png" position="-100,-100" zPosition="11" size="37,70" transparent="1" alphatest="blend"/>
++                      <widget name="arrowup2" pixmap="Vu_HD/arrowup.png" position="-100,-100" zPosition="11" size="37,70" transparent="1" alphatest="blend"/>
++      </screen>
++      <!-- Location Box -->
++      <screen name="LocationBox" position="100,120" size="540,460" >
++              <widget name="text" position="0,2" size="540,22" font="Regular;22" />
++              <widget name="target" position="0,23" size="540,22" valign="center" font="Regular;22" />
++              <widget name="filelist" position="0,55" zPosition="1" size="540,210" scrollbarMode="showOnDemand" selectionDisabled="1" />
++              <widget name="textbook" position="0,272" size="540,22" font="Regular;22" />
++              <widget name="booklist" position="5,302" zPosition="2" size="535,100" scrollbarMode="showOnDemand" />
++              <widget name="red" position="0,415" zPosition="1" size="136,40" pixmap="Vu_HD/buttons/red.png" transparent="1" alphatest="blend" />
++              <widget name="key_red" position="20,415" zPosition="2" size="115,40" halign="center" valign="center" font="Regular;22" transparent="1" shadowColor="black" shadowOffset="-1,-1" />      
++              <widget name="green" position="135,415" zPosition="1" size="136,40" pixmap="Vu_HD/buttons/green.png" transparent="1" alphatest="blend" />
++              <widget name="key_green" position="155,415" zPosition="2" size="115,40" halign="center" valign="center" font="Regular;22" transparent="1" shadowColor="black" shadowOffset="-1,-1" />
++              <widget name="yellow" position="270,415" zPosition="1" size="136,40" pixmap="Vu_HD/buttons/yellow.png" transparent="1" alphatest="blend" />
++              <widget name="key_yellow" position="290,415" zPosition="2" size="115,40" halign="center" valign="center" font="Regular;22" transparent="1" shadowColor="black" shadowOffset="-1,-1" />
++              <widget name="blue" position="405,415" zPosition="1" size="136,40" pixmap="Vu_HD/buttons/blue.png" transparent="1" alphatest="blend" />
++              <widget name="key_blue" position="425,415" zPosition="2" size="115,40" halign="center" valign="center" font="Regular;22" transparent="1" shadowColor="black" shadowOffset="-1,-1" />                    
++      </screen>
++      <!-- Mediaplayer -->
++      <screen name="MediaPlayer" position="209,48" size="864,623" title="MediaPlayer" flags="wfNoBorder" backgroundColor="transparent">       
++              <ePixmap pixmap="Vu_HD/Bg_Media.png" zPosition="-1" position="0,0" size="864,623" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_title_Media.png" position="41,46" size="40,40" alphatest="blend"  transparent="1" />
++              <eLabel text="Media Player" position="90,55" size="250,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27d9dee2" transparent="1" />
++              <ePixmap pixmap="Vu_HD/icons/clock.png" position="750,55" zPosition="1" size="20,20" alphatest="blend" />
++              <widget source="global.CurrentTime" render="Label" position="770,57" zPosition="1" size="50,20" font="Regular;20" foregroundColor="#1c1c1c" backgroundColor="#27d9dee2" halign="right" transparent="1">
++                      <convert type="ClockToText">Format:%H:%M</convert>
++              </widget>
++              <widget name="title" position="65,108" size="600,30" font="Semiboldit;29" valign="top" foregroundColor="#ebebeb" backgroundColor="#8c8c8c" transparent="1" />
++              <ePixmap pixmap="Vu_HD/icons/clock.png" position="750,55" zPosition="1" size="20,20" alphatest="blend" />
++              <widget name="artisttext" position="70,150" size="74,22" font="Regular;20" valign="top" foregroundColor="#1c1c1c" backgroundColor="#27d9dee2"  transparent="1" />
++              <widget name="artist" position="150,150" size="339,22" font="Regular;20" valign="top" foregroundColor="#1c1c1c" backgroundColor="#27d9dee2" transparent="1" /> 
++              <widget name="albumtext" position="70,185" size="74,22" font="Regular;20" valign="top" foregroundColor="#1c1c1c" backgroundColor="#27d9dee2" transparent="1" />
++              <widget name="album" position="150,185" size="339,22" font="Regular;20" valign="top" foregroundColor="#1c1c1c" backgroundColor="#27d9dee2" transparent="1" />
++              <widget name="yeartext" position="470,185" size="74,22" font="Regular;20" valign="top" foregroundColor="#1c1c1c" backgroundColor="#27d9dee2" transparent="1" />
++              <widget name="year" position="545,185" size="150,22" font="Regular;20" valign="top" foregroundColor="#1c1c1c" backgroundColor="#27d9dee2" transparent="1" />
++              <widget name="genretext" position="470,150" size="74,22" font="Regular;20" valign="top" foregroundColor="#1c1c1c" backgroundColor="#27d9dee2" transparent="1" />
++              <widget name="genre" position="545,150" size="150,22" font="Regular;20" valign="top" foregroundColor="#1c1c1c" backgroundColor="#27d9dee2" transparent="1" />
++              <widget name="coverArt" pixmap="Vu_HD/no_coverArt.png" position="690,103" size="102,102" transparent="1" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/icons/mp_buttons.png" position="40,235" size="152,18" alphatest="blend" />
++<!--          <widget name="PositionGauge" position="120,493" size="500,10" pointer="Vu_HD/position_pointer.png:660,0" seek_pointer="Vu_HD/position_pointer.png:660,0" transparent="1" />-->
++              <ePixmap pixmap="Vu_HD/icons/Mediaplayerbar_gray.png" zPosition="2" position="210,235" size="563,18" alphatest="blend" />
++              <widget name="PositionGauge" zPosition="3" position="210,233" size="563,18" pointer="Vu_HD/icons/Mediaplayerbar_purple.png:563,0" seek_pointer="Vu_HD/icons/Mediaplayerbar_purple.png:563,0" transparent="1" />
++              <widget source="session.CurrentService" render="Label" position="130,254" size="120,18" foregroundColor="#3d0e82" font="Semiboldit;18" halign="right" valign="center" backgroundColor="#27d9dee2" transparent="1">
++                      <convert type="ServicePosition">Position</convert>
++              </widget>
++              <widget source="session.CurrentService" render="Label" position="735,254" size="120,18" foregroundColor="#3c3c3c" font="Semiboldit;18" halign="left" valign="center" backgroundColor="#27d9dee2" transparent="1">
++                      <convert type="ServicePosition">Remaining</convert>
++              </widget>
++              <widget name="repeat" position="785,234" size="23,20" pixmaps="Vu_HD/icons/ico_noreplay.png,Vu_HD/icons/ico_replay.png" transparent="1" alphatest="blend" />
++              <eLabel name="Filelist" position="50,300" size="110,22" text="File List" font="Semiboldit;22" foregroundColor="#3c3c3c" backgroundColor="#d9dee2" transparent="1" />
++              <widget name="filelist" position="45,335" itemHeight="36" selectionPixmap="Vu_HD/buttons/FocusBar_H36.png" transparent="1" size="365,252" scrollbarMode="showOnDemand" />
++              <eLabel name="Playlist" position="450,300" size="110,22" text="Play List" font="Semiboldit;22" foregroundColor="#3c3c3c" backgroundColor="#d9dee2" transparent="1" />
++              <widget name="playlist" position="445,335" itemHeight="36" selectionPixmap="Vu_HD/buttons/FocusBar_H36.png" transparent="1" size="365,252" scrollbarMode="showOnDemand" selectionDisabled="1" />
++              <widget name="currenttext" position="65,80" size="0,0" />
++              <widget name="titletext" position="65,80" size="0,0" />
++      </screen>
++      <!-- Menu screens -->
++      <screen name="menu_information" position="0,0" size="580,720" title="Main menu" flags="wfNoBorder" backgroundColor="transparent"> 
++              <ePixmap pixmap="Vu_HD/bg.png" zPosition="-1" position="60,0" size="520,720" alphatest="blend"  transparent="1" />
++              <widget source="title" render="Label" position="110,120" size="400,38" font="Regular;38" foregroundColor="#5c5c5c" backgroundColor="#27d8dee2" transparent="1" />
++              <ePixmap pixmap="Vu_HD/menu/ico_menu_Info.png" position="475,70" size="88,88" alphatest="blend" transparent="1" />
++              <widget source="menu" render="Listbox" selectionPixmap="Vu_HD/buttons/FocusBar_H45.png" foregroundColor="#4c4c4c" foregroundColorSelected="#ececec" backgroundColorSelected="#271a53bb" backgroundColor="#27d9dee2" transparent="1" position="84, 175" size="472,495" scrollbarMode="showOnDemand">
++<!--          <widget source="menu" render="Listbox" selectionPixmap="Vu_HD/FocusBar_menu01.png" foregroundColor="#4c4c4c" foregroundColorSelected="#ececec" backgroundColorSelected="#acacac" position="84,190" size="370,480" transparent="1" backgroundColor="#ececec" scrollbarMode="showNever"> -->
++                      <convert type="TemplatedMultiContent">
++                              {"template": [  MultiContentEntryText(pos = (30, 8), size = (410, 28), flags = RT_HALIGN_LEFT, text = 0  ) ],
++                               "fonts": [gFont("Regular", 28)],
++                               "itemHeight": 45
++                              }
++                      </convert>
++              </widget>
++      </screen>               
++      <screen name="menu_shutdown" position="0,0" size="580,720" title="Main menu" flags="wfNoBorder" backgroundColor="transparent"> 
++              <ePixmap pixmap="Vu_HD/bg.png" zPosition="-1" position="60,0" size="520,720" alphatest="blend"  transparent="1" />
++              <widget source="title" render="Label" position="110,120" size="400,38" font="Regular;38" foregroundColor="#5c5c5c" backgroundColor="#27d8dee2" transparent="1" />
++              <ePixmap pixmap="Vu_HD/menu/ico_menu_Standby.png" position="475,70" size="88,88" alphatest="blend" transparent="1" />
++              <widget source="menu" render="Listbox" selectionPixmap="Vu_HD/buttons/FocusBar_H45.png" foregroundColor="#4c4c4c" foregroundColorSelected="#ececec" backgroundColorSelected="#271a53bb" backgroundColor="#27d9dee2" transparent="1" position="84, 175" size="472,495" scrollbarMode="showOnDemand">
++<!--          <widget source="menu" render="Listbox" selectionPixmap="Vu_HD/FocusBar_menu01.png" foregroundColor="#4c4c4c" foregroundColorSelected="#ececec" backgroundColorSelected="#acacac" position="84,190" size="370,480" transparent="1" backgroundColor="#ececec" scrollbarMode="showNever"> -->
++                      <convert type="TemplatedMultiContent">
++                              {"template": [  MultiContentEntryText(pos = (30, 8), size = (410, 28), flags = RT_HALIGN_LEFT, text = 0  ) ],
++                               "fonts": [gFont("Regular", 28)],
++                               "itemHeight": 45
++                              }
++                      </convert>
++              </widget>
++      </screen>
++      <screen name="menu_system" position="0,0" size="580,720" title="Main menu" flags="wfNoBorder" backgroundColor="transparent"> 
++              <ePixmap pixmap="Vu_HD/bg.png" zPosition="-1" position="60,0" size="520,720" alphatest="blend"  transparent="1" />
++              <widget source="title" render="Label" position="110,120" size="400,38" font="Regular;38" foregroundColor="#5c5c5c" backgroundColor="#27d8dee2" transparent="1" />
++              <ePixmap pixmap="Vu_HD/menu/ico_menu_Setup.png" position="475,70" size="88,88" alphatest="blend" transparent="1" />
++              <widget source="menu" render="Listbox" selectionPixmap="Vu_HD/buttons/FocusBar_H45.png" foregroundColor="#4c4c4c" foregroundColorSelected="#ececec" backgroundColorSelected="#271a53bb" backgroundColor="#27d9dee2" transparent="1" position="84, 175" size="472,495" scrollbarMode="showOnDemand">
++<!--          <widget source="menu" render="Listbox" selectionPixmap="Vu_HD/FocusBar_menu01.png" foregroundColor="#4c4c4c" foregroundColorSelected="#ececec" backgroundColorSelected="#acacac" position="84,190" size="370,480" transparent="1" backgroundColor="#ececec" scrollbarMode="showNever"> -->
++                      <convert type="TemplatedMultiContent">
++                              {"template": [  MultiContentEntryText(pos = (30, 8), size = (410, 28), flags = RT_HALIGN_LEFT, text = 0  ) ],
++                               "fonts": [gFont("Regular", 28)],
++                               "itemHeight": 45
++                              }
++                      </convert>
++              </widget>
++      </screen>               
++      <screen name="Menu" position="0,0" size="580,720" title="Main menu" flags="wfNoBorder" backgroundColor="transparent"> 
++              <ePixmap pixmap="Vu_HD/bg.png" zPosition="-1" position="60,0" size="520,720" alphatest="blend"  transparent="1" />
++              <ePixmap pixmap="Vu_HD/menu/ico_menu_Setup.png" position="475,70" size="88,88" alphatest="blend" transparent="1" />
++              <widget source="title" render="Label" position="110,120" size="400,38" font="Regular;38" foregroundColor="#5c5c5c" backgroundColor="#27d8dee2" transparent="1" />
++<!--          <eLabel text="" position="153,136" size="3,44" font="Regular;42" foregroundColor="#8c8c8c" backgroundColor="#ec1c1c" />         -->
++              <widget source="menu" render="Listbox" selectionPixmap="Vu_HD/buttons/FocusBar_H45.png" foregroundColor="#4c4c4c" foregroundColorSelected="#ececec" backgroundColorSelected="#271a53bb" backgroundColor="#27d9dee2" transparent="1" position="84, 175" size="472,495" scrollbarMode="showOnDemand">
++<!--          <widget source="menu" render="Listbox" selectionPixmap="Vu_HD/FocusBar_menu01.png" foregroundColor="#4c4c4c" foregroundColorSelected="#ececec" backgroundColorSelected="#acacac" position="84,190" size="370,480" transparent="1" backgroundColor="#ececec" scrollbarMode="showNever"> -->
++                      <convert type="TemplatedMultiContent">
++                              {"template": [  MultiContentEntryText(pos = (30, 8), size = (410, 28), flags = RT_HALIGN_LEFT, text = 0  ) ],
++                               "fonts": [gFont("Regular", 28)],
++                               "itemHeight": 45
++                              }
++                      </convert>
++              </widget>
++      </screen>               
++      <!-- Messagebox -->
++      <screen name="MessageBox" position="center,center" size="600,10" title="Message">
++              <widget name="text" position="65,8" size="420,0" font="Regular;22" />
++              <widget name="ErrorPixmap" pixmap="Vu_HD/icons/input_error.png" position="5,5" size="53,53" alphatest="blend" />
++              <widget name="QuestionPixmap" pixmap="Vu_HD/icons/input_question.png" position="5,5" size="53,53" alphatest="blend" />
++              <widget name="InfoPixmap" pixmap="Vu_HD/icons/input_info.png" position="5,5" size="53,53" alphatest="blend" />
++              <widget name="list" position="100,100" size="380,375" transparent="1" backgroundColor="darkgrey" />
++              <applet type="onLayoutFinish">
++# this should be factored out into some helper code, but currently demonstrates applets.
++from enigma import eSize, ePoint
++
++orgwidth = self.instance.size().width()
++orgpos = self.instance.position()
++textsize = self[&quot;text&quot;].getSize()
++
++# y size still must be fixed in font stuff...
++textsize = (textsize[0] + 50, textsize[1] + 50)
++offset = 0
++if self.type == self.TYPE_YESNO:
++      offset = 60
++wsizex = textsize[0] + 60
++wsizey = textsize[1] + offset
++if (280 &gt; wsizex):
++      wsizex = 280
++wsize = (wsizex, wsizey)
++
++
++# resize
++self.instance.resize(eSize(*wsize))
++
++# resize label
++self[&quot;text&quot;].instance.resize(eSize(*textsize))
++
++# move list
++listsize = (wsizex, 50)
++self[&quot;list&quot;].instance.move(ePoint(0, textsize[1]))
++self[&quot;list&quot;].instance.resize(eSize(*listsize))
++
++# center window
++newwidth = wsize[0]
++self.instance.move(ePoint(orgpos.x() + (orgwidth - newwidth)/2, orgpos.y()))
++              </applet>
++      </screen>
++      <!-- Minute input -->
++      <screen name="MinuteInput" position="center,center" size="280,60" title="Seek">
++              <widget name="minutes" position="80,15" size="160,25" halign="right" font="Regular;23" />
++      </screen>
++      <!-- Movie context menu -->
++      <screen name="MovieContextMenu" position="center,center" size="400,260" title="Movielist menu">
++              <widget name="menu" position="10,10" size="380,250" transparent="1" scrollbarMode="showOnDemand" />
++      </screen>
++      <!-- Movieselection -->
++      <screen name="MovieSelection" position="145, 55" size="990,610" flags="wfNoBorder" backgroundColor="transparent">
++              <ePixmap pixmap="Vu_HD/Bg_List.png" position="0,0" size="990,610" zPosition="-1" alphatest="on"  transparent="1" />
++              <ePixmap pixmap="Vu_HD/menu/ico_title_media-info.png" position="44,40" size="37,28" alphatest="blend"  transparent="1" />
++              <eLabel text="Recorded files..." position="95,40" size="700,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27d8dee2" transparent="1" />
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="44,82" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="271,82" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/yellow.png" position="498,82" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/blue.png" position="725,82" size="25,25" alphatest="blend" />
++              <widget name="key_red" position="89,84" zPosition="1" size="182,20" font="Regular;20" halign="left" valign="center" foregroundColor="#1c1c1c" backgroundColor="#27ebebeb" transparent="1" />
++              <widget name="key_green" position="316,84" zPosition="1" size="182,20" font="Regular;20" halign="left" valign="center" foregroundColor="#1c1c1c" backgroundColor="#27ebebeb" transparent="1" />
++              <widget name="key_yellow" position="543,84" zPosition="1" size="182,20" font="Regular;20" halign="left" valign="center" foregroundColor="#1c1c1c" backgroundColor="#27ebebeb" transparent="1" />
++              <widget name="key_blue" position="770,84" zPosition="1" size="182,20" font="Regular;20" halign="left" valign="center" foregroundColor="#1c1c1c" backgroundColor="#27ebebeb" transparent="1" />
++              <widget name="list" position="60,150" size="860,375" zPosition="2" scrollbarMode="showOnDemand" transparent="1" />
++              <widget name="DescriptionBorder" position="80,430" size="800,150" zPosition="1" transparent="1" alphatest="on"/>
++              <widget source="Service" render="Label" position="80,430" zPosition="1" size="640,22" font="Regular;20" foregroundColor="#3c3c3c" backgroundColor="#27aeaeae" transparent="1">
++                      <convert type="MovieInfo">ShortDescription</convert>
++              </widget>
++              <widget source="Service" render="Label" position="840,430" zPosition="1" size="60,20" font="Regular;18" halign="right" backgroundColor="#27aeaeae" transparent="1">
++                      <convert type="ServiceTime">Duration</convert>
++                      <convert type="ClockToText">AsLength</convert>
++              </widget>
++              <widget source="Service" render="Label" position="725,450" zPosition="2" size="175,20" font="Regular;18" halign="right" backgroundColor="#27aeaeae" transparent="1">
++                      <convert type="MovieInfo">RecordServiceName</convert>
++              </widget>
++              <widget source="Service" render="Label" position="80,470" zPosition="1" size="800,84" font="Regular;18" backgroundColor="#27aeaeae" transparent="1">
++                      <convert type="EventName">ExtendedDescription</convert>
++              </widget>
++              <widget name="freeDiskSpace" position="80,560" size="830,20" font="Regular;19" backgroundColor="#27aeaeae" valign="center" halign="right" transparent="1" />
++      </screen>
++      <!-- Mute -->
++      <screen name="Mute" position="92,40" zPosition="10" size="90,80" backgroundColor="transparent" title="Mute" flags="wfNoBorder">
++              <ePixmap position="0,0" size="90,80" pixmap="Vu_HD/mute.png" transparent="1" alphatest="on" />
++      </screen>
++      <!-- Nameserver -->
++      <screen name="NameserverSetup" position="209,48" size="865,623" title="Nameserver Setup" flags="wfNoBorder" backgroundColor="transparent">      
++              <ePixmap pixmap="Vu_HD/Bg_EPG_list.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_title_Setup.png" position="32,41" size="40,40" alphatest="blend"  transparent="1" />
++              <eLabel text="Nameserver Setup" position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
++              <ePixmap pixmap="Vu_HD/icons/clock.png" position="750,55" zPosition="1" size="20,20" alphatest="blend" />
++              <widget source="global.CurrentTime" render="Label" position="770,57" zPosition="1" size="50,20" font="Regular;20" foregroundColor="#1c1c1c" backgroundColor="#27d9dee2" halign="right" transparent="1">
++                      <convert type="ClockToText">Format:%H:%M</convert>
++              </widget>
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="45,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="240,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/yellow.png" position="435,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/button_off.png" position="630,98" size="25,25" alphatest="blend" />
++              <widget source="key_red" render="Label" position="66,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="key_green" render="Label" position="268,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="key_yellow" render="Label" position="463,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="config" position="130,166" itemHeight="36" size="600,250" zPosition="3" scrollbarMode="showOnDemand" transparent="1" />
++              <widget name="introduction" position="140,400" size="600,25" zPosition="10" font="Regular;21" foregroundColor="#3c3c3c" backgroundColor="#27d9dee2" halign="center" transparent="1" />
++      </screen>
++      <!-- Network adapter selection -->
++      <screen name="NetworkAdapterSelection" position="209,48" size="865,623" title="Select Network Adapter" flags="wfNoBorder" backgroundColor="transparent">        
++              <ePixmap pixmap="Vu_HD/Bg_EPG_view.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_title_Setup.png" position="32,41" size="40,40" alphatest="blend"  transparent="1" />
++              <eLabel text="Select Network Adapter" position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
++              <ePixmap pixmap="Vu_HD/icons/clock.png" position="750,55" zPosition="1" size="20,20" alphatest="blend" />
++              <widget source="global.CurrentTime" render="Label" position="770,57" zPosition="1" size="50,20" font="Regular;20" foregroundColor="#1c1c1c" backgroundColor="#27d9dee2" halign="right" transparent="1">
++                      <convert type="ClockToText">Format:%H:%M</convert>
++              </widget>
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="45,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="240,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/yellow.png" position="435,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/button_off.png" position="630,98" size="25,25" alphatest="blend" />
++              <widget source="key_red" render="Label" position="66,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="key_green" render="Label" position="268,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="key_yellow" render="Label" position="463,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="list" position="10,140" size="480,250" transparent="1" scrollbarMode="showOnDemand" zPosition="10"/>    
++              <widget source="list" render="Listbox" position="10,140" size="550,280" zPosition="10" scrollbarMode="showOnDemand">
++                      <convert type="TemplatedMultiContent"> <!--  iface, name, description, interfacepng, defaultpng, activepng, divpng  -->
++                              {"template": [
++                                              MultiContentEntryText(pos = (85, 6), size = (440, 28), font=0, flags = RT_HALIGN_LEFT|RT_VALIGN_TOP, text = 1), # index 1 is the interfacename
++                                              MultiContentEntryText(pos = (85, 43), size = (440, 20), font=1, flags = RT_HALIGN_LEFT|RT_VALIGN_BOTTOM, text = 2), # index 2 is the description
++                                              MultiContentEntryPixmapAlphaTest(pos = (2, 8), size = (54, 54), png = 3), # index 3 is the interface pixmap
++                                              MultiContentEntryPixmapAlphaTest(pos = (63, 46), size = (15, 16), png = 4), # index 4 is the default pixmap
++                                      ],
++                              "fonts": [gFont("Regular", 28),gFont("Regular", 20)],
++                              "itemHeight": 70
++                              }
++                      </convert>
++              </widget>
++              
++              <widget name="introduction" position="140,490" size="300,21" zPosition="10" font="Regular;21" halign="center" transparent="1" />
++      </screen>
++      <!-- Network adapter test Black = "#000000" Grey = "#8c8c93" Green = "#1cff1c" Red = #f23d21-->
++      <screen name="NetworkAdapterTest" position="209,48" size="865,623" title="Network test..." flags="wfNoBorder" backgroundColor="transparent">    
++              <ePixmap pixmap="Vu_HD/Bg_EPG_list.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_title_Setup.png" position="32,41" size="40,40" alphatest="blend"  transparent="1" />
++              <eLabel text="Network test..." position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
++              <ePixmap pixmap="Vu_HD/icons/clock.png" position="750,55" zPosition="1" size="20,20" alphatest="blend" />
++              <widget source="global.CurrentTime" render="Label" position="770,57" zPosition="1" size="50,20" font="Regular;20" foregroundColor="#1c1c1c" backgroundColor="#27d9dee2" halign="right" transparent="1">
++                      <convert type="ClockToText">Format:%H:%M</convert>
++              </widget>
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="45,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="240,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/yellow.png" position="435,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/button_off.png" position="630,98" size="25,25" alphatest="blend" />
++              <widget source="key_red" render="Label" position="66,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="key_green" render="Label" position="268,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="key_yellow" render="Label" position="463,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="Adaptertext" position="60,176" size="140,26" zPosition="1" font="Semiboldit;24" backgroundColor="darkgrey" foregroundColors="#4c4c4c,#154901" transparent="1"/>
++              <widget name="Adapter" position="220,176" size="270,26" zPosition="1" font="Semiboldit;24" halign="right" foregroundColors="#4c4c4c,#aa0000,#154901" backgroundColor="darkgrey" transparent="1"/>
++              <widget name="AdapterInfo" pixmaps="Vu_HD/buttons/button_bluekey.png,Vu_HD/buttons/button_bluekey.png" position="600,169" zPosition="1" size="222,36" transparent="1" alphatest="blend" />
++              <widget name="AdapterInfo_Text" position="640,177" size="150,26" zPosition="2" font="Semibold;24" backgroundColor="#868686" transparent="1" foregroundColors="#5c5c5c,#1c1c1c,#07255d" />
++              <widget name="AdapterInfo_OK" pixmap="Vu_HD/icons/lock_on.png" position="550,171" size="38,31" alphatest="blend" zPosition="2" />
++              <widget name="Networktext" position="60,248" size="140,26" zPosition="1" font="Semiboldit;24" backgroundColor="darkgrey" foregroundColors="#4c4c4c,#154901" transparent="1"/>                   
++              <widget name="Network" position="220,248" size="270,26" zPosition="1" font="Semiboldit;24" halign="right" foregroundColors="#4c4c4c,#aa0000,#154901" backgroundColor="darkgrey" transparent="1"/>
++              <widget name="NetworkInfo" pixmaps="Vu_HD/buttons/button_bluekey.png,Vu_HD/buttons/button_bluekey.png" position="600,241" zPosition="1" size="222,36" transparent="1" alphatest="blend" />
++              <widget name="NetworkInfo_Text" position="640,249" size="150,26" zPosition="2" font="Semibold;24" backgroundColor="#868686" transparent="1" foregroundColors="#5c5c5c,#1c1c1c,#07255d" />
++              <widget name="NetworkInfo_Check" pixmaps="Vu_HD/icons/lock_on.png,Vu_HD/icons/lock_error.png" position="550,243" size="38,31" alphatest="blend" zPosition="2" />
++              <widget name="Dhcptext" position="60,320" size="140,26" zPosition="1" font="Semiboldit;24" backgroundColor="darkgrey" foregroundColors="#4c4c4c,#154901" transparent="1"/>                      
++              <widget name="Dhcp" position="220,320" size="270,26" zPosition="1" font="Semiboldit;24" halign="right" foregroundColors="#4c4c4c,#aa0000,#154901" backgroundColor="darkgrey" transparent="1"/>
++              <widget name="DhcpInfo" pixmaps="Vu_HD/buttons/button_bluekey.png,Vu_HD/buttons/button_bluekey.png" position="600,314" zPosition="1" size="222,36" transparent="1" alphatest="blend" />
++              <widget name="DhcpInfo_Text" position="640,321" size="150,26" zPosition="2" font="Semibold;24" backgroundColor="#868686" transparent="1" foregroundColors="#5c5c5c,#1c1c1c,#07255d" />
++              <widget name="DhcpInfo_Check" pixmaps="Vu_HD/icons/lock_on.png,Vu_HD/icons/lock_error.png" position="550,315" size="38,31" alphatest="blend" zPosition="2" />
++              <widget name="IPtext" position="60,392" size="140,26" zPosition="1" font="Semiboldit;24" backgroundColor="darkgrey" foregroundColors="#4c4c4c,#154901" transparent="1"/>                        
++              <widget name="IP" position="220,392" size="270,26" zPosition="1" font="Semiboldit;24" halign="right" foregroundColors="#4c4c4c,#aa0000,#154901" backgroundColor="darkgrey" transparent="1"/>
++              <widget name="IPInfo" pixmaps="Vu_HD/buttons/button_bluekey.png,Vu_HD/buttons/button_bluekey.png" position="600,386" zPosition="1" size="222,36" transparent="1" alphatest="blend" />
++              <widget name="IPInfo_Text" position="640,394" size="150,26" zPosition="2" font="Semibold;24" backgroundColor="#868686" transparent="1" foregroundColors="#5c5c5c,#1c1c1c,#07255d" />
++              <widget name="IPInfo_Check" pixmaps="Vu_HD/icons/lock_on.png,Vu_HD/icons/lock_error.png" position="550,387" size="38,31" alphatest="blend" zPosition="2" />
++              <widget name="DNStext" position="60,464" size="140,26" zPosition="1" font="Semiboldit;24" backgroundColor="darkgrey" foregroundColors="#4c4c4c,#154901" transparent="1"/>                       
++              <widget name="DNS" position="220,464" size="270,26" zPosition="1" font="Semiboldit;24" halign="right" foregroundColors="#4c4c4c,#aa0000,#154901" backgroundColor="darkgrey" transparent="1"/>
++              <widget name="DNSInfo" pixmaps="Vu_HD/buttons/button_bluekey.png,Vu_HD/buttons/button_bluekey.png" position="600,459" zPosition="1" size="222,36" transparent="1" alphatest="blend" />
++              <widget name="DNSInfo_Text" position="640,467" size="150,26" zPosition="2" font="Semibold;24" backgroundColor="#868686" transparent="1" foregroundColors="#5c5c5c,#1c1c1c,#07255d" />
++              <widget name="DNSInfo_Check" pixmaps="Vu_HD/icons/lock_on.png,Vu_HD/icons/lock_error.png" position="550,459" size="38,31" alphatest="blend" zPosition="2" />
++              <widget name="EditSettingsButton" pixmaps="Vu_HD/buttons/button_bluekey.png,Vu_HD/buttons/button_bluekey.png" position="500,531" zPosition="1" size="222,36" transparent="1" alphatest="blend" />
++              <widget name="EditSettings_Text" position="530,540" size="160,26" zPosition="2" font="Semibold;24" backgroundColor="#868686" halign="center" transparent="1" foregroundColors="#1c1c1c,#1c1c1c,#07255d" />
++              <widget name="InfoText" position="40,160" size="785,430" zPosition="25" foregroundColor="#3c3c3c" backgroundColor="#27c5c9cc" font="Regular;21" />
++      </screen>
++      <!-- Network setup -->
++      <screen name="NetworkSetup" position="130,140" size="510,330" title="Network Setup">
++              <widget name="menu" position="10,10" selectionPixmap="Vu_HD/buttons/Selected_bar_440x23px.png" transparent="1" backgroundColor="#371e1c1a" size="440,310" />
++      </screen>
++      <!-- Nim selection -->
++      <screen name="NimSelection" position="center,center" size="420,330" title="Choose Tuner">
++              <widget source="nimlist" render="Listbox" transparent="1" position="0,0" size="420,300" scrollbarMode="showOnDemand">
++                      <convert type="TemplatedMultiContent">
++                              {"template": [
++                                              MultiContentEntryText(pos = (10, 5), size = (400, 30), flags = RT_HALIGN_LEFT, text = 1), # index 1 is the nim name,
++                                              MultiContentEntryText(pos = (50, 30), size = (320, 30), font = 1, flags = RT_HALIGN_LEFT, text = 2), # index 2 is a description of the nim settings,
++                                      ],
++                               "fonts": [gFont("Regular", 20), gFont("Regular", 15)],
++                               "itemHeight": 70
++                              }
++                      </convert>
++              </widget>
++      </screen>
++      <!-- Nim setup -->
++      <screen name="NimSetup" position="center,center" size="500,412" title="Reception Settings">
++              <widget name="config" position="10,10" transparent="1" size="480,402" scrollbarMode="showOnDemand" />
++      </screen>
++      <!-- Numberzap -->
++      <screen name="NumberZap" position="center,center" size="250,60" title="Channel">
++              <widget name="channel" position="35,15" size="110,25" font="Regular;23" />
++              <widget name="number" position="145,15" size="80,25" halign="right" font="Regular;23" />
++      </screen>
++      <!-- Numerical help dialog -->
++      <screen name="NumericalTextInputHelpDialog" position="440,535" zPosition="2" size="394,94" backgroundColor="#27b5b9bd" flags="wfNoBorder">
++<!--
++              <eLabel position="0,0" size="392,92" backgroundColor="#c0c0c0" zPosition="-1" />
++-->           
++              <widget name="key1" position="2,2" size="130,30" font="Console;16" halign="center" valign="center" transparent="1"/>
++              <widget name="key2" position="132,2" size="130,30" font="Console;16" halign="center" valign="center" transparent="1"/>
++              <widget name="key3" position="262,2" size="130,30" font="Console;16" halign="center" valign="center" transparent="1"/>
++              <widget name="key4" position="2,32" size="130,30" font="Console;16" halign="center" valign="center" transparent="1"/>
++              <widget name="key5" position="132,32" size="130,30" font="Console;16" halign="center" valign="center" transparent="1"/>
++              <widget name="key6" position="262,32" size="130,30" font="Console;16" halign="center" valign="center" transparent="1"/>
++              <widget name="key7" position="2,62" size="130,30" font="Console;16" halign="center" valign="center" transparent="1"/>
++              <widget name="key8" position="132,62" size="130,30" font="Console;16" halign="center" valign="center" transparent="1"/>
++              <widget name="key9" position="262,62" size="130,30" font="Console;16" halign="center" valign="center" transparent="1"/>
++      </screen>
++      <!-- Parental control - change pin -->
++      <screen name="ParentalControlChangePin" position="center,center" size="520,160" title="Change pin code">
++              <widget name="config" position="10,10" size="500,350" transparent="1" backgroundColor="#27d9dee2" scrollbarMode="showOnDemand" />
++      </screen>
++      <!-- Parental control - editor -->
++      <screen name="ParentalControlEditor" position="center,center" size="520,400" title="Parental control services Editor">
++              <widget name="servicelist" position="10,10" size="500,350" transparent="1" scrollbarMode="showOnDemand" />
++      </screen>
++      <!-- Parental control - setup -->
++      <screen name="ParentalControlSetup" position="209,48" size="865,623" title="Parental control setup" flags="wfNoBorder" backgroundColor="transparent">   
++              <ePixmap pixmap="Vu_HD/Bg_EPG_list.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_title_Setup.png" position="32,41" size="40,40" alphatest="blend"  transparent="1" />
++              <eLabel text="Parental control setup" position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
++              <ePixmap pixmap="Vu_HD/icons/clock.png" position="750,55" zPosition="1" size="20,20" alphatest="blend" />
++              <widget source="global.CurrentTime" render="Label" position="770,57" zPosition="1" size="50,20" font="Regular;20" foregroundColor="#1c1c1c" backgroundColor="#27d9dee2" halign="right" transparent="1">
++                      <convert type="ClockToText">Format:%H:%M</convert>
++              </widget>
++              <widget name="config" position="100,129" itemHeight="36" transparent="1" backgroundColor="#275c5c5c" size="650,350" scrollbarMode="showOnDemand" />
++      </screen>
++      <!-- Picture in picture -->
++      <screen name="PictureInPicture" position="400,60" zPosition="-1" size="240,192" flags="wfNoBorder">
++              <widget name="video" position="0,0" size="240,192" backgroundColor="transparent" />
++      </screen>
++      <!-- Pin input -->
++      <screen name="PinInput" position="center,center" size="500,170" title="Pin code needed">
++              <widget name="service" position="10,10" size="480,25" font="Regular;20" />
++              <widget name="text" position="10,40" size="480,25" font="Regular;20" halign="center" />
++              <widget name="tries" position="10,70" size="480,25" font="Regular;20" halign="center" />
++              <widget name="input" position="10,110" size="480,40" font="Regular;50" halign="center" />
++      </screen>
++      <!-- Picture in picture setup -->
++      <screen name="PiPSetup" position="center,center" size="600,150" backgroundColor="transparent" flags="wfNoBorder" title="PiPSetup">
++              <widget name="text" position="0,0" size="600,150" font="Regular;23" />
++      </screen>
++      <!-- Plugin browser -->
++      <screen name="PluginBrowser" position="209,48" size="865,623" title="Plugin browser" flags="wfNoBorder" backgroundColor="transparent">  
++              <ePixmap pixmap="Vu_HD/Bg_EPG_view.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_title_Plugin.png" position="32,41" size="40,40" alphatest="blend"  transparent="1" />
++              <eLabel text="Plugin browser" position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="45,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="435,98" size="25,25" alphatest="blend" />
++              <widget name="red" position="76,97" zPosition="1" size="300,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="green" position="466,97" zPosition="1" size="300,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="list" position="60,130" size="700,450" scrollbarMode="showOnDemand" />
++      </screen>
++      <!-- Plugin downloads -->
++      <screen name="PluginDownloadBrowser" position="209,48" size="865,623" title="Downloadable plugins" flags="wfNoBorder" backgroundColor="transparent">    
++              <ePixmap pixmap="Vu_HD/Bg_EPG_view.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_title_Plugin.png" position="32,41" size="40,40" alphatest="blend"  transparent="1" />
++              <eLabel text="Downloadable plugins" position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
++              <widget name="text" position="60,130" zPosition="1" size="700,480" foregroundColor="#3c3c3c" font="Regular;20" halign="center" valign="center" />
++              <widget name="list" position="70,140" zPosition="2" size="680,460" scrollbarMode="showOnDemand" />
++      </screen>
++      <!-- PVR state -->
++      <screen name="PVRState" position="70,70" zPosition="2" size="150,30" backgroundColor="transpBlack" flags="wfNoBorder">
++              <widget name="state" position="0,0" size="150,30" font="Regular;25" halign="center" backgroundColor="transpBlack" foregroundColor="white" />
++      </screen>
++      <!-- Radio infobar -->
++      <screen name="RadioInfoBar" position="810, 173" size="320,470" zPosition="-1" flags="wfNoBorder" title="Radio"  backgroundColor="#27c8c8c8">
++              <widget source="session.CurrentService" render="Label" position="0,10" zPosition="1" size="270,24" font="Regular;24" foregroundColor="#07255d" backgroundColor="#27c8c8c8" halign="left" noWrap="1" transparent="1">
++                      <convert type="ServiceName">Name</convert>
++              </widget>
++              <widget source="RdsDecoder" render="Pixmap" pixmap="Vu_HD/icons/rass_logo.png" position="270,0" size="50,21" alphatest="on">
++                      <convert type="RdsInfo">RasInteractiveAvailable</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="session.RecordState" render="Pixmap" pixmap="Vu_HD/icons/record.png" position="288,22" zPosition="2" size="20,20" alphatest="on" >
++                      <convert type="ConditionalShowHide">Blink</convert>
++              </widget>
++              <widget source="session.Event_Now" render="Label" position="0,42" zPosition="1" size="300,24" foregroundColor="#07255d" backgroundColor="#27c8c8c8" font="Semibold;24" noWrap="1" transparent="1">
++                      <convert type="EventName">Name</convert>
++              </widget>
++              <widget source="session.Event_Now" render="Label" position="0,70" zPosition="1" size="50,22" font="Regular;20" foregroundColor="#07255d" backgroundColor="#27c8c8c8" transparent="1">
++                      <convert type="EventTime">StartTime</convert>
++                      <convert type="ClockToText">Default</convert>
++              </widget>
++              <widget source="session.Event_Now" render="Label" position="155,70" zPosition="1" size="70,22" font="Regular;20" foregroundColor="#07255d" backgroundColor="#27c8c8c8" transparent="1">
++                      <convert type="EventTime">EndTime</convert>
++                      <convert type="ClockToText">Default</convert>
++              </widget>
++              <widget source="session.Event_Now" render="Progress" position="165,75" zPosition="1" pixmap="Vu_HD/progress_medium.png" size="124,10" backgroundColor="#ffffff" >
++                      <convert type="EventTime">Progress</convert>
++              </widget>
++              <widget source="session.Event_Next" render="Label" position="0,90" zPosition="1" size="300,24" foregroundColor="#07255d" backgroundColor="#27c8c8c8" font="Semibold;24" noWrap="1" transparent="1">
++                      <convert type="EventName">Name</convert>
++              </widget>
++              <widget source="session.Event_Next" render="Label" position="0,120" zPosition="1" size="50,22" font="Regular;20" foregroundColor="#07255d" backgroundColor="#27c8c8c8" transparent="1">
++                      <convert type="EventTime">StartTime</convert>
++                      <convert type="ClockToText">Default</convert>
++              </widget>
++              <widget source="session.Event_Next" render="Label" position="55,120" zPosition="1" size="70,22" font="Regular;20" foregroundColor="#07255d" backgroundColor="#27c8c8c8" transparent="1">
++                      <convert type="EventTime">EndTime</convert>
++                      <convert type="ClockToText">Default</convert>
++              </widget>
++              <widget source="RdsDecoder" render="Label" position="0,150" size="300,300" font="LCD;20" foregroundColor="#80ffff"  backgroundColor="#27c8c8c8" transparent="1">
++                      <convert type="RdsInfo">RadioText</convert>
++              </widget>
++      </screen>
++      <!-- RASS -->
++      <screen name="RassInteractive" position="50,180" size="100,275" backgroundColor="transpWhite" flags="wfNoBorder">
++              <ePixmap pixmap="Vu_HD/icons/rass_logo.png" position="25,0" size="50,21" transparent="1" alphatest="on" />
++              <eLabel text="Index" position="36,25" size="60,25" font="Regular;21" foregroundColor="black" backgroundColor="transpWhite" />
++              <eLabel text="0" position="5,25" size="16,25" font="Regular;21" foregroundColor="black" backgroundColor="transpWhite" />
++              <widget name="Marker" position="21,25" size="16,25" font="Regular;21" foregroundColor="black" backgroundColor="transpWhite" />
++              <eLabel text="1" position="5,50" size="16,25" font="Regular;21" foregroundColor="black" backgroundColor="transpWhite" />
++              <widget name="subpages_1" position="35,50" size="36,20" alphatest="on" />
++              <eLabel text="2" position="5,75" size="16,25" font="Regular;21" foregroundColor="black" backgroundColor="transpWhite" />
++              <widget name="subpages_2" position="35,75" size="36,20" alphatest="on" />
++              <eLabel text="3" position="5,100" size="16,25" font="Regular;21" foregroundColor="black" backgroundColor="transpWhite" />
++              <widget name="subpages_3" position="35,100" size="36,20" alphatest="on" />
++              <eLabel text="4" position="5,125" size="16,25" font="Regular;21" foregroundColor="black" backgroundColor="transpWhite" />
++              <widget name="subpages_4" position="35,125" size="36,20" alphatest="on" />
++              <eLabel text="5" position="5,150" size="16,25" font="Regular;21" foregroundColor="black" backgroundColor="transpWhite" />
++              <widget name="subpages_5" position="35,150" size="36,20" alphatest="on" />
++              <eLabel text="6" position="5,175" size="16,25" font="Regular;21" foregroundColor="black" backgroundColor="transpWhite" />
++              <widget name="subpages_6" position="35,175" size="36,20" alphatest="on" />
++              <eLabel text="7" position="5,200" size="16,25" font="Regular;21" foregroundColor="black" backgroundColor="transpWhite" />
++              <widget name="subpages_7" position="35,200" size="36,20" alphatest="on" />
++              <eLabel text="8" position="5,225" size="16,25" font="Regular;21" foregroundColor="black" backgroundColor="transpWhite" />
++              <widget name="subpages_8" position="35,225" size="36,20" alphatest="on" />
++              <eLabel text="9" position="5,250" size="16,25" font="Regular;21" foregroundColor="black" backgroundColor="transpWhite" />
++              <widget name="subpages_9" position="35,250" size="36,20" alphatest="on" />
++      </screen>
++      <!-- RDS info -->
++      <screen name="RdsInfoDisplay" position="0,0" size="1280,720" zPosition="-2" backgroundColor="transparent" flags="wfNoBorder">
++              <widget name="RassLogo" pixmap="Vu_HD/icons/rass_logo.png" position="100,585" size="50,21" />
++              <widget name="RadioText" position="100,620" size="1080,30" font="Regular;24" noWrap="1" backgroundColor="transpBlack" />
++              <widget name="RtpText" position="100,650" size="1080,30" font="Regular;24" halign="right" noWrap="1" backgroundColor="transpBlack" />
++      </screen>
++      <!-- Satfinder -->
++      <screen name="Satfinder" position="209,48" size="865,623" title="Satfinder" flags="wfNoBorder" backgroundColor="transparent">   
++              <ePixmap pixmap="Vu_HD/Bg_EPG_view.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_title_Setup.png" position="32,41" size="40,40" alphatest="blend"  transparent="1" />
++              <eLabel text="Satfinder" position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
++              <widget name="introduction" position="0,0" size="0,0" font="Regular;23" />
++              <ePixmap pixmap="Vu_HD/icons/dish_scan.png" position="150,150" zPosition="0" size="119,110" transparent="1" alphatest="on" />
++              <widget source="Frontend" render="Label" position="340,140" zPosition="2" size="260,20" font="Regular;19" backgroundColor="#27d9dee2" halign="center" valign="center" transparent="1">
++                      <convert type="FrontendInfo">SNRdB</convert>
++              </widget>
++              <eLabel name="snr" text="SNR:" position="270,165" size="60,22" font="Regular;21" halign="right" backgroundColor="#27d9dee2" transparent="1" />
++              <widget source="Frontend" render="Progress" position="340,165" size="260,20" pixmap="Vu_HD/bar_snr.png" borderWidth="2" borderColor="#cccccc">
++                      <convert type="FrontendInfo">SNR</convert>
++              </widget>
++              <widget source="Frontend" render="Label" position="610,165" size="60,22" font="Regular;21" backgroundColor="#27d9dee2" transparent="1">
++                      <convert type="FrontendInfo">SNR</convert>
++              </widget>
++              <eLabel name="agc" text="AGC:" position="270,190" size="60,22" font="Regular;21" halign="right" backgroundColor="#27d9dee2" transparent="1" />
++              <widget source="Frontend" render="Progress" position="340,190" size="260,20" pixmap="Vu_HD/bar_snr.png" borderWidth="2" borderColor="#cccccc">
++                      <convert type="FrontendInfo">AGC</convert>
++              </widget>
++              <widget source="Frontend" render="Label" position="610,190" size="60,22" font="Regular;21" backgroundColor="#27d9dee2" transparent="1">
++                      <convert type="FrontendInfo">AGC</convert>
++              </widget>
++              <eLabel name="ber" text="BER:" position="270,215" size="60,22" font="Regular;21" halign="right" backgroundColor="#27d9dee2" transparent="1" />
++              <widget source="Frontend" render="Progress" position="340,215" size="260,20" pixmap="Vu_HD/bar_ber.png" borderWidth="2" borderColor="#cccccc">
++                      <convert type="FrontendInfo">BER</convert>
++              </widget>
++              <widget source="Frontend" render="Label" position="610,215" size="60,22" font="Regular;21" backgroundColor="#27d9dee2" transparent="1">
++                      <convert type="FrontendInfo">BER</convert>
++              </widget>
++              <eLabel name="lock" text="Lock:" position="270,245" size="60,22" font="Regular;21" backgroundColor="#27d9dee2" halign="right" transparent="1"/>
++              <widget source="Frontend" render="Pixmap" pixmap="Vu_HD/icons/lock_on.png" position="340,245" zPosition="1" size="38,31" alphatest="on">
++                      <convert type="FrontendInfo">LOCK</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="Frontend" render="Pixmap" pixmap="Vu_HD/icons/lock_off.png" position="340,240" zPosition="1" size="38,31" alphatest="on">
++                      <convert type="FrontendInfo">LOCK</convert>
++                      <convert type="ConditionalShowHide">Invert</convert>
++              </widget>
++              <eLabel text=" " position="160,282" zPosition="1" size="500,2" backgroundColor="#8c8c8c" />
++              <widget name="config" position="160,295" transparent="1" backgroundColor="#27cccccc" size="500,288" scrollbarMode="showOnDemand" />
++      </screen>
++      <!-- Scan setup -->
++      <screen name="ScanSetup" position="center,center" size="520,405" title="Service scan">
++              <widget name="config" position="10,10" transparent="1" size="500,350" scrollbarMode="showOnDemand" />
++              <widget name="introduction" position="10,365" size="500,40" font="Regular;20" halign="center" />
++      </screen>
++      <!-- Scan simple -->
++      <screen name="ScanSimple" position="center,center" size="420,350" title="Service scan">
++              <widget name="header" position="10,10" size="400,25" font="Regular;23" />
++              <widget name="config" position="10,55" transparent="1" size="400,250" scrollbarMode="showOnDemand" />
++              <widget name="footer" position="10,310" size="400,20" font="Regular;20" halign="center" />
++      </screen>
++      <!-- Scart -->
++      <screen name="Scart" position="0,0" size="1280,720" backgroundColor="transparent" />
++      <!-- Service info -->
++      <screen name="ServiceInfo" position="209,48" size="865,623" title="Serviceinfo" flags="wfNoBorder" backgroundColor="transparent">       
++              <ePixmap pixmap="Vu_HD/Bg_EPG_list.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_title_Info.png" position="32,41" size="40,40" alphatest="blend"  transparent="1" />
++              <eLabel text="Serviceinfo" position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="45,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="240,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/yellow.png" position="435,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/blue.png" position="630,98" size="25,25" alphatest="blend" />
++              <widget name="red" position="66,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="green" position="268,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="yellow" position="463,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="blue" position="658,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="infolist" position="60,140" size="700,460" itemHeight="36" foregroundColor="#3c3c3c" selectionDisabled="1" transparent="1"/>
++      </screen>
++      <!-- Service scan -->
++      <screen name="ServiceScan" position="center,center" size="420,390" title="Service Scan">
++              <widget source="FrontendInfo" render="Pixmap" pixmap="Vu_HD/icons/scan-s.png" position="5,5" size="64,64" transparent="1" alphatest="blend">
++                      <convert type="FrontendInfo">TYPE</convert>
++                      <convert type="ValueRange">0,0</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="FrontendInfo" render="Pixmap" pixmap="Vu_HD/icons/scan-c.png" position="5,5" size="64,64" transparent="1" alphatest="on">
++                      <convert type="FrontendInfo">TYPE</convert>
++                      <convert type="ValueRange">1,1</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="FrontendInfo" render="Pixmap" pixmap="Vu_HD/icons/scan-t.png" position="5,5" size="64,64" transparent="1" alphatest="on">
++                      <convert type="FrontendInfo">TYPE</convert>
++                      <convert type="ValueRange">2,2</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget name="network" position="80,15" size="330,20" font="Regular;20" />
++              <widget name="transponder" position="80,40" size="330,20" font="Regular;20" />
++              <widget name="scan_state" position="10,80" zPosition="2" size="400,20" font="Regular;18" />
++              <widget name="pass" position="10,80" size="400,20" font="Regular;18" />
++              <widget name="scan_progress" position="10,105" size="400,15" pixmap="Vu_HD/progress_big.png" borderWidth="2" borderColor="#cccccc" />
++              <widget name="servicelist" position="10,135" size="400,265" selectionDisabled="1" />
++      </screen>
++      <!-- Setup -->
++      <screen name="Setup" position="209,48" size="865,624" title="Setup" flags="wfNoBorder" backgroundColor="transparent">   
++              <ePixmap pixmap="Vu_HD/Bg_EPG_list.png" position="0,0" size="865,624" zPosition="-1" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_title_Setup.png" position="26,41" size="40,40" alphatest="blend"  transparent="1" />
++              <widget source="Title" render="Label" position="80,50" size="250,34" font="Semiboldit;34" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="45,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="240,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/button_off.png" position="435,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/button_off.png" position="630,98" size="25,25" alphatest="blend" />
++              <widget source="key_red" render="Label" position="83,97" zPosition="2" size="150,25" font="Regular;20" halign="left" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="key_green" render="Label" position="278,97" zPosition="2" size="150,25" font="Regular;20" halign="left" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="config" position="45,130" itemHeight="36" foregroundColorSelected="#ebebeb" foregroundColor="#1c1c1c" selectionPixmap="Vu_HD/buttons/FocusBar_H36.png" transparent="1" size="772,432" scrollbarMode="showNever" />
++      </screen>
++      <!-- Simple channelselection -->
++      <screen name="SimpleChannelSelection" position="145, 55" size="990,610" flags="wfNoBorder" backgroundColor="transparent">
++              <ePixmap pixmap="Vu_HD/Bg_List.png" position="0,0" size="990,610" zPosition="-1" alphatest="on"  transparent="1" />
++              <ePixmap pixmap="Vu_HD/icons/ico_Chlist_title.png" position="44,37" size="38,34" alphatest="blend"  transparent="1" />
++              <widget source="Title" render="Label" position="95,40" size="700,32" zPosition="3" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27d8dee2" transparent="1" />
++<!--          <widget name="etitle" position="95,43" size="450,32" font="Semiboldit;32" halign="left" foregroundColor="#5d5d5d" backgroundColor="#27d8dee2" transparent="1" />-->
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="44,82" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="271,82" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/yellow.png" position="498,82" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/blue.png" position="725,82" size="25,25" alphatest="blend" />
++              <widget name="key_red" position="89,84" zPosition="1" size="182,20" font="Regular;20" halign="left" valign="center" foregroundColor="#1c1c1c" backgroundColor="#27ebebeb" transparent="1" />
++              <widget name="key_green" position="316,84" zPosition="1" size="182,20" font="Regular;20" halign="left" valign="center" foregroundColor="#1c1c1c" backgroundColor="#27ebebeb" transparent="1" />
++              <widget name="key_yellow" position="543,84" zPosition="1" size="182,20" font="Regular;20" halign="left" valign="center" foregroundColor="#1c1c1c" backgroundColor="#27ebebeb" transparent="1" />
++              <widget name="key_blue" position="770,84" zPosition="1" size="182,20" font="Regular;20" halign="left" valign="center" foregroundColor="#1c1c1c" backgroundColor="#27ebebeb" transparent="1" />
++              <widget name="list" position="60,130" size="700,460" transparent="1" scrollbarMode="showOnDemand" />
++      </screen>
++      <!-- Skin Selector -->
++      <screen name="SkinSelector" position="209,48" size="865,623" title="Choose your Skin" flags="wfNoBorder" backgroundColor="transparent"> 
++              <ePixmap pixmap="Vu_HD/Bg_EPG_view.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_title_Setup.png" position="26,41" size="40,40" alphatest="blend"  transparent="1" />
++              <eLabel text="Choose your Skin" position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
++              <ePixmap pixmap="Vu_HD/icons/clock.png" position="750,55" zPosition="1" size="20,20" alphatest="blend" />
++              <widget source="global.CurrentTime" render="Label" position="770,57" zPosition="1" size="50,20" font="Regular;20" foregroundColor="#1c1c1c" halign="right" backgroundColor="#27d9dee2" transparent="1">
++                      <convert type="ClockToText">Format:%H:%M</convert>
++              </widget>
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="45,98" size="25,25" alphatest="blend" />
++              <widget source="key_red" render="Label" position="83,98" zPosition="2" size="150,25" foregroundColor="#1c1c1c" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" transparent="1" />
++              <widget source="introduction" render="Label" position="60,130" size="600,30" zPosition="10" foregroundColor="#3c3c3c" font="Regular;21" halign="left" valign="center" backgroundColor="#27d9dee2" transparent="1" />
++              <widget name="SkinList" position="60,170" size="420,440" itemHeight="30" backgroundColor="#27d9dee2" transparent="1" scrollbarMode="showOnDemand" />
++              <widget name="Preview" position="520,250" size="280,210" alphatest="on" />
++      </screen>
++      <!-- Sleeptimer edit -->
++      <screen name="SleepTimerEdit" position="center,center" size="520,200" title="Sleep Timer">
++              <widget name="current_status" position="40,40" size="400,30" valign="center" font="Regular;20" foregroundColor="#3c3c3c" />
++              <widget name="red" pixmap="Vu_HD/buttons/red.png" position="2,83" size="25,25" alphatest="blend" />
++              <widget name="green" pixmap="Vu_HD/buttons/green.png" position="2,122" size="25,25" alphatest="blend" />
++              <widget name="yellow" pixmap="Vu_HD/buttons/yellow.png" position="2,162" size="25,25" alphatest="blend"/>
++              <widget name="blue" pixmap="Vu_HD/buttons/blue.png" position="2,162" size="25,25" alphatest="blend" />
++              <widget name="red_text" position="40,80" size="400,30" valign="center" font="Regular;20" foregroundColor="#3c3c3c" />
++              <widget name="green_text" position="40,120" size="400,30" valign="center" font="Regular;20" foregroundColor="#3c3c3c" />
++              <widget name="yellow_text" position="40,160" size="400,30" valign="center" font="Regular;20" foregroundColor="#3c3c3c" />
++              <widget name="blue_text" position="40,200" size="400,30" valign="center" font="Regular;20" foregroundColor="#3c3c3c" />
++              <widget name="pretext" position="15,10" size="235,25" font="Regular;19" foregroundColor="#3c3c3c" />
++              <widget name="input" position="260,10" size="40,25" font="Regular;19" foregroundColor="#3c3c3c" />
++              <widget name="aftertext" position="305,10" size="100,25" font="Regular;19" foregroundColor="#3c3c3c" />
++              <ePixmap pixmap="Vu_HD/sleeptimer.png" position="390,17" size="116,142" alphatest="blend"  />
++      </screen>
++      <!-- Standby mode -->
++      <screen name="Standby" flags="wfNoBorder" position="0,0" size="720,576" title="Standby" />
++      <!-- Start Wizard -->
++      <screen name="StartWizard" position="0,0" size="1280,720" title="Welcome..." flags="wfNoBorder">
++              <widget name="text" position="303,140" size="340,300" font="Regular;22" />
++              <widget source="list" render="Listbox" position="253,440" size="440,180" scrollbarMode="showOnDemand" >
++                      <convert type="StringList" />
++              </widget>
++              <widget name="config" position="253,440" zPosition="1" size="440,180" transparent="1" scrollbarMode="showOnDemand" />
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="140,322" zPosition="0" size="25,25" transparent="1" alphatest="blend" />
++              <widget name="languagetext" position="178,325" size="95,30" font="Regular;18" />
++              <widget name="rc" pixmaps="Vu_HD/rc.png,Vu_HD/rcold.png" position="950,150" zPosition="10" size="154,500" alphatest="blend" />
++              <widget name="arrowdown" pixmap="Vu_HD/arrowdown.png" position="-100,-100" zPosition="11" size="37,70" alphatest="blend" />
++              <widget name="arrowdown2" pixmap="Vu_HD/arrowdown.png" position="-100,-100" zPosition="11" size="37,70" alphatest="blend" />
++              <widget name="arrowup" pixmap="Vu_HD/arrowup.png" position="-100,-100" zPosition="11" size="37,70" alphatest="blend" />
++              <widget name="arrowup2" pixmap="Vu_HD/arrowup.png" position="-100,-100" zPosition="11" size="37,70" alphatest="blend" />
++      </screen>
++      <!-- Network Wizard -->
++      <screen name="NetworkWizard" position="0,0" size="1280,720" title="Welcome..." flags="wfNoBorder" >
++              <widget name="text" position="303,140" size="340,300" font="Regular;22" />
++              <widget source="list" render="Listbox" position="253,440" size="440,180" scrollbarMode="showOnDemand" >
++                      <convert type="StringList" />
++              </widget>
++              <widget name="config" position="253,440" zPosition="1" size="440,180" transparent="1" scrollbarMode="showOnDemand" />
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="140,322" zPosition="0" size="25,25" transparent="1" alphatest="blend" />
++              <widget name="languagetext" position="178,325" size="95,30" font="Regular;18" />
++              <widget name="rc" pixmaps="Vu_HD/rc.png,Vu_HD/rcold.png" position="950,150" zPosition="10" size="154,500" alphatest="blend" />
++              <widget name="arrowdown" pixmap="Vu_HD/arrowdown.png" position="-100,-100" zPosition="11" size="37,70" alphatest="blend" />
++              <widget name="arrowdown2" pixmap="Vu_HD/arrowdown.png" position="-100,-100" zPosition="11" size="37,70" alphatest="blend" />
++              <widget name="arrowup" pixmap="Vu_HD/arrowup.png" position="-100,-100" zPosition="11" size="37,70" alphatest="blend" />
++              <widget name="arrowup2" pixmap="Vu_HD/arrowup.png" position="-100,-100" zPosition="11" size="37,70" alphatest="blend" />
++              <widget source="VKeyIcon" render="Pixmap" pixmap="Vu_HD/buttons/key_text.png" position="40,260" zPosition="0" size="35,25" transparent="1" alphatest="on" >
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget name="HelpWindow" pixmap="Vu_HD/buttons/key_text.png" position="125,170" zPosition="1" size="1,1" transparent="1" alphatest="on" />     
++      </screen>
++      <!-- Subservice quickzap -->
++      <screen name="SubservicesQuickzap" position="124,470" size="512,200" title="Subservices" backgroundColor="transparent" flags="wfNoBorder">
++              <widget source="session.RecordState" render="Pixmap" pixmap="Vu_HD/icons/record.png" position="450,0" zPosition="2" size="14,14" alphatest="on" >
++                      <convert type="ConditionalShowHide">Blink</convert>
++              </widget>
++              <eLabel text="Subservices" position="0,0" size="470,20" font="Regular;13" backgroundColor="#33294a6b" />
++              <widget name="CurrentSubserviceNumber" position="0,20" size="50,34" font="Regular;22" backgroundColor="#33294a6b" shadowColor="black" shadowOffset="-1,-1" />
++              <widget source="session.CurrentService" render="Label" position="50,20" size="420,34" font="Regular;22" backgroundColor="#33294a6b" shadowColor="black" shadowOffset="-1,-1">
++                      <convert type="ServiceName">Name</convert>
++              </widget>
++      </screen>
++      <!-- Subtitle selection -->
++      <screen name="Subtitles" position="center,80" size="520,538" title="Subtitle selection" flags="wfNoBorder" backgroundColor="transparent">       
++              <ePixmap pixmap="Vu_HD/Bg_Subtitle.png" position="0,0" size="520,538" zPosition="-1" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_title_Subtitles.png" position="20,38" size="40,40" alphatest="blend"  transparent="1" />
++              <eLabel text="Subtitle selection" position="69,45" size="400,32" font="Semiboldit;32" foregroundColor="#4c4c4c" backgroundColor="#27b5b9bd" transparent="1" />
++              <widget name="config" position="15,83" itemHeight="42" selectionPixmap="Vu_HD/buttons/FocusBar_H42.png" transparent="1" zPosition="1" size="490,420" scrollbarMode="showOnDemand" />
++      </screen>
++      <!-- Subtitle area -->
++      <screen name="SubtitleDisplay" position="0,0" size="1280,720" zPosition="-1" flags="wfNoBorder" backgroundColor="transparent" />
++      <!-- Time & date input -->
++      <screen name="TimeDateInput" position="160,150" size="400,200" title="Time/Date Input">
++              <widget name="cancel" pixmap="Vu_HD/buttons/red.png" position="10,0" size="136,40" alphatest="blend" />
++              <widget name="ok" pixmap="Vu_HD/buttons/green.png" position="260,0" size="136,40" alphatest="blend" />
++              <widget name="canceltext" position="30,0" zPosition="1" size="115,40" font="Regular;19" halign="center" valign="center" transparent="1" />
++              <widget name="oktext" position="280,0" zPosition="1" size="115,40" font="Regular;19" halign="center" valign="center" transparent="1" />
++              <widget name="config" position="10,40" transparent="1" size="380,150" />
++      </screen>
++      <!-- Timer edit -->
++      <screen name="TimerEdit" position="70,130" size="590,335" title="Timer Edit">
++              <widget name="description" position="10,10" size="580,40" font="Regular;25" />
++              <widget name="lbegin" position="405,102" size="103,30" font="Regular;25" foregroundColor="red" />
++              <widget name="lend" position="405,158" size="103,30" font="Regular;25" foregroundColor="green" />
++              <widget name="begin" position="508,105" size="72,35" font="Regular;25" />
++              <widget name="end" position="508,150" size="72,35" font="Regular;25" />
++              <widget name="apply" position="10,240" size="250,35" />
++      </screen>
++      <!-- Timer edit list -->
++      <screen name="TimerEditList" position="209,48" size="865,623" title="Eventview" flags="wfNoBorder" backgroundColor="transparent">       
++              <ePixmap pixmap="Vu_HD/Bg_EPG_view.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_title_Timer.png" position="32,41" size="40,40" alphatest="blend"  transparent="1" />
++              <eLabel text="Timer List" position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
++              <ePixmap pixmap="Vu_HD/icons/clock.png" position="750,55" zPosition="1" size="20,20" alphatest="blend" />
++              <widget source="global.CurrentTime" render="Label" position="770,57" zPosition="1" size="50,20" font="Regular;20" foregroundColor="#1c1c1c" backgroundColor="#27d9dee2" halign="right" transparent="1">
++                      <convert type="ClockToText">Format:%H:%M</convert>
++              </widget>
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="45,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="240,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/yellow.png" position="435,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/blue.png" position="630,98" size="25,25" alphatest="blend" />
++              <widget name="key_red" position="66,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="key_green" position="268,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="key_yellow" position="463,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="key_blue" position="658,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="timerlist" position="60,130" transparent="1" size="740,420" scrollbarMode="showOnDemand" />
++      </screen>
++      <!-- Timer entry -->
++      <screen name="TimerEntry" position="209,48" size="865,623" title="Eventview" flags="wfNoBorder" backgroundColor="transparent">  
++              <ePixmap pixmap="Vu_HD/Bg_EPG_view.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_title_Timer.png" position="32,41" size="40,40" alphatest="blend"  transparent="1" />
++              <eLabel text="Timer entry" position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
++              <ePixmap pixmap="Vu_HD/icons/clock.png" position="750,55" zPosition="1" size="20,20" alphatest="blend" />
++              <widget source="global.CurrentTime" render="Label" position="770,57" zPosition="1" size="50,20" font="Regular;20" foregroundColor="#1c1c1c" backgroundColor="#27d9dee2" halign="right" transparent="1">
++                      <convert type="ClockToText">Format:%H:%M</convert>
++              </widget>
++              <widget name="cancel" pixmap="Vu_HD/buttons/red.png" position="45,98" size="25,25" alphatest="blend" backgroundColor="#27c5c9cc" />
++              <widget name="ok" pixmap="Vu_HD/buttons/green.png" position="240,98" size="25,25" alphatest="blend" backgroundColor="#27c5c9cc" />
++              <ePixmap pixmap="Vu_HD/buttons/button_off.png" position="435,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/button_off.png" position="630,98" size="25,25" alphatest="blend" />
++              <widget name="canceltext" position="66,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="oktext" position="268,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="config" position="60,140" transparent="1" backgroundColor="#27d9dee2" size="740,325" scrollbarMode="showOnDemand" />
++              <eLabel text=" " position="50,470" zPosition="-1" size="760,3" font="Regular;10" foregroundColor="#1e1e1e" backgroundColor="#8c8c8c" />
++      </screen>
++      <!-- Timer log -->
++      <screen name="TimerLog" position="209,48" size="865,623" title="Eventview" flags="wfNoBorder" backgroundColor="transparent">    
++              <ePixmap pixmap="Vu_HD/Bg_EPG_view.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_title_Timer.png" position="32,41" size="40,40" alphatest="blend"  transparent="1" />
++              <eLabel text="Timer log" position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="45,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="240,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/yellow.png" position="435,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/blue.png" position="630,98" size="25,25" alphatest="blend" />
++              <widget name="key_red" position="66,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="key_green" position="268,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="key_yellow" position="463,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="key_blue" position="658,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="loglist" position="50,130" size="760,300" scrollbarMode="showOnDemand" />
++              <widget name="logentry" position="50,450" size="760,150" font="Regular;20" foregroundColor="#3c3c3c" backgroundColor="#27aeaeae" transparent="1"/>
++      </screen>
++      <!-- Timer sanity conflict -->
++      <screen name="TimerSanityConflict" position="209,48" size="865,623" title="Eventview" flags="wfNoBorder" backgroundColor="transparent"> 
++              <ePixmap pixmap="Vu_HD/Bg_EPG_view.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_title_Timer.png" position="32,41" size="40,40" alphatest="blend"  transparent="1" />
++              <eLabel text="Timer sanity error" position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="45,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="240,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/yellow.png" position="435,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/blue.png" position="630,98" size="25,25" alphatest="blend" />
++              <widget name="key_red" position="66,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="key_green" position="268,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="key_yellow" position="463,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="key_blue" position="658,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="timer1" position="60,140" size="700,75" scrollbarMode="showNever" />
++              <widget name="timer2" position="60,230" size="700,75" scrollbarMode="showNever" />
++              <widget name="list" position="60,320" size="700,288" transparent="1" scrollbarMode="showOnDemand" />
++      </screen>
++      <!-- Timer Selection -->
++      <screen name="TimerSelection" position="90,120" size="550,430" title="Timer selection">
++              <widget name="timerlist" position="0,45" size="550,350" scrollbarMode="showOnDemand" />
++      </screen>
++      <!-- Timeshift state -->
++      <screen name="TimeshiftState" position="70,70" zPosition="2" size="150,60" backgroundColor="transpBlack" flags="wfNoBorder">
++              <widget name="state" position="0,3" size="150,30" font="Regular;25" halign="center" foregroundColor="white" backgroundColor="transpBlack" />
++              <widget source="session.CurrentService" render="Label" position="0,35" size="150,30" font="Regular;25" halign="center" foregroundColor="white" backgroundColor="transpBlack">
++                      <convert type="ServicePosition">Remaining</convert>
++              </widget>
++      </screen>
++      <!-- Translator Info -->
++      <screen name="TranslationInfo" position="center,center" size="420,350" title="Translation">
++              <eLabel position="10,20" size="380,23" font="Regular;23" text="Translation:" />
++              <widget source="TranslatorName" render="Label" position="10,55" size="380,20" font="Regular;20" />
++              <widget source="TranslationInfo" render="Label" position="10,100" size="380,250" font="Regular;20" />
++      </screen>
++      <!-- Tutorial Wizard -->
++      <screen name="TutorialWizard" position="0,0" size="1280,720" title="Welcome..." flags="wfNoBorder" >
++              <widget name="text" position="303,140" size="340,300" font="Regular;22" />
++              <widget source="list" render="Listbox" position="253,440" size="440,180" scrollbarMode="showOnDemand" >
++                      <convert type="StringList" />
++              </widget>
++              <widget name="rc" pixmaps="Vu_HD/rc.png,Vu_HD/rcold.png" position="950,150" zPosition="10" size="154,500" alphatest="blend" />
++              <widget name="arrowdown" pixmap="Vu_HD/arrowdown.png" position="-100,-100" zPosition="11" size="37,70" alphatest="blend" />
++              <widget name="arrowup" pixmap="Vu_HD/arrowup.png" position="-100,-100" zPosition="11" size="37,70" alphatest="blend" />
++              <widget name="arrowup2" pixmap="Vu_HD/arrowup.png" position="-100,-100" zPosition="11" size="37,70" alphatest="blend" />
++      </screen>       
++      <!-- Volumebar -->
++      <screen name="Volume" position="92,40" zPosition="1" size="324,62" title="Volume" flags="wfNoBorder" backgroundColor="transparent" >
++              <ePixmap pixmap="Vu_HD/volume_background.png" position="0,0" size="324,62" />           
++              <widget name="Volume" pixmap="Vu_HD/volume_up.png" position="60,13" zPosition="1" size="250,34" transparent="1" />
++      </screen>
++
++      <!-- LCD/OLED Screens -->
++
++      <!-- LCD screen (channelselection) -->
++      <screen name="ChannelSelection_summary" position="0,0" size="132,64" id="1">
++              <widget source="parent.ServiceEvent" render="Label" position="6,0" size="120,25" font="Regular;14" halign="center" valign="center" >
++                      <convert type="ServiceName">Name</convert>
++              </widget>
++              <widget source="parent.ServiceEvent" render="Progress" position="16,27" size="100,5" borderWidth="1">
++                      <convert type="EventTime">Progress</convert>
++              </widget>
++              <widget source="global.CurrentTime" render="Label" position="6,32" size="90,32" font="Regular;32" halign="right" valign="top" transparent="1">
++                      <convert type="ClockToText">Format:%H:%M</convert>
++              </widget>
++              <widget source="global.CurrentTime" render="Label" position="100,34" zPosition="1" size="26,30" font="Regular;16" valign="top" transparent="1">
++                      <convert type="ClockToText">Format:%S</convert>
++              </widget>
++      </screen>
++      <!-- Color OLED screen (ChannelSelection) -->
++      <screen name="ChannelSelection_summary" position="0,0" size="96,64" id="2">
++              <widget source="parent.ServiceEvent" render="Label" position="0,0" size="96,25" font="Regular;14" halign="center" valign="center" >
++                      <convert type="ServiceName">Name</convert>
++              </widget>
++              <widget source="parent.ServiceEvent" render="Progress" position="0,27" size="96,5" borderWidth="1" >
++                      <convert type="EventTime">Progress</convert>
++              </widget>
++              <widget source="global.CurrentTime" render="Label" position="0,32" size="96,32" font="Regular;32" halign="center" valign="center" foregroundColor="#FFFFFF" backgroundColor="#000000" >
++                      <convert type="ClockToText">Format:%H:%M</convert>
++              </widget>
++      </screen>
++      <!-- LCD screen (main) -->
++      <screen name="InfoBarSummary" position="0,0" size="132,64" id="1">
++              <widget source="session.CurrentService" render="Label" position="6,0" size="120,25" font="Regular;14" halign="center" valign="center" >
++                      <convert type="ServiceName">Name</convert>
++              </widget>
++              <widget source="session.Event_Now" render="Progress" position="16,27" size="100,5" borderWidth="1">
++                      <convert type="EventTime">Progress</convert>
++              </widget>
++              <widget source="global.CurrentTime" render="Label" position="6,32" size="90,32" font="Regular;32" halign="right" valign="top" transparent="1">
++                      <convert type="ClockToText">Format:%H:%M</convert>
++              </widget>
++              <widget source="global.CurrentTime" render="Label" position="100,34" zPosition="1" size="26,30" font="Regular;16" valign="top" transparent="1">
++                      <convert type="ClockToText">Format:%S</convert>
++              </widget>
++              <widget source="session.RecordState" render="FixedLabel" text=" " position="6,30" zPosition="1" size="120,34">
++                      <convert type="ConfigEntryTest">config.usage.blinking_display_clock_during_recording,True,CheckSourceBoolean</convert>
++                      <convert type="ConditionalShowHide">Blink</convert>
++              </widget>
++      </screen>
++      <!-- Color OLED screen (main) -->
++      <screen name="InfoBarSummary" position="0,0" size="96,64" id="2">
++              <widget source="session.CurrentService" render="Label" position="0,0" size="96,25" font="Regular;14" halign="center" valign="center" >
++                      <convert type="ServiceName">Name</convert>
++              </widget>
++              <widget source="session.Event_Now" render="Progress" position="0,27" size="96,5" borderWidth="1" >
++                      <convert type="EventTime">Progress</convert>
++              </widget>
++              <widget source="global.CurrentTime" render="Label" position="0,32" size="96,32" font="Regular;32" halign="center" valign="center" foregroundColor="#FFFFFF" backgroundColor="#000000" >
++                      <convert type="ClockToText">Format:%H:%M</convert>
++              </widget>
++              <widget source="session.RecordState" render="FixedLabel" text=" " position="0,32" zPosition="1" size="96,32">
++                      <convert type="ConfigEntryTest">config.usage.blinking_display_clock_during_recording,True,CheckSourceBoolean</convert>
++                      <convert type="ConditionalShowHide">Blink</convert>
++              </widget>
++      </screen>
++      <!-- LCD screen (movieplayer) -->
++      <screen name="InfoBarMoviePlayerSummary" position="0,0" size="132,64" id="1">
++              <widget source="session.CurrentService" render="Label" position="6,0" size="120,25" font="Regular;14" halign="center" valign="center" >
++                      <convert type="ServiceName">Name</convert>
++              </widget>
++              <widget source="session.CurrentService" render="Progress" position="16,27" size="100,5" borderWidth="1">
++                      <convert type="ServicePosition">Position</convert>
++              </widget>
++              <widget source="global.CurrentTime" render="Label" position="6,32" size="120,32" font="Regular;32" halign="center" valign="center" transparent="1">
++                      <convert type="ClockToText">Format:%H:%M</convert>
++              </widget>
++              <widget source="session.RecordState" render="FixedLabel" text=" " position="6,32" zPosition="1" size="120,32">
++                      <convert type="ConfigEntryTest">config.usage.blinking_display_clock_during_recording,True,CheckSourceBoolean</convert>
++                      <convert type="ConditionalShowHide">Blink</convert>
++              </widget>
++      </screen>
++      <!-- Color OLED screen (movieplayer) -->
++      <screen name="InfoBarMoviePlayerSummary" position="0,0" size="96,64" id="2">
++              <widget source="session.CurrentService" render="Label" position="0,0" size="96,25" font="Regular;14" halign="center" valign="center" >
++                      <convert type="ServiceName">Name</convert>
++              </widget>
++              <widget source="session.CurrentService" render="Progress" position="0,27" size="96,5" borderWidth="1" >
++                      <convert type="ServicePosition">Position</convert>
++              </widget>
++              <widget source="global.CurrentTime" render="Label" position="0,32" size="96,32" font="Regular;32" halign="center" valign="center" foregroundColor="#FFFFFF" backgroundColor="#000000" >
++                      <convert type="ClockToText">Format:%H:%M</convert>
++              </widget>
++              <widget source="session.RecordState" render="FixedLabel" text=" " position="0,32" zPosition="1" size="96,32">
++                      <convert type="ConfigEntryTest">config.usage.blinking_display_clock_during_recording,True,CheckSourceBoolean</convert>
++                      <convert type="ConditionalShowHide">Blink</convert>
++              </widget>
++      </screen>
++      <!-- LCD screen (ChoiceBox) -->
++      <screen name="ChoiceBox_summary" position="0,0" size="132,64" id="1">
++              <widget source="parent.summary_list" render="Label" position="6,0" size="126,64" font="Regular;11" />
++      </screen>
++      <!-- Color OLED screen (ChoiceBox) -->
++      <screen name="ChoiceBox_summary" position="0,0" size="96,64" id="2">
++              <widget source="parent.summary_list" render="Label" position="0,0" size="96,64" font="Regular;10" />
++      </screen>       
++      <!-- LCD screen (MessageBox) -->
++      <screen name="MessageBox_summary" position="0,0" size="132,64" id="1">
++              <widget source="parent.Text" render="Label" position="0,0" size="132,52" font="Regular;11" halign="center" valign="center" />
++              <widget source="parent.selectedChoice" render="Label" position="6,50" size="120,14" font="Regular;14" halign="center" valign="center" />
++      </screen>
++      <!-- Color OLED screen (MessageBox) -->
++      <screen name="MessageBox_summary" position="0,0" size="96,64" id="2">
++              <widget source="parent.Text" render="Label" position="0,0" size="96,52" font="Regular;10" halign="center" valign="center" />
++              <widget source="parent.selectedChoice" render="Label" position="0,50" size="96,14" font="Regular;12" halign="center" valign="center" />
++      </screen>
++      <!-- LCD screen (menus) -->
++      <screen name="MenuSummary" position="0,0" size="132,64" id="1">
++              <widget source="parent.title" render="Label" position="6,0" size="120,32" font="Regular;14" halign="center" valign="center"/>
++              <widget source="parent.menu" render="Label" position="6,32" size="120,32" font="Regular;16" halign="center" valign="center">
++                      <convert type="StringListSelection" />
++              </widget>
++      </screen> 
++      <!-- Color OLED screen (menus) -->
++      <screen name="MenuSummary" position="0,0" size="96,64" id="2">
++              <widget source="parent.title" render="Label" position="0,0" size="96,32" font="Regular;14" halign="center" valign="center"/>
++              <widget source="parent.menu" render="Label" position="0,32" size="96,32" font="Regular;14" halign="center" valign="center">
++                      <convert type="StringListSelection" />
++              </widget>
++      </screen>       
++      <!-- LCD screen (ServiceScan) -->
++      <screen name="ServiceScanSummary" position="0,0" size="132,64" id="1">
++              <widget name="Title" position="6,4" size="120,42" font="Regular;16" transparent="1" />
++              <widget name="Service" position="6,22" size="120,26" font="Regular;12" transparent="1" />
++              <widget name="scan_progress" position="6,50" zPosition="1" borderWidth="1" size="56,12" backgroundColor="dark" />
++      </screen>
++      <!-- Color OLED screen (ServiceScan) -->
++      <screen name="ServiceScanSummary" position="0,0" size="96,64" id="2">
++              <widget name="Title" position="0,0" size="96,30" font="Regular;14" transparent="1" />
++              <widget name="Service" position="0,30" size="96,20" font="Regular;10" transparent="1" />
++              <widget name="scan_progress" position="0,50" zPosition="1" borderWidth="1" size="96,12" backgroundColor="dark" />
++      </screen>
++      <!-- LCD screen (setup) -->
++      <screen name="SetupSummary" position="0,0" size="132,64" id="1">
++              <widget source="SetupTitle" render="Label" position="6,0" size="120,16" font="Regular;12" />
++              <widget source="SetupEntry" render="Label" position="6,16" size="120,32" font="Regular;12" />
++              <widget source="SetupValue" render="Label" position="6,48" size="120,16" font="Regular;12" />
++      </screen>
++      <!-- Color OLED screen (setup) -->
++      <screen name="SetupSummary" position="0,0" size="96,64" id="2">
++              <widget source="SetupTitle" render="Label" position="0,0" size="96,16" font="Regular;10" />
++              <widget source="SetupEntry" render="Label" position="0,16" size="96,32" font="Regular;10" />
++              <widget source="SetupValue" render="Label" position="0,48" size="96,16" font="Regular;10" />
++      </screen>
++      <!-- LCD screen (misc) -->
++      <screen name="SimpleSummary" position="0,0" size="132,64" id="1">
++              <widget source="parent.Title" render="Label" position="6,0" size="120,64" font="Regular;16" halign="center" valign="center" />
++      </screen>
++      <!-- Color OLED screen (misc) -->
++      <screen name="SimpleSummary" position="0,0" size="96,64" id="2">
++              <widget source="parent.Title" render="Label" position="0,0" size="96,64" font="Regular;14" halign="center" valign="center" />
++      </screen>
++      <!-- LCD screen (standby) -->
++      <screen name="StandbySummary" position="0,0" size="132,64" id="1">
++              <widget source="global.CurrentTime" render="Label" position="6,0" size="120,64" font="Regular;40" halign="center" valign="center">
++                      <convert type="ClockToText">Format:%H:%M</convert>
++              </widget>
++              <widget source="session.RecordState" render="FixedLabel" position="6,0" zPosition="1" size="120,64" text=" ">
++                      <convert type="ConfigEntryTest">config.usage.blinking_display_clock_during_recording,True,CheckSourceBoolean</convert>
++                      <convert type="ConditionalShowHide">Blink</convert>
++              </widget>
++      </screen>
++      <!-- Color OLED screen (standby) -->
++      <screen name="StandbySummary" position="0,0" size="96,64" id="2">
++              <widget source="global.CurrentTime" render="Label" position="0,0" size="96,64" font="Regular;40" halign="center" valign="center">
++                      <convert type="ClockToText">Format:%H:%M</convert>
++              </widget>
++              <widget source="session.RecordState" render="FixedLabel" position="0,0" zPosition="1" size="96,64" text=" ">
++                      <convert type="ConfigEntryTest">config.usage.blinking_display_clock_during_recording,True,CheckSourceBoolean</convert>
++                      <convert type="ConditionalShowHide">Blink</convert>
++              </widget>
++      </screen>
++      <!-- LCD screen (JobView) -->
++      <screen name="JobView_summary" position="0,0" size="132,64" id="1">
++              <widget source="parent.summary_job_name" render="Label" position="6,4" size="120,42" font="Regular;16" />
++              <widget source="parent.summary_job_task" render="Label" position="6,22" size="120,26" font="Regular;12" />
++              <widget source="parent.summary_job_progress" render="Progress" position="6,50" size="60,12" borderWidth="1" zPosition="1" />
++              <widget source="parent.summary_job_progress" render="Label" position="66,50" size="50,12" font="Regular;12" zPosition="2" halign="center" transparent="1"  >
++                      <convert type="ProgressToText" />
++              </widget>
++      </screen>
++      <!-- Color OLED screen (JobView) -->
++      <screen name="JobView_summary" position="0,0" size="96,64" id="2">
++              <widget source="parent.summary_job_name" render="Label" position="0,4" size="96,42" font="Regular;14" />
++              <widget source="parent.summary_job_task" render="Label" position="0,22" size="96,26" font="Regular;10" />
++              <widget source="parent.summary_job_progress" render="Progress" position="0,50" size="60,12" borderWidth="1" zPosition="1" />
++              <widget source="parent.summary_job_progress" render="Label" position="60,50" size="36,12" font="Regular;10" zPosition="2" halign="center" transparent="1"  >
++                      <convert type="ProgressToText" />
++              </widget>
++      </screen>
++      <!-- LCD screen (Wizard) -->
++      <screen name="WizardSummary" position="0,0" size="132,64" id="1">
++              <widget source="text" render="Label" position="6,0" size="120,16" font="Regular;16" transparent="1" />
++              <widget source="parent.list" render="Label" position="6,18" size="120,46" font="Regular;12">
++                      <convert type="StringListSelection" />
++              </widget>
++      </screen>
++      <!-- Color OLED screen (Wizard) -->
++      <screen name="WizardSummary" position="0,0" size="96,64" id="2">
++              <widget source="text" render="Label" position="0,0" size="96,16" font="Regular;14" transparent="1" />
++              <widget source="parent.list" render="Label" position="0,18" size="96,46" font="Regular;12">
++                      <convert type="StringListSelection" />
++              </widget>
++      </screen>
++      
++      <!-- JobView -->
++      <screen name="JobView" position="center,center" size="520,350" title="Job View">
++              <widget source="job_name" render="Label" position="20,12" size="480,60" font="Regular;28" />
++              <widget source="job_task" render="Label" position="20,90" size="480,50" font="Regular;23" />
++              <widget source="job_progress" render="Progress" position="20,162" size="480,36" borderWidth="2" backgroundColor="#254f7497" />
++              <widget source="job_progress" render="Label" position="120,166" size="280,32" font="Regular;28" foregroundColor="#000000" zPosition="2" halign="center" transparent="1"  >
++                      <convert type="ProgressToText" />
++              </widget>
++              <widget source="job_status" render="Label" position="20,212" size="480,26" font="Regular;23" />
++              <widget name="config" position="20,254" size="480,20" />
++              <widget source="cancelable" render="Pixmap" pixmap="Vu_HD/buttons/red.png" position="20,300" size="25,25" alphatest="on" >
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="cancelable" render="FixedLabel" text="Cancel" position="50,300" zPosition="1" size="110,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" >
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="finished" render="Pixmap" pixmap="Vu_HD/buttons/green.png" position="190,300" size="25,25" alphatest="on" >
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="finished" render="FixedLabel" text="OK" font="Regular;20" halign="center" valign="center" position="220,300" size="110,40" transparent="1" backgroundColor="#1f771f" >
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="backgroundable" render="Pixmap" pixmap="Vu_HD/buttons/blue.png" position="360,300" size="25,25" alphatest="on" >
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="backgroundable" render="FixedLabel" text="Continue in background" font="Regular;20" halign="center" valign="center" position="390,300" size="110,40" transparent="1" backgroundColor="#18188b" >
++                      <convert type="ConditionalShowHide" />
++              </widget>
++      </screen>
++      <!-- VirtualKeyBoard -->
++      <screen name="VirtualKeyBoard" position="center,center" size="560,350" zPosition="99" title="Virtual KeyBoard">
++              <ePixmap pixmap="skin_default/vkey_text.png" position="9,35" zPosition="-4" size="542,52" alphatest="on" />
++              <widget name="header" position="10,10" size="500,20" font="Regular;20" transparent="1" noWrap="1" />
++              <widget name="text" position="12,35" size="536,46" font="Regular;46" transparent="1" noWrap="1" halign="right" />
++              <widget name="list" position="10,100" size="540,225" selectionDisabled="1" foregroundColor="#ececec" backgroundColor="#1c2c5c" transparent="1" />
++      </screen>
++      <!-- FileBrowser -->
++      <screen name="FileBrowser" position="center,120" size="700,500" title="DVD File Browser" >
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="100,0" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="295,0" size="25,25" alphatest="blend" />
++              <widget source="key_red" render="Label" position="138,0" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="#279e9fa4" transparent="1" />
++              <widget source="key_green" render="Label" position="333,0" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="#279e9fa4" transparent="1" />
++              <widget name="filelist" position="50,50" size="600,450" scrollbarMode="showOnDemand" />
++      </screen>
++      <screen name="CutListEditor" position="0,0" size="1280,720" title="Cutlist editor" flags="wfNoBorder">
++              <widget source="global.CurrentTime" render="Label" position="1130,40" size="80,26" font="Regular;26" halign="right" transparent="1" >
++                      <convert type="ClockToText">Default</convert>
++              </widget>
++              <widget source="global.CurrentTime" render="Label" position="1000,72" size="210,22" font="Regular;20" halign="right" transparent="1">
++                      <convert type="ClockToText">Format:%d.%m.%Y</convert>
++              </widget>
++              <eLabel text="Cutlist editor" position="90,120" size="320,32" font="Regular;27" transparent="1" />
++              <eLabel position="80,155" size="340,420" zPosition="1" backgroundColor="black" />
++              <eLabel position="81,156" size="338,418" zPosition="2" backgroundColor="white" />
++              <widget source="cutlist" render="Listbox"       position="90,165" zPosition="3" size="320,400" scrollbarMode="showOnDemand" backgroundColor="white" transparent="1" >
++                      <convert type="TemplatedMultiContent">
++                              {"template": [
++                                              MultiContentEntryText(size=(220, 20), text = 1),
++                                              MultiContentEntryText(pos=(220,2), size=(100, 20), text = 2, flags = RT_HALIGN_RIGHT)
++                                      ],
++                               "fonts": [gFont("Regular", 20)],
++                               "itemHeight": 25
++                              }
++                      </convert>
++              </widget>
++              <eLabel position="479,124" zPosition="3" size="696,377" backgroundColor="#ff000000" />
++              <widget name="Video" position="491,130" zPosition="-10" size="672,365" />
++              <widget source="session.CurrentService" render="Label" position="450,510" size="790,30" zPosition="3" font="Regular;24" backgroundColor="#27c2bbb2" halign="center" valign="center" transparent="1">
++                      <convert type="ServiceName">Name</convert>
++              </widget>
++              <widget source="session.CurrentService" render="Label" position="450,550" size="790,25" zPosition="3" font="Regular;20" halign="center" valign="center" transparent="1">
++                      <convert type="ServicePosition">Position,Detailed</convert>
++              </widget>
++              <widget name="Timeline" position="479,587" size="696,20" zPosition="3" pointer="skin_default/position_arrow.png:3,5" backgroundColor="#2707255d" />
++              <eLabel text="OK = Menu" position="1060,630" size="140,22" zPosition="1" font="Regular;20" backgroundColor="#27c2bbb2" transparent="1" />
++      </screen>
++      <screen name="DVDToolbox" position="center,120"  size="560,420" title="DVD media toolbox" >
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="0,0" size="140,40" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="140,0" size="140,40" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/yellow.png" position="280,0" size="140,40" alphatest="blend" />
++              <widget source="key_red" render="Label" position="20,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget source="key_green" render="Label" position="160,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget source="key_yellow" render="Label" position="300,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />
++              <widget source="info" render="Label" position="20,50" size="520,100" font="Regular;20" />
++              <widget name="details" position="20,180" size="520,200" font="Regular;16" />
++              <widget source="space_bar" render="Progress" position="10,390" size="540,26" borderWidth="1" backgroundColor="#254f7497" />
++              <widget source="space_label" render="Label" position="20,394" size="520,22" zPosition="2" font="Regular;18" halign="center" transparent="1" foregroundColor="#000000" />
++      </screen>
++      <screen name="ProjectSettings" position="center,120" size="560,420" title="Collection settings" >
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="0,0" size="140,40" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="140,0" size="140,40" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/yellow.png" position="280,0" size="140,40" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/blue.png" position="420,0" size="140,40" alphatest="blend" />
++              <widget source="key_red" render="Label" position="20,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget source="key_green" render="Label" position="160,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget source="key_yellow" render="Label" position="300,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />
++              <widget source="key_blue" render="Label" position="440,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#18188b" transparent="1" />
++              <widget name="config" position="5,50" size="550,276" scrollbarMode="showOnDemand" />
++              <ePixmap pixmap="Vu_HD/div-h.png" position="0,330" zPosition="1" size="560,2" />
++              <widget source="info" render="Label" position="10,340" size="550,80" font="Regular;18" halign="center" valign="center" />
++      </screen>
++      <screen name="TitleCutter" position="0,0" size="1280,720" title="Cutlist editor" flags="wfNoBorder">
++              <widget source="global.CurrentTime" render="Label" position="1130,40" size="80,26" font="Regular;26" halign="right" transparent="1" >
++                      <convert type="ClockToText">Default</convert>
++              </widget>
++              <widget source="global.CurrentTime" render="Label" position="1000,72" size="210,22" font="Regular;20" halign="right" transparent="1">
++                      <convert type="ClockToText">Format:%d.%m.%Y</convert>
++              </widget>
++              <eLabel text="Cutlist editor" position="90,120" size="320,32" font="Regular;27" transparent="1" />
++              <eLabel position="80,155" size="340,420" zPosition="1" backgroundColor="black" />
++              <eLabel position="81,156" size="338,418" zPosition="2" backgroundColor="white" />
++              <widget source="cutlist" render="Listbox"       position="90,165" zPosition="3" size="320,400" scrollbarMode="showOnDemand" backgroundColor="white" transparent="1" >
++                      <convert type="TemplatedMultiContent">
++                              {"template": [
++                                              MultiContentEntryText(size=(220, 20), text = 1),
++                                              MultiContentEntryText(pos=(220,2), size=(100, 20), text = 2, flags = RT_HALIGN_RIGHT)
++                                      ],
++                               "fonts": [gFont("Regular", 20)],
++                               "itemHeight": 25
++                              }
++                      </convert>
++              </widget>
++              <eLabel position="479,124" zPosition="3" size="696,377" backgroundColor="#ff000000" />
++              <widget name="Video" position="491,130" zPosition="-10" size="672,365" />
++              <widget source="session.CurrentService" render="Label" position="450,510" size="790,30" zPosition="3" font="Regular;24" backgroundColor="#27c2bbb2" halign="center" valign="center" transparent="1">
++                      <convert type="ServiceName">Name</convert>
++              </widget>
++              <widget source="session.CurrentService" render="Label" position="450,550" size="790,25" zPosition="3" font="Regular;20" halign="center" valign="center" transparent="1">
++                      <convert type="ServicePosition">Position,Detailed</convert>
++              </widget>
++              <widget name="Timeline" position="479,587" size="696,20" zPosition="3" pointer="skin_default/position_arrow.png:3,5" backgroundColor="#2707255d" />
++              <eLabel text="OK = Menu" position="1060,630" size="140,22" zPosition="1" font="Regular;20" backgroundColor="#27c2bbb2" transparent="1" />
++      </screen>
++      <screen name="TitleList" position="209,48" size="865,623" title="DVD Tool" flags="wfNoBorder" backgroundColor="transparent">    
++              <ePixmap pixmap="Vu_HD/Bg_EPG_view.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_title_Setup.png" position="32,41" size="40,40" alphatest="blend"  transparent="1" />
++              <eLabel text="DVD Tool" position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
++              <ePixmap pixmap="Vu_HD/icons/clock.png" position="750,55" zPosition="1" size="20,20" alphatest="blend" />
++              <widget source="global.CurrentTime" render="Label" position="770,57" zPosition="1" size="50,20" font="Regular;20" foregroundColor="#1c1c1c" halign="right" transparent="1">
++                      <convert type="ClockToText">Format:%H:%M</convert>
++              </widget>
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="45,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="240,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/yellow.png" position="435,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/blue.png" position="630,98" size="25,25" alphatest="blend" />
++              <widget source="key_red" render="Label" position="83,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="key_green" render="Label" position="278,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="key_yellow" render="Label" position="473,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="key_blue" render="Label" position="663,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="title_label" render="Label" position="160,148" size="540,38" font="Regular;18" backgroundColor="#27c2bbb2" transparent="1" />
++              <widget source="error_label" render="Label" position="160,148" size="540,340" zPosition="3" font="Regular;20" backgroundColor="#27c2bbb2" transparent="1" />
++              <widget source="titles" render="Listbox" scrollbarMode="showOnDemand" position="160,186" size="540,277" zPosition="3" transparent="1" >
++                      <convert type="TemplatedMultiContent">
++                              {"template": [
++                                              MultiContentEntryText(pos = (0, 0), size = (420, 20), font = 0, flags = RT_HALIGN_LEFT, text = 1), # index 1 Title,
++                                              MultiContentEntryText(pos = (0, 20), size = (328, 17), font = 1, flags = RT_HALIGN_LEFT, text = 2), # index 2 description,
++                                              MultiContentEntryText(pos = (420, 6), size = (120, 20), font = 1, flags = RT_HALIGN_RIGHT, text = 3), # index 3 begin time,
++                                              MultiContentEntryText(pos = (328, 20), size = (154, 17), font = 1, flags = RT_HALIGN_RIGHT, text = 4), # index 4 channel,
++                                              MultiContentEntryText(pos = (482, 20), size = (58, 20), font = 1, flags = RT_HALIGN_RIGHT, text = 5), # index 4 channel,
++                                      ],
++                                      "fonts": [gFont("Regular", 20), gFont("Regular", 14)],
++                                      "itemHeight": 37
++                              }
++                      </convert>
++              </widget>
++              <widget source="space_bar_single" render="Progress" position="160,490" size="270,24" borderWidth="1" zPosition="2" backgroundColor="#254f7497" />
++              <widget source="space_label_single" render="Label" position="160,493" size="270,22" zPosition="3" font="Regular;18" halign="center" transparent="1" foregroundColor="#000000" />
++              <widget source="space_bar_dual" render="Progress" position="160,490" size="540,24" borderWidth="1" backgroundColor="#254f7497" />
++              <widget source="space_label_dual" render="Label" position="160,493" size="540,22" zPosition="2" font="Regular;18" halign="center" transparent="1" foregroundColor="#000000" />
++      </screen>
++      <screen name="DVDMovieSelection" position="center,120" size="560,425" title="Select a movie">
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="0,0" size="140,40" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="140,0" size="140,40" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/yellow.png" position="280,0" size="140,40" alphatest="blend" />
++              <widget source="key_red" render="Label" position="20,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget source="key_green" render="Label" position="160,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget source="key_yellow" render="Label" position="300,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />
++              <widget name="waitingtext" position="0,45" size="560,375" zPosition="4" font="Regular;22" halign="center" valign="center" />
++              <widget name="list" position="5,40" size="550,355" zPosition="2" scrollbarMode="showOnDemand" />
++              <widget name="DescriptionBorder" pixmap="Vu_HD/border_eventinfo.png" position="0,296" zPosition="1" size="560,103" transparent="1" alphatest="on" />
++              <widget source="Service" render="Label" position="5,298" zPosition="1" size="480,35" font="Regular;17" foregroundColor="#cccccc">
++                      <convert type="MovieInfo">ShortDescription</convert>
++              </widget>
++              <widget source="Service" render="Label" position="495,298" zPosition="1" size="60,22" font="Regular;17" halign="right">
++                      <convert type="ServiceTime">Duration</convert>
++                      <convert type="ClockToText">AsLength</convert>
++              </widget>
++              <widget source="Service" render="Label" position="380,317" zPosition="2" size="175,22" font="Regular;17" halign="right">
++                      <convert type="MovieInfo">RecordServiceName</convert>
++              </widget>
++              <widget source="Service" render="Label" position="5,337" zPosition="1" size="550,58" font="Regular;19">
++                      <convert type="EventName">ExtendedDescription</convert>
++              </widget>
++              <widget name="freeDiskSpace" position="10,405" size="540,20" font="Regular;19" valign="center" halign="right" />
++      </screen>       
++      <screen name="TitleProperties" position="center,120" size="560,425" title="Properties of current title" >
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="0,0" size="140,40" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="140,0" size="140,40" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/blue.png" position="420,0" size="140,40" alphatest="blend" />
++              <widget source="key_red" render="Label" position="20,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget source="key_green" render="Label" position="160,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget source="key_blue" render="Label" position="440,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#18188b" transparent="1" />
++              <widget source="serviceinfo" render="Label" position="10,46" size="350,144" font="Regular;18" />
++              <widget name="thumbnail" position="370,46" size="180,144" alphatest="on" />
++              <widget name="config" position="10,196" size="540,228" scrollbarMode="showOnDemand" />
++      </screen>
++      <screen name="DVDPlayer" flags="wfNoBorder" position="200,516" size="880,162" title="InfoBar" backgroundColor="transparent">
++              <!-- Background -->
++              <ePixmap position="0,0" zPosition="-1" size="880,144" pixmap="Vu_HD/Bg_Media_info.png" />
++              <ePixmap position="35,18" size="37,28" pixmap="Vu_HD/menu/ico_title_media-info.png" alphatest="blend" />                
++              <!-- colorbuttons -->
++              <ePixmap position="50,75" pixmap="Vu_HD/icons/ico_player.png" size="152,18" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/icons/clock.png" position="770,15" zPosition="1" size="20,20" alphatest="blend" />
++              <widget source="global.CurrentTime" render="Label" position="790,17" zPosition="1" size="50,20" font="Regular;20" foregroundColor="#1c1c1c" backgroundColor="#27d9dee2" halign="right" transparent="1">
++                      <convert type="ClockToText">Format:%H:%M</convert>
++              </widget>
++              <!-- Servicename -->
++              <ePixmap pixmap="Vu_HD/icons/icon_event.png" position="85,15" zPosition="1" size="15,10" alphatest="on" />
++              <widget source="session.CurrentService" render="Label" position="110,10" size="300,20" font="Regular;20" backgroundColor="#27d9dee2" transparent="1" noWrap="1">
++                      <convert type="ServiceName">Name</convert>
++              </widget>
++              <!-- Chapter info -->
++              <widget name="chapterLabel" position="110,32" size="360,20" font="Regular;16" foregroundColor="#3c3c3c" backgroundColor="#27d9dee2" transparent="1" />
++              <!-- Audio track info -->
++              <ePixmap pixmap="Vu_HD/icons/icon_dolby.png" position="675,52" zPosition="1" size="43,15" alphatest="blend"/>
++              <widget name="audioLabel" position="720,50" size="130,22" font="Regular;16" backgroundColor="#27aeaeae" transparent="1" />
++              <!-- Subtitle track info -->
++              <widget source="session.CurrentService" render="Pixmap" pixmap="Vu_HD/icons/icon_txt.png" position="520,52" zPosition="1" size="26,16" alphatest="blend" >
++                      <convert type="ServiceInfo">HasTelext</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget name="subtitleLabel" position="550,50" size="120,22" font="Regular;16" backgroundColor="#263c59" transparent="1" />
++              <!-- Angle info -->
++              <widget name="anglePix" pixmap="Vu_HD/icons/icon_view.png" position="370,50" size="26,16" alphatest="on" />
++              <widget name="angleLabel" position="400,48" size="120,22" font="Regular;16" backgroundColor="#263c59" transparent="1" />
++              <!-- Elapsed time -->
++              <widget source="session.CurrentService" render="Label" position="240,95" size="100,24" font="Semiboldit;18" halign="left" valign="center" foregroundColor="#3d0e82" backgroundColor="#27aeaeae" transparent="1">
++                      <convert type="ServicePosition">Position,ShowHours</convert>
++              </widget>
++              <!-- Progressbar (movie position)-->
++              <ePixmap position="240,75" size="563,18" pixmap="Vu_HD/icons/Mediaplayerbar_gray.png" alphatest="blend" />              
++              <widget source="session.CurrentService" render="PositionGauge" position="242,68" size="563,25" zPosition="2" pointer="Vu_HD/icons/Mediaplayerbar_purple.png:563,0" transparent="1">
++                      <convert type="ServicePosition">Gauge</convert>
++              </widget>
++              <!-- Remaining time -->
++              <widget source="session.CurrentService" render="Label" position="700,95" size="95,20" font="Regular;16" halign="right" valign="center" foregroundColor="#3c3c3c" backgroundColor="#27aeaeae" transparent="1">
++                      <convert type="ServicePosition">Remaining,Negate,ShowHours</convert>
++              </widget>
++      </screen>
++      <screen name="ModemSetup" position="180,100" size="320,300" title="Modem" >
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="10,10" size="140,40" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="160,10" size="140,40" alphatest="blend" />
++              <widget name="key_green" position="30,10" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget name="key_red" position="180,10" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget name="list" position="10,60" size="300,120" />
++              <widget name="state" position="10,210" size="300,80" font="Regular;20" />
++      </screen>
++      <screen name="picshow" position="center,120" size="560,420" title="PicturePlayer" >
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="0,0" size="140,40" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="140,0" size="140,40" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/yellow.png" position="280,0" size="140,40" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/blue.png" position="420,0" size="140,40" alphatest="blend" />
++              <widget source="key_red" render="Label" position="20,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget source="key_green" render="Label" position="160,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget source="key_yellow" render="Label" position="300,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />
++              <widget source="key_blue" render="Label" position="440,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#18188b" transparent="1" />
++              <widget source="label" render="Label" position="5,55" size="350,140" font="Regular;19" backgroundColor="#25062748" transparent="1"  />
++              <widget name="thn" position="360,40" size="180,160" alphatest="on" />
++              <widget name="filelist" position="5,205" zPosition="2" size="550,210" scrollbarMode="showOnDemand" />
++      </screen>       
++      <screen name="Pic_Exif" position="center,center" size="560,360" title="Info" >
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="0,0" size="140,40" alphatest="blend" />
++              <widget source="key_red" render="Label" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget source="menu" render="Listbox" position="5,50" size="550,310" scrollbarMode="showOnDemand" selectionDisabled="1" >
++                      <convert type="TemplatedMultiContent">
++                      {
++                              "template": [  MultiContentEntryText(pos = (5, 5), size = (250, 30), flags = RT_HALIGN_LEFT, text = 0), MultiContentEntryText(pos = (260, 5), size = (290, 30), flags = RT_HALIGN_LEFT, text = 1)],
++                              "fonts": [gFont("Regular", 20)],
++                              "itemHeight": 30
++                      }
++                      </convert>
++              </widget>
++      </screen>
++      <screen name="CleanupWizard" position="0,0" size="1280,720" title="Welcome..." flags="wfNoBorder" >
++              <widget name="text" position="400,100" size="550,270" font="Regular;23" />
++              <widget source="list" render="Listbox" transparent="1" position="300,400" size="500,300" scrollbarMode="showOnDemand" >
++                      <convert type="StringList" />
++              </widget>
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="150,250" size="25,25" alphatest="blend" />
++              <widget name="languagetext" position="200,253" size="120,30" font="Regular;18" />
++              <widget name="config" position="300,400" zPosition="1" size="500,300" transparent="1" scrollbarMode="showOnDemand" />            
++              <widget name="portpic" position="100,400" zPosition="10" size="150,150" transparent="1" alphatest="on"/>
++              <widget name="rc" pixmap="Vu_HD/rc.png" position="950,150" zPosition="10" size="154,500" transparent="1" alphatest="blend"/>
++              <widget name="arrowdown" pixmap="Vu_HD/arrowdown.png" position="-100,-100" zPosition="11" size="37,70" transparent="1" alphatest="blend"/>
++              <widget name="arrowdown2" pixmap="Vu_HD/arrowdown.png" position="-100,-100" zPosition="11" size="37,70" transparent="1" alphatest="blend"/>
++              <widget name="arrowup" pixmap="Vu_HD/arrowup.png" position="-100,-100" zPosition="11" size="37,70" transparent="1" alphatest="blend"/>
++              <widget name="arrowup2" pixmap="Vu_HD/arrowup.png" position="-100,-100" zPosition="11" size="37,70" transparent="1" alphatest="blend"/>
++      </screen>
++              <screen name="CleanupWizardConfiguration" position="209,48" size="865,623" title="CleanupWizard settings" flags="wfNoBorder" backgroundColor="transparent">     
++              <ePixmap pixmap="Vu_HD/Bg_EPG_list.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_title_Setup.png" position="32,41" size="40,40" alphatest="blend"  transparent="1" />
++              <eLabel text="CleanupWizard settings" position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
++              <ePixmap pixmap="Vu_HD/icons/clock.png" position="750,55" zPosition="1" size="20,20" alphatest="blend" />
++              <widget source="global.CurrentTime" render="Label" position="770,57" zPosition="1" size="50,20" font="Regular;20" foregroundColor="#1c1c1c" backgroundColor="#27d9dee2" halign="right" transparent="1">
++                      <convert type="ClockToText">Format:%H:%M</convert>
++              </widget>
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="45,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="240,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/button_off.png" position="435,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/button_off.png" position="630,98" size="25,25" alphatest="blend" />
++              <widget source="key_red" render="Label" position="66,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="key_green" render="Label" position="268,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="config" zPosition="2" position="50,130" itemHeight="36" size="750,324" scrollbarMode="showOnDemand" transparent="1" />
++              <eLabel text=" " position="145,460" zPosition="10" size="560,2" transparent="1" backgroundColor="#8c8c8c" />
++              <widget source="status" render="Label" position="160,525" size="540,60" zPosition="10" foregroundColor="#3c3c3c" backgroundColor="#27aeaeae" font="Regular;20" halign="center" valign="center" transparent="1"/>
++      </screen>
++      <screen name="CIselectMainMenu" position="100,80" size="520,538" title="CI assignment" flags="wfNoBorder" backgroundColor="transparent">        
++              <ePixmap pixmap="Vu_HD/Bg_Subtitle.png" position="0,0" size="520,538" zPosition="-1" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_title_Setup.png" position="16,36" size="40,40" alphatest="blend"  transparent="1" />
++              <eLabel text="CI assignment" position="69,45" size="400,32" font="Semiboldit;32" foregroundColor="#4c4c4c" backgroundColor="#b5b9bd" transparent="1" />
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="20,91" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="210,91" size="25,25" alphatest="blend" />
++              <widget source="key_red" render="Label" position="58,93" zPosition="1" size="150,20" font="Regular;20" halign="center" valign="center" backgroundColor="#27b5b9bd" transparent="1" />
++              <widget source="key_green" render="Label" position="248,93" zPosition="1" size="150,20" font="Regular;20" halign="center" valign="center" backgroundColor="#27b5b9bd" transparent="1" />
++              <widget name="CiList" position="15,125" itemHeight="42" selectionPixmap="Vu_HD/buttons/FocusBar_H42.png" transparent="1" zPosition="1" size="490,336" scrollbarMode="showOnDemand" />
++      </screen>
++      <screen name="CIconfigMenu" position="209,48" size="865,623" title="CI assignment" flags="wfNoBorder" backgroundColor="transparent">    
++              <ePixmap pixmap="Vu_HD/Bg_EPG_view.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_title_Setup.png" position="32,41" size="40,40" alphatest="blend"  transparent="1" />
++              <eLabel text="CI assignment" position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
++              <ePixmap pixmap="Vu_HD/icons/clock.png" position="750,55" zPosition="1" size="20,20" alphatest="blend" />
++              <widget source="global.CurrentTime" render="Label" position="770,57" zPosition="1" size="50,20" font="Regular;20" foregroundColor="#1c1c1c" halign="right" transparent="1">
++                      <convert type="ClockToText">Format:%H:%M</convert>
++              </widget>
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="45,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="240,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/yellow.png" position="435,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/blue.png" position="630,98" size="25,25" alphatest="blend" />
++              <widget source="key_red" render="Label" position="73,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="key_green" render="Label" position="268,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="key_yellow" render="Label" position="473,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="key_blue" render="Label" position="668,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="CAidList_desc" render="Label" position="155,200" size="550,22" font="Regular;20"  backgroundColor="#27d9dee2" transparent="1" />
++              <widget source="CAidList" render="Label" position="155,230" size="550,45" font="Regular;20"  backgroundColor="#27d9dee2" transparent="1" />
++              <ePixmap pixmap="Vu_HD/div-h.png" position="150,275" zPosition="1" size="560,2" />
++              <widget source="ServiceList_desc" render="Label" position="155,280" size="550,22" font="Regular;20" backgroundColor="#27d9dee2" transparent="1"  />
++              <widget name="ServiceList" position="155,310" size="550,250" zPosition="1" scrollbarMode="showOnDemand" />
++              <widget source="ServiceList_info" render="Label" position="155,310" size="550,250" zPosition="2" font="Regular;20" backgroundColor="#27d9dee2" transparent="1"  />
++      </screen>
++      <screen name="easyCIconfigMenu" position="209,48" size="865,623" title="CI assignment" flags="wfNoBorder" backgroundColor="transparent">        
++              <ePixmap pixmap="Vu_HD/Bg_EPG_view.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_title_Setup.png" position="32,41" size="40,40" alphatest="blend"  transparent="1" />
++              <eLabel text="CI assignment" position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
++              <ePixmap pixmap="Vu_HD/icons/clock.png" position="750,55" zPosition="1" size="20,20" alphatest="blend" />
++              <widget source="global.CurrentTime" render="Label" position="770,57" zPosition="1" size="50,20" font="Regular;20" foregroundColor="#1c1c1c" halign="right" transparent="1">
++                      <convert type="ClockToText">Format:%H:%M</convert>
++              </widget>
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="45,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="240,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/yellow.png" position="435,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/button_off.png" position="630,98" size="25,25" alphatest="blend" />
++              <widget source="key_red" render="Label" position="73,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="key_green" render="Label" position="268,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="key_yellow" render="Label" position="473,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="ServiceList_desc" render="Label" position="155,200" size="550,22" font="Regular;20" backgroundColor="#27d9dee2" transparent="1"  />
++              <widget name="ServiceList" position="155,230" size="550,300" zPosition="1" scrollbarMode="showOnDemand" />
++              <widget source="ServiceList_info" render="Label" position="155,230" size="550,300" zPosition="2" font="Regular;20" backgroundColor="#27d9dee2" transparent="1"  />
++      </screen>       
++      <screen name="CAidSelect" position="209,48" size="865,623" title="select CAId's" flags="wfNoBorder" backgroundColor="transparent">      
++              <ePixmap pixmap="Vu_HD/Bg_EPG_view.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_title_Setup.png" position="32,41" size="40,40" alphatest="blend"  transparent="1" />
++              <eLabel text="select CAId's" position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
++              <ePixmap pixmap="Vu_HD/icons/clock.png" position="750,55" zPosition="1" size="20,20" alphatest="blend" />
++              <widget source="global.CurrentTime" render="Label" position="770,57" zPosition="1" size="50,20" font="Regular;20" foregroundColor="#1c1c1c" halign="right" transparent="1">
++                      <convert type="ClockToText">Format:%H:%M</convert>
++              </widget>
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="45,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="240,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/button_off.png" position="435,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/button_off.png" position="630,98" size="25,25" alphatest="blend" />
++              <widget source="key_red" render="Label" position="73,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="key_green" render="Label" position="268,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="list" position="155,150" size="540,350" scrollbarMode="showOnDemand" />
++              <ePixmap pixmap="Vu_HD/div-h.png" position="150,520" zPosition="1" size="450,2" />
++              <widget source="introduction" render="Label" position="150,530" size="450,40" zPosition="10" font="Regular;21" halign="center" valign="center" backgroundColor="#27d9dee2" transparent="1" />
++      </screen>
++      <screen name="myProviderSelection" position="209,48" size="865,623" title="Select provider to add..." flags="wfNoBorder" backgroundColor="transparent"> 
++              <ePixmap pixmap="Vu_HD/Bg_EPG_view.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_title_Setup.png" position="32,41" size="40,40" alphatest="blend"  transparent="1" />
++              <eLabel text="Select provider to add..." position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
++              <ePixmap pixmap="Vu_HD/icons/clock.png" position="750,55" zPosition="1" size="20,20" alphatest="blend" />
++              <widget source="global.CurrentTime" render="Label" position="770,57" zPosition="1" size="50,20" font="Regular;20" foregroundColor="#1c1c1c" halign="right" transparent="1">
++                      <convert type="ClockToText">Format:%H:%M</convert>
++              </widget>
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="45,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/button_off.png" position="240,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/button_off.png" position="435,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/button_off.png" position="630,98" size="25,25" alphatest="blend" />
++              <widget source="key_red" render="Label" position="73,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="key_green" render="Label" position="268,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="key_yellow" render="Label" position="473,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="key_blue" render="Label" position="668,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="list" position="155,150" size="550,350" scrollbarMode="showOnDemand" />
++              <ePixmap pixmap="Vu_HD/div-h.png" position="150,510" zPosition="1" size="560,2" />
++              <widget source="introduction" render="Label" position="150,520" size="560,40" zPosition="10" font="Regular;21" halign="center" valign="center" backgroundColor="#27d9dee2" transparent="1" />
++      </screen>
++      <screen name="myChannelSelection" position="209,48" size="865,623" title="Select service to add..." flags="wfNoBorder" backgroundColor="transparent">   
++              <ePixmap pixmap="Vu_HD/Bg_EPG_view.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_title_Setup.png" position="32,41" size="40,40" alphatest="blend"  transparent="1" />
++              <eLabel text="Select service to add..." position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
++              <ePixmap pixmap="Vu_HD/icons/clock.png" position="750,55" zPosition="1" size="20,20" alphatest="blend" />
++              <widget source="global.CurrentTime" render="Label" position="770,57" zPosition="1" size="50,20" font="Regular;20" foregroundColor="#1c1c1c" halign="right" transparent="1">
++                      <convert type="ClockToText">Format:%H:%M</convert>
++              </widget>
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="45,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="240,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/button_off.png" position="435,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/blue.png" position="630,98" size="25,25" alphatest="blend" />
++              <widget source="key_red" render="Label" position="73,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="key_green" render="Label" position="268,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="key_yellow" render="Label" position="473,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="key_blue" render="Label" position="668,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="list" position="155,150" size="550,350" scrollbarMode="showOnDemand" />
++              <ePixmap pixmap="Vu_HD/div-h.png" position="150,510" zPosition="1" size="560,2" />
++              <widget source="introduction" render="Label" position="150,520" size="560,40" zPosition="10" font="Regular;21" halign="center" valign="center" backgroundColor="#27d9dee2" transparent="1" />
++      </screen>
++      <screen name="CrashlogAutoSubmitConfiguration" position="209,48" size="865,623" title="CrashlogAutoSubmit settings" flags="wfNoBorder" backgroundColor="transparent">   
++              <ePixmap pixmap="Vu_HD/Bg_EPG_list.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_title_Setup.png" position="32,41" size="40,40" alphatest="blend"  transparent="1" />
++              <eLabel text="CrashlogAutoSubmit settings" position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
++              <ePixmap pixmap="Vu_HD/icons/clock.png" position="750,55" zPosition="1" size="20,20" alphatest="blend" />
++              <widget source="global.CurrentTime" render="Label" position="770,57" zPosition="1" size="50,20" font="Regular;20" foregroundColor="#1c1c1c" halign="right" backgroundColor="#27d9dee2" transparent="1">
++                      <convert type="ClockToText">Format:%H:%M</convert>
++              </widget>
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="45,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="240,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/button_off.png" position="435,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/button_off.png" position="630,98" size="25,25" alphatest="blend" />
++              <widget source="key_red" render="Label" position="66,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="key_green" render="Label" position="268,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="config" zPosition="2" position="50,130" itemHeight="36" size="750,324" scrollbarMode="showOnDemand" transparent="1" />
++              <eLabel text=" " position="145,460" zPosition="10" size="560,2" transparent="1" backgroundColor="#8c8c8c" />
++              <widget source="status" render="Label" position="160,525" size="540,60" zPosition="10" foregroundColor="#3c3c3c" backgroundColor="#27aeaeae" font="Regular;20" halign="center" valign="center" transparent="1"/>
++              <widget name="VKeyIcon" pixmap="Vu_HD/buttons/key_text.png" position="160,490" zPosition="10" size="35,25" transparent="1" alphatest="on" />
++              <widget name="HelpWindow" pixmap="Vu_HD/vkey_icon.png" position="310,400" zPosition="1" size="1,1" transparent="1" alphatest="on" />
++      </screen>
++      <screen name="DefaultServiceScan" position="150,115" size="420,390" title="Service Scan">
++              <widget source="FrontendInfo" render="Pixmap" pixmap="Vu_HD/icons/scan-s.png" position="5,5" size="64,64" transparent="1" alphatest="blend">
++                      <convert type="FrontendInfo">TYPE</convert>
++                      <convert type="ValueRange">0,0</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="FrontendInfo" render="Pixmap" pixmap="Vu_HD/icons/scan-c.png" position="5,5" size="64,64" transparent="1" alphatest="on">
++                      <convert type="FrontendInfo">TYPE</convert>
++                      <convert type="ValueRange">1,1</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="FrontendInfo" render="Pixmap" pixmap="Vu_HD/icons/scan-t.png" position="5,5" size="64,64" transparent="1" alphatest="on">
++                      <convert type="FrontendInfo">TYPE</convert>
++                      <convert type="ValueRange">2,2</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget name="network" position="80,15" size="330,20" font="Regular;20" />
++              <widget name="transponder" position="80,40" size="330,20" font="Regular;20" />
++              <widget name="scan_state" position="10,80" zPosition="2" size="400,20" font="Regular;18" />
++              <widget name="pass" position="10,80" size="400,20" font="Regular;18" />
++              <widget name="scan_progress" position="10,105" size="400,15" pixmap="Vu_HD/progress_big.png" borderWidth="2" borderColor="#cccccc" />
++              <widget name="servicelist" position="10,135" size="400,265" selectionDisabled="1" />
++      </screen>
++      <screen name="DiseqcTester" position="90,100" size="520,400" title="DiSEqC Tester" >
++              <!--ePixmap pixmap="Vu_HD/icons/dish_scan.png" position="5,25" zPosition="0" size="119,110" transparent="1" alphatest="on" />
++              <widget source="Frontend" render="Label" position="190,10" zPosition="2" size="260,20" font="Regular;19" halign="center" valign="center" transparent="1">
++                      <convert type="FrontendInfo">SNRdB</convert>
++              </widget>
++              <eLabel name="snr" text="SNR:" position="120,35" size="60,22" font="Regular;21" halign="right" transparent="1" />
++              <widget source="Frontend" render="Progress" position="190,35" size="260,20" pixmap="Vu_HD/bar_snr.png" borderWidth="2" borderColor="#cccccc">
++                      <convert type="FrontendInfo">SNR</convert>
++              </widget>
++              <widget source="Frontend" render="Label" position="460,35" size="60,22" font="Regular;21">
++                      <convert type="FrontendInfo">SNR</convert>
++              </widget>
++              <eLabel name="agc" text="AGC:" position="120,60" size="60,22" font="Regular;21" halign="right" transparent="1" />
++              <widget source="Frontend" render="Progress" position="190,60" size="260,20" pixmap="Vu_HD/bar_snr.png" borderWidth="2" borderColor="#cccccc">
++                      <convert type="FrontendInfo">AGC</convert>
++              </widget>
++              <widget source="Frontend" render="Label" position="460,60" size="60,22" font="Regular;21">
++                      <convert type="FrontendInfo">AGC</convert>
++              </widget>
++              <eLabel name="ber" text="BER:" position="120,85" size="60,22" font="Regular;21" halign="right" transparent="1" />
++              <widget source="Frontend" render="Progress" position="190,85" size="260,20" pixmap="Vu_HD/bar_ber.png" borderWidth="2" borderColor="#cccccc">
++                      <convert type="FrontendInfo">BER</convert>
++              </widget>
++              <widget source="Frontend" render="Label" position="460,85" size="60,22" font="Regular;21">
++                      <convert type="FrontendInfo">BER</convert>
++              </widget>
++              <eLabel name="lock" text="Lock:" position="120,115" size="60,22" font="Regular;21" halign="right" />
++              <widget source="Frontend" render="Pixmap" pixmap="Vu_HD/icons/lock_on.png" position="190,110" zPosition="1" size="38,31" alphatest="on">
++                      <convert type="FrontendInfo">LOCK</convert>
++                      <convert type="ConditionalShowHide" />
++              </widget>
++              <widget source="Frontend" render="Pixmap" pixmap="skin_default/icons/lock_off.png" position="190,110" zPosition="1" size="38,31" alphatest="on">
++                      <convert type="FrontendInfo">LOCK</convert>
++                      <convert type="ConditionalShowHide">Invert</convert>
++              </widget-->
++              <widget source="progress_list" render="Listbox" position="0,0" size="510,150" scrollbarMode="showOnDemand">
++                      <convert type="TemplatedMultiContent">
++                              {"template": [
++                                              MultiContentEntryText(pos = (10, 0), size = (330, 25), flags = RT_HALIGN_LEFT, text = 1), # index 1 is the index name,
++                                              MultiContentEntryText(pos = (330, 0), size = (150, 25), flags = RT_HALIGN_RIGHT, text = 2) # index 2 is the status,
++                                      ],
++                               "fonts": [gFont("Regular", 20)],
++                               "itemHeight": 25
++                              }
++                      </convert>
++              </widget>
++              <eLabel name="overall_progress" text="Overall progress:" position="20,162" size="480,22" font="Regular;21" halign="center" transparent="1" />
++              <widget source="overall_progress" render="Progress" position="20,192" size="480,20" borderWidth="2" backgroundColor="#254f7497" />
++              <eLabel name="overall_progress" text="Progress:" position="20,222" size="480,22" font="Regular;21" halign="center" transparent="1" />
++              <widget source="sub_progress" render="Progress" position="20,252" size="480,20" borderWidth="2" backgroundColor="#254f7497" />
++              
++              <eLabel name="" text="Failed:" position="20,282" size="140,22" font="Regular;21" halign="left" transparent="1" />
++              <widget source="failed_counter" render="Label" position="160,282" size="100,20" font="Regular;21" />
++              
++              <eLabel name="" text="Succeeded:" position="20,312" size="140,22" font="Regular;21" halign="left" transparent="1" />
++              <widget source="succeeded_counter" render="Label" position="160,312" size="100,20" font="Regular;21" />
++              
++              <eLabel name="" text="With errors:" position="20,342" size="140,22" font="Regular;21" halign="left" transparent="1" />
++              <widget source="witherrors_counter" render="Label" position="160,342" size="100,20" font="Regular;21" />
++              
++              <eLabel name="" text="Not tested:" position="20,372" size="140,22" font="Regular;21" halign="left" transparent="1" />
++              <widget source="untestable_counter" render="Label" position="160,372" size="100,20" font="Regular;21" />
++              
++              <widget source="CmdText" render="Label" position="300,282" size="180,200" font="Regular;21" />
++      </screen>
++      <screen name="DiseqcTesterNimSelection" position="center,center" size="400,330" title="Choose Tuner">
++              <widget source="nimlist" render="Listbox" position="0,0" size="380,300" scrollbarMode="showOnDemand">
++                      <convert type="TemplatedMultiContent">
++                              {"template": [
++                                              MultiContentEntryText(pos = (10, 5), size = (360, 30), flags = RT_HALIGN_LEFT, text = 1), # index 1 is the nim name,
++                                              MultiContentEntryText(pos = (50, 30), size = (320, 30), font = 1, flags = RT_HALIGN_LEFT, text = 2), # index 2 is a description of the nim settings,
++                                      ],
++                               "fonts": [gFont("Regular", 20), gFont("Regular", 15)],
++                               "itemHeight": 70
++                              }
++                      </convert>
++              </widget>
++      </screen>       
++      <screen name="FPUpgrade" position="150,200" size="450,200" title="FP upgrade required" >
++              <widget name="text" position="0,0" size="550,50" font="Regular;20" />
++              <widget name="oldversion_label" position="10,100" size="290,25" font="Regular;20" />
++              <widget name="newversion_label" position="10,125" size="290,25" font="Regular;20" />
++              <widget name="oldversion" position="300,100" size="50,25" font="Regular;20" />
++              <widget name="newversion" position="300,125" size="50,25" font="Regular;20" />
++      </screen>
++      <screen name="SystemMessage" position="150,200" size="450,200" title="System Message" >
++              <widget source="text" position="0,0" size="450,200" font="Regular;20" halign="center" valign="center" render="Label" />
++              <ePixmap pixmap="Vu_HD/icons/input_error.png" position="5,5" size="53,53" alphatest="on" />
++      </screen>
++      <screen name="NFIDownload" position="90,95" size="560,420" title="Image download utility">
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="0,0" zPosition="0" size="140,40" transparent="1" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="140,0" zPosition="0" size="140,40" transparent="1" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/yellow.png" position="280,0" zPosition="0" size="140,40" transparent="1" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/blue.png" position="420,0" zPosition="0" size="140,40" transparent="1" alphatest="blend" />
++              <widget source="key_red" render="Label" position="20,0" zPosition="1" size="115,40" font="Regular;19" valign="center" halign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget source="key_green" render="Label" position="160,0" zPosition="1" size="115,40" font="Regular;19" valign="center" halign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget source="key_yellow" render="Label" position="300,0" zPosition="1" size="115,40" font="Regular;19" valign="center" halign="center" backgroundColor="#a08500" transparent="1" />
++              <widget source="key_blue" render="Label" position="440,0" zPosition="1" size="115,40" font="Regular;19" valign="center" halign="center" backgroundColor="#18188b" transparent="1" />
++              
++              <widget source="label_top" render="Label" position="10,44" size="240,20" font="Regular;16" />
++              <widget name="feedlist" position="10,66" size="250,222" scrollbarMode="showOnDemand" />
++              <widget name="destlist" position="0,66" size="260,222" scrollbarMode="showOnDemand" />
++
++              <widget source="label_bottom" render="Label" position="10,312" size="240,18" font="Regular;16"/>
++              <widget source="path_bottom" render="Label" position="10,330" size="250,42" font="Regular;18" />
++              
++              <widget source="infolabel" render="Label" position="270,44" size="280,284" font="Regular;16" />
++              <widget source="job_progressbar" render="Progress" position="10,374" size="540,26" borderWidth="1" backgroundColor="#254f7497" />
++              <widget source="job_progresslabel" render="Label" position="130,378" zPosition="2" font="Regular;18" halign="center" transparent="1" size="300,22" foregroundColor="#000000" />
++              <widget source="statusbar" render="Label" position="10,404" size="540,16" font="Regular;16" foregroundColor="#cccccc" />
++      </screen>
++      <screen name="NFIFlash" position="90,95" size="560,420" title="Image flash utility">
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="140,0" zPosition="0" size="140,40" transparent="1" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/buttons/yellow.png" position="280,0" zPosition="0" size="140,40" transparent="1" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/buttons/blue.png" position="420,0" zPosition="0" size="140,40" transparent="1" alphatest="on" />
++              <widget source="key_green" render="Label" position="140,0" zPosition="1" size="140,40" font="Regular;20" valign="center" halign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget source="key_yellow" render="Label" position="280,0" zPosition="1" size="140,40" font="Regular;20" valign="center" halign="center" backgroundColor="#a08500" transparent="1" />
++              <widget source="key_blue" render="Label" position="420,0" zPosition="1" size="140,40" font="Regular;20" valign="center" halign="center" backgroundColor="#18188b" transparent="1" />
++              <widget source="listlabel" render="Label" position="16,44" size="200,21" valign="center" font="Regular;18" />
++              <widget name="filelist" position="0,68" size="260,260" scrollbarMode="showOnDemand" />
++              <widget source="infolabel" render="Label" position="270,44" size="280,284" font="Regular;16" />
++              <widget source="job_progressbar" render="Progress" position="10,374" size="540,26" borderWidth="1" backgroundColor="#254f7497" />
++              <widget source="job_progresslabel" render="Label" position="180,378" zPosition="2" font="Regular;18" halign="center" transparent="1" size="200,22" foregroundColor="#000000" />
++              <widget source="statusbar" render="Label" position="10,404" size="540,16" font="Regular;16" foregroundColor="#cccccc" />
++      </screen>
++      <screen name="BackupSelection" position="center,130" size="560,400" title="Select files/folders to backup">
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="0,0" size="140,40" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="140,0" size="140,40" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/yellow.png" position="280,0" size="140,40" alphatest="blend" />
++              <widget source="key_red" render="Label" position="20,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget source="key_green" render="Label" position="160,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget source="key_yellow" render="Label" position="300,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />
++              <widget name="checkList" position="5,50" size="550,250" transparent="1" scrollbarMode="showOnDemand" />
++      </screen>
++      <screen name="RestoreMenu" position="center,130" size="560,400" title="Restore backups" >
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="0,0" size="140,40" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="140,0" size="140,40" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/yellow.png" position="280,0" size="140,40" alphatest="blend" />
++              <widget source="key_red" render="Label" position="20,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
++              <widget source="key_green" render="Label" position="160,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
++              <widget source="key_yellow" render="Label" position="300,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />
++              <widget name="filelist" position="5,50" size="550,230" scrollbarMode="showOnDemand" />
++      </screen>
++      <screen name="UpdatePluginMenu" position="209,48" size="865,623" title="Software management" flags="wfNoBorder" backgroundColor="transparent">  
++              <ePixmap pixmap="Vu_HD/Bg_EPG_view.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_title_Setup.png" position="32,41" size="40,40" alphatest="blend"  transparent="1" />
++              <eLabel text="Software management" position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
++              <ePixmap pixmap="Vu_HD/icons/clock.png" position="750,55" zPosition="1" size="20,20" alphatest="blend" />
++              <widget source="global.CurrentTime" render="Label" position="770,57" zPosition="1" size="50,20" font="Regular;20" foregroundColor="#1c1c1c" backgroundColor="#27d9dee2" halign="right" transparent="1">
++                      <convert type="ClockToText">Format:%H:%M</convert>
++              </widget>
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="45,98" size="25,25" alphatest="blend" />
++              <widget source="key_red" render="Label" position="86,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <ePixmap pixmap="Vu_HD/border_menu.png" position="60,140" zPosition="-1" size="342,358" transparent="1" alphatest="blend" />
++              <widget source="menu" render="Listbox" position="70,150" size="322,338" scrollbarMode="showOnDemand" backgroundColor="#27d9dee2" transparent="1">
++                      <convert type="TemplatedMultiContent">
++                              {"template": [
++                                              MultiContentEntryText(pos = (2, 2), size = (330, 24), flags = RT_HALIGN_LEFT, text = 1), # index 0 is the MenuText,
++                                      ],
++                              "fonts": [gFont("Regular", 22)],
++                              "itemHeight": 25
++                              }
++                      </convert>
++              </widget>
++              <widget source="menu" render="Listbox" position="420,150" size="390,338" scrollbarMode="showNever" selectionDisabled="1" backgroundColor="#27d9dee2" transparent="1">
++                      <convert type="TemplatedMultiContent">
++                              {"template": [
++                                              MultiContentEntryText(pos = (2, 2), size = (380, 300), flags = RT_HALIGN_CENTER|RT_VALIGN_CENTER|RT_WRAP, text = 2), # index 2 is the Description,
++                                      ],
++                              "fonts": [gFont("Regular", 22)],
++                              "itemHeight": 300
++                              }
++                      </convert>
++              </widget>
++              <widget source="status" render="Label" position="50,500" zPosition="10" size="750,50" halign="center" valign="center" font="Regular;22" transparent="1" backgroundColor="#27aeaeae" />
++      </screen>
++      <screen name="PluginManager" position="209,48" size="865,623" title="Extensions management" flags="wfNoBorder" backgroundColor="transparent">   
++              <ePixmap pixmap="Vu_HD/Bg_EPG_view.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_title_Plugin.png" position="32,41" size="40,40" alphatest="blend"  transparent="1" />
++              <eLabel text="Extensions management" position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="45,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="240,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/yellow.png" position="435,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/blue.png" position="630,98" size="25,25" alphatest="blend" />
++              <widget source="key_red" render="Label" position="86,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="key_green" render="Label" position="278,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="key_yellow" render="Label" position="473,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="key_blue" render="Label" position="668,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="list" render="Listbox" position="50,130" size="750,416" scrollbarMode="showOnDemand">
++                      <convert type="TemplatedMultiContent">
++                      {"templates":
++                              {"default": (51,[
++                                              MultiContentEntryText(pos = (30, 1), size = (670, 24), font=0, flags = RT_HALIGN_LEFT, text = 0), # index 0 is the name
++                                              MultiContentEntryText(pos = (30, 25), size = (670, 24), font=1, flags = RT_HALIGN_LEFT, text = 2), # index 2 is the description
++                                              MultiContentEntryPixmapAlphaTest(pos = (675, 0), size = (48, 48), png = 5), # index 5 is the status pixmap
++                                              MultiContentEntryPixmapAlphaTest(pos = (0, 49), size = (750, 2), png = 6), # index 6 is the div pixmap
++                                      ]),
++                              "category": (40,[
++                                              MultiContentEntryText(pos = (30, 0), size = (700, 22), font=0, flags = RT_HALIGN_LEFT, text = 0), # index 0 is the name
++                                              MultiContentEntryText(pos = (30, 22), size = (700, 16), font=2, flags = RT_HALIGN_LEFT, text = 1), # index 1 is the description
++                                              MultiContentEntryPixmapAlphaTest(pos = (0, 38), size = (750, 2), png = 3), # index 3 is the div pixmap
++                                      ])
++                              },
++                              "fonts": [gFont("Regular", 22),gFont("Regular", 20),gFont("Regular", 16)],
++                              "itemHeight": 52
++                      }
++                      </convert>
++              </widget>
++              <widget source="status" render="Label" position="50,560" zPosition="10" size="750,23" halign="center" valign="center" font="Regular;22" foregroundColor="#3c3c3c" backgroundColor="#27aeaeae" transparent="1"/>
++      </screen>
++      <screen name="PluginManagerInfo" position="209,48" size="865,623" title="Plugin manager activity information" flags="wfNoBorder" backgroundColor="transparent"> 
++              <ePixmap pixmap="Vu_HD/Bg_EPG_view.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_title_Plugin.png" position="32,41" size="40,40" alphatest="blend"  transparent="1" />
++              <eLabel text="Plugin manager activity information" position="90,50" size="700,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="45,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="240,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/button_off.png" position="435,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/button_off.png" position="630,98" size="25,25" alphatest="blend" />
++              <widget source="key_red" render="Label" position="86,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="key_green" render="Label" position="278,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="list" render="Listbox" position="50,140" size="750,400" scrollbarMode="showOnDemand" selectionDisabled="1">
++                      <convert type="TemplatedMultiContent">
++                              {"template": [
++                                              MultiContentEntryText(pos = (50, 0), size = (250, 26), font=0, flags = RT_HALIGN_LEFT, text = 0), # index 0 is the name
++                                              MultiContentEntryText(pos = (50, 27), size = (640, 23), font=1, flags = RT_HALIGN_LEFT, text = 1), # index 1 is the state
++                                              MultiContentEntryPixmapAlphaTest(pos = (0, 1), size = (48, 48), png = 2), # index 2 is the status pixmap
++                                              MultiContentEntryPixmapAlphaTest(pos = (0, 48), size = (750, 2), png = 3), # index 3 is the div pixmap
++                                      ],
++                              "fonts": [gFont("Regular", 24),gFont("Regular", 22)],
++                              "itemHeight": 50
++                              }
++                      </convert>
++              </widget>
++              <widget source="status" render="Label" position="50,560" zPosition="10" size="750,44" halign="center" valign="center" foregroundColor="#3c3c3c" backgroundColor="#27aeaeae" font="Regular;22" transparent="1" />
++      </screen>
++      <screen name="PluginManagerHelp" position="209,48" size="865,623" title="Plugin manager help" flags="wfNoBorder" backgroundColor="transparent"> 
++              <ePixmap pixmap="Vu_HD/Bg_EPG_view.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_title_Plugin.png" position="32,41" size="40,40" alphatest="blend"  transparent="1" />
++              <eLabel text="Plugin manager help" position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="45,98" size="25,25" alphatest="blend" />
++              <widget source="key_red" render="Label" position="86,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="list" render="Listbox" position="80,140" size="700,400" scrollbarMode="showOnDemand" selectionDisabled="1">
++                      <convert type="TemplatedMultiContent">
++                              {"template": [
++                                              MultiContentEntryText(pos = (50, 0), size = (540, 26), font=0, flags = RT_HALIGN_LEFT, text = 0), # index 0 is the name
++                                              MultiContentEntryText(pos = (50, 27), size = (540, 23), font=1, flags = RT_HALIGN_LEFT, text = 1), # index 1 is the state
++                                              MultiContentEntryPixmapAlphaTest(pos = (0, 1), size = (48, 48), png = 2), # index 2 is the status pixmap
++                                              MultiContentEntryPixmapAlphaTest(pos = (0, 48), size = (550, 2), png = 3), # index 3 is the div pixmap
++                                      ],
++                              "fonts": [gFont("Regular", 24),gFont("Regular", 22)],
++                              "itemHeight": 50
++                              }
++                      </convert>
++              </widget>
++              <ePixmap pixmap="Vu_HD/div-h.png" position="70,550" zPosition="10" size="720,2" transparent="1" alphatest="on" />
++              <widget source="status" render="Label" position="50,560" zPosition="10" size="750,44" halign="center" valign="center" font="Regular;22" backgroundColor="#27aeaeae" transparent="1" />
++      </screen>
++      <screen name="PluginDetails" position="209,48" size="865,623" title="Plugin details" flags="wfNoBorder" backgroundColor="transparent">  
++              <ePixmap pixmap="Vu_HD/Bg_EPG_view.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_title_Plugin.png" position="32,41" size="40,40" alphatest="blend"  transparent="1" />
++              <eLabel text="Plugin details" position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="45,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="240,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/button_off.png" position="435,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/button_off.png" position="630,98" size="25,25" alphatest="blend" />
++              <widget source="key_red" render="Label" position="86,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="key_green" render="Label" position="278,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="author" render="Label" position="60,140" size="700,25" zPosition="10" foregroundColor="#3c3c3c" backgroundColor="#27aeaeae" font="Regular;21" transparent="1" />
++              <widget name="statuspic" position="770,130" size="48,48" alphatest="on"/>
++              <widget name="divpic" position="60,190" size="740,2" alphatest="on"/>
++              <widget name="detailtext" position="70,200" size="400,400" zPosition="10" font="Regular;21" foregroundColor="#3c3c3c" backgroundColor="#27aeaeae" transparent="1" halign="left" valign="top"/>
++              <widget name="screenshot" position="490,230" size="300,330" alphatest="on"/>
++      </screen>
++      <screen name="UpdatePlugin" position="209,48" size="865,623" title="Software update" flags="wfNoBorder" backgroundColor="transparent">  
++              <ePixmap pixmap="Vu_HD/Bg_EPG_view.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_title_Plugin.png" position="32,41" size="40,40" alphatest="blend"  transparent="1" />
++              <eLabel text="Software update" position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
++              <widget name="activityslider" position="60,140" size="720,5"  />
++              <widget source="package" render="Label" position="70,160" size="700,20" font="Regular;18" halign="center" valign="center" backgroundColor="darkgrey" transparent="1" />
++              <widget source="status" render="Label" position="70,190" size="700,45" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" transparent="1" />
++              <widget name="slider" position="70,250" size="700,30"  />
++      </screen>
++      <screen name="IPKGMenu" position="209,48" size="865,623" title="Select upgrade source to edit." flags="wfNoBorder" backgroundColor="transparent">       
++              <ePixmap pixmap="Vu_HD/Bg_EPG_view.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_title_Plugin.png" position="32,41" size="40,40" alphatest="blend"  transparent="1" />
++              <eLabel text="Select upgrade source to edit." position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="45,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="240,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/button_off.png" position="435,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/button_off.png" position="630,98" size="25,25" alphatest="blend" />
++              <widget source="key_red" render="Label" position="86,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="key_green" render="Label" position="278,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="filelist" position="50,140" size="750,440" scrollbarMode="showOnDemand" />
++      </screen>
++      <screen name="IPKGSource" position="209,48" size="865,623" title="Edit upgrade source url." flags="wfNoBorder" backgroundColor="transparent">   
++              <ePixmap pixmap="Vu_HD/Bg_EPG_view.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_title_Plugin.png" position="32,41" size="40,40" alphatest="blend"  transparent="1" />
++              <eLabel text="Edit upgrade source url." position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="45,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="240,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/button_off.png" position="435,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/button_off.png" position="630,98" size="25,25" alphatest="blend" />
++              <widget source="key_red" render="Label" position="86,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="key_green" render="Label" position="278,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="text" position="50,150" size="750,25" font="Regular;20" backgroundColor="background" foregroundColor="#cccccc" />
++      </screen>
++      <screen name="PacketManager" position="209,48" size="865,623" title="Packet manager" flags="wfNoBorder" backgroundColor="transparent">  
++              <ePixmap pixmap="Vu_HD/Bg_EPG_view.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_title_Plugin.png" position="32,41" size="40,40" alphatest="blend"  transparent="1" />
++              <eLabel text="Packet manager" position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="45,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="240,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/button_off.png" position="435,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/button_off.png" position="630,98" size="25,25" alphatest="blend" />
++              <widget source="key_red" render="Label" position="86,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="key_green" render="Label" position="278,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="list" render="Listbox" position="50,150" size="750,416" scrollbarMode="showOnDemand">
++                      <convert type="TemplatedMultiContent">
++                              {"template": [
++                                              MultiContentEntryText(pos = (5, 1), size = (640, 28), font=0, flags = RT_HALIGN_LEFT, text = 0), # index 0 is the name
++                                              MultiContentEntryText(pos = (5, 26), size = (640, 20), font=1, flags = RT_HALIGN_LEFT, text = 2), # index 2 is the description
++                                              MultiContentEntryPixmapAlphaTest(pos = (645, 2), size = (48, 48), png = 4), # index 4 is the status pixmap
++                                              MultiContentEntryPixmapAlphaTest(pos = (5, 50), size = (740, 2), png = 5), # index 4 is the div pixmap
++                                      ],
++                              "fonts": [gFont("Regular", 22),gFont("Regular", 14)],
++                              "itemHeight": 52
++                              }
++                      </convert>
++              </widget>
++      </screen>
++      <screen name="IpkgInstaller" position="209,48" size="865,623" title="Install extensions" flags="wfNoBorder" backgroundColor="transparent">      
++              <ePixmap pixmap="Vu_HD/Bg_EPG_view.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_title_Plugin.png" position="32,41" size="40,40" alphatest="blend"  transparent="1" />
++              <eLabel text="Install extensions" position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="45,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="240,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/button_off.png" position="435,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/button_off.png" position="630,98" size="25,25" alphatest="blend" />
++              <widget source="key_red" render="Label" position="86,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="key_green" render="Label" position="278,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="list" position="50,150" size="750,350" />
++              <ePixmap pixmap="Vu_HD/div-h.png" position="50,520" zPosition="10" size="750,2" transparent="1" alphatest="on" />
++              <widget source="introduction" render="Label" position="50,540" zPosition="10" size="750,30" halign="center" valign="center" font="Regular;22" transparent="1" shadowColor="black" shadowOffset="-1,-1" />
++      </screen>
++      <screen name="VideoWizard" position="0,0" size="1280,720" title="Welcome..." flags="wfNoBorder" >
++              <widget name="text" position="400,100" size="550,270" font="Regular;23" />
++              <widget source="list" render="Listbox" transparent="1" position="300,400" size="500,300" scrollbarMode="showOnDemand" >
++                      <convert type="StringList" />
++              </widget>
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="150,250" size="25,25" alphatest="blend" />
++              <widget name="languagetext" position="200,253" size="120,30" font="Regular;18" />
++              <widget name="config" position="300,400" zPosition="1" size="500,300" transparent="1" scrollbarMode="showOnDemand" />            
++              <widget name="portpic" position="100,400" zPosition="10" size="150,150" transparent="1" alphatest="on"/>
++              <widget name="rc" pixmap="Vu_HD/rc.png" position="950,150" zPosition="10" size="154,500" transparent="1" alphatest="blend"/>
++              <widget name="arrowdown" pixmap="Vu_HD/arrowdown.png" position="-100,-100" zPosition="11" size="37,70" transparent="1" alphatest="blend"/>
++              <widget name="arrowdown2" pixmap="Vu_HD/arrowdown.png" position="-100,-100" zPosition="11" size="37,70" transparent="1" alphatest="blend"/>
++              <widget name="arrowup" pixmap="Vu_HD/arrowup.png" position="-100,-100" zPosition="11" size="37,70" transparent="1" alphatest="blend"/>
++              <widget name="arrowup2" pixmap="Vu_HD/arrowup.png" position="-100,-100" zPosition="11" size="37,70" transparent="1" alphatest="blend"/>
++      </screen>
++              <!-- FileBrowser -->
++      <screen name="FilebrowserScreen" position="0,0" size="1280,720" title="" flags="wfNoBorder">
++              <widget source="global.CurrentTime" render="Label" position="1130,40" size="80,26" font="Regular;26" halign="right" transparent="1">
++                      <convert type="ClockToText">Default</convert>
++              </widget>
++              <widget source="global.CurrentTime" render="Label" position="1000,72" size="210,22" font="Regular;20" halign="right" transparent="1">
++                      <convert type="ClockToText">Format:%d.%m.%Y</convert>
++              </widget>
++              <eLabel text="Filebrowser" position=" 80,110" size="1120,35" zPosition="3" font="Regular;32" foregroundColor="#3c3c3c" halign="center" transparent="1" />
++              <eLabel position=" 80,150" size="1120,2" backgroundColor="black" zPosition="5" />
++              <eLabel position=" 80,152" size="1120,2"  zPosition="5" />
++              <widget name="list_left" position=" 90,167" size="540,437" scrollbarMode="showOnDemand" transparent="1" />
++              <eLabel position="638,155" size="1,460" backgroundColor="black" zPosition="5" />
++              <eLabel position="639,155" size="2,460"  zPosition="5" />
++              <widget name="list_right" position="650,167" size="540,437" scrollbarMode="showOnDemand" transparent="1" />
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="100,643" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="390,643" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/yellow.png" position="680,643" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/blue.png" position="970,643" size="25,25" alphatest="blend" />
++              <widget name="red" position="150,645" size="220,30" font="Regular;24" foregroundColor="#3c3c3c" halign="left" transparent="1" />
++              <widget name="green" position="440,645" size="220,30" font="Regular;24" foregroundColor="#3c3c3c" halign="left" transparent="1" />
++              <widget name="yellow" position="730,645" size="220,30" font="Regular;24" foregroundColor="#3c3c3c" halign="left" transparent="1" />
++              <widget name="blue" position="1020,645" size="220,30" font="Regular;24" foregroundColor="#3c3c3c" halign="left" transparent="1" />
++      </screen>
++      <screen name="FilebrowserConfigScreen" position="0,0" size="1280,720" title="" flags="wfNoBorder">
++              <widget source="global.CurrentTime" render="Label" position="1130,40" size="80,26" font="Regular;26" halign="right" transparent="1">
++                      <convert type="ClockToText">Default</convert>
++              </widget>
++              <widget source="global.CurrentTime" render="Label" position="1000,72" size="210,22" font="Regular;20" halign="right" transparent="1">
++                      <convert type="ClockToText">Format:%d.%m.%Y</convert>
++              </widget>
++              <widget source="session.VideoPicture" render="Pig" position="75,115" size="380,215" zPosition="3" backgroundColor="#ff000000" />
++              <eLabel text="FilebrowserConfigScreen" position="510,110" size="700,35" zPosition="3" font="Regular;32" foregroundColor="#3c3c3c" transparent="1" />
++              <eLabel position="500,150" size="730,2" backgroundColor="black" zPosition="5" />
++              <eLabel position="500,152" size="730,2"  zPosition="5" />
++              <widget name="config" position="510,175" size="660,450" zPosition="3" scrollbarMode="showOnDemand" transparent="1" />
++              <eLabel position="476,110" size="1,500" backgroundColor="black" zPosition="5" />
++              <eLabel position="477,110" size="2,500"  zPosition="5" />
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="100,643" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="390,643" size="25,25" alphatest="blend" />
++              <widget name="buttonred" position="150,645" size="220,30" font="Regular;24" foregroundColor="#3c3c3c" halign="left" transparent="1" />
++              <widget name="buttongreen" position="440,645" size="220,30" font="Regular;24" foregroundColor="#3c3c3c" halign="left" transparent="1" />
++      </screen>       
++      <screen name="VideoFinetune" position="0,0" size="1280,720" backgroundColor="black">
++              <widget source="Canvas" render="Canvas" position="280,70" size="720,576" />
++      </screen>
++      <screen name="RecordPathsSettings" position="209,48" size="865,623" title="Recording paths" flags="wfNoBorder" backgroundColor="transparent">   
++              <ePixmap pixmap="Vu_HD/Bg_EPG_list.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_title_Setup.png" position="32,41" size="40,40" alphatest="blend"  transparent="1" />
++              <eLabel text="Recording paths" position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="45,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="240,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/button_off.png" position="435,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/button_off.png" position="630,98" size="25,25" alphatest="blend" />
++              <widget source="key_red" render="Label" position="86,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="key_green" render="Label" position="278,97" zPosition="1" size="150,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="config" position="50,130" itemHeight="36" size="750,300" backgroundColor="#27d9dee2" transparent="1"/>
++      </screen>       
++      <screen name="SecParameterSetup" position="209,48" size="865,623" title="Satellite Equipment Setup" flags="wfNoBorder" backgroundColor="transparent">   
++              <ePixmap pixmap="Vu_HD/Bg_EPG_view.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_title_Setup.png" position="32,41" size="40,40" alphatest="blend"  transparent="1" />
++              <eLabel text="Satellite Equipment Setup" position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
++              <widget name="config" position="130,140" size="600,450" transparent="1"/>
++      </screen>
++      <screen name="SatNimSelection" position="100,80" size="520,538" title="Subtitle selection" flags="wfNoBorder" backgroundColor="transparent">    
++              <ePixmap pixmap="Vu_HD/Bg_Subtitle.png" position="0,0" size="520,538" zPosition="-1" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_title_Setup.png" position="16,36" size="40,40" alphatest="blend"  transparent="1" />
++              <eLabel text="select Slot" position="69,45" size="400,32" font="Semiboldit;32" foregroundColor="#4c4c4c" backgroundColor="#b5b9bd" transparent="1" />
++              <widget name="nimlist" position="15,83" itemHeight="42" selectionPixmap="Vu_HD/buttons/FocusBar_H42.png" transparent="1" zPosition="1" size="490,420" scrollbarMode="showOnDemand" />
++      </screen>
++      <screen name="RotorNimSelection" position="100,80" size="520,538" title="Subtitle selection" flags="wfNoBorder" backgroundColor="transparent">  
++              <ePixmap pixmap="Vu_HD/Bg_Subtitle.png" position="0,0" size="520,538" zPosition="-1" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_title_Setup.png" position="16,36" size="40,40" alphatest="blend"  transparent="1" />
++              <eLabel text="select Slot" position="69,45" size="400,32" font="Semiboldit;32" foregroundColor="#4c4c4c" backgroundColor="#b5b9bd" transparent="1" />
++              <widget name="nimlist" position="15,83" itemHeight="42" selectionPixmap="Vu_HD/buttons/FocusBar_H42.png" transparent="1" zPosition="1" size="490,420" scrollbarMode="showOnDemand" />
++      </screen>
++      <screen name="PositionerSetup" position="209,48" size="865,623" title="Positioner setup..." flags="wfNoBorder" backgroundColor="transparent">   
++              <ePixmap pixmap="Vu_HD/Bg_EPG_view.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_title_Setup.png" position="32,41" size="40,40" alphatest="blend"  transparent="1" />
++              <eLabel text="Positioner setup..." position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="45,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="240,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/yellow.png" position="435,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/blue.png" position="630,98" size="25,25" alphatest="blend" />
++              <widget name="red" position="83,97" size="150,25" backgroundColor="darkgrey" halign="center" valign="center" font="Regular;20" transparent="1"/>
++              <widget name="green" position="278,97" size="150,25" backgroundColor="darkgrey" halign="center" valign="center" font="Regular;20" transparent="1"/>
++              <widget name="yellow" position="473,97" size="150,25" backgroundColor="darkgrey" halign="center" valign="center" font="Regular;20" transparent="1"/>
++              <widget name="blue" position="668,97" size="150,25" backgroundColor="darkgrey" halign="center" valign="center" font="Regular;20" transparent="1"/>
++
++              <widget name="list" position="200,160" size="450,155" backgroundColor="#27d9dee2" transparent="1"/>
++
++              <widget name="snr_db" position="210,355" size="150,22" halign="center" valign="center" font="Regular;21" backgroundColor="#27d9dee2" transparent="1"/>
++              <eLabel text="SNR:" position="150,380" size="60,22" font="Regular;21" backgroundColor="#27d9dee2" transparent="1"/>
++              <eLabel text="BER:" position="150,405" size="60,22" font="Regular;21" backgroundColor="#27d9dee2" transparent="1"/>
++              <eLabel text="Lock:" position="150,430" size="60,22" font="Regular;21" backgroundColor="#27d9dee2" transparent="1"/>
++              <widget name="snr_percentage" position="370,380" size="60,22" font="Regular;21" backgroundColor="#27d9dee2" transparent="1"/>
++              <widget name="ber_value" position="370,405" size="60,22" font="Regular;21" backgroundColor="#27d9dee2" transparent="1"/>
++              <widget name="lock_state" position="210,430" size="150,22" font="Regular;21" backgroundColor="#27d9dee2" transparent="1"/>
++              <widget name="snr_bar" position="210,380" size="150,22" backgroundColor="#27d9dee2" transparent="1"/>
++              <widget name="ber_bar" position="210,405" size="150,22" backgroundColor="#27d9dee2" transparent="1"/>
++
++              <eLabel text="Frequency:" position="450,355" size="120,22" font="Regular;21" backgroundColor="#27d9dee2" transparent="1"/>
++              <eLabel text="Symbolrate:" position="450,380" size="120,22" font="Regular;21" backgroundColor="#27d9dee2" transparent="1"/>
++              <eLabel text="FEC:" position="450,405" size="120,22" font="Regular;21" backgroundColor="#27d9dee2" transparent="1"/>
++              <widget name="frequency_value" position="570,355" size="120,22" font="Regular;21" backgroundColor="#27d9dee2" transparent="1"/>
++              <widget name="symbolrate_value" position="570,380" size="120,22" font="Regular;21" backgroundColor="#27d9dee2" transparent="1"/>
++              <widget name="fec_value" position="570,405" size="120,22" font="Regular;21" backgroundColor="#27d9dee2" transparent="1"/>
++      </screen>       
++      <screen name="VideoEnhancementSetup" position="209,48" size="865,623" title="VideoEnhancementSetup" flags="wfNoBorder" backgroundColor="transparent">   
++              <ePixmap pixmap="Vu_HD/Bg_EPG_list.png" zPosition="-1" position="0,0" size="865,623" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/menu/ico_title_Setup.png" position="32,41" size="40,40" alphatest="blend"  transparent="1" />
++              <eLabel text="Video enhancement setup" position="90,50" size="600,32" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#27b5b9bd" transparent="1" />
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="45,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="240,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/yellow.png" position="435,98" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/blue.png" position="630,98" size="25,25" alphatest="blend" />
++              <widget source="key_red" render="Label" position="86,97" zPosition="1" size="150,25" font="Regular;20" halign="left" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="key_green" render="Label" position="278,97" zPosition="1" size="150,25" font="Regular;20" halign="left" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="key_yellow" render="Label" position="473,97" zPosition="1" size="150,25" font="Regular;20" halign="left" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="key_blue" render="Label" position="668,97" zPosition="1" size="150,25" font="Regular;20" halign="left" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="config" position="50,133" itemHeight="36" size="750,360" selectionPixmap="Vu_HD/buttons/FocusBar_H36.png" transparent="1"/>
++              <eLabel text=" " position="50,527" size="750,2" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#5c5c5c" />
++              <widget source="introduction" render="Label" position="50,530" size="750,30" zPosition="10" font="Regular;21" halign="center" valign="center" backgroundColor="#27b5b9bd" transparent="1" />
++      </screen>
++      <screen name="VideoEnhancementPreview" position="center,360" size="560,170" title="VideoEnhancementPreview">
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="0,10" size="25,25" alphatest="blend" />
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="280,10" size="25,25" alphatest="blend" />
++              <widget source="key_red" render="Label" position="35,10" zPosition="1" size="140,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget source="key_green" render="Label" position="315,10" zPosition="1" size="140,25" font="Regular;20" halign="center" valign="center" backgroundColor="darkgrey" foregroundColor="#1c1c1c" transparent="1" />
++              <widget name="config" position="5,50" size="550,80" scrollbarMode="showOnDemand" />
++              <eLabel text=" " position="0,130" size="560,2" font="Semiboldit;32" foregroundColor="#5d5d5d" backgroundColor="#5c5c5c" />
++              <widget source="introduction" render="Label" position="0,140" size="550,25" zPosition="10" font="Regular;21" halign="center" valign="center" backgroundColor="#27b5b9bd" transparent="1" />
++      </screen>       
++      <screen name="MyTubePlayerMainScreen" flags="wfNoBorder" position="280,70" size="720,576" title="MyTubePlayerMainScreen..." >
++              <ePixmap position="0,0" zPosition="-1" size="720,576" pixmap="~/mytubemain_bg.png" alphatest="on" transparent="1" backgroundColor="transparent"/>
++              <widget name="config" zPosition="2" position="60,60" size="600,50" scrollbarMode="showNever" transparent="1" />
++              <widget source="feedlist" render="Listbox" position="49,110" size="628,385" zPosition="1" scrollbarMode="showOnDemand" backgroundColorSelected="#5c8cac" transparent="1" backgroundPixmap="~/list_bg.png" selectionPixmap="~/list_sel.png" >
++                      <convert type="TemplatedMultiContent">
++                      {"templates":
++                              {"default": (77,[
++                                              MultiContentEntryPixmapAlphaTest(pos = (0, 0), size = (100, 75), png = 4), # index 4 is the thumbnail
++                                              MultiContentEntryText(pos = (100, 1), size = (500, 22), font=0, flags = RT_HALIGN_LEFT | RT_VALIGN_TOP| RT_WRAP, text = 1), # index 1 is the Title
++                                              MultiContentEntryText(pos = (100, 24), size = (300, 18), font=1, flags = RT_HALIGN_LEFT | RT_VALIGN_TOP| RT_WRAP, text = 5), # index 5 is the Published Date
++                                              MultiContentEntryText(pos = (100, 43), size = (300, 18), font=1, flags = RT_HALIGN_LEFT | RT_VALIGN_TOP| RT_WRAP, text = 6), # index 6 is the Views Count
++                                              MultiContentEntryText(pos = (400, 24), size = (200, 18), font=1, flags = RT_HALIGN_LEFT | RT_VALIGN_TOP| RT_WRAP, text = 7), # index 7 is the duration
++                                              MultiContentEntryText(pos = (400, 43), size = (200, 18), font=1, flags = RT_HALIGN_LEFT | RT_VALIGN_TOP| RT_WRAP, text = 8), # index 8 is the ratingcount
++                                      ]),
++                              "state": (77,[
++                                              MultiContentEntryText(pos = (10, 1), size = (560, 28), font=2, flags = RT_HALIGN_LEFT | RT_VALIGN_TOP| RT_WRAP, text = 0), # index 0 is the name
++                                              MultiContentEntryText(pos = (10, 22), size = (560, 46), font=3, flags = RT_HALIGN_LEFT | RT_VALIGN_TOP| RT_WRAP, text = 1), # index 2 is the description
++                                      ])
++                              },
++                              "fonts": [gFont("Regular", 22),gFont("Regular", 18),gFont("Regular", 26),gFont("Regular", 20)],
++                              "itemHeight": 77
++                      }
++                      </convert>
++              </widget>
++
++              <ePixmap pixmap="skin_default/buttons/key_info.png" position="50,500" zPosition="4" size="35,25" alphatest="on" transparent="1" />
++              <ePixmap pixmap="skin_default/buttons/key_menu.png" position="50,520" zPosition="4" size="35,25" alphatest="on" transparent="1" />
++              <ePixmap position="90,500" size="100,40" zPosition="4" pixmap="~/plugin.png" alphatest="on" transparent="1" />
++              <ePixmap position="190,500" zPosition="4" size="140,40" pixmap="skin_default/buttons/red.png" transparent="1" alphatest="on" />
++              <ePixmap position="330,500" zPosition="4" size="140,40" pixmap="skin_default/buttons/green.png" transparent="1" alphatest="on" />
++              <ePixmap position="470,500" zPosition="4" size="140,40" pixmap="skin_default/buttons/yellow.png" transparent="1" alphatest="on" />
++              <widget name="key_red" position="190,500" zPosition="5" size="140,40" valign="center" halign="center" font="Regular;21" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" />
++              <widget name="key_green" position="330,500" zPosition="5" size="140,40" valign="center" halign="center" font="Regular;21" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" />
++              <widget name="key_yellow" position="470,500" zPosition="5" size="140,40" valign="center" halign="center" font="Regular;21" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" />
++              <widget name="ButtonBlue" pixmap="skin_default/buttons/button_blue.png" position="610,510" zPosition="10" size="15,16" transparent="1" alphatest="on" />
++              <widget name="VKeyIcon" pixmap="skin_default/vkey_icon.png" position="620,495" zPosition="10" size="60,48" transparent="1" alphatest="on" />
++              <widget name="thumbnail" position="0,0" size="100,75" alphatest="on"/> # fake entry for dynamic thumbnail resizing, currently there is no other way doing this.
++              <widget name="HelpWindow" position="340,325" zPosition="1" size="1,1" transparent="1" alphatest="on" />
++      </screen>
++      <screen name="MyTubeVideoInfoScreen" flags="wfNoBorder" position="center,center" size="720,576" title="MyTubePlayerMainScreen..." >
++              <ePixmap position="0,0" zPosition="-1" size="720,576" pixmap="~/mytubemain_bg.png" alphatest="on" transparent="1" backgroundColor="transparent"/>
++              <widget name="title" position="60,50" size="600,50" zPosition="5" valign="center" halign="left" font="Regular;21" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" />
++              <widget name="starsbg" pixmap="~/starsbar_empty.png" position="560,220" zPosition="5" size="100,20" transparent="1" alphatest="on" />
++              <widget name="stars" pixmap="~/starsbar_filled.png" position="560,220" zPosition="6" size="100,20"  transparent="1" />
++              <widget source="infolist" render="Listbox" position="50,110" size="620,110" zPosition="6" scrollbarMode="showNever" foregroundColor="white" backgroundColor="#1c3c5c" selectionDisabled="1" transparent="1">
++                      <convert type="TemplatedMultiContent">
++                      {"templates":
++                              {"default": (110,[
++                                              MultiContentEntryPixmapAlphaTest(pos = (0, 4), size = (130, 98), png = 0), # index 0 is the thumbnail
++                                              MultiContentEntryPixmapAlphaTest(pos = (130, 4), size = (130, 98), png = 1), # index 0 is the thumbnail
++                                              MultiContentEntryPixmapAlphaTest(pos = (260, 4), size = (130, 98), png = 2), # index 0 is the thumbnail
++                                              MultiContentEntryPixmapAlphaTest(pos = (390, 4), size = (130, 98), png = 3), # index 0 is the thumbnail
++                                      ]),
++                              "state": (110,[
++                                              MultiContentEntryText(pos = (10, 40), size = (550, 38), font=2, flags = RT_HALIGN_LEFT | RT_VALIGN_TOP| RT_WRAP, text = 0), # index 0 is the name
++                                      ])
++                              },
++                              "fonts": [gFont("Regular", 20),gFont("Regular", 14),gFont("Regular", 28)],
++                              "itemHeight": 110
++                      }
++                      </convert>
++              </widget>
++              <widget name="author" position="60,220" size="300,20" zPosition="10" font="Regular;21" transparent="1" foregroundColor="white" backgroundColor="#1c3c5c" halign="left" valign="top" />
++              <widget name="duration" position="370,220" size="200,20" zPosition="10" font="Regular;21" transparent="1" foregroundColor="white" backgroundColor="#1c3c5c" halign="left" valign="top" />
++              <widget name="published" position="60,245" size="300,20" zPosition="10" font="Regular;21" transparent="1" foregroundColor="white" backgroundColor="#1c3c5c" halign="left" valign="top" />
++              <widget name="views" position="370,245" size="200,20" zPosition="10" font="Regular;21" transparent="1" foregroundColor="white" backgroundColor="#1c3c5c" halign="left" valign="top" />
++              <widget name="tags" position="60,270" size="600,20" zPosition="10" font="Regular;21" transparent="1" foregroundColor="white" backgroundColor="#1c3c5c" halign="left" valign="top" />
++              <widget name="detailtext" position="60,300" size="610,200" zPosition="10" font="Regular;21" transparent="1" foregroundColor="white" backgroundColor="#1c3c5c" halign="left" valign="top"/>
++              <ePixmap position="100,500" size="100,40" zPosition="0" pixmap="~/plugin.png" alphatest="on" transparent="1" />
++              <ePixmap position="220,500" zPosition="4" size="140,40" pixmap="skin_default/buttons/red.png" transparent="1" alphatest="on" />
++              <widget name="key_red" position="220,500" zPosition="5" size="140,40" valign="center" halign="center" font="Regular;21" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" />
++              <widget name="thumbnail" position="0,0" size="130,98" alphatest="on"/>
++      </screen>
++      <screen name="MyTubeVideoHelpScreen" flags="wfNoBorder" position="center,center" size="720,576" title="MyTubePlayerMainScreen..." >
++              <ePixmap position="0,0" zPosition="-1" size="720,576" pixmap="~/mytubemain_bg.png" alphatest="on" transparent="1" backgroundColor="transparent"/>
++              <widget name="title" position="60,50" size="600,50" zPosition="5" valign="center" halign="left" font="Regular;21" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" />
++              <widget name="detailtext" position="60,120" size="610,370" zPosition="10" font="Regular;21" foregroundColor="white" backgroundColor="#1c3c5c" transparent="1" halign="left" valign="top"/>
++              <ePixmap position="100,500" size="100,40" zPosition="0" pixmap="~/plugin.png" alphatest="on" transparent="1" />
++              <ePixmap position="220,500" zPosition="4" size="140,40" pixmap="skin_default/buttons/red.png" transparent="1" alphatest="on" />
++              <widget name="key_red" position="220,500" zPosition="5" size="140,40" valign="center" halign="center" font="Regular;21" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" />
++      </screen>
++      <screen name="MyTubePlayer" flags="wfNoBorder" position="center,550" size="720,160" title="InfoBar" backgroundColor="transparent">
++              <ePixmap position="0,0" pixmap="skin_default/info-bg_mp.png" zPosition="-1" size="720,160" />
++              <ePixmap position="29,40" pixmap="skin_default/screws_mp.png" size="665,104" alphatest="on" />
++              <ePixmap position="48,70" pixmap="skin_default/icons/mp_buttons.png" size="108,13" alphatest="on" />
++              <ePixmap pixmap="skin_default/icons/icon_event.png" position="207,78" size="15,10" alphatest="on" />
++              <widget source="session.CurrentService" render="Label" position="230,73" size="360,40" font="Regular;20" foregroundColor="#ececec" backgroundColor="#263c59" shadowColor="#1d354c" shadowOffset="-1,-1" transparent="1">
++                      <convert type="ServiceName">Name</convert>
++              </widget>
++              <widget source="session.CurrentService" render="Label" position="580,73" size="90,24" font="Regular;20" foregroundColor="#ececec" halign="right" backgroundColor="#4e5a74" transparent="1">
++                      <convert type="ServicePosition">Length</convert>
++              </widget>
++              <widget source="session.CurrentService" render="Label" position="205,129" size="100,20" font="Regular;18" foregroundColor="#ececec" halign="center" valign="center" backgroundColor="#06224f" shadowColor="#1d354c" shadowOffset="-1,-1" transparent="1">
++                      <convert type="ServicePosition">Position</convert>
++              </widget>
++              <widget source="session.CurrentService" render="PositionGauge" position="300,133" size="270,10" zPosition="2" pointer="skin_default/position_pointer.png:540,0" transparent="1" foregroundColor="#20224f">
++                      <convert type="ServicePosition">Gauge</convert>
++              </widget>
++              <widget source="session.CurrentService" render="Label" position="576,129" size="100,20" font="Regular;18" foregroundColor="#ececec" halign="center" valign="center" backgroundColor="#06224f" shadowColor="#1d354c" shadowOffset="-1,-1" transparent="1">
++                      <convert type="ServicePosition">Remaining</convert>
++              </widget>
++      </screen>
++      <screen name="MyTubeSuggestionsListScreen" position="340,163" zPosition="6" size="610,160" flags="wfNoBorder" >
++              <ePixmap position="0,0" zPosition="-1" size="610,160" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/MyTube/suggestions_bg.png" alphatest="on" transparent="1" backgroundColor="transparent"/>
++              <widget source="suggestionslist" render="Listbox" position="10,5" zPosition="7" size="580,150" scrollbarMode="showOnDemand" transparent="1" foregroundColor="#cccccc" backgroundColor="#1c3c5c" >
++                      <convert type="TemplatedMultiContent">
++                              {"template": [
++                                              MultiContentEntryText(pos = (0, 1), size = (340, 24), font=0, flags = RT_HALIGN_LEFT, text = 0), # index 0 is the name
++                                              MultiContentEntryText(pos = (350, 1), size = (180, 24), font=1, flags = RT_HALIGN_RIGHT, text = 1), # index 1 are the rtesults
++                                      ],
++                              "fonts": [gFont("Regular", 22),gFont("Regular", 18)],
++                              "itemHeight": 25
++                              }
++                      </convert>
++              </widget>
++      </screen>
++      <screen name="MyTubeHistoryScreen" position="340,163" zPosition="6" size="610,160" flags="wfNoBorder" >
++              <ePixmap position="0,0" zPosition="-1" size="610,160" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/MyTube/suggestions_bg.png" alphatest="on" transparent="1" backgroundColor="transparent"/>
++              <widget source="historylist" render="Listbox" position="10,5" zPosition="7" size="580,150" scrollbarMode="showOnDemand" transparent="1" foregroundColor="#cccccc" backgroundColor="#1c3c5c" >
++                      <convert type="TemplatedMultiContent">
++                              {"template": [
++                                              MultiContentEntryText(pos = (0, 1), size = (340, 24), font=0, flags = RT_HALIGN_LEFT, text = 0), # index 0 is the name
++                                      ],
++                              "fonts": [gFont("Regular", 22),gFont("Regular", 18)],
++                              "itemHeight": 25
++                              }
++                      </convert>
++              </widget>
++      </screen>       
++      <screen name="FactoryTest" position="300,100" size="660,550" title="Test Menu" >
++              <widget name="testlist" position="10,0" size="440,455" itemHeight="35" />
++              <widget name="resultlist" position="470,0" size="60,455" itemHeight="35" />
++              <widget name="testdate" position="20,470" size="250,35" font="Regular;30" />
++              <widget name="testversion" position="20,505" size="250,35" font="Regular;30" />
++              <widget name="mactext" position="320,470" size="340,35" font="Regular;30" />                    
++      </screen>
++      <screen name="MacConfig" position="center,center" size="520,100" title="Mac Config" >
++              <eLabel text="Mac Address " position="10,15" size="200,40" font="Regular;30" />         
++              <widget name="text" position="230,15" size="230,40" font="Regular;30" halign="right"/>
++              <widget name="text1" position="470,15" size="40,40" font="Regular;30" />                
++              <eLabel text=" " position="5,55" zPosition="-1" size="510,5" backgroundColor="#02e1e8e6" />             
++              <widget name="stattext" position="30,75" size="450,35" font="Regular;30" />
++      </screen>
++      <screen name="ScCiTest" position="center,center" size="440,200" title="CI Smartcard Test" >
++              <widget name="testlist" position="10,0" size="340,120" />
++              <widget name="resultlist" position="370,0" size="60,120" />
++              <eLabel text=" " position="5,125" zPosition="-1" size="430,5" backgroundColor="#02e1e8e6" />            
++              <widget name="text" position="10,140" size="420,50" font="Regular;25" />
++      </screen>
++      <screen name="SmartCardTest" position="center,center" size="300,120" title="SmartCard Test" >
++              <widget name="text" position="10,10" size="280,100" font="Regular;30" />
++      </screen>
++      <screen name="FrontTest" position="center,center" size="300,180" title="Front Test" >
++              <widget name="text" position="10,10" size="280,160" font="Regular;30" />
++      </screen>
++      <screen name="FrontTest_solo" position="center,center" size="300,180" title="Front Test" >
++              <widget name="text" position="10,10" size="280,160" font="Regular;30" />
++      </screen>
++      <screen name="RS232Test" position="center,center" size="260,100" title="RS232 Test" >
++              <widget name="text" position="10,10" size="240,80" font="Regular;30" />
++      </screen>
++      <screen name="AgingTest" position="center,center" size="350,150" title="Aging Test" >
++              <widget name="text1" position="10,10" size="330,40" font="Regular;30" />
++              <widget name="text2" position="10,60" size="330,40" font="Regular;30" />
++      </screen>
++      <screen name="FancontrolConfiguration" position="center,center" size="560,300" title="Standbymode Fancontrol settings" >
++              <ePixmap pixmap="Vu_HD/buttons/red.png" position="10,10" size="25,25" alphatest="on" />
++              <ePixmap pixmap="Vu_HD/buttons/green.png" position="290,10" size="25,25" alphatest="on" />
++              <widget source="key_red" render="Label" position="40,10" zPosition="1" size="140,25" font="Regular;20" halign="center" valign="center" transparent="1" />
++              <widget source="key_green" render="Label" position="320,10" zPosition="1" size="140,25" font="Regular;20" halign="center" valign="center" transparent="1" />
++              <widget name="config" zPosition="2" position="5,50" size="550,200" scrollbarMode="showOnDemand" transparent="1" />
++      </screen>
++</skin>
+diff --git a/data/fonts/Makefile.am b/data/fonts/Makefile.am
+index f743b8c..87650c8 100644
+--- a/data/fonts/Makefile.am
++++ b/data/fonts/Makefile.am
+@@ -4,4 +4,8 @@ dist_install_DATA = \
+       ae_AlMateen.ttf \
+       lcd.ttf \
+       md_khmurabi_10.ttf \
+-      nmsbd.ttf
++      nmsbd.ttf \
++      MyriadPro-Regular.otf \
++      MyriadPro-Semibold.otf \
++      MyriadPro-SemiboldIt.otf 
++
+diff --git a/data/skin.xml b/data/skin.xml
+index cde03f4..77c5f64 100755
+--- a/data/skin.xml
++++ b/data/skin.xml
+@@ -179,11 +179,10 @@
+                       <convert type="ConditionalShowHide" />
+               </widget>
+               <!-- Audio icon (is there multichannel audio?) -->
+-<!--  ikseong         
+               <widget source="session.CurrentService" render="Pixmap" pixmap="skin_default/icons/icon_dolby.png" position="645,48" zPosition="1" size="26,16" alphatest="on">
+                       <convert type="ServiceInfo">IsMultichannel</convert>
+                       <convert type="ConditionalShowHide" />
+-              </widget>       -->
++              </widget>
+               <!-- Progressbar (current event duration)-->
+               <ePixmap pixmap="skin_default/progress_bg.png" position="48,77" size="84,7" transparent="1" alphatest="on" />
+               <widget source="session.Event_Now" render="Progress" pixmap="skin_default/progress_small.png" position="50,78" zPosition="1" size="80,5" transparent="1">
+diff --git a/lib/gdi/epng.cpp b/lib/gdi/epng.cpp
+index 972a89d..2629ef8 100644
+--- a/lib/gdi/epng.cpp
++++ b/lib/gdi/epng.cpp
+@@ -115,10 +115,71 @@ int loadPNG(ePtr<gPixmap> &result, const char *filename)
+               }
+               surface->clut.start=0;
+               png_read_end(png_ptr, end_info);
++#ifndef BUILD_VUPLUS
+       } else {
+               result=0;
+               eDebug("%s: %dx%dx%d png, %d", filename, (int)width, (int)height, (int)bit_depth, color_type);
+       }
++#else         //csh Support for 32bit png file.
++      }else if (color_type == PNG_COLOR_TYPE_RGB_ALPHA && bit_depth == 8){
++//            eDebug("%s: %dx%dx%d png, %d", filename, (int)width, (int)height, (int)bit_depth, color_type);
++              result=new gPixmap(eSize(width, height), bit_depth*4);
++              gSurface *surface = result->surface;
++              int pass;
++              png_bytep *rowptr=new png_bytep[height];
++
++
++              //png_set_swap_alpha(png_ptr);
++
++              if (color_type & PNG_COLOR_MASK_COLOR)
++                      png_set_bgr(png_ptr);
++
++
++
++              int number_passes = png_set_interlace_handling(png_ptr);
++
++              for (unsigned int i=0; i<height; i++)
++                      rowptr[i]=((png_byte*)(surface->data))+i*surface->stride;
++
++              for (pass = 0; pass < number_passes; pass++)
++                      for (int y = 0; y < height; y++)
++                      {
++                              png_read_rows(png_ptr, &rowptr[y], png_bytepp_NULL, 1);
++                      }
++
++/*
++              png_bytep testptr = rowptr[32] + sizeof(unsigned int)*32;
++
++              for(int i = 0 ; i < 40 ; i ++)
++                      fprintf(stderr, "0x%x\n", testptr[i]);
++*/
++              for (int y = 0; y < height; y++){                               //csh  
++                      __u32 col;                      
++                      unsigned int *ptr = (unsigned int *)rowptr[y];
++                      for(int i = 0 ; i < width ; i ++){
++                              col= ptr[i];
++                              col ^=0xFF000000;
++                              ptr[i] = col;
++                      }
++              }
++ 
++              surface->clut.data=0;
++              surface->clut.colors=0;
++              surface->clut.start=0; 
++/*
++              testptr = rowptr[32] + sizeof(unsigned int)*32;
++              fprintf(stderr, "----------------------------------------------\n");
++              for(int i = 0 ; i < 40 ; i ++)
++                      fprintf(stderr, "0x%x\n", testptr[i]);
++*/
++              delete [] rowptr;
++              png_read_end(png_ptr, end_info);
++
++      } else {
++              result=0;
++              eDebug("%s: %dx%dx%d png, %d", filename, (int)width, (int)height, (int)bit_depth, color_type);
++      }
++#endif
+       png_destroy_read_struct(&png_ptr, &info_ptr,&end_info);
+       fclose(fp);
+diff --git a/lib/python/Screens/ChannelSelection.py b/lib/python/Screens/ChannelSelection.py
+index 7ddbcbf..46f96a9 100755
+--- a/lib/python/Screens/ChannelSelection.py
++++ b/lib/python/Screens/ChannelSelection.py
+@@ -2,6 +2,8 @@ from Tools.Profile import profile
+ from Screen import Screen
+ from Components.Button import Button
++#     ikseong
++from Components.Label import Label
+ from Components.ServiceList import ServiceList
+ from Components.ActionMap import NumberActionMap, ActionMap, HelpableActionMap
+ from Components.MenuList import MenuList
+@@ -703,6 +705,9 @@ class ChannelSelectionBase(Screen):
+               self["key_yellow"] = Button(_("Provider"))
+               self["key_blue"] = Button(_("Favourites"))
++              #       ikseong
++              self["etitle"] = Label(_('Channel Selection'))
++
+               self["list"] = ServiceList()
+               self.servicelist = self["list"]
+@@ -848,25 +853,51 @@ class ChannelSelectionBase(Screen):
+               pos = titleStr.find(']')
+               if pos == -1:
+                       pos = titleStr.find(')')
+-              if pos != -1:
+-                      titleStr = titleStr[:pos+1]
+-                      Len = len(self.servicePath)
+-                      if Len > 0:
+-                              base_ref = self.servicePath[0]
+-                              if Len > 1:
+-                                      end_ref = self.servicePath[Len-1]
+-                              else:
+-                                      end_ref = None
+-                              nameStr = self.getServiceName(base_ref)
+-                              titleStr += ' ' + nameStr
+-                              if end_ref is not None:
+-                                      if Len > 2:
+-                                              titleStr += '/../'
++              #       ikseong
++              if config.skin.primary_skin.value       =="750S/skin.xml":
++                      if pos != -1:
++                              titleStr = titleStr[:pos+1]
++                              Len = len(self.servicePath)
++                              if Len > 0:
++                                      base_ref = self.servicePath[0]
++                                      if Len > 1:
++                                              end_ref = self.servicePath[Len-1]
+                                       else:
+-                                              titleStr += '/'
+-                                      nameStr = self.getServiceName(end_ref)
+-                                      titleStr += nameStr
+-                              self.setTitle(titleStr)
++                                              end_ref = None
++                                      nameStr = self.getServiceName(base_ref)
++                                      if end_ref is not None:
++                                              titles = ".../"+ nameStr
++                                              if Len > 2:
++                                                      titles += '/../'
++                                              else:
++                                                      titles += '/'
++                                              nameStr = self.getServiceName(end_ref)
++                                              titles += nameStr
++                                              self["etitle"].setText(titles)
++                                      else:
++                                              titles = "Channel Selection "+titleStr + ' ' + nameStr                  
++                                              self["etitle"].setText(titles)
++              else:   
++              #       
++                      if pos != -1:
++                              titleStr = titleStr[:pos+1]
++                              Len = len(self.servicePath)
++                              if Len > 0:
++                                      base_ref = self.servicePath[0]
++                                      if Len > 1:
++                                              end_ref = self.servicePath[Len-1]
++                                      else:
++                                              end_ref = None
++                                      nameStr = self.getServiceName(base_ref)
++                                      titleStr += ' ' + nameStr
++                                      if end_ref is not None:
++                                              if Len > 2:
++                                                      titleStr += '/../'
++                                              else:
++                                                      titleStr += '/'
++                                              nameStr = self.getServiceName(end_ref)
++                                              titleStr += nameStr
++                                      self.setTitle(titleStr)
+       def moveUp(self):
+               self.servicelist.moveUp()
+diff --git a/lib/python/Screens/FixedMenu.py b/lib/python/Screens/FixedMenu.py
+index 0122346..add611b 100644
+--- a/lib/python/Screens/FixedMenu.py
++++ b/lib/python/Screens/FixedMenu.py
+@@ -20,3 +20,10 @@ class FixedMenu(Screen):
+                       })
+               self["title"] = StaticText(title)
++              #       ikseong
++              self["thistory"] = StaticText(title)
++              self["title0"] = StaticText('')
++              self["title1"] = StaticText('')
++              self["title2"] = StaticText('')
++              #
++              
+diff --git a/lib/python/Screens/Menu.py b/lib/python/Screens/Menu.py
+index 2a8801c..20403d8 100755
+--- a/lib/python/Screens/Menu.py
++++ b/lib/python/Screens/Menu.py
+@@ -22,6 +22,28 @@ from Screens.Setup import Setup, getSetupTitle
+ # read the menu
+ mdom = xml.etree.cElementTree.parse(resolveFilename(SCOPE_SKIN, 'menu.xml'))
++#     ikseong make menu title
++class title_History:
++      def __init__(self):
++              self.thistory = ''
++      def reset(self):
++              self.thistory = ''
++      def reducehistory(self):
++#             print "reducehistory" , self.thistory
++              history_len = len(self.thistory.split('>'))
++              if(history_len < 3):
++                      self.reset()
++                      return
++              if(self.thistory == ''):
++                      return
++              result = self.thistory.rsplit('>',2)
++              if(result[0] == ''):
++                      self.reset()
++                      return
++              self.thistory = result[0] + '> '
++
++t_history = title_History()
++#     
+ class boundFunction:
+       def __init__(self, fnc, *args):
+               self.fnc = fnc
+@@ -237,9 +259,41 @@ class Menu(Screen):
+               a = a and _(a)
+               if a is None:
+                       a = _(parent.get("text", "").encode("UTF-8"))
++              #       ikseong - enter Main menu
++              else:
++                      t_history.reset()
++                      
+               self["title"] = StaticText(a)
+               self.menu_title = a
++              #       ikseong make menu title
++              self["thistory"] = StaticText(t_history.thistory)
++              history_len = len(t_history.thistory)
++              self["title0"] = StaticText('')
++              self["title1"] = StaticText('')
++              self["title2"] = StaticText('')
++              if history_len < 13 :
++                      self["title0"] = StaticText(a)
++              elif history_len < 21 :
++                      self["title0"] = StaticText('')
++                      self["title1"] = StaticText(a)
++              else:
++                      self["title0"] = StaticText('')
++                      self["title1"] = StaticText('')
++                      self["title2"] = StaticText(a)                          
++
++#             english title                   
++#             if(t_history.thistory ==''):
++#                     t_history.thistory = str(etitle) + ' > '
++#             else:
++#                     t_history.thistory = t_history.thistory + str(etitle) + ' > '
++
++              if(t_history.thistory ==''):
++                      t_history.thistory = str(a) + ' > '
++              else:
++                      t_history.thistory = t_history.thistory + str(a) + ' > '
++              #
++
+       def keyNumberGlobal(self, number):
+               print "menu keyNumber:", number
+               # Calculate index
+@@ -250,9 +304,15 @@ class Menu(Screen):
+                       self.okbuttonClick()
+       def closeNonRecursive(self):
++              #       ikseong for menu title
++              t_history.reducehistory()
++              #
+               self.close(False)
+       def closeRecursive(self):
++              #       ikseong for menu title
++              t_history.reset()
++              #
+               self.close(True)
+       def createSummary(self):
+diff --git a/skin.py b/skin.py
+index b490f73..bbd9ddd 100755
+--- a/skin.py
++++ b/skin.py
+@@ -50,7 +50,7 @@ def loadSkin(name, scope = SCOPE_SKIN):
+ # example: loadSkin("nemesis_greenline/skin.xml")
+ config.skin = ConfigSubsection()
+-config.skin.primary_skin = ConfigText(default = "skin.xml")
++config.skin.primary_skin = ConfigText(default = "Vu_HD/skin.xml")
+ profile("LoadSkin")
+ try:
+@@ -133,6 +133,36 @@ def loadPixmap(path, desktop):
+               raise SkinError("pixmap file %s not found!" % (path))
+       return ptr
++#     ikseong
++from enigma import runMainloop, eDVBDB, eTimer, quitMainloop, \
++      getDesktop, ePythonConfigQuery, eAVSwitch, eServiceEvent
++pngcache = []
++def cachemenu():
++      pixmaplist = []
++      for (path, skin) in dom_skins:
++              for x in skin.findall("screen"):
++                      if x.attrib.get('name') == 'menu_mainmenu':
++                              print x.attrib.get('name')
++                              for s in x.findall("ePixmap"):
++                                      if s.attrib.get('pixmap','') is not '':
++                                              pixmaplist.append(s.attrib.get('pixmap',''))
++                              for s in x.findall('widget'):
++                                      if s.attrib.get('pixmap','') is not '':
++                                              pixmaplist.append(s.attrib.get('pixmap',''))
++      desktop = getDesktop(0)
++      for s in pixmaplist:
++              value ='/usr/share/enigma2/'+s
++#             print value
++              ptr = loadPixmap(value, desktop)
++              pngcache.append((value,ptr))
++#     ikseong
++try:
++      if config.skin.primary_skin.value == "750S/skin.xml" or config.skin.primary_skin.value == "Vu_HD/skin.xml":
++              cachemenu()
++except:
++      print "fail cache main menu"
++#
++
+ def applySingleAttribute(guiObject, desktop, attrib, value, scale = ((1,1),(1,1))):
+       # and set attributes
+       try:
+@@ -151,7 +181,15 @@ def applySingleAttribute(guiObject, desktop, attrib, value, scale = ((1,1),(1,1)
+               elif attrib == 'itemHeight':
+                       guiObject.setItemHeight(int(value))
+               elif attrib in ("pixmap", "backgroundPixmap", "selectionPixmap"):
+-                      ptr = loadPixmap(value, desktop) # this should already have been filename-resolved.
++#ikseong
++                      global pngcache
++                      ptr = None
++                      for cvalue, cptr in pngcache:
++                              if cvalue== value:
++                                      ptr=cptr
++                      if ptr is None:
++                              ptr = loadPixmap(value, desktop) # this should already have been filename-resolved.
++#
+                       if attrib == "pixmap":
+                               guiObject.setPixmap(ptr)
+                       elif attrib == "backgroundPixmap":
diff --git a/recipes/enigma2/enigma2/vuplus/number_key/key_0.png b/recipes/enigma2/enigma2/vuplus/number_key/key_0.png
new file mode 100755 (executable)
index 0000000..c74e818
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/number_key/key_0.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/number_key/key_1.png b/recipes/enigma2/enigma2/vuplus/number_key/key_1.png
new file mode 100755 (executable)
index 0000000..7d5319b
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/number_key/key_1.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/number_key/key_2.png b/recipes/enigma2/enigma2/vuplus/number_key/key_2.png
new file mode 100755 (executable)
index 0000000..7ab668b
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/number_key/key_2.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/number_key/key_3.png b/recipes/enigma2/enigma2/vuplus/number_key/key_3.png
new file mode 100755 (executable)
index 0000000..7c559c6
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/number_key/key_3.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/number_key/key_4.png b/recipes/enigma2/enigma2/vuplus/number_key/key_4.png
new file mode 100755 (executable)
index 0000000..ca0fc51
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/number_key/key_4.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/number_key/key_5.png b/recipes/enigma2/enigma2/vuplus/number_key/key_5.png
new file mode 100755 (executable)
index 0000000..d3968de
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/number_key/key_5.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/number_key/key_6.png b/recipes/enigma2/enigma2/vuplus/number_key/key_6.png
new file mode 100755 (executable)
index 0000000..f48d3aa
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/number_key/key_6.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/number_key/key_7.png b/recipes/enigma2/enigma2/vuplus/number_key/key_7.png
new file mode 100755 (executable)
index 0000000..9e36d88
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/number_key/key_7.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/number_key/key_8.png b/recipes/enigma2/enigma2/vuplus/number_key/key_8.png
new file mode 100755 (executable)
index 0000000..f88ec95
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/number_key/key_8.png differ
diff --git a/recipes/enigma2/enigma2/vuplus/number_key/key_9.png b/recipes/enigma2/enigma2/vuplus/number_key/key_9.png
new file mode 100755 (executable)
index 0000000..8a55eaa
Binary files /dev/null and b/recipes/enigma2/enigma2/vuplus/number_key/key_9.png differ
old mode 100644 (file)
new mode 100755 (executable)
index 323ae9a..b507eb5
@@ -6,4 +6,7 @@ LICENSE = "GPL"
 
 SRC_URI = "${SOURCEFORGE_MIRROR}/gkernel/ethtool-${PV}.tar.gz"
 
+SRC_URI_append_vuplus = " \
+               file://ethtool_vuplus.patch;patch=1"
+
 inherit autotools
diff --git a/recipes/ethtool/ethtool/ethtool_vuplus.patch b/recipes/ethtool/ethtool/ethtool_vuplus.patch
new file mode 100755 (executable)
index 0000000..a80768d
--- /dev/null
@@ -0,0 +1,672 @@
+Index: ethtool-4/ethtool.c
+===================================================================
+--- ethtool-4/ethtool.c        (revision 3)
++++ ethtool-4/ethtool.c        (working copy)
+@@ -1578,6 +1578,27 @@
+       } else if (errno != EOPNOTSUPP) {
+               perror("Cannot get link status");
+       }
++#if 1         /*      ikseong - check running flags   */      
++      else    
++      {
++              if(ioctl(fd, SIOCGIFFLAGS, ifr) < 0)            
++              {
++                      fprintf(stdout,"SIOCGIFFLAGS error \n");                
++              }
++              else
++              {
++                      if((ifr->ifr_flags & IFF_RUNNING))
++                      {
++                              fprintf(stdout, "       Link detected: yes\n");
++                      }
++                      else
++                      {
++                              fprintf(stdout, "       Link detected: no\n");
++                      }
++                      allfail=0;
++              }
++      }
++#endif
+       if (allfail) {
+               fprintf(stdout, "No data available\n");
+Index: ethtool-4/Makefile.in
+===================================================================
+--- ethtool-4/Makefile.in      (revision 4)
++++ ethtool-4/Makefile.in      (working copy)
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.6 from Makefile.am.
++# Makefile.in generated by automake 1.9.3 from Makefile.am.
+ # @configure_input@
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005  Free Software Foundation, Inc.
++# 2003, 2004  Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -14,6 +14,8 @@
+ @SET_MAKE@
++SOURCES = $(ethtool_SOURCES)
++
+ srcdir = @srcdir@
+ top_srcdir = @top_srcdir@
+ VPATH = @srcdir@
+Index: ethtool-4/aclocal.m4
+===================================================================
+--- ethtool-4/aclocal.m4       (revision 4)
++++ ethtool-4/aclocal.m4       (working copy)
+@@ -1,7 +1,7 @@
+-# generated automatically by aclocal 1.9.6 -*- Autoconf -*-
++# generated automatically by aclocal 1.9.3 -*- Autoconf -*-
+-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+-# 2005  Free Software Foundation, Inc.
++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
++# Free Software Foundation, Inc.
+ # This file is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -11,12 +11,24 @@
+ # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ # PARTICULAR PURPOSE.
+-# Copyright (C) 2002, 2003, 2005  Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++#                                                        -*- Autoconf -*-
++# Copyright (C) 2002, 2003  Free Software Foundation, Inc.
++# Generated from amversion.in; do not edit by hand.
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2, or (at your option)
++# any later version.
++
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++# GNU General Public License for more details.
++
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
++
+ # AM_AUTOMAKE_VERSION(VERSION)
+ # ----------------------------
+ # Automake X.Y traces this macro to ensure aclocal.m4 has been
+@@ -28,16 +40,27 @@
+ # Call AM_AUTOMAKE_VERSION so it can be traced.
+ # This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
+ AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+-       [AM_AUTOMAKE_VERSION([1.9.6])])
++       [AM_AUTOMAKE_VERSION([1.9.3])])
+-# AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
++# AM_AUX_DIR_EXPAND
+-# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++# Copyright (C) 2001, 2003 Free Software Foundation, Inc.
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2, or (at your option)
++# any later version.
++
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++# GNU General Public License for more details.
++
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
++# 02111-1307, USA.
++
+ # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+ # $ac_aux_dir to `$srcdir/foo'.  In other projects, it is set to
+ # `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+@@ -83,17 +106,27 @@
+ am_aux_dir=`cd $ac_aux_dir && pwd`
+ ])
+-# AM_CONDITIONAL                                            -*- Autoconf -*-
++# AM_CONDITIONAL                                              -*- Autoconf -*-
+-# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005
+-# Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++# Copyright (C) 1997, 2000, 2001, 2003, 2004 Free Software Foundation, Inc.
+-# serial 7
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2, or (at your option)
++# any later version.
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++# GNU General Public License for more details.
++
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
++# 02111-1307, USA.
++
++# serial 6
++
+ # AM_CONDITIONAL(NAME, SHELL-CONDITION)
+ # -------------------------------------
+ # Define a conditional.
+@@ -116,16 +149,27 @@
+ Usually this means the macro was only invoked conditionally.]])
+ fi])])
++# serial 7                                            -*- Autoconf -*-
+-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
++# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
+ # Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-# serial 8
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2, or (at your option)
++# any later version.
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++# GNU General Public License for more details.
++
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
++# 02111-1307, USA.
++
++
+ # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+ # written in clear, in which case automake, when reading aclocal.m4,
+ # will think it sees a *use*, and therefore will trigger all it's
+@@ -133,6 +177,7 @@
+ # CC etc. in the Makefile, will ask for an AC_PROG_CC use...
++
+ # _AM_DEPENDENCIES(NAME)
+ # ----------------------
+ # See how the compiler implements dependency checking.
+@@ -272,17 +317,28 @@
+ AC_SUBST([AMDEPBACKSLASH])
+ ])
+-# Generate code to set up dependency tracking.              -*- Autoconf -*-
++# Generate code to set up dependency tracking.   -*- Autoconf -*-
+-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
+-# Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
++#   Free Software Foundation, Inc.
+-#serial 3
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2, or (at your option)
++# any later version.
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++# GNU General Public License for more details.
++
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
++# 02111-1307, USA.
++
++#serial 2
++
+ # _AM_OUTPUT_DEPENDENCY_COMMANDS
+ # ------------------------------
+ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+@@ -340,20 +396,31 @@
+      [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+ ])
+-# Do all the work for Automake.                             -*- Autoconf -*-
++# Do all the work for Automake.                            -*- Autoconf -*-
+-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
++# This macro actually does too much some checks are only needed if
++# your package does certain things.  But this isn't really a big deal.
++
++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+ # Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-# serial 12
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2, or (at your option)
++# any later version.
+-# This macro actually does too much.  Some checks are only needed if
+-# your package does certain things.  But this isn't really a big deal.
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++# GNU General Public License for more details.
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
++# 02111-1307, USA.
++
++# serial 11
++
+ # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+ # AM_INIT_AUTOMAKE([OPTIONS])
+ # -----------------------------------------------
+@@ -454,28 +521,52 @@
+ done
+ echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
+-# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+ # AM_PROG_INSTALL_SH
+ # ------------------
+ # Define $install_sh.
++
++# Copyright (C) 2001, 2003 Free Software Foundation, Inc.
++
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2, or (at your option)
++# any later version.
++
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++# GNU General Public License for more details.
++
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
++# 02111-1307, USA.
++
+ AC_DEFUN([AM_PROG_INSTALL_SH],
+ [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+ install_sh=${install_sh-"$am_aux_dir/install-sh"}
+ AC_SUBST(install_sh)])
+-# Copyright (C) 2003, 2005  Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++#                                                          -*- Autoconf -*-
++# Copyright (C) 2003  Free Software Foundation, Inc.
+-# serial 2
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2, or (at your option)
++# any later version.
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++# GNU General Public License for more details.
++
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
++# 02111-1307, USA.
++
++# serial 1
++
+ # Check whether the underlying file-system supports filenames
+ # with a leading dot.  For instance MS-DOS doesn't.
+ AC_DEFUN([AM_SET_LEADING_DOT],
+@@ -489,18 +580,29 @@
+ rmdir .tst 2>/dev/null
+ AC_SUBST([am__leading_dot])])
+-# Add --enable-maintainer-mode option to configure.         -*- Autoconf -*-
++# Add --enable-maintainer-mode option to configure.
+ # From Jim Meyering
+-# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005
++# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004
+ # Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-# serial 4
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2, or (at your option)
++# any later version.
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++# GNU General Public License for more details.
++
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
++# 02111-1307, USA.
++
++# serial 3
++
+ AC_DEFUN([AM_MAINTAINER_MODE],
+ [AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
+   dnl maintainer-mode is disabled by default
+@@ -518,16 +620,27 @@
+ AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
+-# Check to see how 'make' treats includes.                -*- Autoconf -*-
++# Check to see how 'make' treats includes.    -*- Autoconf -*-
+-# Copyright (C) 2001, 2002, 2003, 2005  Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+-# serial 3
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2, or (at your option)
++# any later version.
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++# GNU General Public License for more details.
++
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
++# 02111-1307, USA.
++
++# serial 2
++
+ # AM_MAKE_INCLUDE()
+ # -----------------
+ # Check to see how make treats includes.
+@@ -570,17 +683,28 @@
+ rm -f confinc confmf
+ ])
+-# Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
++#  -*- Autoconf -*-
+-# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005
+-# Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-# serial 4
++# Copyright (C) 1997, 1999, 2000, 2001, 2003 Free Software Foundation, Inc.
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2, or (at your option)
++# any later version.
++
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++# GNU General Public License for more details.
++
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
++# 02111-1307, USA.
++
++# serial 3
++
+ # AM_MISSING_PROG(NAME, PROGRAM)
+ # ------------------------------
+ AC_DEFUN([AM_MISSING_PROG],
+@@ -605,16 +729,27 @@
+ fi
+ ])
+-# Copyright (C) 2003, 2004, 2005  Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
+-
+ # AM_PROG_MKDIR_P
+ # ---------------
+ # Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise.
+-#
++
++# Copyright (C) 2003, 2004 Free Software Foundation, Inc.
++
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2, or (at your option)
++# any later version.
++
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++# GNU General Public License for more details.
++
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
++# 02111-1307, USA.
++
+ # Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories
+ # created by `make install' are always world readable, even if the
+ # installer happens to have an overly restrictive umask (e.g. 077).
+@@ -668,16 +803,27 @@
+ fi
+ AC_SUBST([mkdir_p])])
+-# Helper functions for option handling.                     -*- Autoconf -*-
++# Helper functions for option handling.                    -*- Autoconf -*-
+-# Copyright (C) 2001, 2002, 2003, 2005  Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++# Copyright (C) 2001, 2002, 2003  Free Software Foundation, Inc.
+-# serial 3
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2, or (at your option)
++# any later version.
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++# GNU General Public License for more details.
++
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
++# 02111-1307, USA.
++
++# serial 2
++
+ # _AM_MANGLE_OPTION(NAME)
+ # -----------------------
+ AC_DEFUN([_AM_MANGLE_OPTION],
+@@ -701,17 +847,29 @@
+ AC_DEFUN([_AM_IF_OPTION],
+ [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+-# Check to make sure that the build environment is sane.    -*- Autoconf -*-
+-
+-# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
+-# Free Software Foundation, Inc.
+ #
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++# Check to make sure that the build environment is sane.
++#
+-# serial 4
++# Copyright (C) 1996, 1997, 2000, 2001, 2003 Free Software Foundation, Inc.
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2, or (at your option)
++# any later version.
++
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++# GNU General Public License for more details.
++
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
++# 02111-1307, USA.
++
++# serial 3
++
+ # AM_SANITY_CHECK
+ # ---------------
+ AC_DEFUN([AM_SANITY_CHECK],
+@@ -753,14 +911,25 @@
+ fi
+ AC_MSG_RESULT(yes)])
+-# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++# AM_PROG_INSTALL_STRIP
+-# AM_PROG_INSTALL_STRIP
+-# ---------------------
++# Copyright (C) 2001, 2003 Free Software Foundation, Inc.
++
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2, or (at your option)
++# any later version.
++
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++# GNU General Public License for more details.
++
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
++# 02111-1307, USA.
++
+ # One issue with vendor `install' (even GNU) is that you can't
+ # specify the program used to strip binaries.  This is especially
+ # annoying in cross-compiling environments, where the build's strip
+@@ -783,14 +952,26 @@
+ # Check how to create a tarball.                            -*- Autoconf -*-
+-# Copyright (C) 2004, 2005  Free Software Foundation, Inc.
+-#
+-# This file is free software; the Free Software Foundation
+-# gives unlimited permission to copy and/or distribute it,
+-# with or without modifications, as long as this notice is preserved.
++# Copyright (C) 2004  Free Software Foundation, Inc.
+-# serial 2
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2, or (at your option)
++# any later version.
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++# GNU General Public License for more details.
++
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
++# 02111-1307, USA.
++
++# serial 1
++
++
+ # _AM_PROG_TAR(FORMAT)
+ # --------------------
+ # Check how to create a tarball in format FORMAT.
+Index: ethtool-4/install-sh
+===================================================================
+--- ethtool-4/install-sh       (revision 4)
++++ ethtool-4/install-sh       (working copy)
+@@ -1,7 +1,7 @@
+ #!/bin/sh
+ # install - install a program, script, or datafile
+-scriptversion=2004-09-10.20
++scriptversion=2004-10-22.00
+ # This originates from X11R5 (mit/util/scripts/install.sh), which was
+ # later released in X11R6 (xc/config/util/install.sh) with the
+@@ -213,7 +213,7 @@
+   fi
+   # This sed command emulates the dirname command.
+-  dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
++  dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'`
+   # Make sure that the destination directory exists.
+@@ -226,7 +226,8 @@
+     oIFS=$IFS
+     # Some sh's can't handle IFS=/ for some reason.
+     IFS='%'
+-    set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
++    set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
++    shift
+     IFS=$oIFS
+     pathcomp=
index dd8dffd..85f64c3 100644 (file)
@@ -4,6 +4,7 @@ PR = "r0"
 
 SRC_URI += "file://not-run-updaterc.d-on-host.patch;patch=1"
 SRC_URI_append_opendreambox = " file://dev_misc_fuse.patch;patch=1"
+SRC_URI_append_vuplus = " file://dev_misc_fuse.patch;patch=1"
 
 EXTRA_OECONF = " --disable-kernel-module"
 
index a110d6c..e40bb17 100644 (file)
@@ -3,6 +3,7 @@ SECTION = "x11/gnome/libs"
 LICENSE = "GPL"
 DEPENDS = "libproxy glib-2.0 gnutls libxml2 sqlite3 gnome-keyring"
 DEPENDS_opendreambox = "glib-2.0 gnutls libxml2 sqlite3"
+DEPENDS_vuplus = "glib-2.0 gnutls libxml2 sqlite3"
 
 #inherit gnome
 inherit autotools
@@ -13,8 +14,10 @@ SRC_URI = "${GNOME_MIRROR}/libsoup/${@'.'.join((bb.data.getVar('PV', d, 1)).spli
 S = "${WORKDIR}/libsoup-${PV}"
 
 EXTRA_OECONF_opendreambox += "--without-gnome"
+EXTRA_OECONF_vuplus += "--without-gnome"
 #the following is needed for dm800 .. i dont know why...
 SRC_URI_append_opendreambox = " file://libsoup-libz-hack.patch;patch=1;pnum=1"
+SRC_URI_append_vuplus = " file://libsoup-libz-hack.patch;patch=1;pnum=1"
 
 PACKAGES =+ "libsoup-gnome"
 FILES_libsoup-gnome = "${libdir}/libsoup-gnome*.so.*"
old mode 100644 (file)
new mode 100755 (executable)
index dddb469..452b185
@@ -9,9 +9,12 @@ do_configure_prepend() {
 DEPENDS += "gst-plugins-base"
 
 EXTRA_OECONF_opendreambox += "--disable-apexsink --disable-dvdnav --disable-cdaudio --disable-mpeg2enc --disable-mplex"
+EXTRA_OECONF_vuplus += "--disable-apexsink --disable-dvdnav --disable-cdaudio --disable-mpeg2enc --disable-mplex"
 
 SRC_URI_append_opendreambox += " file://mpegpsdemux_speedup.diff;patch=1;pnum=0 \
                                 file://mpegtsdemux_fix_ac3_detection.diff;patch=1;pnum=0"
+SRC_URI_append_vuplus += " file://mpegpsdemux_speedup.diff;patch=1;pnum=0 \
+                                file://mpegtsdemux_fix_ac3_detection.diff;patch=1;pnum=0"
 
 RCONFLICTS_gst-plugin-mpegdemux = "gst-plugin-fluendo-mpegdemux"
 RREPLACES_gst-plugin-mpegdemux = "gst-plugin-fluendo-mpegdemux"
index dddb469..452b185 100644 (file)
@@ -9,9 +9,12 @@ do_configure_prepend() {
 DEPENDS += "gst-plugins-base"
 
 EXTRA_OECONF_opendreambox += "--disable-apexsink --disable-dvdnav --disable-cdaudio --disable-mpeg2enc --disable-mplex"
+EXTRA_OECONF_vuplus += "--disable-apexsink --disable-dvdnav --disable-cdaudio --disable-mpeg2enc --disable-mplex"
 
 SRC_URI_append_opendreambox += " file://mpegpsdemux_speedup.diff;patch=1;pnum=0 \
                                 file://mpegtsdemux_fix_ac3_detection.diff;patch=1;pnum=0"
+SRC_URI_append_vuplus += " file://mpegpsdemux_speedup.diff;patch=1;pnum=0 \
+                                file://mpegtsdemux_fix_ac3_detection.diff;patch=1;pnum=0"
 
 RCONFLICTS_gst-plugin-mpegdemux = "gst-plugin-fluendo-mpegdemux"
 RREPLACES_gst-plugin-mpegdemux = "gst-plugin-fluendo-mpegdemux"
diff --git a/recipes/gstreamer/gst-plugins-base/jsseek_have_x.patch b/recipes/gstreamer/gst-plugins-base/jsseek_have_x.patch
new file mode 100644 (file)
index 0000000..fd4822c
--- /dev/null
@@ -0,0 +1,15 @@
+diff --git a/tests/examples/seek/jsseek.c b/tests/examples/seek/jsseek.c
+index 16167e4..dd51990 100644
+--- a/tests/examples/seek/jsseek.c
++++ b/tests/examples/seek/jsseek.c
+@@ -3007,8 +3007,10 @@ main (int argc, char **argv)
+    * asks for the XID of the window to render onto */
+   gtk_widget_realize (window);
++#ifdef HAVE_X
+   /* we should have the XID now */
+   g_assert (embed_xid != 0);
++#endif
+   if (verbose) {
+     g_signal_connect (pipeline, "deep_notify",
index 9582cd1..25a5b1c 100644 (file)
@@ -4,6 +4,10 @@ SRC_URI_append_opendreambox = " file://samihack.patch;patch=1 \
 file://playbin2-Set-subtitle-encoding-on-the-decodebins-a.patch;patch=1 \
 file://playbin2-If-a-text-sink-is-provided-let-subtitle-p.patch;patch=1 "
 
+SRC_URI_append_vuplus = " file://samihack.patch;patch=1 \
+file://playbin2-Set-subtitle-encoding-on-the-decodebins-a.patch;patch=1 \
+file://playbin2-If-a-text-sink-is-provided-let-subtitle-p.patch;patch=1 "
+
 PR = "${INC_PR}.1"
 
 PROVIDES += "gst-plugins"
@@ -12,6 +16,9 @@ PROVIDES += "gst-plugins"
 # if alsa has been built and is present.  You will
 # not get an error if this is not present, just 
 # a missing alsa plugin
-DEPENDS += "${@base_contains('DISTRO', 'opendreambox', 'alsa-lib', 'cdparanoia pango libtheora alsa-lib libsm virtual/libx11 freetype gnome-vfs libxv', d)}"
+#DEPENDS += "${@base_contains('DISTRO', 'opendreambox', 'alsa-lib', 'cdparanoia pango libtheora alsa-lib libsm virtual/libx11 freetype gnome-vfs libxv', d)}"
+DEPENDS += "${@base_contains('DISTRO', 'vuplus', 'alsa-lib', 'cdparanoia pango libtheora alsa-lib libsm virtual/libx11 freetype gnome-vfs libxv', d)}"
+
 EXTRA_OECONF_opendreambox += "--disable-theora --disable-pango --with-audioresample-format=int"
+EXTRA_OECONF_vuplus += "--disable-theora --disable-pango --with-audioresample-format=int"
 
index 1ffafc9..3545601 100644 (file)
@@ -5,6 +5,11 @@ file://playbin2-Set-subtitle-encoding-on-the-decodebins-a.patch;patch=1 \
 file://playbin2-If-a-text-sink-is-provided-let-subtitle-p.patch;patch=1 \
 file://playbin2-capsless-textsink.patch;patch=1 "
 
+SRC_URI_append_vuplus = " file://samihack.patch;patch=1 \
+file://playbin2-Set-subtitle-encoding-on-the-decodebins-a.patch;patch=1 \
+file://playbin2-If-a-text-sink-is-provided-let-subtitle-p.patch;patch=1 \
+file://playbin2-capsless-textsink.patch;patch=1 "
+
 PR = "${INC_PR}.0"
 
 PROVIDES += "gst-plugins"
@@ -13,6 +18,8 @@ PROVIDES += "gst-plugins"
 # if alsa has been built and is present.  You will
 # not get an error if this is not present, just 
 # a missing alsa plugin
-DEPENDS += "${@base_contains('DISTRO', 'opendreambox', 'alsa-lib', 'cdparanoia pango libtheora alsa-lib libsm virtual/libx11 freetype gnome-vfs libxv', d)}"
+#DEPENDS += "${@base_contains('DISTRO', 'opendreambox', 'alsa-lib', 'cdparanoia pango libtheora alsa-lib libsm virtual/libx11 freetype gnome-vfs libxv', d)}"
+DEPENDS += "${@base_contains('DISTRO', 'vuplus', 'alsa-lib', 'cdparanoia pango libtheora alsa-lib libsm virtual/libx11 freetype gnome-vfs libxv', d)}"
 EXTRA_OECONF_opendreambox += "--disable-theora --disable-pango --with-audioresample-format=int"
+EXTRA_OECONF_vuplus += "--disable-theora --disable-pango --with-audioresample-format=int"
 
index 7cb481a..50c348a 100644 (file)
@@ -1,6 +1,7 @@
 require gst-plugins.inc
 
 SRC_URI_append_opendreambox = " file://dvdsubdec-addproperty-singlebuffer.patch;patch=1"
+SRC_URI_append_vuplus = " file://dvdsubdec-addproperty-singlebuffer.patch;patch=1"
 
 PR = "${INC_PR}.0"
 
old mode 100644 (file)
new mode 100755 (executable)
index f3a9938..e205462
@@ -3,6 +3,7 @@ DESCRIPTION = "Plugins for GStreamer"
 DEPENDS = "gstreamer libmikmod liboil libogg tremor libvorbis"
 DEPENDS += "${@base_conditional('ENTERPRISE_DISTRO', '1', '', 'libmad libid3tag', d)}"
 DEPENDS += "${@base_conditional('DISTRO', 'opendreambox', 'libmad libsoup-2.4 flac libmatroska libcdio libid3tag', '', d)}"
+DEPENDS += "${@base_conditional('DISTRO', 'vuplus', 'libmad libsoup-2.4 flac libmatroska libcdio libid3tag', '', d)}"
 
 INC_PR = "r8"
 
@@ -13,6 +14,7 @@ SRC_URI = "http://gstreamer.freedesktop.org/src/${PN}/${PN}-${PV}.tar.bz2"
 EXTRA_OECONF = "--enable-introspection=no --disable-aalib --disable-shout2 --disable-sdl --disable-cdaudio --x-includes=${STAGING_INCDIR} --x-libraries=${STAGING_LIBDIR} "
 EXTRA_OECONF_append_shr = " --disable-dvdnav "
 EXTRA_OECONF_opendreambox = "--disable-x --disable-aalib --disable-esd --disable-shout2 --disable-sdl --with-check=no --enable-neon "
+EXTRA_OECONF_vuplus = "--disable-x --disable-aalib --disable-esd --disable-shout2 --disable-sdl --with-check=no --enable-neon "
 
 acpaths = "-I ${S}/common/m4 -I ${S}/m4"
 
old mode 100644 (file)
new mode 100755 (executable)
index 94d1e6e..af87b0f
@@ -12,3 +12,4 @@ do_install () {
        install -d ${D}/${sbindir} ${D}/${mandir}/man8
        oe_runmake 'DESTDIR=${D}' install
 }
+
diff --git a/recipes/images/vuplus-image.bb b/recipes/images/vuplus-image.bb
new file mode 100755 (executable)
index 0000000..4534e12
--- /dev/null
@@ -0,0 +1,69 @@
+export IMAGE_BASENAME = "vuplus-image"
+
+VUPLUS_COMMON = "\
+       task-boot \
+       task-vuplus-base \
+       task-vuplus-dvbapi \
+       task-vuplus-ui \
+"
+
+
+
+# add bootstrap stuff
+DEPENDS = "${VUPLUS_COMMON}"
+IMAGE_INSTALL = "${VUPLUS_COMMON}"
+
+# we don't want any locales, at least not in the common way.
+IMAGE_LINGUAS = " "
+
+inherit image
+
+vuplus_rootfs_postprocess() {
+    curdir=$PWD
+    cd ${IMAGE_ROOTFS}
+
+    # generate /etc/image-version
+    IMAGE_VERSION="000"
+    IMAGE_DATE="$(date +%Y%m%d%H%M)"
+    IMAGE_TYPE="1"
+    echo "version=${IMAGE_TYPE}${IMAGE_VERSION}${IMAGE_DATE}" > etc/image-version
+    echo "comment=${DISTRO_NAME}" >> etc/image-version
+    echo "target=9" >> etc/image-version
+    echo "creator=OpenEmbedded <oe@vuplus.com>" >> etc/image-version
+    echo "url=http://www.vuplus.com/" >> etc/image-version
+    echo "catalog=http://www.vuplus.com/" >> etc/image-version
+
+    # because we're so used to it
+    ln -s opkg usr/bin/ipkg || true
+    ln -s opkg-cl usr/bin/ipkg-cl || true
+
+    cd $curdir
+}
+
+ROOTFS_POSTPROCESS_COMMAND += "vuplus_rootfs_postprocess; "
+
+export NFO = '${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.nfo'
+
+generate_nfo() {
+    VER=`grep Version: "${IMAGE_ROOTFS}/usr/lib/ipkg/info/enigma2.control" | cut -b 10-26`
+    echo "Enigma2: ${VER}" > ${NFO}
+    echo "Machine: Vuplus ${MACHINE}" >> ${NFO}
+    DATE=`date +%Y-%m-%d' '%H':'%M`
+    echo "Date: ${DATE}" >> ${NFO}
+    echo "Issuer: Vuplus" >> ${NFO}
+    echo "Link: ${DISTRO_FEED_URI}" >> ${NFO}
+    if [ "${DESC}" != "" ]; then
+        echo "Description: ${DESC}" >> ${NFO}
+        echo "${DESC}" >> ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.desc
+    fi
+    MD5SUM=`md5sum ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.nfi | cut -b 1-32`
+    echo "MD5: ${MD5SUM}" >> ${NFO}
+}
+
+do_rootfs_append_bm750() {
+    generate_nfo
+}
+
+do_rootfs_append_vusolo() {
+    generate_nfo
+}
diff --git a/recipes/initscripts/initscripts-1.0/bm750/bootup b/recipes/initscripts/initscripts-1.0/bm750/bootup
new file mode 100755 (executable)
index 0000000..83f75cc
--- /dev/null
@@ -0,0 +1,80 @@
+
+
+for mod in input evdev i2c-core firmware_class; do
+       modprobe $mod
+done
+
+for mod in snd snd-pcm; do
+        modprobe $mod
+done
+
+insmod /lib/modules/2.6.18-7.3/extra/procmk.ko
+insmod /lib/modules/2.6.18-7.3/extra/fb.ko
+insmod /lib/modules/2.6.18-7.3/extra/dvb-core.ko
+insmod /lib/modules/2.6.18-7.3/extra/dvb-bcm7335.ko
+insmod /lib/modules/2.6.18-7.3/extra/brcmfb.ko
+
+
+depmod -Ae
+echo 12 > /proc/progress
+
+for mod in isofs cifs usb-storage sr_mod vfat cdrom ntfs; do
+       modprobe $mod
+done
+
+for mod in sata_svw libata nls_base nls_cp437 nls_iso8859-1; do
+       modprobe $mod
+done
+
+echo 13 > /proc/progress
+
+
+mount -at nonfs,nosmbfs,noncpfs,nocifs
+echo 14 > /proc/progress
+
+swapon -a
+echo 15 > /proc/progress
+
+tar xzf /etc/var.tar.gz -C /
+echo 16 > /proc/progress
+
+# sleep after 10min
+hdparm -S 120 /dev/sda
+
+echo 17 > /proc/progress
+
+# accustic management
+hdparm -M128 /dev/sda
+
+echo 19 > /proc/progress
+
+cat /etc/videomode > /proc/stb/video/videomode
+
+echo 20 > /proc/progress
+
+
+echo 21 > /proc/progress
+
+[ -e /etc/dropbear/dropbear_rsa_host_key ] && /usr/bin/showiframe /boot/bootlogo.mvi || /usr/bin/showiframe /boot/bootlogo_wait.mvi
+
+hostname -F /etc/hostname
+
+echo 22 > /proc/progress
+
+echo 23 > /proc/progress
+
+[ -e "/etc/sysctl.conf" ] && /sbin/sysctl -p "/etc/sysctl.conf"
+
+echo 24 > /proc/progress
+
+ldconfig
+
+echo 25 > /proc/progress
+
+ipkg-cl configure
+
+if [ -f /usr/local/bin/vucamd ];
+then /usr/local/bin/vucamd &
+fi
+
+/usr/bin/hotplug_br &
diff --git a/recipes/initscripts/initscripts-1.0/bm750/halt b/recipes/initscripts/initscripts-1.0/bm750/halt
new file mode 100755 (executable)
index 0000000..e31ef66
--- /dev/null
@@ -0,0 +1,29 @@
+#! /bin/sh
+#
+# halt         Execute the halt command.
+#
+# Version:      @(#)halt  2.84-2  07-Jan-2002  miquels@cistron.nl
+#
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+
+# See if we need to cut the power.
+if test -x /etc/init.d/ups-monitor
+then
+       /etc/init.d/ups-monitor poweroff
+fi
+
+# Don't shut down drives if we're using RAID.
+hddown="-h"
+if grep -qs '^md.*active' /proc/mdstat
+then
+       hddown=""
+fi
+
+showiframe /usr/share/switchoff.mvi
+
+/usr/bin/turnoff_power
+
+halt -d -f -i -p $hddown
+
+: exit 0
diff --git a/recipes/initscripts/initscripts-1.0/bm750/hotplug_br b/recipes/initscripts/initscripts-1.0/bm750/hotplug_br
new file mode 100755 (executable)
index 0000000..442d25f
Binary files /dev/null and b/recipes/initscripts/initscripts-1.0/bm750/hotplug_br differ
diff --git a/recipes/initscripts/initscripts-1.0/bm750/make_mac_sector b/recipes/initscripts/initscripts-1.0/bm750/make_mac_sector
new file mode 100755 (executable)
index 0000000..34affcc
Binary files /dev/null and b/recipes/initscripts/initscripts-1.0/bm750/make_mac_sector differ
diff --git a/recipes/initscripts/initscripts-1.0/vuplus/turnoff_power b/recipes/initscripts/initscripts-1.0/vuplus/turnoff_power
new file mode 100755 (executable)
index 0000000..c648363
Binary files /dev/null and b/recipes/initscripts/initscripts-1.0/vuplus/turnoff_power differ
diff --git a/recipes/initscripts/initscripts-1.0/vuplus/var.tar.gz.default b/recipes/initscripts/initscripts-1.0/vuplus/var.tar.gz.default
new file mode 100755 (executable)
index 0000000..3e4b1fb
Binary files /dev/null and b/recipes/initscripts/initscripts-1.0/vuplus/var.tar.gz.default differ
diff --git a/recipes/initscripts/initscripts-1.0/vusolo/bootup b/recipes/initscripts/initscripts-1.0/vusolo/bootup
new file mode 100755 (executable)
index 0000000..e31ca9c
--- /dev/null
@@ -0,0 +1,88 @@
+
+
+for mod in input evdev i2c-core firmware_class; do
+        modprobe $mod
+done
+
+for mod in snd snd-pcm; do
+       modprobe $mod
+done
+
+
+insmod /lib/modules/2.6.18-7.3/extra/procmk.ko
+insmod /lib/modules/2.6.18-7.3/extra/fb.ko
+insmod /lib/modules/2.6.18-7.3/extra/dvb-core.ko
+insmod /lib/modules/2.6.18-7.3/extra/dvb-bcm7325.ko
+insmod /lib/modules/2.6.18-7.3/extra/brcmfb.ko
+
+
+
+
+
+depmod -Ae
+echo 12 > /proc/progress
+
+for mod in isofs cifs usb-storage sr_mod vfat cdrom ntfs; do
+       modprobe $mod
+done
+
+for mod in nls_base nls_cp437 nls_iso8859-1 nls_utf8; do
+       modprobe $mod
+done
+
+echo 13 > /proc/progress
+
+
+mount -at nonfs,nosmbfs,noncpfs,nocifs
+echo 14 > /proc/progress
+
+swapon -a
+echo 15 > /proc/progress
+
+tar xzf /etc/var.tar.gz -C /
+echo 16 > /proc/progress
+
+# sleep after 10min
+hdparm -S 120 /dev/sda
+
+echo 17 > /proc/progress
+
+# accustic management
+hdparm -M 128 /dev/sda
+
+
+
+echo 19 > /proc/progress
+
+cat /etc/videomode > /proc/stb/video/videomode
+
+echo 20 > /proc/progress
+
+
+echo 21 > /proc/progress
+
+[ -e /etc/dropbear/dropbear_rsa_host_key ] && /usr/bin/showiframe /boot/bootlogo.mvi || /usr/bin/showiframe /boot/bootlogo_wait.mvi
+
+hostname -F /etc/hostname
+
+echo 22 > /proc/progress
+
+
+echo 23 > /proc/progress
+
+[ -e "/etc/sysctl.conf" ] && /sbin/sysctl -p "/etc/sysctl.conf"
+
+echo 24 > /proc/progress
+
+ldconfig
+
+echo 25 > /proc/progress
+
+ipkg-cl configure
+
+if [ -f /usr/local/bin/vucamd ];
+then /usr/local/bin/vucamd &
+fi
+
+
+/usr/bin/hotplug_br &
diff --git a/recipes/initscripts/initscripts-1.0/vusolo/halt b/recipes/initscripts/initscripts-1.0/vusolo/halt
new file mode 100755 (executable)
index 0000000..e31ef66
--- /dev/null
@@ -0,0 +1,29 @@
+#! /bin/sh
+#
+# halt         Execute the halt command.
+#
+# Version:      @(#)halt  2.84-2  07-Jan-2002  miquels@cistron.nl
+#
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+
+# See if we need to cut the power.
+if test -x /etc/init.d/ups-monitor
+then
+       /etc/init.d/ups-monitor poweroff
+fi
+
+# Don't shut down drives if we're using RAID.
+hddown="-h"
+if grep -qs '^md.*active' /proc/mdstat
+then
+       hddown=""
+fi
+
+showiframe /usr/share/switchoff.mvi
+
+/usr/bin/turnoff_power
+
+halt -d -f -i -p $hddown
+
+: exit 0
diff --git a/recipes/initscripts/initscripts-1.0/vusolo/hotplug_br b/recipes/initscripts/initscripts-1.0/vusolo/hotplug_br
new file mode 100755 (executable)
index 0000000..442d25f
Binary files /dev/null and b/recipes/initscripts/initscripts-1.0/vusolo/hotplug_br differ
diff --git a/recipes/initscripts/initscripts-1.0/vusolo/make_mac_sector b/recipes/initscripts/initscripts-1.0/vusolo/make_mac_sector
new file mode 100755 (executable)
index 0000000..34affcc
Binary files /dev/null and b/recipes/initscripts/initscripts-1.0/vusolo/make_mac_sector differ
diff --git a/recipes/initscripts/initscripts-vuplus_1.0.bb b/recipes/initscripts/initscripts-vuplus_1.0.bb
new file mode 100755 (executable)
index 0000000..cf9b610
--- /dev/null
@@ -0,0 +1,88 @@
+DESCRIPTION = "SysV init scripts for VuPlus"
+SECTION = "base"
+PRIORITY = "required"
+DEPENDS = "makedevs"
+RDEPENDS = "makedevs"
+LICENSE = "GPL"
+PR = "r23"
+
+#FILESPATH = "${@base_set_filespath([ '${FILE_DIRNAME}/${P}', '${FILE_DIRNAME}/initscripts-${PV}', '${FILE_DIRNAME}/files', '${FILE_DIRNAME}' ], d)}"
+#deprecated
+FILESPATHPKG = "initscripts-${PV}:initscripts:files"
+
+
+SRC_URI = "file://halt \
+                       file://umountfs \
+                       file://devpts.sh \
+                       file://devpts \
+                       file://turnoff_power \
+                       file://reboot \
+                       file://single \
+                       file://sendsigs \
+                       file://rmnologin \
+                       file://umountnfs.sh \
+                       file://netmount.sh \
+                       file://var.tar.gz.default \
+                       file://sysfs.sh \
+                       file://hotplug_br \
+                       file://make_mac_sector \
+                       file://bootup"
+
+
+do_install () {
+#
+# Create directories and install device independent scripts
+#
+       install -d ${D}${sysconfdir}/init.d \
+                  ${D}${sysconfdir}/rcS.d \
+                  ${D}${sysconfdir}/rc0.d \
+                  ${D}${sysconfdir}/rc1.d \
+                  ${D}${sysconfdir}/rc2.d \
+                  ${D}${sysconfdir}/rc3.d \
+                  ${D}${sysconfdir}/rc4.d \
+                  ${D}${sysconfdir}/rc5.d \
+                  ${D}${sysconfdir}/rc6.d \
+                  ${D}/usr/bin \
+                  ${D}${sysconfdir}/default
+
+       install -m 0755    ${WORKDIR}/halt              ${D}${sysconfdir}/init.d
+       install -m 0755    ${WORKDIR}/turnoff_power     ${D}/usr/bin
+       install -m 0755    ${WORKDIR}/hotplug_br        ${D}/usr/bin
+       install -m 0755    ${WORKDIR}/make_mac_sector   ${D}/usr/bin
+       install -m 0755    ${WORKDIR}/reboot            ${D}${sysconfdir}/init.d
+       install -m 0755    ${WORKDIR}/rmnologin ${D}${sysconfdir}/init.d
+       install -m 0755    ${WORKDIR}/sendsigs          ${D}${sysconfdir}/init.d
+       install -m 0755    ${WORKDIR}/single            ${D}${sysconfdir}/init.d
+       install -m 0755    ${WORKDIR}/bootup  ${D}${sysconfdir}/init.d
+       install -m 0755    ${WORKDIR}/devpts.sh ${D}${sysconfdir}/init.d
+       install -m 0755    ${WORKDIR}/devpts            ${D}${sysconfdir}/default
+       install -m 0755    ${WORKDIR}/sysfs.sh          ${D}${sysconfdir}/init.d
+       install -m 0755    ${WORKDIR}/var.tar.gz.default ${D}${sysconfdir}/var.tar.gz
+
+#
+# Install device dependent scripts
+#
+       install -m 0755 ${WORKDIR}/umountfs     ${D}${sysconfdir}/init.d/umountfs
+       install -d ${D}${sysconfdir}/network/if-up.d
+       install -m 0755 ${WORKDIR}/netmount.sh  ${D}${sysconfdir}/network/if-up.d/02netmount
+       install -d ${D}${sysconfdir}/network/if-down.d
+       install -m 0755 ${WORKDIR}/umountnfs.sh ${D}${sysconfdir}/network/if-down.d/02umountnfs
+
+       echo "[ -f /etc/shadow ] && /bin/true || touch /etc/shadow" >> ${D}${sysconfdir}/init.d/bootup
+
+       ln -sf          ../init.d/rmnologin     ${D}${sysconfdir}/rc2.d/S99rmnologin
+       ln -sf          ../init.d/rmnologin     ${D}${sysconfdir}/rc3.d/S99rmnologin
+       ln -sf          ../init.d/rmnologin     ${D}${sysconfdir}/rc4.d/S99rmnologin
+       ln -sf          ../init.d/rmnologin     ${D}${sysconfdir}/rc5.d/S99rmnologin
+       ln -sf          ../init.d/sendsigs      ${D}${sysconfdir}/rc6.d/S20sendsigs
+       ln -sf          ../init.d/umountfs      ${D}${sysconfdir}/rc6.d/S40umountfs
+       ln -sf          ../init.d/reboot        ${D}${sysconfdir}/rc6.d/S90reboot
+       ln -sf          ../init.d/sendsigs      ${D}${sysconfdir}/rc0.d/S20sendsigs
+       ln -sf          ../init.d/umountfs      ${D}${sysconfdir}/rc0.d/S40umountfs
+       ln -sf          ../init.d/halt          ${D}${sysconfdir}/rc0.d/S90halt
+       ln -sf                  ../init.d/sysfs.sh      ${D}${sysconfdir}/rcS.d/S02sysfs
+       ln -sf                  ../init.d/devpts.sh     ${D}${sysconfdir}/rcS.d/S38devpts.sh
+       ln -sf                  ../init.d/bootup        ${D}${sysconfdir}/rcS.d/S05bootup
+
+}
+
old mode 100644 (file)
new mode 100755 (executable)
index a8bea37..6a98402
@@ -17,6 +17,8 @@ CFLAGS_dm500hd_append = " -DHARDWARE_SUPPORT_LPCM"
 CFLAGS_dm800se_append = " -DHARDWARE_SUPPORT_LPCM"
 CFLAGS_dm8000_append = " -DHARDWARE_SUPPORT_LPCM"
 #CFLAGS_dm800_append = " -DHARDWARE_SUPPORT_LPCM"
+CFLAGS_vusolo_append = " -DHARDWARE_SUPPORT_LPCM"
+CFLAGS_bm750_append = " -DHARDWARE_SUPPORT_LPCM"
 
 S = "${WORKDIR}/libdreamdvd"
 
old mode 100644 (file)
new mode 100755 (executable)
index e799a94..dc17e12
@@ -5,6 +5,7 @@ HOMEPAGE = "http://www.dtek.chalmers.se/groups/dvd/development.shtml"
 LICENSE = "GPL"
 DEPENDS = "libdvdcss"
 DEPENDS_opendreambox = ""
+DEPENDS_vuplus = ""
 SECTION = "libs/multimedia"
 
 PR = "r2"
@@ -18,6 +19,7 @@ EXTRA_OECONF = " --with-libdvdcss-includes=${STAGING_INCDIR} \
 "
 
 EXTRA_OECONF_opendreambox = ""
+EXTRA_OECONF_vuplus = ""
 
 do_stage() {
        autotools_stage_all
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
diff --git a/recipes/linux/linux-bm750.bb b/recipes/linux/linux-bm750.bb
new file mode 100755 (executable)
index 0000000..76bfb57
--- /dev/null
@@ -0,0 +1,75 @@
+DESCRIPTION = "Linux kernel for vuplus duo"
+LICENSE = "GPL"
+KV = "2.6.18-7.3"
+PV = "2.6.18-7.3"
+PR = "r4"
+
+MODULE = "stblinux-2.6.18"
+
+
+SRC_URI = "http://archive.vuplus.com/download/stblinux-${KV}.tar.bz2 \
+       file://linux_bm750_nand.patch;patch=1;pnum=0 \
+        file://linux_bm750_proc.patch;patch=1;pnum=0 \
+        file://linux_bm750_resource.patch;patch=1;pnum=0 \
+        file://linux_bm750_serial.patch;patch=1;pnum=0 \
+        file://linux_bm750_setup.patch;patch=1;pnum=0 \
+        file://linux_bm750_arch_makefile.patch;patch=1;pnum=0 \
+        file://linux_bm750_kobject.patch;patch=1;pnum=0 \
+        file://linux_bm750_dvb-core_fe.patch;patch=1;pnum=0 \
+       file://bm750_defconfig \
+       "
+
+
+S = "${WORKDIR}/stblinux-2.6.18"
+
+inherit kernel
+
+FILES_kernel-image = "/boot/vmlinux.gz /boot/autoexec.bat"
+
+export OS = "Linux"
+KERNEL_IMAGETYPE = "vmlinux"
+KERNEL_OUTPUT = "vmlinux"
+KERNEL_OBJECT_SUFFIX = "ko"
+
+
+do_configure_prepend() {
+       oe_machinstall -m 0644 ${WORKDIR}/bm750_defconfig ${S}/.config
+       if [ -d ${WORKDIR}/cdfs-${PV} ]; then
+               mv ${WORKDIR}/cdfs-${PV} ${S}/fs/cdfs
+               cd ${S} & patch -p0 < ${S}/fs/cdfs/patch.cdfs
+       fi;
+       oe_runmake oldconfig
+}
+
+do_install_append () {
+        install -d ${D}/boot
+        install -m 0755 vmlinux ${D}/boot/vmlinux
+        gzip ${D}/boot/vmlinux
+}
+
+pkg_preinst_kernel-image () {
+       [ -d /proc/stb ] && mount -o rw,remount /boot
+       true
+       if [ -f /boot/vmlinux.gz ];
+       then rm -f /boot/vmlinux.gz;
+       fi
+}
+
+pkg_postinst_kernel-image () {
+       if [ -d /proc/stb ];
+       then flash_eraseall /dev/mtd1; nandwrite /dev/mtd1 /boot/vmlinux.gz -p;
+       fi
+       [ -d /proc/stb ] && mount -o ro,remount /boot
+       true
+
+}
+
+pkg_prerm_kernel-image () {
+       [ -d /proc/stb ] && mount -o rw,remount /boot
+       true
+}
+
+pkg_postrm_kernel-image () {
+       [ -d /proc/stb ] && mount -o ro,remount /boot
+       true
+}
diff --git a/recipes/linux/linux-bm750/bm750_defconfig b/recipes/linux/linux-bm750/bm750_defconfig
new file mode 100644 (file)
index 0000000..520c5f8
--- /dev/null
@@ -0,0 +1,1489 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.18-6.1
+# Thu Sep 25 13:49:47 2008
+#
+CONFIG_MIPS=y
+
+#
+# Machine selection
+#
+# CONFIG_MIPS_BCM3548BX_SPI is not set
+# CONFIG_MIPS_BCM3548BX_NAND is not set
+# CONFIG_MIPS_BCM3563CX is not set
+# CONFIG_MIPS_BCM3563CX_DDR1 is not set
+# CONFIG_MIPS_BCM3563CX_NAND is not set
+# CONFIG_MIPS_BCM7038CX is not set
+# CONFIG_MIPS_BCM7118AX is not set
+# CONFIG_MIPS_BCM7118AX_NAND is not set
+# CONFIG_MIPS_BCM7118CX is not set
+# CONFIG_MIPS_BCM7118CX_NAND is not set
+# CONFIG_MIPS_BCM7405AX is not set
+# CONFIG_MIPS_BCM7405BX is not set
+# CONFIG_MIPS_BCM97459BX is not set
+# CONFIG_MIPS_BCM7405BX_NAND is not set
+# CONFIG_MIPS_BCM97459BX_NAND is not set
+CONFIG_MIPS_BCM7335BX=y
+# CONFIG_MIPS_BCM7420AX is not set
+# CONFIG_MIPS_BCM97456DX is not set
+# CONFIG_MIPS_BCM7400DX is not set
+# CONFIG_MIPS_BCM7400DX_NAND is not set
+# CONFIG_MIPS_BCM97456DX_NAND is not set
+# CONFIG_MIPS_BCM97455CX is not set
+# CONFIG_MIPS_BCM97455CX_NAND is not set
+# CONFIG_MIPS_BCM7401CX is not set
+# CONFIG_MIPS_BCM7401CX_NAND is not set
+# CONFIG_MIPS_BCM97401CX_SW is not set
+# CONFIG_MIPS_BCM97458AX is not set
+# CONFIG_MIPS_BCM97458AX_NAND is not set
+# CONFIG_MIPS_BCM7402CX is not set
+# CONFIG_MIPS_BCM7402CX_NAND is not set
+# CONFIG_MIPS_BCM7454 is not set
+# CONFIG_MIPS_BCM7403AX is not set
+# CONFIG_MIPS_BCM7403AX_NAND is not set
+# CONFIG_MIPS_BCM7325AX is not set
+# CONFIG_MIPS_BCM7440BX is not set
+# CONFIG_MIPS_BCM7440BX_NAND is not set
+# CONFIG_MIPS_BCM7443AX is not set
+# CONFIG_MIPS_MTX1 is not set
+# CONFIG_MIPS_BOSPORUS is not set
+# CONFIG_MIPS_PB1000 is not set
+# CONFIG_MIPS_PB1100 is not set
+# CONFIG_MIPS_PB1500 is not set
+# CONFIG_MIPS_PB1550 is not set
+# CONFIG_MIPS_PB1200 is not set
+# CONFIG_MIPS_DB1000 is not set
+# CONFIG_MIPS_DB1100 is not set
+# CONFIG_MIPS_DB1500 is not set
+# CONFIG_MIPS_DB1550 is not set
+# CONFIG_MIPS_DB1200 is not set
+# CONFIG_MIPS_MIRAGE is not set
+# CONFIG_BASLER_EXCITE is not set
+# CONFIG_MIPS_COBALT is not set
+# CONFIG_MACH_DECSTATION is not set
+# CONFIG_MIPS_EV64120 is not set
+# CONFIG_MIPS_EV96100 is not set
+# CONFIG_MIPS_IVR is not set
+# CONFIG_MIPS_ITE8172 is not set
+# CONFIG_MACH_JAZZ is not set
+# CONFIG_LASAT is not set
+# CONFIG_MIPS_ATLAS is not set
+# CONFIG_MIPS_MALTA is not set
+# CONFIG_MIPS_SEAD is not set
+# CONFIG_WR_PPMC is not set
+# CONFIG_MIPS_SIM is not set
+# CONFIG_MOMENCO_JAGUAR_ATX is not set
+# CONFIG_MOMENCO_OCELOT is not set
+# CONFIG_MOMENCO_OCELOT_3 is not set
+# CONFIG_MOMENCO_OCELOT_C is not set
+# CONFIG_MOMENCO_OCELOT_G is not set
+# CONFIG_MIPS_XXS1500 is not set
+# CONFIG_PNX8550_V2PCI is not set
+# CONFIG_PNX8550_JBS is not set
+# CONFIG_DDB5477 is not set
+# CONFIG_MACH_VR41XX is not set
+# CONFIG_PMC_YOSEMITE is not set
+# CONFIG_QEMU is not set
+# CONFIG_MARKEINS is not set
+# CONFIG_SGI_IP22 is not set
+# CONFIG_SGI_IP27 is not set
+# CONFIG_SGI_IP32 is not set
+# CONFIG_SIBYTE_BIGSUR is not set
+# CONFIG_SIBYTE_SWARM is not set
+# CONFIG_SIBYTE_SENTOSA is not set
+# CONFIG_SIBYTE_RHONE is not set
+# CONFIG_SIBYTE_CARMEL is not set
+# CONFIG_SIBYTE_PTSWARM is not set
+# CONFIG_SIBYTE_LITTLESUR is not set
+# CONFIG_SIBYTE_CRHINE is not set
+# CONFIG_SIBYTE_CRHONE is not set
+# CONFIG_SNI_RM200_PCI is not set
+# CONFIG_TOSHIBA_JMR3927 is not set
+# CONFIG_TOSHIBA_RBTX4927 is not set
+# CONFIG_TOSHIBA_RBTX4938 is not set
+CONFIG_BRCM_BUILD_TARGET="unknown"
+CONFIG_LONG_LONG_SUPPORT=y
+# CONFIG_MIPS_BCM_NDVD is not set
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_FIND_NEXT_BIT=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
+CONFIG_DMA_NONCOHERENT=y
+CONFIG_DMA_NEED_PCI_MAP_STATE=y
+# CONFIG_CPU_BIG_ENDIAN is not set
+CONFIG_CPU_LITTLE_ENDIAN=y
+CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
+CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
+CONFIG_IRQ_CPU=y
+CONFIG_MIPS_BRCM97XXX=y
+# CONFIG_BMIPS3300 is not set
+CONFIG_BMIPS4380=y
+# CONFIG_BMIPS5000 is not set
+# CONFIG_MTI_R5K is not set
+# CONFIG_MTI_R24K is not set
+# CONFIG_MTI_R34K is not set
+# CONFIG_BRCM_SCM_L2 is not set
+CONFIG_MIPS_BCM7335B0=y
+CONFIG_MIPS_BCM7335=y
+CONFIG_MIPS_BRCM=y
+# CONFIG_BRCM_7XXX_SERIAL is not set
+CONFIG_SERIAL=y
+CONFIG_BRCM_SKIP_CHECK_BOOTROM=y
+CONFIG_MIPS_L1_CACHE_SHIFT=6
+CONFIG_SYS_SUPPORTS_PM=y
+CONFIG_SYS_SUPPORTS_CPUFREQ=y
+
+#
+# Power management
+#
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_TABLE=y
+# CONFIG_CPU_FREQ_DEBUG is not set
+CONFIG_CPU_FREQ_STAT=y
+# CONFIG_CPU_FREQ_STAT_DETAILS is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
+# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
+# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
+# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
+CONFIG_CPU_FREQ_BRCM=y
+CONFIG_BRCM_PM=y
+CONFIG_HOTPLUG_CPU=y
+
+#
+# CPU selection
+#
+CONFIG_CPU_MIPS32_R1=y
+# CONFIG_CPU_MIPS32_R2 is not set
+# CONFIG_CPU_MIPS64_R1 is not set
+# CONFIG_CPU_MIPS64_R2 is not set
+# CONFIG_CPU_R3000 is not set
+# CONFIG_CPU_TX39XX is not set
+# CONFIG_CPU_VR41XX is not set
+# CONFIG_CPU_R4300 is not set
+# CONFIG_CPU_R4X00 is not set
+# CONFIG_CPU_TX49XX is not set
+# CONFIG_CPU_R5000 is not set
+# CONFIG_CPU_R5432 is not set
+# CONFIG_CPU_R6000 is not set
+# CONFIG_CPU_NEVADA is not set
+# CONFIG_CPU_R8000 is not set
+# CONFIG_CPU_R10000 is not set
+# CONFIG_CPU_RM7000 is not set
+# CONFIG_CPU_RM9000 is not set
+# CONFIG_CPU_SB1 is not set
+CONFIG_SYS_HAS_CPU_MIPS32_R1=y
+CONFIG_CPU_MIPS32=y
+CONFIG_CPU_MIPSR1=y
+CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
+CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
+
+#
+# Kernel type
+#
+CONFIG_32BIT=y
+# CONFIG_64BIT is not set
+CONFIG_PAGE_SIZE_4KB=y
+# CONFIG_PAGE_SIZE_8KB is not set
+# CONFIG_PAGE_SIZE_16KB is not set
+# CONFIG_PAGE_SIZE_64KB is not set
+CONFIG_CPU_HAS_PREFETCH=y
+CONFIG_MIPS_MT_DISABLED=y
+# CONFIG_MIPS_MT_SMTC is not set
+# CONFIG_MIPS_MT_SMP is not set
+# CONFIG_MIPS_VPE_LOADER is not set
+# CONFIG_64BIT_PHYS_ADDR is not set
+CONFIG_CPU_HAS_LLSC=y
+CONFIG_CPU_HAS_SYNC=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_IRQ_PER_CPU=y
+CONFIG_CPU_SUPPORTS_HIGHMEM=y
+CONFIG_ARCH_FLATMEM_ENABLE=y
+CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+# CONFIG_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_SMP=y
+CONFIG_SYS_SUPPORTS_SMP=y
+CONFIG_NR_CPUS=2
+# CONFIG_HZ_48 is not set
+# CONFIG_HZ_100 is not set
+# CONFIG_HZ_128 is not set
+# CONFIG_HZ_250 is not set
+# CONFIG_HZ_256 is not set
+CONFIG_HZ_1000=y
+# CONFIG_HZ_1024 is not set
+CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
+CONFIG_HZ=1000
+CONFIG_PREEMPT_NONE=y
+# CONFIG_PREEMPT_VOLUNTARY is not set
+# CONFIG_PREEMPT is not set
+CONFIG_PREEMPT_BKL=y
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_POSIX_MQUEUE=y
+CONFIG_BSD_PROCESS_ACCT=y
+# CONFIG_BSD_PROCESS_ACCT_V3 is not set
+# CONFIG_TASKSTATS is not set
+CONFIG_AUDIT=y
+# CONFIG_IKCONFIG is not set
+CONFIG_CPUSETS=y
+CONFIG_RELAY=y
+CONFIG_INITRAMFS_SOURCE=""
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_EMBEDDED=y
+CONFIG_SYSCTL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+# CONFIG_VMALLOC_NOGUARD is not set
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+# CONFIG_SLOB is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+CONFIG_STOP_MACHINE=y
+
+#
+# Block layer
+#
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+CONFIG_DEFAULT_AS=y
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="anticipatory"
+
+#
+# Bus options (PCI, PCMCIA, EISA, ISA, TC)
+#
+CONFIG_HW_HAS_PCI=y
+CONFIG_PCI=y
+CONFIG_MMU=y
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# PCI Hotplug Support
+#
+# CONFIG_HOTPLUG_PCI is not set
+
+#
+# Executable file formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_MISC is not set
+CONFIG_TRAD_SIGNALS=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+# CONFIG_XFRM_USER is not set
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+
+#CONFIG_IP_PNP=y
+#CONFIG_IP_PNP_DHCP=y
+#CONFIG_IP_PNP_BOOTP=y
+#CONFIG_IP_PNP_RARP=y
+
+#
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_IP_MROUTE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
+# CONFIG_INET_TUNNEL is not set
+CONFIG_INET_XFRM_MODE_TRANSPORT=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_BIC=y
+# CONFIG_IPV6 is not set
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL is not set
+# CONFIG_NETWORK_SECMARK is not set
+# CONFIG_NETFILTER is not set
+
+#
+# DCCP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP is not set
+
+#
+# TIPC Configuration (EXPERIMENTAL)
+#
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+CONFIG_BRIDGE=y
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+CONFIG_LLC=y
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+# CONFIG_IEEE80211 is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=m
+# CONFIG_SYS_HYPERVISOR is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+# CONFIG_CONNECTOR is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=y
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_GEN_PROBE=y
+CONFIG_MTD_CFI_ADV_OPTIONS=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_OTP is not set
+# CONFIG_MTD_CFI_INTELEXT is not set
+CONFIG_MTD_CFI_AMDSTD=y
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+# CONFIG_MTD_CFI_AMDSTD_USE_WORD_WRITE is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_PHYSMAP is not set
+CONFIG_MTD_BCM7XXX=y
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_PMC551 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+
+#
+# NAND Flash Device Drivers
+#
+# CONFIG_MTD_NAND is not set
+CONFIG_MTD_BRCMNAND=y
+# CONFIG_MTD_BRCMNAND_VERIFY_WRITE is not set
+# CONFIG_MTD_BLOCK_ROMBLOCK is not set
+CONFIG_MTD_BRCMNAND_VERSION=3
+CONFIG_MTD_BRCMNAND_CORRECTABLE_ERR_HANDLING=y
+CONFIG_MTD_BRCMNAND_USE_ISR=y
+#
+
+#
+# OneNAND Flash Device Drivers
+#
+# CONFIG_MTD_ONENAND is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+
+#
+# Block devices
+#
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+# CONFIG_BLK_DEV_UMEM is not set
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=y
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_SX8 is not set
+# CONFIG_BLK_DEV_UB is not set
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_BLK_DEV_INITRD is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+# ATA/ATAPI/MFM/RLL support
+#
+# CONFIG_IDE is not set
+
+
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=y
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_CHR_DEV_OSST is not set
+CONFIG_BLK_DEV_SR=m
+# CONFIG_BLK_DEV_SR_VENDOR is not set
+CONFIG_CHR_DEV_SG=y
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+# CONFIG_SCSI_MULTI_LUN is not set
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+
+#
+# SCSI Transport Attributes
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_ATTRS is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
+# CONFIG_SCSI_3W_9XXX is not set
+# CONFIG_SCSI_ACARD is not set
+# CONFIG_SCSI_AACRAID is not set
+# CONFIG_SCSI_AIC7XXX is not set
+# CONFIG_SCSI_AIC7XXX_OLD is not set
+# CONFIG_SCSI_AIC79XX is not set
+# CONFIG_SCSI_DPT_I2O is not set
+# CONFIG_MEGARAID_NEWGEN is not set
+# CONFIG_MEGARAID_LEGACY is not set
+# CONFIG_MEGARAID_SAS is not set
+# CONFIG_SCSI_DMX3191D is not set
+# CONFIG_SCSI_FUTURE_DOMAIN is not set
+# CONFIG_SCSI_IPS is not set
+# CONFIG_SCSI_INITIO is not set
+# CONFIG_SCSI_INIA100 is not set
+# CONFIG_SCSI_SYM53C8XX_2 is not set
+# CONFIG_SCSI_IPR is not set
+# CONFIG_SCSI_QLOGIC_1280 is not set
+# CONFIG_SCSI_QLA_FC is not set
+# CONFIG_SCSI_LPFC is not set
+# CONFIG_SCSI_DC395x is not set
+# CONFIG_SCSI_DC390T is not set
+# CONFIG_SCSI_NSP32 is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+CONFIG_ATA=m
+# CONFIG_SATA_FORCE_SPINUP is not set
+# CONFIG_SATA_AHCI is not set
+CONFIG_SATA_SVW=m
+# CONFIG_SATA_SVW_NCQ is not set
+CONFIG_SATA_SVW_PORTS=2
+# CONFIG_ATA_PIIX is not set
+# CONFIG_SATA_MV is not set
+# CONFIG_SATA_NV is not set
+# CONFIG_PDC_ADMA is not set
+# CONFIG_SATA_QSTOR is not set
+# CONFIG_SATA_PROMISE is not set
+# CONFIG_SATA_SX4 is not set
+# CONFIG_SATA_SIL is not set
+# CONFIG_SATA_SIL24 is not set
+# CONFIG_SATA_SIS is not set
+# CONFIG_SATA_ULI is not set
+# CONFIG_SATA_VIA is not set
+# CONFIG_SATA_VITESSE is not set
+# CONFIG_PATA_ALI is not set
+# CONFIG_PATA_AMD is not set
+# CONFIG_PATA_ARTOP is not set
+# CONFIG_PATA_ATIIXP is not set
+# CONFIG_PATA_CMD64X is not set
+# CONFIG_PATA_CS5520 is not set
+# CONFIG_PATA_CS5530 is not set
+# CONFIG_PATA_CYPRESS is not set
+# CONFIG_PATA_EFAR is not set
+# CONFIG_ATA_GENERIC is not set
+# CONFIG_PATA_HPT366 is not set
+# CONFIG_PATA_HPT37X is not set
+# CONFIG_PATA_HPT3X2N is not set
+# CONFIG_PATA_HPT3X3 is not set
+# CONFIG_PATA_IT821X is not set
+# CONFIG_PATA_JMICRON is not set
+# CONFIG_PATA_TRIFLEX is not set
+# CONFIG_PATA_MPIIX is not set
+# CONFIG_PATA_OLDPIIX is not set
+# CONFIG_PATA_NETCELL is not set
+# CONFIG_PATA_NS87410 is not set
+# CONFIG_PATA_OPTI is not set
+# CONFIG_PATA_OPTIDMA is not set
+# CONFIG_PATA_PDC_OLD is not set
+# CONFIG_PATA_RADISYS is not set
+# CONFIG_PATA_RZ1000 is not set
+# CONFIG_PATA_SC1200 is not set
+# CONFIG_PATA_SERVERWORKS is not set
+# CONFIG_PATA_PDC2027X is not set
+# CONFIG_PATA_SIL680 is not set
+# CONFIG_PATA_SIS is not set
+# CONFIG_PATA_VIA is not set
+# CONFIG_PATA_WINBOND is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+# CONFIG_FUSION_SPI is not set
+# CONFIG_FUSION_FC is not set
+# CONFIG_FUSION_SAS is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+# CONFIG_IEEE1394 is not set
+
+#
+# I2O device support
+#
+# CONFIG_I2O is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+CONFIG_NETIF_DMA=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+CONFIG_BCMINTEMAC_7038=y
+CONFIG_BCMINTEMAC_NETLINK=y
+CONFIG_BCMINTEMAC_7038_STREAMING=y
+# CONFIG_BCMINTEMAC_7038_EXTMII is not set
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_CASSINI is not set
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_DM9000 is not set
+
+#
+# Tulip family network device support
+#
+# CONFIG_NET_TULIP is not set
+# CONFIG_HP100 is not set
+# CONFIG_NET_PCI is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+# CONFIG_ACENIC is not set
+# CONFIG_DL2K is not set
+# CONFIG_E1000 is not set
+# CONFIG_NS83820 is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
+# CONFIG_R8169 is not set
+# CONFIG_SIS190 is not set
+# CONFIG_SKGE is not set
+# CONFIG_SKY2 is not set
+# CONFIG_SK98LIN is not set
+# CONFIG_TIGON3 is not set
+# CONFIG_BNX2 is not set
+
+#
+# Ethernet (10000 Mbit)
+#
+# CONFIG_CHELSIO_T1 is not set
+# CONFIG_IXGB is not set
+# CONFIG_S2IO is not set
+# CONFIG_MYRI10GE is not set
+
+#
+# Token Ring devices
+#
+# CONFIG_TR is not set
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+# CONFIG_NET_FC is not set
+# CONFIG_SHAPER is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Telephony Support
+#
+# CONFIG_PHONE is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=m
+
+#
+## Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=m
+CONFIG_INPUT_MOUSEDEV_PSAUX=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+CONFIG_INPUT_EVDEV=m
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+CONFIG_KEYBOARD_ATKBD=m
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+CONFIG_INPUT_MOUSE=y
+CONFIG_MOUSE_PS2=m
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+# CONFIG_INPUT_MISC is not set
+
+
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+# CONFIG_VT is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+# CONFIG_SERIAL_8250_PCI is not set
+CONFIG_SERIAL_8250_NR_UARTS=0
+CONFIG_SERIAL_8250_RUNTIME_UARTS=0
+# CONFIG_SERIAL_8250_EXTENDED is not set
+#
+#
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_SERIAL_JSM is not set
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+CONFIG_HW_RANDOM=y
+# CONFIG_RTC is not set
+# CONFIG_GEN_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_DRM is not set
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+# CONFIG_TELCLOCK is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=m
+CONFIG_I2C_CHARDEV=m
+
+#
+# I2C Algorithms
+#
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_ALI1535 is not set
+# CONFIG_I2C_ALI1563 is not set
+# CONFIG_I2C_ALI15X3 is not set
+# CONFIG_I2C_AMD756 is not set
+# CONFIG_I2C_AMD8111 is not set
+# CONFIG_I2C_I801 is not set
+# CONFIG_I2C_I810 is not set
+# CONFIG_I2C_PIIX4 is not set
+# CONFIG_I2C_NFORCE2 is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_PROSAVAGE is not set
+# CONFIG_I2C_SAVAGE4 is not set
+# CONFIG_I2C_SIS5595 is not set
+# CONFIG_I2C_SIS630 is not set
+# CONFIG_I2C_SIS96X is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_VIA is not set
+# CONFIG_I2C_VIAPRO is not set
+# CONFIG_I2C_VOODOO3 is not set
+# CONFIG_I2C_PCA_ISA is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+#
+
+#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+
+#
+# Dallas's 1-wire bus
+#
+
+#
+# Hardware Monitoring support
+#
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID is not set
+# CONFIG_SENSORS_ABITUGURU is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# Misc devices
+#
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+CONFIG_FIRMWARE_EDID=y
+# CONFIG_FB is not set
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+# CONFIG_SND_VERBOSE_PROCFS is not set
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB_ARCH_HAS_EHCI=y
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_BANDWIDTH is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+CONFIG_USB_EHCI_HCD=y
+# CONFIG_USB_EHCI_SPLIT_ISO is not set
+# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
+# CONFIG_USB_EHCI_TT_NEWSCHED is not set
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+# CONFIG_USB_OHCI_BIG_ENDIAN is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_UHCI_HCD is not set
+# CONFIG_USB_SL811_HCD is not set
+CONFIG_USB_BRCM=y
+# CONFIG_USB_BRCM_PWR_CTL is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=m
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Input Devices
+#
+# CONFIG_USB_HID is not set
+# csh 20090706 CONFIG_USB_HID=m
+# CONFIG_USB_HIDINPUT=y
+
+
+#
+# USB HID Boot Protocol drivers
+#
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+CONFIG_USB_PEGASUS=y
+CONFIG_USB_RTL8150=y
+CONFIG_USB_USBNET=y
+CONFIG_USB_NET_AX8817X=y
+CONFIG_USB_NET_CDCETHER=y
+# CONFIG_USB_NET_GL620A is not set
+CONFIG_USB_NET_NET1080=y
+# CONFIG_USB_NET_PLUSB is not set
+# CONFIG_USB_NET_RNDIS_HOST is not set
+# CONFIG_USB_NET_CDC_SUBSET is not set
+CONFIG_USB_NET_ZAURUS=y
+CONFIG_USB_MON=y
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+CONFIG_USB_SERIAL=m
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_AIRPRIME is not set
+# CONFIG_USB_SERIAL_ARK3116 is not set
+CONFIG_USB_SERIAL_BELKIN=m
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_CP2101 is not set
+# CONFIG_USB_SERIAL_CYPRESS_M8 is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_FUNSOFT is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IPAQ is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
+# CONFIG_USB_SERIAL_GARMIN is not set
+# CONFIG_USB_SERIAL_IPW is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KLSI is not set
+# CONFIG_USB_SERIAL_KOBIL_SCT is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_NAVMAN is not set
+CONFIG_USB_SERIAL_PL2303=m
+# CONFIG_USB_SERIAL_HP4X is not set
+# CONFIG_USB_SERIAL_SAFE is not set
+# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
+# CONFIG_USB_SERIAL_TI is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OPTION is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_AUERSWALD is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGETKIT is not set
+# CONFIG_USB_PHIDGETSERVO is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_SISUSBVGA is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+
+#
+# MMC/SD Card support
+#
+# CONFIG_MMC is not set
+
+#
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
+# InfiniBand support
+#
+# CONFIG_INFINIBAND is not set
+
+#
+# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
+#
+
+#
+# Real Time Clock
+#
+# CONFIG_RTC_CLASS is not set
+
+#
+# DMA Engine support
+#
+# CONFIG_DMA_ENGINE is not set
+
+#
+# DMA Clients
+#
+
+#
+# DMA Devices
+#
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+# CONFIG_EXT3_FS_XATTR is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+CONFIG_REISERFS_FS=m
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+# CONFIG_REISERFS_FS_XATTR is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+CONFIG_XFS_FS=m
+CONFIG_XFS_EXPORT=y
+# CONFIG_XFS_RT is not set
+# CONFIG_XFS_QUOTA is not set
+# CONFIG_XFS_SECURITY is not set
+# CONFIG_XFS_POSIX_ACL is not set
+#
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+# CONFIG_DNOTIFY is not set
+# CONFIG_AUTOFS_FS is not set
+CONFIG_AUTOFS4_FS=y
+# CONFIG_FUSE_FS is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=m
+# CONFIG_JOLIET is not set
+# CONFIG_ZISOFS is not set
+CONFIG_UDF_FS=m
+CONFIG_UDF_NLS=y
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+CONFIG_NTFS_FS=m
+# CONFIG_NTFS_DEBUG is not set
+CONFIG_NTFS_RW=y
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_KCORE=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+CONFIG_YAFFS_FS=y
+CONFIG_YAFFS_YAFFS1=y
+# CONFIG_YAFFS_DOES_ECC is not set
+CONFIG_YAFFS_YAFFS2=y
+CONFIG_YAFFS_AUTO_YAFFS2=y
+# CONFIG_YAFFS_DISABLE_LAZY_LOAD is not set
+CONFIG_YAFFS_CHECKPOINT_RESERVED_BLOCKS=10
+# CONFIG_YAFFS_DISABLE_WIDE_TNODES is not set
+# CONFIG_YAFFS_ALWAYS_CHECK_CHUNK_ERASED is not set
+CONFIG_YAFFS_SHORT_NAMES_IN_RAM=y
+#
+# CONFIG_JFFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+CONFIG_JFFS2_SUMMARY=y
+# CONFIG_JFFS2_FS_XATTR is not set
+CONFIG_JFFS2_COMPRESSION_OPTIONS=y
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_JFFS2_CMODE_NONE is not set
+CONFIG_JFFS2_CMODE_PRIORITY=y
+# CONFIG_JFFS2_CMODE_SIZE is not set
+CONFIG_CRAMFS=y
+CONFIG_SQUASHFS=y
+CONFIG_SQUASHFS_EMBEDDED=y
+CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
+CONFIG_SQUASHFS_VMALLOC=y
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+CONFIG_NFSD=m
+CONFIG_NFSD_V3=y
+# CONFIG_NFSD_V3_ACL is not set
+# CONFIG_NFSD_V4 is not set
+# CONFIG_NFSD_TCP is not set
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+# CONFIG_SMB_FS is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
+# CONFIG_CIFS_WEAK_PW_HASH is not set
+# CONFIG_CIFS_DEBUG2 is not set
+#
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+# CONFIG_9P_FS is not set
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+
+#
+# Native Language Support
+#
+CONFIG_NLS=m
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=m
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=m
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_UTF8 is not set
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+# CONFIG_PRINTK_TIME is not set
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_KERNEL is not set
+CONFIG_LOG_BUF_SHIFT=15
+# CONFIG_DEBUG_FS is not set
+# CONFIG_WANT_EXTRA_DEBUG_INFORMATION is not set
+CONFIG_CROSSCOMPILE=y
+CONFIG_CMDLINE="root=/dev/sda1 rw console=ttyS0,115200n8"
+CONFIG_SYS_SUPPORTS_KGDB=y
+# CONFIG_MIPS_BRCM_SIM is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+# CONFIG_CRYPTO is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+# CONFIG_CRC_CCITT is not set
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
diff --git a/recipes/linux/linux-bm750/linux_bm750-nand4.patch b/recipes/linux/linux-bm750/linux_bm750-nand4.patch
new file mode 100644 (file)
index 0000000..f25b711
--- /dev/null
@@ -0,0 +1,58 @@
+Index: drivers/mtd/brcmnand/bcm7xxx-nand.c
+===================================================================
+--- drivers/mtd/brcmnand/bcm7xxx-nand.c        (revision 1)
++++ drivers/mtd/brcmnand/bcm7xxx-nand.c        (working copy)
+@@ -149,20 +149,33 @@
+ static struct mtd_partition bcm7XXX_no_xor_partition[] = 
+ {
+-      /* XOR disabled: Everything is shifted down 4MB */
+-      { name: N_ROOTFS,       offset: 0x00400000,                     size: DEFAULT_ROOTFS_SIZE - (DEFAULT_BBT0_SIZE_MB <<20) },      // Less 1MB for BBT
+-      { name: N_ALL,          offset: 0,                                      size: DEFAULT_ROOTFS_SIZE - (DEFAULT_BBT0_SIZE_MB <<20) },
+-      { name: N_KERNEL,       offset: 0x00b00000,                     size: 4<<20 }, 
+-      /* BBT0 1MB not mountable by anyone */
+-
+-      /* Following partitions only present on flash with size > 512MB */
+-      { name: N_DATA,         offset: 0x20000000,                     size: 0 },
+-      /* BBT1 4MB not mountable by anyone */
+-      {name: NULL,            offset: 0,                                      size: 0}        /* End marker */
++      { name: N_ROOTFS,       offset: 0,                                      size: DEFAULT_ROOTFS_SIZE },    
++#ifdef CONFIG_MTD_ECM_PARTITION
++      { name: N_AVAIL1,       offset: DEFAULT_ROOTFS_SIZE,    size: DEFAULT_AVAIL1_SIZE },
++      { name: N_OCAP,         offset: DEFAULT_ROOTFS_SIZE+DEFAULT_AVAIL1_SIZE,        size: DEFAULT_OCAP_SIZE },
++#endif
++#ifdef USE_SPLASH
++      { name: N_KERNEL,       offset: 0x00200000,                     size: 4<<20 },
++      { name: "boot",         offset: 0x00600000,                     size: 4<<20 },
++      { name: "bootimg",      offset: 0x00A00000,                     size: 2<<20 },
++#else
++      { name: N_KERNEL,       offset: 0x00600000,                     size: 2<<20 },
++      { name: "boot",         offset: 0x07800000,                     size: 4<<20 },
++#endif
++      { name: N_CFE,          offset: 0x07C00000,                     size: 1<<20 },
++      { name: "mac",          offset: 0x07D00000,                     size: 1<<19 },
++      { name: "env",          offset: 0x07D80000,                     size: 1<<19 },
++      { name: N_NVM,          offset: 0x07E00000,                     size: 1<<20 },
++      /* BBT 1MB not mountable by anyone */
++      { name: N_DATA,         offset: 0x20000000,             size: 0 },
++/* Add 1 extra place-holder partition for splash, and a safety guard element */
++      {name: NULL, offset: 0, size: 0},
++      {name: NULL, offset: 0, size: 0}
+ };
+ static struct mtd_partition bcm7XXX_new_partition[] = 
+ {
++
+       { name: N_ROOTFS,       offset: 0,                                      size: DEFAULT_ROOTFS_SIZE },    
+       { name: N_ALL,          offset: 0x0,                                    size: DEFAULT_ROOTFS_SIZE - (DEFAULT_BBT0_SIZE_MB <<20) },
+       { name: N_KERNEL,       offset: 0x00800000,                     size: 4<<20 },
+@@ -267,7 +280,8 @@
+               if (device_size(mtd) <= (512ULL <<20)) {
+                       bcm7XXX_nand_parts[ALL_PART].size = 
+                               device_size(mtd) - (uint64_t) (DEFAULT_BBT0_SIZE_MB<<20);
+-                      *numParts = 3;
++//                    *numParts = 3;
++                      *numParts = 7;
+               } 
+               else {
+                       bcm7XXX_nand_parts[ALL_PART].size = ((512-DEFAULT_BBT1_SIZE_MB)<<20);
diff --git a/recipes/linux/linux-bm750/linux_bm750_arch_makefile.patch b/recipes/linux/linux-bm750/linux_bm750_arch_makefile.patch
new file mode 100755 (executable)
index 0000000..76fec3f
--- /dev/null
@@ -0,0 +1,24 @@
+Index: arch/mips/Makefile
+===================================================================
+--- arch/mips/Makefile (revision 1)
++++ arch/mips/Makefile (working copy)
+@@ -18,15 +18,15 @@
+ # Select the object file format to substitute into the linker script.
+ #
+ ifdef CONFIG_CPU_LITTLE_ENDIAN
+-32bit-tool-prefix     = mipsel-linux-
+-64bit-tool-prefix     = mips64el-linux-
++32bit-tool-prefix     = mipsel-oe-linux-
++64bit-tool-prefix     = mips64el-oe-linux-
+ 32bit-bfd             = elf32-tradlittlemips
+ 64bit-bfd             = elf64-tradlittlemips
+ 32bit-emul            = elf32ltsmip
+ 64bit-emul            = elf64ltsmip
+ else
+-32bit-tool-prefix     = mips-linux-
+-64bit-tool-prefix     = mips64-linux-
++32bit-tool-prefix     = mips-oe-linux-
++64bit-tool-prefix     = mips64-oe-linux-
+ 32bit-bfd             = elf32-tradbigmips
+ 64bit-bfd             = elf64-tradbigmips
+ 32bit-emul            = elf32btsmip
diff --git a/recipes/linux/linux-bm750/linux_bm750_dvb-core_fe.patch b/recipes/linux/linux-bm750/linux_bm750_dvb-core_fe.patch
new file mode 100644 (file)
index 0000000..4173c8f
--- /dev/null
@@ -0,0 +1,426 @@
+Index: drivers/media/dvb/dvb-core/dvb_frontend.h
+===================================================================
+--- drivers/media/dvb/dvb-core/dvb_frontend.h  (revision 1)
++++ drivers/media/dvb/dvb-core/dvb_frontend.h  (working copy)
+@@ -41,14 +41,40 @@
+ #include "dvbdev.h"
+ struct dvb_frontend_tune_settings {
+-      int min_delay_ms;
+-      int step_size;
+-      int max_drift;
+-      struct dvb_frontend_parameters parameters;
++        int min_delay_ms;
++        int step_size;
++        int max_drift;
++        struct dvb_frontend_parameters parameters;
+ };
+ struct dvb_frontend;
++//NOTE : LINUX_2_6_31 related stuffs are added to make back-porting of  frontend driver easier.
++
++#define LINUX_2_6_31          1
++
++#ifdef LINUX_2_6_31   
++
++#define FE_TUNE_MODE_ONESHOT 0x01
++#define FE_SET_FRONTEND_TUNE_MODE  _IO('o', 81) /* unsigned int */
++
++struct delayed_work {
++      struct work_struct work;
++      struct timer_list timer;
++};
++
++#define DVB_MAX_ADAPTERS 8
++
++#define DVB_UNSET (-1)
++
++#define DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr) \
++      static short adapter_nr[] = \
++              {[0 ... (DVB_MAX_ADAPTERS - 1)] = DVB_UNSET }; \
++      module_param_array(adapter_nr, short, NULL, 0444); \
++      MODULE_PARM_DESC(adapter_nr, "DVB adapter numbers")
++
++
++
+ struct dvb_tuner_info {
+       char name[128];
+@@ -61,6 +87,132 @@
+       u32 bandwidth_step;
+ };
++struct analog_parameters {
++      unsigned int frequency;
++      unsigned int mode;
++      unsigned int audmode;
++      u64 std;
++};
++
++enum dvbfe_modcod {
++      DVBFE_MODCOD_DUMMY_PLFRAME      = 0,
++      DVBFE_MODCOD_QPSK_1_4,
++      DVBFE_MODCOD_QPSK_1_3,
++      DVBFE_MODCOD_QPSK_2_5,
++      DVBFE_MODCOD_QPSK_1_2,
++      DVBFE_MODCOD_QPSK_3_5,
++      DVBFE_MODCOD_QPSK_2_3,
++      DVBFE_MODCOD_QPSK_3_4,
++      DVBFE_MODCOD_QPSK_4_5,
++      DVBFE_MODCOD_QPSK_5_6,
++      DVBFE_MODCOD_QPSK_8_9,
++      DVBFE_MODCOD_QPSK_9_10,
++      DVBFE_MODCOD_8PSK_3_5,
++      DVBFE_MODCOD_8PSK_2_3,
++      DVBFE_MODCOD_8PSK_3_4,
++      DVBFE_MODCOD_8PSK_5_6,
++      DVBFE_MODCOD_8PSK_8_9,
++      DVBFE_MODCOD_8PSK_9_10,
++      DVBFE_MODCOD_16APSK_2_3,
++      DVBFE_MODCOD_16APSK_3_4,
++      DVBFE_MODCOD_16APSK_4_5,
++      DVBFE_MODCOD_16APSK_5_6,
++      DVBFE_MODCOD_16APSK_8_9,
++      DVBFE_MODCOD_16APSK_9_10,
++      DVBFE_MODCOD_32APSK_3_4,
++      DVBFE_MODCOD_32APSK_4_5,
++      DVBFE_MODCOD_32APSK_5_6,
++      DVBFE_MODCOD_32APSK_8_9,
++      DVBFE_MODCOD_32APSK_9_10,
++      DVBFE_MODCOD_RESERVED_1,
++      DVBFE_MODCOD_BPSK_1_3,
++      DVBFE_MODCOD_BPSK_1_4,
++      DVBFE_MODCOD_RESERVED_2
++};
++
++enum tuner_param {
++      DVBFE_TUNER_FREQUENCY           = (1 <<  0),
++      DVBFE_TUNER_TUNERSTEP           = (1 <<  1),
++      DVBFE_TUNER_IFFREQ              = (1 <<  2),
++      DVBFE_TUNER_BANDWIDTH           = (1 <<  3),
++      DVBFE_TUNER_REFCLOCK            = (1 <<  4),
++      DVBFE_TUNER_IQSENSE             = (1 <<  5),
++      DVBFE_TUNER_DUMMY               = (1 << 31)
++};
++
++/*
++ * ALGO_HW: (Hardware Algorithm)
++ * ----------------------------------------------------------------
++ * Devices that support this algorithm do everything in hardware
++ * and no software support is needed to handle them.
++ * Requesting these devices to LOCK is the only thing required,
++ * device is supposed to do everything in the hardware.
++ *
++ * ALGO_SW: (Software Algorithm)
++ * ----------------------------------------------------------------
++ * These are dumb devices, that require software to do everything
++ *
++ * ALGO_CUSTOM: (Customizable Agorithm)
++ * ----------------------------------------------------------------
++ * Devices having this algorithm can be customized to have specific
++ * algorithms in the frontend driver, rather than simply doing a
++ * software zig-zag. In this case the zigzag maybe hardware assisted
++ * or it maybe completely done in hardware. In all cases, usage of
++ * this algorithm, in conjunction with the search and track
++ * callbacks, utilizes the driver specific algorithm.
++ *
++ * ALGO_RECOVERY: (Recovery Algorithm)
++ * ----------------------------------------------------------------
++ * These devices have AUTO recovery capabilities from LOCK failure
++ */
++enum dvbfe_algo {
++      DVBFE_ALGO_HW                   = (1 <<  0),
++      DVBFE_ALGO_SW                   = (1 <<  1),
++      DVBFE_ALGO_CUSTOM               = (1 <<  2),
++      DVBFE_ALGO_RECOVERY             = (1 << 31)
++};
++
++struct tuner_state {
++      u32 frequency;
++      u32 tunerstep;
++      u32 ifreq;
++      u32 bandwidth;
++      u32 iqsense;
++      u32 refclock;
++};
++
++/*
++ * search callback possible return status
++ *
++ * DVBFE_ALGO_SEARCH_SUCCESS
++ * The frontend search algorithm completed and returned succesfully
++ *
++ * DVBFE_ALGO_SEARCH_ASLEEP
++ * The frontend search algorithm is sleeping
++ *
++ * DVBFE_ALGO_SEARCH_FAILED
++ * The frontend search for a signal failed
++ *
++ * DVBFE_ALGO_SEARCH_INVALID
++ * The frontend search algorith was probably supplied with invalid
++ * parameters and the search is an invalid one
++ *
++ * DVBFE_ALGO_SEARCH_ERROR
++ * The frontend search algorithm failed due to some error
++ *
++ * DVBFE_ALGO_SEARCH_AGAIN
++ * The frontend search algorithm was requested to search again
++ */
++enum dvbfe_search {
++      DVBFE_ALGO_SEARCH_SUCCESS       = (1 <<  0),
++      DVBFE_ALGO_SEARCH_ASLEEP        = (1 <<  1),
++      DVBFE_ALGO_SEARCH_FAILED        = (1 <<  2),
++      DVBFE_ALGO_SEARCH_INVALID       = (1 <<  3),
++      DVBFE_ALGO_SEARCH_AGAIN         = (1 <<  4),
++      DVBFE_ALGO_SEARCH_ERROR         = (1 << 31),
++};
++
++
+ struct dvb_tuner_ops {
+       struct dvb_tuner_info info;
+@@ -71,22 +223,73 @@
+       /** This is for simple PLLs - set all parameters in one go. */
+       int (*set_params)(struct dvb_frontend *fe, struct dvb_frontend_parameters *p);
++      int (*set_analog_params)(struct dvb_frontend *fe, struct analog_parameters *p);
+       /** This is support for demods like the mt352 - fills out the supplied buffer with what to write. */
+       int (*calc_regs)(struct dvb_frontend *fe, struct dvb_frontend_parameters *p, u8 *buf, int buf_len);
++      /** This is to allow setting tuner-specific configs */
++      int (*set_config)(struct dvb_frontend *fe, void *priv_cfg);
++
+       int (*get_frequency)(struct dvb_frontend *fe, u32 *frequency);
+       int (*get_bandwidth)(struct dvb_frontend *fe, u32 *bandwidth);
+ #define TUNER_STATUS_LOCKED 1
++#define TUNER_STATUS_STEREO 2
+       int (*get_status)(struct dvb_frontend *fe, u32 *status);
++      int (*get_rf_strength)(struct dvb_frontend *fe, u16 *strength);
+       /** These are provided seperately from set_params in order to facilitate silicon
+        * tuners which require sophisticated tuning loops, controlling each parameter seperately. */
+       int (*set_frequency)(struct dvb_frontend *fe, u32 frequency);
+       int (*set_bandwidth)(struct dvb_frontend *fe, u32 bandwidth);
++
++      /*
++       * These are provided seperately from set_params in order to facilitate silicon
++       * tuners which require sophisticated tuning loops, controlling each parameter seperately.
++       */
++      int (*set_state)(struct dvb_frontend *fe, enum tuner_param param, struct tuner_state *state);
++      int (*get_state)(struct dvb_frontend *fe, enum tuner_param param, struct tuner_state *state);
+ };
++struct analog_demod_info {
++      char *name;
++};
++struct analog_demod_ops {
++
++      struct analog_demod_info info;
++
++      void (*set_params)(struct dvb_frontend *fe,
++                         struct analog_parameters *params);
++      int  (*has_signal)(struct dvb_frontend *fe);
++      int  (*is_stereo)(struct dvb_frontend *fe);
++      int  (*get_afc)(struct dvb_frontend *fe);
++      void (*tuner_status)(struct dvb_frontend *fe);
++      void (*standby)(struct dvb_frontend *fe);
++      void (*release)(struct dvb_frontend *fe);
++      int  (*i2c_gate_ctrl)(struct dvb_frontend *fe, int enable);
++
++      /** This is to allow setting tuner-specific configuration */
++      int (*set_config)(struct dvb_frontend *fe, void *priv_cfg);
++};
++struct dtv_property {
++        __u32 cmd;
++        __u32 reserved[3];
++        union {
++                __u32 data;
++                struct {
++                        __u8 data[32];
++                        __u32 len;
++                        __u32 reserved1[3];
++                        void *reserved2;
++                } buffer;
++        } u;
++        int result;
++} __attribute__ ((packed));
++
++
++#endif
++
+ struct dvb_frontend_ops {
+       struct dvb_frontend_info info;
+@@ -95,7 +298,7 @@
+       int (*init)(struct dvb_frontend* fe);
+       int (*sleep)(struct dvb_frontend* fe);
+-
++#ifdef LINUX_2_6_31   
+       /* if this is set, it overrides the default swzigzag */
+       int (*tune)(struct dvb_frontend* fe,
+                   struct dvb_frontend_parameters* params,
+@@ -106,11 +309,11 @@
+       int (*get_frontend_algo)(struct dvb_frontend *fe);
+       /* these two are only used for the swzigzag code */
++#endif
+       int (*set_frontend)(struct dvb_frontend* fe, struct dvb_frontend_parameters* params);
++      int (*get_frontend)(struct dvb_frontend* fe, struct dvb_frontend_parameters* params);
+       int (*get_tune_settings)(struct dvb_frontend* fe, struct dvb_frontend_tune_settings* settings);
+-      int (*get_frontend)(struct dvb_frontend* fe, struct dvb_frontend_parameters* params);
+-
+       int (*read_status)(struct dvb_frontend* fe, fe_status_t* status);
+       int (*read_ber)(struct dvb_frontend* fe, u32* ber);
+       int (*read_signal_strength)(struct dvb_frontend* fe, u16* strength);
+@@ -123,11 +326,27 @@
+       int (*diseqc_send_burst)(struct dvb_frontend* fe, fe_sec_mini_cmd_t minicmd);
+       int (*set_tone)(struct dvb_frontend* fe, fe_sec_tone_mode_t tone);
+       int (*set_voltage)(struct dvb_frontend* fe, fe_sec_voltage_t voltage);
+-      int (*enable_high_lnb_voltage)(struct dvb_frontend* fe, long arg);
+-      int (*dishnetwork_send_legacy_command)(struct dvb_frontend* fe, unsigned long cmd);
+-      int (*i2c_gate_ctrl)(struct dvb_frontend* fe, int enable);
++      int (*enable_high_lnb_voltage)(struct dvb_frontend* fe, int arg);
++      int (*dishnetwork_send_legacy_command)(struct dvb_frontend* fe, unsigned int cmd);
+-      struct dvb_tuner_ops tuner_ops;
++#ifdef LINUX_2_6_31   
++        int (*i2c_gate_ctrl)(struct dvb_frontend* fe, int enable);
++        int (*ts_bus_ctrl)(struct dvb_frontend* fe, int acquire);
++
++        /* These callbacks are for devices that implement their own
++         * tuning algorithms, rather than a simple swzigzag
++         */
++        enum dvbfe_search (*search)(struct dvb_frontend *fe, struct dvb_frontend_parameters *p);
++        int (*track)(struct dvb_frontend *fe, struct dvb_frontend_parameters *p);
++
++        struct dvb_tuner_ops tuner_ops;
++        struct analog_demod_ops analog_ops;
++
++        int (*set_property)(struct dvb_frontend* fe, struct dtv_property* tvp);
++        int (*get_property)(struct dvb_frontend* fe, struct dtv_property* tvp);
++#endif
++      
++      int (*set_sw_loopthrough)(struct dvb_frontend* fe, int* arg);
+ };
+ #define MAX_EVENT 8
+@@ -141,13 +360,102 @@
+       struct semaphore          sem;
+ };
++
++#ifdef LINUX_2_6_31   
++// 2.6.31
++typedef enum fe_pilot {
++      PILOT_ON,
++      PILOT_OFF,
++      PILOT_AUTO,
++} fe_pilot_t;
++
++typedef enum fe_rolloff {
++      ROLLOFF_35, /* Implied value in DVB-S, default for DVB-S2 */
++      ROLLOFF_20,
++      ROLLOFF_25,
++      ROLLOFF_AUTO,
++} fe_rolloff_t;
++
++typedef enum fe_delivery_system {
++      SYS_UNDEFINED,
++      SYS_DVBC_ANNEX_AC,
++      SYS_DVBC_ANNEX_B,
++      SYS_DVBT,
++      SYS_DSS,
++      SYS_DVBS,
++      SYS_DVBS2,
++      SYS_DVBH,
++      SYS_ISDBT,
++      SYS_ISDBS,
++      SYS_ISDBC,
++      SYS_ATSC,
++      SYS_ATSCMH,
++      SYS_DMBTH,
++      SYS_CMMB,
++      SYS_DAB,
++} fe_delivery_system_t;
++
++struct dtv_frontend_properties {
++
++      /* Cache State */
++      u32                     state;
++
++      u32                     frequency;
++      fe_modulation_t         modulation;
++
++      fe_sec_voltage_t        voltage;
++      fe_sec_tone_mode_t      sectone;
++      fe_spectral_inversion_t inversion;
++      fe_code_rate_t          fec_inner;
++      fe_transmit_mode_t      transmission_mode;
++      u32                     bandwidth_hz;   /* 0 = AUTO */
++      fe_guard_interval_t     guard_interval;
++      fe_hierarchy_t          hierarchy;
++      u32                     symbol_rate;
++      fe_code_rate_t          code_rate_HP;
++      fe_code_rate_t          code_rate_LP;
++
++      fe_pilot_t              pilot;
++      fe_rolloff_t            rolloff;
++
++      fe_delivery_system_t    delivery_system;
++};
++
++
++
++#ifndef false
++#define false 0
++#endif
++
++#ifndef true
++#define true  1
++#endif
++
++#define       KERN_CONT       "<c>"
++
++#endif
++
++
+ struct dvb_frontend {
++#ifndef LINUX_2_6_31  
++      struct dvb_frontend_ops* ops;
++      struct dvb_adapter *dvb;
++      void* demodulator_priv;
++      void* frontend_priv;
++#else
+       struct dvb_frontend_ops ops;
+       struct dvb_adapter *dvb;
+       void* demodulator_priv;
+-      void* tuner_priv;
+-      void* frontend_priv;
+-      void* misc_priv;
++      void *tuner_priv;
++      void *frontend_priv;
++      void *sec_priv;
++      void *analog_demod_priv;
++      struct dtv_frontend_properties dtv_property_cache;
++#define DVB_FRONTEND_COMPONENT_TUNER 0
++      int (*callback)(void *adapter_priv, int component, int cmd, int arg);
++      int id;
++
++#endif
+ };
+ extern int dvb_register_frontend(struct dvb_adapter* dvb,
+@@ -155,8 +463,6 @@
+ extern int dvb_unregister_frontend(struct dvb_frontend* fe);
+-extern void dvb_frontend_reinitialise(struct dvb_frontend *fe);
+-
+ extern void dvb_frontend_sleep_until(struct timeval *waketime, u32 add_usec);
+ extern s32 timeval_usec_diff(struct timeval lasttime, struct timeval curtime);
diff --git a/recipes/linux/linux-bm750/linux_bm750_kobject.patch b/recipes/linux/linux-bm750/linux_bm750_kobject.patch
new file mode 100644 (file)
index 0000000..751e7c7
--- /dev/null
@@ -0,0 +1,12 @@
+Index: lib/kobject.c
+===================================================================
+--- lib/kobject.c      (revision 1)
++++ lib/kobject.c      (working copy)
+@@ -581,6 +581,7 @@
+ EXPORT_SYMBOL(kobject_init);
+ EXPORT_SYMBOL(kobject_register);
+ EXPORT_SYMBOL(kobject_unregister);
++EXPORT_SYMBOL(kobject_get_path);
+ EXPORT_SYMBOL(kobject_get);
+ EXPORT_SYMBOL(kobject_put);
+ EXPORT_SYMBOL(kobject_add);
diff --git a/recipes/linux/linux-bm750/linux_bm750_nand.patch b/recipes/linux/linux-bm750/linux_bm750_nand.patch
new file mode 100644 (file)
index 0000000..df727c6
--- /dev/null
@@ -0,0 +1,5786 @@
+Index: drivers/mtd/brcmnand/bcm7xxx-nand.c
+===================================================================
+--- drivers/mtd/brcmnand/bcm7xxx-nand.c        (revision 1)
++++ drivers/mtd/brcmnand/bcm7xxx-nand.c        (working copy)
+@@ -48,6 +48,8 @@
+ #define PRINTK(...)
+ //#define PRINTK printk
++//
++//#define USE_SPLASH
+ #define DRIVER_NAME   "bcm7xxx-nand"
+ #define DRIVER_INFO "Broadcom STB NAND controller"
+@@ -74,31 +76,25 @@
+  *    start of flash  1f7f_ffff               flashSize-8MB   rootfs          Linux File System
+  */
+ #define SMALLEST_FLASH_SIZE   (16<<20)
++#if 0 /* csh */
+ #define DEFAULT_RESERVED_SIZE         (8<<20) 
+-#define DEFAULT_SPLASH_SIZE   (1<<20)
++#else
++/*#define DEFAULT_RESERVED_SIZE       (6<<20) */
++/* csh add boot partition 20090828 */
++/* csh splash */
++#ifdef USE_SPLASH
++#define DEFAULT_RESERVED_SIZE         (12<<20)
++#else
++#define DEFAULT_RESERVED_SIZE         (10<<20)
++#endif
++#endif
++#define DEFAULT_SPLASH_SIZE   (2<<20)
+ #define DEFAULT_BBT0_SIZE_MB  (1)
+ #define DEFAULT_BBT1_SIZE_MB  (4)
+ #define ROOTFS_PART   (0)
+-#if defined( CONFIG_MTD_BRCMNAND_DISABLE_XOR )
+-/* Implies new partition scheme, starting with 7420
+-      cfe: 0-4MB (not mapped)
+-      mtd0: rootfs: Starts at 4MB offset
+-      mtd1: all flash less BBT0 (1MB) for flash <= 512MB
+-      mtd2: Kernel (4MB)
+-      mtd3: Data, for flash>512MB, from 512MB up to flash - BBT1 (4MB)
+- */
+-
+-#define ALL_PART                              (1)
+-#define KERNEL_PART                   (2)
+-#define DATA_PART                     (3)
+-#define AVAIL1_PART                   (-1)
+-
+-#define DEFAULT_ECM_SIZE      (0)
+-#define DEFAULT_AVAIL1_SIZE   (0)
+-
+-#elif defined( CONFIG_MTD_NEW_PARTITION )
++#ifdef CONFIG_MTD_NEW_PARTITION
+ /* New partition scheme, starting with 7420
+       mtd0: rootfs
+       mtd1: all flash less BBT0 (1MB) for flash <= 512MB
+@@ -114,26 +110,20 @@
+ #define DEFAULT_ECM_SIZE      (0)
+ #define DEFAULT_AVAIL1_SIZE   (0)
+-#else
+-  #if defined( CONFIG_MTD_ECM_PARTITION )
++#elif defined( CONFIG_MTD_ECM_PARTITION )
+ #define DEFAULT_OCAP_SIZE     (6<<20)
+ #define DEFAULT_AVAIL1_SIZE (32<<20)
+ #define DEFAULT_ECM_SIZE (DEFAULT_OCAP_SIZE+DEFAULT_AVAIL1_SIZE)
+ #define AVAIL1_PART   (1)
+ #define OCAP_PART     (2)
+-  #else
++#else
+ #define DEFAULT_ECM_SIZE      (0)
+ #define DEFAULT_OCAP_SIZE     (0)
+ #define DEFAULT_AVAIL1_SIZE   (0)
+ #define AVAIL1_PART   (-1)
+ #define OCAP_PART     (-1)
+-  #endif // if ECM
+-
+-  /* Definitions for NOR+NAND */
+-#define ALL_PART                              (1)
+-#define KERNEL_PART                   (2)
+-#define DATA_PART                     (3)
+ #endif
++
+ #define DEFAULT_ROOTFS_SIZE (SMALLEST_FLASH_SIZE - DEFAULT_RESERVED_SIZE - DEFAULT_ECM_SIZE)
+ #define N_ROOTFS      "rootfs"
+@@ -147,22 +137,9 @@
+ #define N_ALL         "all"
+-static struct mtd_partition bcm7XXX_no_xor_partition[] = 
++static struct mtd_partition bcm7XXX_nand_parts[] = 
++#ifdef CONFIG_MTD_NEW_PARTITION
+ {
+-      /* XOR disabled: Everything is shifted down 4MB */
+-      { name: N_ROOTFS,       offset: 0x00400000,                     size: DEFAULT_ROOTFS_SIZE - (DEFAULT_BBT0_SIZE_MB <<20) },      // Less 1MB for BBT
+-      { name: N_ALL,          offset: 0,                                      size: DEFAULT_ROOTFS_SIZE - (DEFAULT_BBT0_SIZE_MB <<20) },
+-      { name: N_KERNEL,       offset: 0x00b00000,                     size: 4<<20 }, 
+-      /* BBT0 1MB not mountable by anyone */
+-
+-      /* Following partitions only present on flash with size > 512MB */
+-      { name: N_DATA,         offset: 0x20000000,                     size: 0 },
+-      /* BBT1 4MB not mountable by anyone */
+-      {name: NULL,            offset: 0,                                      size: 0}        /* End marker */
+-};
+-
+-static struct mtd_partition bcm7XXX_new_partition[] = 
+-{
+       { name: N_ROOTFS,       offset: 0,                                      size: DEFAULT_ROOTFS_SIZE },    
+       { name: N_ALL,          offset: 0x0,                                    size: DEFAULT_ROOTFS_SIZE - (DEFAULT_BBT0_SIZE_MB <<20) },
+       { name: N_KERNEL,       offset: 0x00800000,                     size: 4<<20 },
+@@ -174,8 +151,9 @@
+       {name: NULL,            offset: 0,                                      size: 0}        /* End marker */
+ };
+-static struct mtd_partition bcm7XXX_old_partition[] = 
++#else
+ {
++#if 0 /* csh */
+       { name: N_ROOTFS,       offset: 0,                                      size: DEFAULT_ROOTFS_SIZE },    
+ #ifdef CONFIG_MTD_ECM_PARTITION
+       { name: N_AVAIL1,       offset: DEFAULT_ROOTFS_SIZE,    size: DEFAULT_AVAIL1_SIZE },
+@@ -189,18 +167,49 @@
+ /* Add 1 extra place-holder partition for splash, and a safety guard element */
+       {name: NULL, offset: 0, size: 0},
+       {name: NULL, offset: 0, size: 0}
+-};
+-
+-#if defined( CONFIG_MTD_BRCMNAND_DISABLE_XOR )
+-static struct mtd_partition* bcm7XXX_nand_parts = bcm7XXX_no_xor_partition;
+-
+-#elif defined( CONFIG_MTD_NEW_PARTITION )
+-static struct mtd_partition* bcm7XXX_nand_parts = bcm7XXX_new_partition;
+-
+ #else
+-static struct mtd_partition* bcm7XXX_nand_parts = bcm7XXX_old_partition;
++#if 0
++#define ROOTFS_PART     (0)
++        { name: "rootfs",               offset: 0,              size: DEFAULT_ROOTFS_SIZE },   /* rootfs is total nand size - 6 M Bytes. referr to cfe. bcm97335_devs.c */ 
++        { name: "kernel",       offset: 0x00A00000,             size: 2<<20 },
++        { name: "cfe",          offset: 0x00C00000,             size: 2<<20 },
++        { name: "nvm",          offset: 0x00E00000,             size: 2<<20 },
++        /* BBT 1MB not mountable by anyone */
++        { name: "data",         offset: 0x20000000,             size: 0 },
++/* Add 1 extra place-holder partition for splash, and a safety guard element */
++        {name: NULL, offset: 0, size: 0}, 
++        {name: NULL, offset: 0, size: 0}
++#else
++/* csh add boot partition 20090828 */
++#define ROOTFS_PART     (0)
++        { name: "rootfs",               offset: 0,              size: DEFAULT_ROOTFS_SIZE },   /* rootfs is total nand size - 6 M Bytes. referr to cfe. bcm97335_devs.c */ 
++#ifndef USE_SPLASH /* csh splash */
++        { name: "kernel",       offset: 0x00600000,             size: 2<<20 },        
++        { name: "boot",       offset: 0x00800000,             size: 4<<20 },
++#else
++        { name: "kernel",       offset: 0x00500000,             size: 2<<20 },        
++        { name: "boot",       offset: 0x00700000,             size: 4<<20 },
++        { name: "bootimg",       offset: 0x00B00000,             size: DEFAULT_SPLASH_SIZE },
+ #endif
++#if 0 /*12 09 */
++        { name: "cfe",          offset: 0x00C00000,             size: 2<<20 },
++#else
++        { name: "cfe",          offset: 0x00C00000,             size: 1<<20 },
++        { name: "mac",          offset: 0x00D00000,             size: 1<<19 },
++        { name: "env",          offset: 0x00D80000,             size: 1<<19 },
++#endif
++        { name: "nvm",          offset: 0x00E00000,             size: 1<<20 }, //csh change to 1 20091207
++        /* BBT 1MB not mountable by anyone */
++        { name: "data",         offset: 0x20000000,             size: 0 },
++/* Add 1 extra place-holder partition for splash, and a safety guard element */
++        {name: NULL, offset: 0, size: 0}, 
++        {name: NULL, offset: 0, size: 0}
++#endif
++#endif
++};
++#endif
++
+ struct brcmnand_info {
+       struct mtd_info         mtd;
+       struct mtd_partition*   parts;
+@@ -253,41 +262,17 @@
+       unsigned int ocap_size = DEFAULT_OCAP_SIZE;
+ #endif
+       unsigned int avail1_size = DEFAULT_AVAIL1_SIZE;
+-      int oldNumParts = ARRAY_SIZE(bcm7XXX_old_partition);
+-//printk("========================> %s\n", __FUNCTION__);
+-
+-
+-      /* 
+-       * Is XOR disabled? if so use the new partition.
+-       */
+-      if (nandinfo->brcmnand.xor_disable) {
+-              bcm7XXX_nand_parts = bcm7XXX_no_xor_partition;
+-
+-              if (device_size(mtd) <= (512ULL <<20)) {
+-                      bcm7XXX_nand_parts[ALL_PART].size = 
+-                              device_size(mtd) - (uint64_t) (DEFAULT_BBT0_SIZE_MB<<20);
+-                      *numParts = 3;
+-              } 
+-              else {
+-                      bcm7XXX_nand_parts[ALL_PART].size = ((512-DEFAULT_BBT1_SIZE_MB)<<20);
+-                      *numParts = 4;
+-              }
+-              for (i=0; i<*numParts;i++) {
+-                      bcm7XXX_nand_parts[i].ecclayout = mtd->ecclayout;
+-              }
+-      
+-              // Kernel partition will be initialized by Env Vars.
+-      //printk("<-- %s, device_size=%0llx\n", __FUNCTION__, device_size(mtd));
+-      //print_partition(*numParts);
+-
+-              nandinfo->parts = bcm7XXX_nand_parts;
+-              
+-              return;
++      if (device_size(mtd) <= (512ULL <<20)) {
++              size = (unsigned long) device_size(mtd);        // mtd->size may be different than nandinfo->size
++              *numParts = ARRAY_SIZE(bcm7XXX_nand_parts) - 3; /* take into account the extra 2 parts
++                                                                 and the data partition */
++      } else {
++              size = 512 << 20;
++              *numParts = ARRAY_SIZE(bcm7XXX_nand_parts) - 2; // take into account the extra 2 parts
+       }
+-
+-#if defined( CONFIG_MTD_NEW_PARTITION ) 
++#ifdef CONFIG_MTD_NEW_PARTITION
+       if (device_size(mtd) <= (512ULL <<20)) {
+               bcm7XXX_nand_parts[ALL_PART].size = 
+                       device_size(mtd) - (uint64_t) (DEFAULT_BBT0_SIZE_MB<<20);
+@@ -308,53 +293,8 @@
+       nandinfo->parts = bcm7XXX_nand_parts;
+       
+       return;
+-#else
+-                                                                 
+-      /* NAND on CS1, same partition as that of CONFIG_MTD_NEW_PARTITION */
+-PRINTK("nandinfo->brcmnand.CS[0] = %d\n", nandinfo->brcmnand.CS[0]);
+-PRINTK("bcm7XXX_nand_parts=%p, bcm7XXX_new_partition=%p, bcm7XXX_old_partition=%p\n",
+-      bcm7XXX_nand_parts, &bcm7XXX_new_partition[0], &bcm7XXX_old_partition[0]);
+-      if (nandinfo->brcmnand.CS[0] != 0) {
+-              bcm7XXX_nand_parts = bcm7XXX_new_partition;
+-              
+-              if (device_size(mtd) <= (512ULL <<20)) {
+-                      bcm7XXX_nand_parts[0].size = device_size(mtd) - DEFAULT_RESERVED_SIZE - ecm_size;
+-                      bcm7XXX_nand_parts[ALL_PART].size = 
+-                              device_size(mtd) - ((uint64_t) (DEFAULT_BBT0_SIZE_MB) <<20);
+-                      *numParts = 3;
+-              } 
+-              else {
+-                      bcm7XXX_nand_parts[0].size = (512ULL <<20) - DEFAULT_RESERVED_SIZE - ecm_size;
+-                      bcm7XXX_nand_parts[ALL_PART].size = 
+-                              device_size(mtd) - ((uint64_t) (DEFAULT_BBT1_SIZE_MB)<<20);
+-                      *numParts = 4;
+-              }
+-              for (i=0; i<*numParts;i++) {
+-                      bcm7XXX_nand_parts[i].ecclayout = mtd->ecclayout;
+-              }
++#elif defined( CONFIG_MTD_ECM_PARTITION )
+-              nandinfo->parts = bcm7XXX_nand_parts;
+-
+-#if 1
+-PRINTK("%s: NAND on CS1: numparts=%d\n", __FUNCTION__, *numParts);
+-print_partition(*numParts);
+-#endif
+-
+-              return;
+-        }
+-
+-      /* From now on, we are only dealing with old partition table */
+-      if (device_size(mtd) <= (512ULL <<20)) {
+-              size = (unsigned long) device_size(mtd);        // mtd->size may be different than nandinfo->size
+-              *numParts =  oldNumParts - 3; /* take into account the extra 2 parts
+-                                                                 and the data partition */
+-      } else {
+-              size = 512 << 20;
+-              *numParts =  oldNumParts - 2; // take into account the extra 2 parts
+-      }
+-  
+-  #if defined( CONFIG_MTD_ECM_PARTITION )
+-
+       /* Do not generate AVAIL1 partition if usable flash size is less than 64MB */
+       
+       if (size < (64<<20)) {
+@@ -370,12 +310,11 @@
+               ecm_size = ocap_size + avail1_size;
+       }
+       
+-  #endif
++
+ #endif
+       nandinfo->parts = bcm7XXX_nand_parts;
+       bcm7XXX_nand_parts[0].size = size - DEFAULT_RESERVED_SIZE - ecm_size;
+       bcm7XXX_nand_parts[0].ecclayout = mtd->ecclayout;
+-PRINTK("numParts=%d\n", numParts);
+ PRINTK("Part[%d] name=%s, size=%llx, offset=%llx\n", i, bcm7XXX_nand_parts[0].name, 
+ bcm7XXX_nand_parts[0].size, bcm7XXX_nand_parts[0].offset);
+@@ -550,6 +489,7 @@
+       int i; // Index into mtd partition
+       // Not configured for Splash, but does CFE define it?
++#ifndef USE_SPLASH /* csh splash*/
+       if (!gBcmSplash) { 
+               for (i=0; i < gCfePartitions.numParts; i++) {
+                       if (gCfePartitions.parts[i].part == SPLASH_PT) {
+@@ -558,6 +498,7 @@
+                       }
+               }
+       }
++#endif
+       /*
+        * Remove OCAP partitions if Env Vars are defined
+@@ -640,7 +581,6 @@
+       //unsigned long size = res->end - res->start + 1;
+       int err = 0;
+       int numParts = 0;
+-      struct brcmnand_chip* chip;
+       gPageBuffer = NULL;
+       info = kmalloc(sizeof(struct brcmnand_info), GFP_KERNEL);
+@@ -672,7 +612,7 @@
+       //info->brcmnand.mmcontrol = NULL;  // THT: Sync Burst Read TBD.  pdata->mmcontrol;
+       info->mtd.name = pdev->dev.bus_id;
+-      chip = info->mtd.priv = &info->brcmnand;
++      info->mtd.priv = &info->brcmnand;
+       info->mtd.owner = THIS_MODULE;
+       /* Enable the following for a flash based bad block table */
+@@ -690,19 +630,12 @@
+ //print_partition(numParts);
+-      // Nand not on CS0, set it up to allow 1 partition, as in the new partition scheme
+-      if (chip->CS[0] != 0) { 
+-              bcm7XXX_nand_parts = bcm7XXX_new_partition;
+-      }
+-      
+       if (gCfePartitions.numParts == 0) {
+               brcmnanddrv_setup_mtd_partitions(info, &numParts);
+       }
+       else {
+               brcmnanddrv_setup_mtdpart_cfe_env(info, &numParts);
+       }
+-      
+-      
+ //print_partition(numParts);
+               
+@@ -711,20 +644,6 @@
+ //printk("    dev_set_drvdata\n");    
+       dev_set_drvdata(&pdev->dev, info);
+ //printk("<-- brcmnanddrv_probe\n");
+-
+-/* NOR+NAND configuration */
+-#ifdef CONFIG_MTD_BRCMNAND_NOR_ACCESS
+-      /* Append NOR partition to the end */
+-      {
+-              extern void (*gInitialize_Nor_Partition)(void);
+-
+-              if (gInitialize_Nor_Partition) {
+-                      (*gInitialize_Nor_Partition) ();
+-              }
+-              // Else NAND is loaded first, NOR will append when it is started.
+-      }
+-
+-#endif
+       return 0;
+Index: drivers/mtd/brcmnand/brcmnand_base.c
+===================================================================
+--- drivers/mtd/brcmnand/brcmnand_base.c       (revision 1)
++++ drivers/mtd/brcmnand/brcmnand_base.c       (working copy)
+@@ -39,8 +39,6 @@
+ #include <linux/byteorder/generic.h>
+ #include <linux/reboot.h>
+ #include <linux/vmalloc.h>
+-#include <linux/dma-mapping.h>
+-#include <linux/interrupt.h>
+ #include <asm/io.h>
+ #include <asm/bug.h>
+@@ -60,26 +58,6 @@
+ //#define DEBUG_HW_ECC
+-//#define BRCMNAND_READ_VERIFY
+-#undef BRCMNAND_READ_VERIFY
+-
+-//#ifdef CONFIG_MTD_BRCMNAND_VERIFY_WRITE
+-//#define BRCMNAND_WRITE_VERIFY
+-//#endif
+-#undef BRCMNAND_WRITE_VERIFY
+-
+-//#define DEBUG_ISR
+-#undef DEBUG_ISR
+-#if defined( DEBUG_ISR )  || defined(BRCMNAND_READ_VERIFY) \
+-      || defined(BRCMNAND_WRITE_VERIFY)
+-#if defined(DEBUG_ISR )  || defined(BRCMNAND_READ_VERIFY)
+-#define EDU_DEBUG_4
+-#endif
+-#if defined(DEBUG_ISR )  || defined(BRCMNAND_WRITE_VERIFY)
+-#define EDU_DEBUG_5
+-#endif
+-#endif
+-
+ #define my_be32_to_cpu(x) be32_to_cpu(x)
+ #if defined( CONFIG_MTI_R24K ) || defined( CONFIG_MTI_R34K ) || defined( CONFIG_MTD_BRCMNAND_EDU )
+@@ -131,7 +109,21 @@
+ #define HW_AUTOOOB_LAYOUT_SIZE                32 /* should be enough */
++#define BRCMNAND_CORRECTABLE_ECC_ERROR                (1)
++#define BRCMNAND_SUCCESS                                              (0)
++#define BRCMNAND_UNCORRECTABLE_ECC_ERROR      (-1)
++#define BRCMNAND_FLASH_STATUS_ERROR                   (-2)
++#define BRCMNAND_TIMED_OUT                                    (-3)
++#ifdef CONFIG_MTD_BRCMNAND_EDU
++#define BRCMEDU_CORRECTABLE_ECC_ERROR         (4)
++#define BRCMEDU_UNCORRECTABLE_ECC_ERROR      (-4)
++
++#define  BRCMEDU_MEM_BUS_ERROR                                (-5)
++
++//uint32_t EDU_ldw;
++#endif // #ifdef CONFIG_MTD_BRCMNAND_EDU
++
+ #ifdef CONFIG_MTD_BRCMNAND_CORRECTABLE_ERR_HANDLING
+ /* Avoid infinite recursion between brcmnand_refresh_blk() and brcmnand_read_ecc() */
+ static atomic_t inrefresh = ATOMIC_INIT(0); 
+@@ -166,7 +158,6 @@
+       uint32 options;
+       uint32_t idOptions;     // Whether chip has all 5 ID bytes
+       uint32 timing1, timing2; // Specify a non-zero value to override the default timings.
+-      int nop;                                // Number of partial writes per page
+       unsigned int ctrlVersion; // Required controller version if different than 0
+ } brcmnand_chip_Id;
+@@ -183,7 +174,6 @@
+                               //| NAND_COMPLEX_OOB_WRITE      /* Write data together with OOB for write_oob */
+               .timing1 = 0, //00070000,
+               .timing2 = 0,
+-              .nop=8,
+               .ctrlVersion = 0, /* THT Verified on data-sheet 7/10/08: Allows 4 on main and 4 on OOB */
+       },
+@@ -195,7 +185,6 @@
+               .idOptions = 0,
+               .timing1 = 0, //0x6474555f, 
+               .timing2 = 0, //0x00000fc7,
+-              .nop=8,
+               .ctrlVersion = 0,
+       },
+       {       /* 2 */
+@@ -206,7 +195,6 @@
+               .idOptions = 0,
+               .timing1 = 0, //0x6474555f, 
+               .timing2 = 0, //0x00000fc7,
+-              .nop=8,
+               .ctrlVersion = 0,
+       },
+ #if 0 // EOL
+@@ -228,7 +216,6 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=8,
+               .ctrlVersion = 0,
+       },
+@@ -239,7 +226,6 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=8,
+               .ctrlVersion = 0,
+       },
+ /* This is just the 16 bit version of the above?
+@@ -259,8 +245,7 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=4,
+-              .ctrlVersion = CONFIG_MTD_BRCMNAND_VERS_2_1,
++              .ctrlVersion = CONFIG_MTD_BRCMNAND_VERS_2_0,
+       },
+       {       /* 6 */
+@@ -270,8 +255,7 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=4,
+-              .ctrlVersion = CONFIG_MTD_BRCMNAND_VERS_2_1,
++              .ctrlVersion = CONFIG_MTD_BRCMNAND_VERS_2_0,
+       },
+@@ -282,7 +266,6 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=8,
+               .ctrlVersion = 0,
+       },
+@@ -295,7 +278,6 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=8,
+               .ctrlVersion = 0,
+       },
+@@ -306,7 +288,6 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=8,
+               .ctrlVersion = 0,
+       },
+@@ -317,7 +298,6 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=8,
+               .ctrlVersion = 0,
+       },
+@@ -328,7 +308,6 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=8,
+               .ctrlVersion = 0,
+       },
+@@ -339,7 +318,6 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=8,
+               .ctrlVersion = 0,
+       },
+@@ -350,7 +328,6 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=8,
+               .ctrlVersion = 0,
+       },
+@@ -361,7 +338,6 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=8,
+               .ctrlVersion = 0,
+       },
+@@ -372,7 +348,6 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=8,
+               .ctrlVersion = 0,
+       },
+@@ -383,7 +358,6 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=8,
+               .ctrlVersion = 0,
+       },
+@@ -394,7 +368,6 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=8,
+               .ctrlVersion = 0,
+       },
+@@ -405,7 +378,6 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=8,
+               .ctrlVersion = 0,
+       },
+@@ -416,7 +388,6 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=8,
+               .ctrlVersion = 0,
+       },
+@@ -427,7 +398,6 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=8,
+               .ctrlVersion = 0,
+       },
+@@ -438,11 +408,10 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=8,
+               .ctrlVersion = 0,
+       },
+-      /* The following 6 ST chips only allow 4 writes per page, and requires version2.1 (4) of the controller or later */
++      /* The following 6 ST chips only allow 4 writes per page, and requires version2.2 (5) of the controller or later */
+       {       /* 22 */
+               .chipId = ST_NAND01GW3B,
+               .mafId = FLASHTYPE_ST,
+@@ -450,8 +419,7 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=4,
+-              .ctrlVersion = CONFIG_MTD_BRCMNAND_VERS_2_1,
++              .ctrlVersion = CONFIG_MTD_BRCMNAND_VERS_2_0,
+       },
+       {       /* 23 */ 
+@@ -461,8 +429,7 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=4,
+-              .ctrlVersion = CONFIG_MTD_BRCMNAND_VERS_2_1,
++              .ctrlVersion = CONFIG_MTD_BRCMNAND_VERS_2_0,
+       },
+       {       /* 24 */ 
+@@ -472,8 +439,7 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=4,
+-              .ctrlVersion = CONFIG_MTD_BRCMNAND_VERS_2_1,
++              .ctrlVersion = CONFIG_MTD_BRCMNAND_VERS_2_0,
+       },
+       {       /* 25 */ 
+               .chipId = ST_NAND02GW3B,
+@@ -482,8 +448,7 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=4,
+-              .ctrlVersion = CONFIG_MTD_BRCMNAND_VERS_2_1,
++              .ctrlVersion = CONFIG_MTD_BRCMNAND_VERS_2_0,
+       },
+       
+       {       /* 26 */ 
+@@ -493,8 +458,7 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=4,
+-              .ctrlVersion = CONFIG_MTD_BRCMNAND_VERS_2_1,
++              .ctrlVersion = CONFIG_MTD_BRCMNAND_VERS_2_0,
+       },
+       {       /* 27 */ 
+               .chipId = ST_NAND08GW3B,
+@@ -503,8 +467,7 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=4,
+-              .ctrlVersion = CONFIG_MTD_BRCMNAND_VERS_2_1,
++              .ctrlVersion = CONFIG_MTD_BRCMNAND_VERS_2_0,
+       },
+               
+       {       /* 28 */
+@@ -514,9 +477,8 @@
+               .options = NAND_USE_FLASH_BBT,          /* Use BBT on flash */
+                               //| NAND_COMPLEX_OOB_WRITE      /* Write data together with OOB for write_oob */
+               .idOptions = BRCMNAND_ID_EXT_BYTES,
+-              .timing1 = 0, 
++              .timing1 = 0, //00070000,
+               .timing2 = 0,
+-              .nop=1,
+               .ctrlVersion = CONFIG_MTD_BRCMNAND_VERS_3_0, 
+       },
+@@ -527,9 +489,8 @@
+               .options = NAND_USE_FLASH_BBT,          /* Use BBT on flash */
+                               //| NAND_COMPLEX_OOB_WRITE      /* Write data together with OOB for write_oob */
+               .idOptions = BRCMNAND_ID_EXT_BYTES_TYPE2,
+-              .timing1 = 0, 
++              .timing1 = 0, //00070000,
+               .timing2 = 0,
+-              .nop=1,
+               .ctrlVersion = CONFIG_MTD_BRCMNAND_VERS_3_0, 
+       },
+@@ -540,24 +501,10 @@
+               .options = NAND_USE_FLASH_BBT,          /* Use BBT on flash */
+                               //| NAND_COMPLEX_OOB_WRITE      /* Write data together with OOB for write_oob */
+               .idOptions = BRCMNAND_ID_EXT_BYTES,
+-              .timing1 = 0, 
++              .timing1 = 0, //00070000,
+               .timing2 = 0,
+-              .nop=1,
+               .ctrlVersion = CONFIG_MTD_BRCMNAND_VERS_3_0, 
+       },
+-
+-      {       /* 31 */  
+-              .chipId = HYNIX_HY27UAG8T2M,
+-              .mafId = FLASHTYPE_HYNIX,
+-              .chipIdStr = "HYNIX_HY27UAG8T2M",
+-              .options = NAND_USE_FLASH_BBT,          /* Use BBT on flash */
+-                              //| NAND_COMPLEX_OOB_WRITE      /* Write data together with OOB for write_oob */
+-              .idOptions = BRCMNAND_ID_EXT_BYTES,
+-              .timing1 = 0, 
+-              .timing2 = 0,
+-              .nop=1,
+-              .ctrlVersion = CONFIG_MTD_BRCMNAND_VERS_3_0, 
+-      },
+               
+       {       /* LAST DUMMY ENTRY */
+               .chipId = 0,
+@@ -613,7 +560,7 @@
+       if (nandCtrlReg < BCHP_NAND_REVISION || nandCtrlReg > BCHP_NAND_BLK_WR_PROTECT ||
+               (nandCtrlReg & 0x3) != 0) {
+-              printk("brcmnand_ctrl_read: Invalid register value %08x\n", nandCtrlReg);
++              printk(KERN_ERR "brcmnand_ctrl_read: Invalid register value %08x\n", nandCtrlReg);
+       }
+ if (gdebug > 3) printk("%s: CMDREG=%08x val=%08x\n", __FUNCTION__, (unsigned int) nandCtrlReg, (unsigned int)*pReg);
+       return (uint32_t) (*pReg);
+@@ -627,7 +574,7 @@
+       if (nandCtrlReg < BCHP_NAND_REVISION || nandCtrlReg > BCHP_NAND_BLK_WR_PROTECT ||
+               (nandCtrlReg & 0x3) != 0) {
+-              printk( "brcmnand_ctrl_read: Invalid register value %08x\n", nandCtrlReg);
++              printk(KERN_ERR "brcmnand_ctrl_read: Invalid register value %08x\n", nandCtrlReg);
+       }
+       *pReg = (volatile unsigned long) (val);
+ if (gdebug > 3) printk("%s: CMDREG=%08x val=%08x\n", __FUNCTION__, nandCtrlReg, val);
+@@ -670,14 +617,13 @@
+       }
+ if (gdebug) printk("CS=%d, chip->CS[cs]=%d\n", cs, chip->CS[cs]);
+-      // ldw is lower 32 bit of chipOffset, need to add pbase when on CS0 and XOR is ON.
+-      if (!chip->xor_disable[cs]) {
++      // ldw is lower 32 bit of chipOffset, need to add pbase when on CS0
++      if (chip->CS[cs] == 0) {
+               ldw = chipOffset.s.low + chip->pbase;
+-      } 
++      }
+       else {
+               ldw = chipOffset.s.low;
+-      } 
+-      
++      }
+       udw = chipOffset.s.high | (chip->CS[cs] << 16);
+ if (gdebug > 3) printk("%s: offset=%0llx  cs=%d ldw = %08x, udw = %08x\n", __FUNCTION__, offset, cs,  ldw, udw);
+@@ -692,7 +638,7 @@
+ #if 1
+ /* Dont delete, may be useful for debugging */
+-static void print_diagnostics(struct brcmnand_chip* chip)
++static void print_diagnostics(void)
+ {
+       uint32_t nand_acc_control = brcmnand_ctrl_read(BCHP_NAND_ACC_CONTROL);
+       uint32_t nand_select = brcmnand_ctrl_read(BCHP_NAND_CS_NAND_SELECT);
+@@ -703,7 +649,7 @@
+       uint32_t pageAddrExt = brcmnand_ctrl_read(BCHP_NAND_PROGRAM_PAGE_EXT_ADDR);
+ #endif
+-      
++      uint32_t ebiCSBase0 = * ((volatile unsigned long*) (0xb0000000|BCHP_EBI_CS_BASE_0));
+       //unsigned long nand_timing1 = brcmnand_ctrl_read(BCHP_NAND_TIMING_1);
+       //unsigned long nand_timing2 = brcmnand_ctrl_read(BCHP_NAND_TIMING_2);
+@@ -712,17 +658,7 @@
+ #if CONFIG_MTD_BRCMNAND_VERSION >= CONFIG_MTD_BRCMNAND_VERS_1_0
+       printk("PAGE_EXT_ADDR=%08x\n", pageAddrExt);
+ #endif
+-      if (chip->CS[0] == 0) {
+-              uint32_t ebiCSBase0 = * ((volatile unsigned long*) (0xb0000000|BCHP_EBI_CS_BASE_0));
+-              printk("PAGE_ADDR=%08x, \tCS0_BASE=%08x\n", pageAddr, ebiCSBase0);
+-      }
+-      else {
+-              //uint32_t ebiCSBaseN = * ((volatile unsigned long*) (0xb0000000|(BCHP_EBI_CS_BASE_0));
+-              uint32_t csNandBaseN = *(volatile unsigned long*) (0xb0000000 + BCHP_EBI_CS_BASE_0 + 8*chip->CS[0]);
+-
+-              printk("PAGE_ADDR=%08x, \tCS%-d_BASE=%08x\n", pageAddr, chip->CS[0], csNandBaseN);
+-              printk("pbase=%08lx, vbase=%p\n", chip->pbase, chip->vbase);
+-      }
++      printk("PAGE_ADDR=%08x, \tCS0_BASE=%08x\n", pageAddr, ebiCSBase0);
+ }     
+ #endif
+@@ -739,51 +675,6 @@
+               nand_acc_control, nand_config, flash_id, nand_timing1, nand_timing2);   
+ }
+-#define NUM_NAND_REGS         (1+((BCHP_NAND_BLK_WR_PROTECT-BCHP_NAND_REVISION)/4))
+-
+-static void print_nand_ctrl_regs(void)
+-{
+-      int i;
+-
+-      for (i=0; i<NUM_NAND_REGS; i++) {
+-              uint32_t reg = (uint32_t) (BCHP_NAND_REVISION+(i*4));
+-              uint32_t regval; 
+-              uint32_t regoff = reg - BCHP_NAND_REVISION; // i*4
+-              
+-              if ((i % 4) == 0) {
+-                      printk("\n%08x:", reg);
+-              }
+-
+-#if CONFIG_MTD_BRCMNAND_VERSION < CONFIG_MTD_BRCMNAND_VERS_1_0
+-              // V0.0, V0.1 7401Cx
+-              if (regoff == 0x14 || regoff == 0x18 || regoff == 0x1c ) { // No NAND register at 0x281c
+-                      regval = 0;
+-              }               
+-#elif CONFIG_MTD_BRCMNAND_VERSION < CONFIG_MTD_BRCMNAND_VERS_2_0
+-              // V1.0 7440Bx
+-              if (regoff == 0x18 || regoff == 0x1c ) { // No NAND register at 0x281c
+-                      regval = 0;
+-              }
+-#elif CONFIG_MTD_BRCMNAND_VERSION < CONFIG_MTD_BRCMNAND_VERS_3_0
+-              // V2.x 7325, 7335, 7405bx
+-              if (regoff == 0x1c) { // No NAND register at 0x281c
+-                      regval = 0;
+-              }
+-#else // if CONFIG_MTD_BRCMNAND_VERSION >= CONFIG_MTD_BRCMNAND_VERS_3_0
+-              // V3.x 3548, 7420a0, 7420b0
+-              if (regoff == 0x1c || regoff == 0x44 || regoff == 0x4c || regoff == 0x5c 
+-                      || regoff == 0x88 || regoff == 0x8c
+-                      || regoff == 0xb8 || regoff == 0xbc) {
+-                      regval = 0;
+-              }
+-#endif
+-              else {
+-                      regval = (uint32_t) brcmnand_ctrl_read(reg);
+-              }
+-              printk("  %08x", regval);
+-      }
+-}
+-
+ void print_NandCtrl_Status(void)
+ {
+ #ifdef CONFIG_MTD_BRCMNAND_EDU
+@@ -1021,8 +912,11 @@
+               uint32_t rd_data;
+       
+-              rd_data = ISR_cache_is_valid();
++              rd_data = ISR_cache_is_valid(intr);
++
++
++
+               if (rd_data == 0) {
+               /* timed out */
+ printk("%s: rd_data=0 TIMEOUT\n", __FUNCTION__);
+@@ -1158,7 +1052,7 @@
+                       return 0;
+               }
+-              if (state != FL_READING && (!wr_preempt_en) && !in_interrupt())
++              if (state != FL_READING && (!wr_preempt_en))
+                       cond_resched();
+               //touch_softlockup_watchdog();
+       }
+@@ -1192,10 +1086,6 @@
+               if (ready & BCHP_NAND_INTFC_STATUS_CTLR_READY_MASK && 
+                  (ready & BCHP_NAND_INTFC_STATUS_SPARE_AREA_VALID_MASK)) {
+-
+-
+-#if 0
+-// THT 6/15/09: Reading OOB would not affect ECC
+                       int ecc;
+                       if (!raw) {
+@@ -1205,10 +1095,9 @@
+                                       return -1;
+                               }
+                       }
+-#endif
+                       return 1;
+               }
+-              if (state != FL_READING && !wr_preempt_en && !in_interrupt())
++              if (state != FL_READING && !wr_preempt_en)
+                       cond_resched();
+       }
+@@ -1261,7 +1150,7 @@
+                       //}
+                       //return BRCMNAND_SUCCESS;
+               }
+-              if (state != FL_READING && (!wr_preempt_en) && !in_interrupt())
++              if (state != FL_READING && (!wr_preempt_en))
+                       cond_resched();
+       }
+@@ -1292,7 +1181,7 @@
+       uint32_t rd_data;
+ if (gdebug > 3 ) {
+-printk("%s: intr_status = %08x\n", __FUNCTION__, intr_status); }       
++printk("%s: intr_status = %08x\n", intr_status); }     
+         if (intr_status == 0) {
+               /* EDU_read timed out */
+@@ -1319,7 +1208,7 @@
+                */
+               if (!(intr_status & HIF_INTR2_CTRL_READY)) {
+-                      (void) ISR_cache_is_valid(); 
++                      (void) ISR_cache_is_valid(0); 
+               }
+ #endif
+               /*
+@@ -1356,12 +1245,9 @@
+ #endif
+-/*
+- * Returns 1 on success,
+- *              0 on error
+- */
++
+ static int brcmnand_ctrl_write_is_complete(struct mtd_info *mtd, int* outp_needBBT)
+ {
+       int err;
+@@ -1384,188 +1270,8 @@
+ }
+-
+-
+-//#define EDU_DEBUG_2
+-#undef EDU_DEBUG_2
+-
+-// EDU_DEBUG_4: Verify on Read
+-//#define EDU_DEBUG_4
+-//#undef EDU_DEBUG_4
+-
+-// EDU_DEBUG_5: Verify on Write
+-//#define EDU_DEBUG_5
+-//#undef EDU_DEBUG_5
+-
+-#if defined( EDU_DEBUG_2 ) || defined( EDU_DEBUG_4 ) || defined( EDU_DEBUG_5 )
+-/* 3548 internal buffer is 4K in size */
+-//static uint32_t edu_lbuf[2048];
+-static uint32_t* edu_buf32;
+-static uint8_t* edu_buf;      // Used by EDU in Debug2
+-static uint8_t* ctrl_buf;     // Used by Ctrl in Debug4
+-static uint32_t ctrl_oob32[4];
+-static uint8_t* ctrl_oob = (uint8_t*) ctrl_oob32;
+-
+-#define PATTERN 0xa55a0000
+-
+-#define EDU_BUFSIZE_B (512)
+-// One before and one after
+-#define EDU_BUF32_SIZE_B (EDU_BUFSIZE_B*3)
+-
+-// Same as above in DW instead
+-#define EDU_BUFSIZE_DW (EDU_BUFSIZE_B/4)
+-#define EDU_BUF32_SIZE_DW (EDU_BUF32_SIZE_B/4)
+-
+-// Real buffer starts at 1/3 
+-#define EDU_BUF_START_DW (EDU_BUF32_SIZE_DW/3)
+-
+-
+-static void init_edu_buf(void)
+-{
+-      /* Write pattern */
+-      int i;
+-
+-      if (!edu_buf32) {
+-              edu_buf32 = (uint32_t*) kmalloc(EDU_BUF32_SIZE_B, GFP_KERNEL);
+-              if (!edu_buf32) {
+-                      printk("%s: Out of memory\n", __FUNCTION__);
+-                      BUG();
+-              }
+-                      
+-              edu_buf = ctrl_buf = (uint8_t*)  &edu_buf32[EDU_BUF_START_DW];
+-              printk("%s: Buffer allocated at %p, %d bytes\n", __FUNCTION__, edu_buf32, EDU_BUF32_SIZE_B);
+-              printk("Real buffer starts at %p\n", ctrl_buf);
+-      }
+-
+-      for (i=0; i<EDU_BUF32_SIZE_DW; i++) {
+-              edu_buf32[i] = PATTERN | i;
+-      }       
+-}
+-
+-static int verify_edu_buf(void) 
+-{
+-      int i;
+-      int ret = 0;
+-      
+-      for (i=0; i<EDU_BUF_START_DW; i++) {
+-              if (edu_buf32[i] != (PATTERN | i)) {
+-                      printk("############ %s: pattern overwritten at offset %d, expect %08x, found %08x\n", 
+-                              __FUNCTION__, i*4, PATTERN | i, edu_buf32[i]);
+-                      ret++;
+-              }
+-      }
+-      for (i=EDU_BUF_START_DW+EDU_BUFSIZE_DW; i<EDU_BUF32_SIZE_DW; i++) {
+-              if (edu_buf32[i] != (PATTERN | i)) {
+-                      printk("############ %s: pattern overwritten at offset %d, expect %08x, found %08x\n", 
+-                              __FUNCTION__, i*4, PATTERN | i, edu_buf32[i]);
+-                      ret++;
+-              }
+-      }
+-if (ret) printk("+++++++++++++++ %s: %d DW overwritten by EDU\n", __FUNCTION__, ret);
+-      return ret;
+-}
+-
+-
+-static uint8_t edu_write_buf[512];
+-
+-
+-
+ #ifdef CONFIG_MTD_BRCMNAND_EDU
+-#define NUM_EDU_REGS  (1+((BCHP_EDU_ERR_STATUS-BCHP_EDU_CONFIG)/4))
+-#else
+-#define NUM_EDU_REGS  1
+-#endif
+-#define MAX_DUMPS             20
+-
+-typedef struct nand_dump {
+-      loff_t offset;
+-      uint32_t physAddr;
+-      struct brcmnand_chip* chip;
+-      struct register_dump_t {
+-              unsigned long timestamp;
+-              uint32_t nand_regs[NUM_NAND_REGS]; // NAND register dump
+-              uint32_t edu_regs[NUM_EDU_REGS];        // EDU register
+-              uint32_t hif_intr2;             // HIF_INTR2 Interrupt status
+-              uint8_t data[512];              // NAND controller cache
+-      } dump[MAX_DUMPS];
+-      //uint8_t udata[512];   // Uncached
+-} nand_dump_t; // Before and after
+-nand_dump_t nandDump; 
+-int numDumps = 0;
+-
+-
+-#ifdef CONFIG_MTD_BRCMNAND_EDU
+-static void print_dump_nand_regs(int which)
+-{
+-      int i;
+-
+-      printk("NAND registers snapshot #%d: TS=%0lx, offset=%0llx, PA=%08x\n", 
+-              1+which, nandDump.dump[which].timestamp, nandDump.offset, nandDump.physAddr);
+-      for (i=0; i<NUM_NAND_REGS; i++) {
+-              if ((i % 4) == 0) {
+-                      printk("\n%08x:", BCHP_NAND_REVISION+(i*4));
+-              }
+-              printk("  %08x", nandDump.dump[which].nand_regs[i]);
+-      }
+-      printk("\nEDU registers:\n");
+-      for (i=0; i<NUM_EDU_REGS; i++) {
+-              if ((i % 4) == 0) {
+-                      printk("\n%08x:", BCHP_EDU_CONFIG+(i*4));
+-              }
+-              printk("  %08x", nandDump.dump[which].edu_regs[i]);
+-      }
+-      printk("\n HIF_INTR2_STATUS=%08x\n", nandDump.dump[which].hif_intr2);
+-      printk("\nNAND controller Internal cache:\n");
+-      print_databuf(nandDump.dump[which].data, 512);
+-}
+-
+-void dump_nand_regs(struct brcmnand_chip* chip, loff_t offset, uint32_t pa, int which)
+-{
+-      int i;
+-
+-      /* We don't have the value of offset during snapshot #2 */
+-      if (which == 0) {nandDump.offset = offset; nandDump.physAddr = pa;nandDump.chip = chip;}
+-
+-      nandDump.dump[which].timestamp = jiffies;
+-      
+-      for (i=0; i<NUM_NAND_REGS; i++) {
+-              uint32_t reg = BCHP_NAND_REVISION+(i*4);
+-              uint32_t regval;
+-
+-              if (reg == 0x281c) { // No NAND register at 0x281c
+-                      regval = 0;
+-              }
+-              else {
+-                      regval = brcmnand_ctrl_read(reg);
+-              }
+-              nandDump.dump[which].nand_regs[i] = regval;
+-      }
+-      for (i=0; i<NUM_EDU_REGS; i++) {
+-              nandDump.dump[which].edu_regs[i] = EDU_volatileRead(EDU_BASE_ADDRESS  + BCHP_EDU_CONFIG + ( i*4));
+-      }
+-      nandDump.dump[which].hif_intr2 = EDU_volatileRead(EDU_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_STATUS);
+-      brcmnand_from_flash_memcpy32(nandDump.chip, &nandDump.dump[which].data[0], nandDump.offset, 512);
+-}
+-
+-#else
+-
+-#define print_dump_nand_regs(...)
+-
+-#define dump_nand_regs(...)
+-
+-#endif // EDU_DEBUG_2,4,5
+-#endif
+-
+-
+-#ifdef CONFIG_MTD_BRCMNAND_EDU
+-
+-
+-/*
+- * Returns 1 on success,
+- *              0 on error
+- */
+-
+ static int brcmnand_EDU_write_is_complete(struct mtd_info *mtd, int* outp_needBBT)
+ {
+       uint32_t hif_err, edu_err;
+@@ -1581,45 +1287,37 @@
+ #ifdef CONFIG_MTD_BRCMNAND_USE_ISR
+-  #if 0 // No need in Batch mode
+       // Unlike the Read case where we retry on everything, we either complete the write or die trying.
+-      // Here we use retry only for ERESTARTSYS, relying on the fact that we write the same data 
+-      // over the flash.
+-      // Caution: Since this can be called from an interrupt context, we cannot call the regular brcmnand_wait()
+-      // call, since those call schedule()
++      // Here we use retry only for ERESTARTSYS, relying on the fact that we write the same data over the flash.
+       hif_err = ISR_wait_for_completion();
+       if ((hif_err == ERESTARTSYS) || (hif_err & HIF_INTR2_EBI_TIMEOUT))
+               return hif_err;
+-  #endif // Batch mode
++
+ #else
+       hif_err = EDU_poll(EDU_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_STATUS, 
+-              HIF_INTR2_EDU_DONE|HIF_INTR2_CTRL_READY, 
++              HIF_INTR2_EDU_DONE, 
+               HIF_INTR2_EDU_ERR, 
+-              HIF_INTR2_EDU_DONE_MASK|HIF_INTR2_CTRL_READY);
+-
++              HIF_INTR2_EDU_DONE_MASK);
+ #endif
+-
+       if (hif_err != 0) // No timeout
+       {
+-              uint32_t flashStatus; // = chip->ctrl_read(BCHP_NAND_INTFC_STATUS);
++              int flashStatus; // = chip->ctrl_read(BCHP_NAND_INTFC_STATUS);
+-#if 0
+-if (!(hif_err & HIF_INTR2_EDU_DONE))
+-printk("hif_err=%08x\n", hif_err);
+-#endif                        
+               
++                      
++              
+               /******************* BUG BUG BUG *****************
+                * THT 01/06/09: What if EDU returns bus error?  We should not mark the block bad then.
+                */
+                //Get status:  should we check HIF_INTR2_ERR?
+-              if (hif_err & HIF_INTR2_EDU_ERR)
+-                      edu_err = EDU_get_error_status_register();
+-              else
+-                      edu_err = 0;
++              edu_err = EDU_get_error_status_register();
+               //Clear interrupt:
+               //EDU_volatileWrite(EDU_BASE_ADDRESS  + EDU_DONE, 0x00000000);
++              EDU_reset_done();
++              EDU_volatileWrite(EDU_BASE_ADDRESS  + EDU_ERR_STATUS, 0x00000000);
++              EDU_volatileWrite(EDU_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_STATUS, HIF_INTR2_EDU_CLEAR_MASK);
+               flashStatus = chip->ctrl_read(BCHP_NAND_INTFC_STATUS);
+@@ -1627,56 +1325,39 @@
+               if (!(flashStatus & BCHP_NAND_INTFC_STATUS_CTLR_READY_MASK)) {
+                       ret = brcmnand_ctrl_write_is_complete(mtd, outp_needBBT); 
+                       // No need to check on the EDU side, already done inside ctrl_write_is_complete
+-                      udelay(1000);
+-                      //dump_nand_regs(chip, 0, 0, numDumps++);
+-                      goto out;
++                      return ret;
+               }
+-
+-#ifdef EDU_DEBUG_5
+-/* else */ {
+-
+-// 2nd dump after CTRL_READY is asserted
+-//udelay(1000);
+-//dump_nand_regs(chip, 0, 0, numDumps++);
+-}
+-#endif
+                       
+               if ((edu_err & EDU_ERR_STATUS_NandWrite) || (flashStatus & 0x01)) {
+                       /* Write did not complete, flash error, will mark block bad */
+                       *outp_needBBT = 1;
+                       printk("EDU_write_is_complete(): error 0x%08X\n", edu_err);
+-                      ret = 0;
+-                      goto out;
++                      return 0;
+               }
+               else if (edu_err) {
+                       /* Write did not complete, bus error, will NOT mark block bad */
+                       *outp_needBBT = 0;
+                       printk("EDU_write_is_complete(): error 0x%08X\n", edu_err);
+-                      ret = 0;
+-                      goto out;
++                      return 0;
+               }
+-              ret = 1; // Success    brcmnand_ctrl_write_is_complete(mtd, outp_needBBT);  
+-              goto out;
++              return 1; // Success    brcmnand_ctrl_write_is_complete(mtd, outp_needBBT);  
+       }
+       else { // Write timeout
+               printk("%s: Write has timed out\n", __FUNCTION__);
+               //*outp_needBBT = 1;
+-              ret = 0;
+-              goto out;
++              EDU_reset_done();
++              EDU_volatileWrite(EDU_BASE_ADDRESS  + EDU_ERR_STATUS, 0x00000000);
++              EDU_volatileWrite(EDU_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_STATUS, HIF_INTR2_EDU_CLEAR_MASK);
++              
++              return 0;
+       }
+-out:
+-      EDU_reset_done();
+-      EDU_volatileWrite(EDU_BASE_ADDRESS  + EDU_ERR_STATUS, 0x00000000);
+-      EDU_volatileWrite(EDU_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_STATUS, HIF_INTR2_EDU_CLEAR_MASK);
++      printk("EDU_write_is_complete(): error 2 hif_err: %08x\n", hif_err);
+-
+-      //printk("EDU_write_is_complete(): error 2 hif_err: %08x\n", hif_err);
+-
+       //Poll time out or did not return HIF_INTR2_EDU_DONE:
+-      return ret;
++      return 0;
+ }
+@@ -1689,7 +1370,7 @@
+ /**
+- * brcmnand_transfer_oob - [Internal] Transfer oob from chip->oob_poi to client buffer
++ * brcmnand_transfer_oob - [Internal] Transfer oob to client buffer
+  * @chip:     nand chip structure
+  * @oob:      oob destination address
+  * @ops:      oob ops structure
+@@ -1727,10 +1408,6 @@
+                               bytes = min_t(size_t, len, free->length);
+                               boffs = free->offset;
+                       }
+-#ifdef DEBUG_ISR
+-printk("%s: AUTO: oob=%p, chip->oob_poi=%p, ooboffs=%d, len=%d, bytes=%d, boffs=%d\n",
+-      __FUNCTION__, oob, chip->oob_poi, ops->ooboffs, len, bytes, boffs);
+-#endif
+                       memcpy(oob, chip->oob_poi + boffs, bytes);
+                       oob += bytes;
+               }
+@@ -1752,7 +1429,7 @@
+               void* buffer, u_char* oobarea, loff_t offset)
+ {
+       struct brcmnand_chip* chip = mtd->priv;
+-      //int retries = 2;
++      int retries = 2, done = 0;
+       static uint32_t oobbuf[4]; // Sparea Area to handle ECC workaround, aligned on DW boundary
+       uint32_t* p32 = (oobarea ?  (uint32_t*) oobarea :  (uint32_t*) &oobbuf[0]);
+       u_char* p8 = (u_char*) p32;
+@@ -1769,31 +1446,7 @@
+       //u_char oobbuf[16];
+       int erased, allFF;
+       int i;
+-      uint32_t acc, acc0;
+-      //int valid;
+-      /*
+-       * First disable Read ECC then re-try read OOB, because some times, the controller
+-       * just drop the op on ECC errors.
+-       */
+-
+-#if 1 /* Testing 1 2 3 */
+-      /* Disable ECC */
+-      acc = brcmnand_ctrl_read(BCHP_NAND_ACC_CONTROL);
+-      acc0 = acc & ~(BCHP_NAND_ACC_CONTROL_RD_ECC_EN_MASK | BCHP_NAND_ACC_CONTROL_RD_ECC_BLK0_EN_MASK);
+-      brcmnand_ctrl_write(BCHP_NAND_ACC_CONTROL, acc0);
+-
+-      chip->ctrl_writeAddr(chip, offset, 0);
+-      PLATFORM_IOFLUSH_WAR();
+-      chip->ctrl_write(BCHP_NAND_CMD_START, OP_SPARE_AREA_READ);
+-
+-      // Wait until cache is filled up, disabling ECC checking
+-      (void) brcmnand_spare_is_valid(mtd, FL_READING, 1);
+-      
+-      // Restore acc
+-      brcmnand_ctrl_write(BCHP_NAND_ACC_CONTROL, acc);
+-#endif
+-
+       for (i = 0; i < 4; i++) {
+               p32[i] = be32_to_cpu (chip->ctrl_read(BCHP_NAND_SPARE_AREA_READ_OFS_0 + i*4));
+       }
+@@ -1801,25 +1454,19 @@
+               erased = (p8[6] == 0xff && p8[7] == 0xff && p8[8] == 0xff);
+               allFF = (p8[6] == 0x00 && p8[7] == 0x00 && p8[8] == 0x00);
+ if (gdebug > 3 ) 
+-{printk("%s: offset=%0llx, erased=%d, allFF=%d\n", 
+-__FUNCTION__, offset, erased, allFF);
++{printk("%s: erased=%d, allFF=%d\n", __FUNCTION__, erased, allFF);
+ print_oobbuf(p8, 16);
+ }
+       }
+       else if (chip->ecclevel >= BRCMNAND_ECC_BCH_1 && chip->ecclevel <= BRCMNAND_ECC_BCH_12) {
+-              erased = 1;
+-              allFF = 0; // Not sure for BCH.
++              erased = allFF = 1;
+               // For BCH-n, the ECC bytes are at the end of the OOB area
+-              for (i=chip->eccOobSize-chip->eccbytes; i<min(16,chip->eccOobSize); i++) {
++              for (i=chip->eccOobSize-chip->eccbytes; i<chip->eccOobSize; i++) {
+                       erased = erased && (p8[i] == 0xff);
+-                      if (!erased) {
+-                              printk("p8[%d]=%02x\n", i, p8[i]); 
+-                              break;
++                      allFF = allFF && (p8[i] == 0x00);
+               }
+-              }
+-if (gdebug > 3 ) 
+-{printk("%s: offset=%0llx, i=%d from %d to %d, eccOobSize=%d, eccbytes=%d, erased=%d, allFF=%d\n",
+-__FUNCTION__, offset, i, chip->eccOobSize-chip->eccbytes, chip->eccOobSize,
++//if (gdebug > 3 ) 
++{printk("%s: eccOobSize=%d, eccbytes=%d, erased=%d, allFF=%d\n", __FUNCTION__, 
+ chip->eccOobSize, chip->eccbytes, erased, allFF);}
+       }
+       else {
+@@ -2134,7 +1781,7 @@
+       static uint32_t oob0[4]; // Sparea Area to handle ECC workaround, aligned on DW boundary
+       uint32_t* p32 = (oobarea ?  (uint32_t*) oobarea :  (uint32_t*) &oob0[0]);
+       u_char* p8 = (u_char*) p32;
+-      //unsigned long irqflags;       
++      unsigned long irqflags; 
+       int retries = 5, done=0;
+       int valid = 0;
+@@ -2257,24 +1904,17 @@
+ print_databuf(buffer, 32);
+ }
+-#if defined( EDU_DEBUG ) || defined (BRCMNAND_READ_VERIFY )
+-//if (in_verify <=0) 
+-if (chip->ecclevel == BRCMNAND_ECC_HAMMING) {
++#ifdef EDU_DEBUG
++if (in_verify <=0) {
+ u_char edu_sw_ecc[4];
+       brcmnand_Hamming_ecc(buffer, edu_sw_ecc);
+-if ((p8[6] != edu_sw_ecc[0] || p8[7] != edu_sw_ecc[1] || p8[8] != edu_sw_ecc[2])
+-      && !(p8[6]==0xff && p8[7]==0xff && p8[8]==0xff &&
+-              edu_sw_ecc[0]==0x0 && edu_sw_ecc[1]==0x0 && edu_sw_ecc[2]==0x0)
+-) {
+        printk("!!!!!!!!! %s: offset=%0llx ECC=%02x%02x%02x, OOB:",
+ in_verify < 0 ? "WR" : "RD",
+ offset, edu_sw_ecc[0], edu_sw_ecc[1], edu_sw_ecc[2]);
+-       print_oobbuf(p8, 16);
+-       BUG();
++       print_oobbuf(oobarea, 16);
+ }
+-}
+ #endif
+@@ -2282,14 +1922,24 @@
+ }
+-/*
+- * Clear the controller cache by reading at a location we don't normally read
+- */
++
++
++#ifdef CONFIG_MTD_BRCMNAND_EDU
++
++
++extern int EDU_buffer_OK(volatile void* addr);
++
++
++#if 1
++static uint32_t debug_buf32[512];
++static u_char* ver_buf = (u_char*) &debug_buf32[0];
++static u_char ver_oob[16];
++
+ static void debug_clear_ctrl_cache(struct mtd_info* mtd)
+ {
+       /* clear the internal cache by writing a new address */
+       struct brcmnand_chip* chip = mtd->priv;
+-      loff_t offset = chip->chipSize-chip->blockSize; // Start of BBT region
++      loff_t offset = chip->chipSize-0x100000; // Start of BBT region
+       
+       chip->ctrl_writeAddr(chip, offset, 0); 
+       PLATFORM_IOFLUSH_WAR();
+@@ -2299,20 +1949,6 @@
+       (void) brcmnand_cache_is_valid(mtd, FL_READING, offset);
+ }
+       
+-#ifdef CONFIG_MTD_BRCMNAND_EDU
+-
+-
+-extern int EDU_buffer_OK(volatile void* addr, int command);
+-
+-
+-#if 1
+-static uint32_t debug_buf32[512];
+-static u_char* ver_buf = (u_char*) &debug_buf32[0];
+-static u_char ver_oob[16];
+-
+-
+-
+-      
+ static void debug_EDU_read(struct mtd_info* mtd, 
+         void* edu_buffer, u_char* edu_oob, loff_t offset, uint32_t intr_status, 
+         uint32_t edu_status, u_char* edu_sw_ecc)
+@@ -2373,126 +2009,213 @@
+ }
+ #endif
++/**
++ * brcmnand_posted_read_cache - [BrcmNAND Interface] Read the 512B cache area
++ * Assuming brcmnand_get_device() has been called to obtain exclusive lock
++ * @param mtd        MTD data structure
++ * @param oobarea    Spare area, pass NULL if not interested
++ * @param buffer    the databuffer to put/get data, pass NULL if only spare area is wanted.
++ * @param offset    offset to read from or write to, must be 512B aligned.
++ * @param raw: Ignore BBT bytes when raw = 1
++ *
++ * Caller is responsible to pass a buffer that is
++ * (1) large enough for 512B for data and optionally an oobarea large enough for 16B.
++ * (2) 4-byte aligned.
++ *
++ * Read the cache area into buffer.  The size of the cache is mtd-->eccsize and is always 512B.
++ */
++//#define EDU_DEBUG_2
++#undef EDU_DEBUG_2
+-#ifdef EDU_DEBUG_4
+-int edu_read_verify(struct mtd_info *mtd, char* buffer, char* oobarea, loff_t offset)
+-{
+-      struct brcmnand_chip* chip = mtd->priv;
+-      static uint32_t oob0[4]; // Sparea Area to handle ECC workaround, aligned on DW boundary
+-      uint32_t* p32 = (oobarea ?  (uint32_t*) oobarea :  (uint32_t*) &oob0[0]);
+-int ctrlret;
++// EDU_DEBUG_4: Verify on Read
++//#define EDU_DEBUG_4
++#undef EDU_DEBUG_4
+-PRINTK("%s: buffer=%08x, ctrlbuf=%08x, oobarea=%08x, ctrl_oob=%08x, offset=%08llx\n", __FUNCTION__, 
+-      buffer, ctrl_buf, oobarea, ctrl_oob, offset);
++// EDU_DEBUG_5: Verify on Write
++//#define EDU_DEBUG_5
++#undef EDU_DEBUG_5
++#if defined( EDU_DEBUG_2 ) || defined( EDU_DEBUG_4 ) 
++/* 3548 internal buffer is 4K in size */
++//static uint32_t edu_lbuf[2048];
++static uint32_t* edu_buf32;
++static uint8_t* edu_buf;      // Used by EDU in Debug2
++static uint8_t* ctrl_buf;     // Used by Ctrl in Debug4
++static uint32_t ctrl_oob32[4];
++static uint8_t* ctrl_oob = (uint8_t*) ctrl_oob32;
++#define PATTERN 0xa55a0000
+-      ctrlret = brcmnand_ctrl_posted_read_cache(mtd, ctrl_buf, ctrl_oob, offset);
+-      //verify_edu_buf();
+-      // Compare buffer returned from EDU and Ctrl reads:
+-      if (0 != memcmp(ctrl_buf, buffer, 512)) {
+-printk("$$$$$$$$$$$$ EDU Read: offset=%08llx\n", offset);
+-print_databuf(buffer, 512);
+-printk("------------ Ctrl Read: \n");
+-print_databuf(ctrl_buf, 512);
+-              BUG();
+-      }
+-      if (oobarea) 
+-      {
+-              if (0 != memcmp(p32, ctrl_oob, 16)) {
+-printk("########## Ctrl OOB:\n");
+-print_oobbuf(ctrl_oob, 16);
+-printk("------------ EDU OOB: \n");
+-print_oobbuf(p32, 16);
+-/* Which one is correct?  Since the data buffers agree, use Hamming codes */
+-                      if (chip->ecclevel == BRCMNAND_ECC_HAMMING) 
+-                      {
+-                              unsigned char ecc1[3]; // SW ECC, manually calculated
+-                              brcmnand_Hamming_WAR(mtd, offset, buffer, &ctrl_oob[6], &ecc1[0]);
+-                              printk("Hamming ECC=%02x%02x%02x\n", ecc1[0], ecc1[1], ecc1[2]);
+-                      }
++#define EDU_BUFSIZE_B (512)
++// One before and one after
++#define EDU_BUF32_SIZE_B (EDU_BUFSIZE_B*3)
++
++// Same as above in DW instead
++#define EDU_BUFSIZE_DW (EDU_BUFSIZE_B/4)
++#define EDU_BUF32_SIZE_DW (EDU_BUF32_SIZE_B/4)
++
++// Real buffer starts at 1/3 
++#define EDU_BUF_START_DW (EDU_BUF32_SIZE_DW/3)
++
++
++static void init_edu_buf(void)
++{
++      /* Write pattern */
++      int i;
++
++      if (!edu_buf32) {
++              edu_buf32 = (uint32_t*) kmalloc(EDU_BUF32_SIZE_B, GFP_KERNEL);
++              if (!edu_buf32) {
++                      printk("%s: Out of memory\n", __FUNCTION__);
+                       BUG();
+               }
++                      
++              edu_buf = ctrl_buf = (uint8_t*)  &edu_buf32[EDU_BUF_START_DW];
++              printk("%s: Buffer allocated at %p, %d bytes\n", __FUNCTION__, edu_buf32, EDU_BUF32_SIZE_B);
++              printk("Real buffer starts at %p\n", ctrl_buf);
+       }
+-      return 0;
++
++      for (i=0; i<EDU_BUF32_SIZE_DW; i++) {
++              edu_buf32[i] = PATTERN | i;
++      }       
+ }
+-#endif // Verify EDU on Read
+-
+-/*
+- * Read completion after EDU_Read is called.
+- * In ISR mode, this routine is run in interrupt context
+- */
+-int
+-brcmnand_edu_read_comp_intr(struct mtd_info* mtd, 
+-        void* buffer, u_char* oobarea, loff_t offset, uint32_t intr_status)
++static int verify_edu_buf(void) 
+ {
+-      struct brcmnand_chip* chip = mtd->priv;
+-      uint32_t intfc_status;
+       int i;
+-      static uint32_t oob0[4]; // Sparea Area to handle ECC workaround, aligned on DW boundary
+-      uint32_t* p32 = (oobarea ?  (uint32_t*) oobarea :  (uint32_t*) &oob0[0]);
++      int ret = 0;
+       
+-      if (intr_status & HIF_INTR2_EDU_ERR) {
+-              printk("%s: Should not call me with EDU ERR\n", __FUNCTION__);
+-              BUG();
++      for (i=0; i<EDU_BUF_START_DW; i++) {
++              if (edu_buf32[i] != (PATTERN | i)) {
++                      printk("############ %s: pattern overwritten at offset %d, expect %08x, found %08x\n", 
++                              __FUNCTION__, i*4, PATTERN | i, edu_buf32[i]);
++                      ret++;
++              }
+       }
+-      intfc_status = chip->ctrl_read(BCHP_NAND_INTFC_STATUS);
+-      if (!(intfc_status & BCHP_NAND_INTFC_STATUS_CTLR_READY_MASK)) {
+-              printk("%s: Impossible, HIF_INTR2_CTRL_READY already asserted\n", __FUNCTION__);
+-              BUG();          
+-      }
+-
+-      // Remember last good sector read.  Needed for HIF_INTR2 workaround.
+-      gLastKnownGoodEcc = offset;
+-      if (oobarea) 
+-      {
+-              PLATFORM_IOFLUSH_WAR();
+-              for (i = 0; i < 4; i++) {
+-                      p32[i] =  be32_to_cpu (chip->ctrl_read(BCHP_NAND_SPARE_AREA_READ_OFS_0 + i*4));
++      for (i=EDU_BUF_START_DW+EDU_BUFSIZE_DW; i<EDU_BUF32_SIZE_DW; i++) {
++              if (edu_buf32[i] != (PATTERN | i)) {
++                      printk("############ %s: pattern overwritten at offset %d, expect %08x, found %08x\n", 
++                              __FUNCTION__, i*4, PATTERN | i, edu_buf32[i]);
++                      ret++;
+               }
+-if (gdebug > 3) {printk("SUCCESS: %s: offset=%0llx, oob=\n", __FUNCTION__, offset); print_oobbuf((u_char*) &p32[0], 16);}
+-      }      
+-
+-      return 0;       
++      }
++if (ret) printk("+++++++++++++++ %s: %d DW overwritten by EDU\n", __FUNCTION__, ret);
++      return ret;
+ }
+-/*
+- * Read WAR after EDU_Read is called, and EDU returns errors.
+- * This routine can only be called in process context
+- */
+-int
+-brcmnand_edu_read_completion(struct mtd_info* mtd, 
+-        void* buffer, u_char* oobarea, loff_t offset, uint32_t intr_status)
++#endif
++
++static int brcmnand_EDU_posted_read_cache(struct mtd_info* mtd, 
++        void* buffer, u_char* oobarea, loff_t offset)
+ {
++
++      int ecc;
++
+       struct brcmnand_chip* chip = mtd->priv;
+-      uint32_t edu_err_status;
++      loff_t sliceOffset = offset & (~ (mtd->eccsize - 1));
++      int i, ret = 0;
+       static uint32_t oob0[4]; // Sparea Area to handle ECC workaround, aligned on DW boundary
+       uint32_t* p32 = (oobarea ?  (uint32_t*) oobarea :  (uint32_t*) &oob0[0]);
+       u_char* p8 = (u_char*) p32;
+-      int ecc;
+-      int ret = 0, i;
++      uint32_t EDU_ldw;
++      uint32_t intr_status;
++      unsigned long irqflags;
++      int retries = 5;
++      
++int save_debug;
++uint32_t edu_status;
+-      if (in_interrupt()) {
+-              printk(KERN_ERR "%s cannot be run in interrupt context\n", __FUNCTION__);
+-              BUG();
++#ifdef EDU_DEBUG_2
++u_char* save_buf = buffer;
++#endif
++
++//if((offset >= (0x3a8148 & ~(0x1FF))) && (offset < ((0x3a8298+0x1F) & ~(0x1FF)))) gdebug=4;
++//gdebug = 4;
++if (gdebug > 3) {
++printk("%s: offset=%0llx, buffer=%p, oobarea=%p\n", __FUNCTION__,  offset, buffer, oobarea);}
++
++#if 0 //def EDU_DEBUG_4
++printk("%s: offset=%0llx, buffer=%p, oobarea=%p\n", __FUNCTION__,  offset, buffer, oobarea);
++#endif
++
++
++      if (unlikely(offset - sliceOffset)) {
++              printk(KERN_ERR "%s: offset %0llx is not cache aligned, sliceOffset=%0llx, CacheSize=%d\n", 
++                __FUNCTION__, offset, sliceOffset, mtd->eccsize);
++              ret = -EINVAL;
++              goto out;
+       }
+-      if (intr_status & HIF_INTR2_EDU_ERR) {
++
++//#if 0 // Testing 1 2 3
++      if (unlikely(!EDU_buffer_OK(buffer))) 
++//#endif
++      {
++if (gdebug>3) printk("++++++++++++++++++++++++ %s: buffer not 32B aligned, trying non-EDU read\n", __FUNCTION__);
++              /* EDU does not work on non-aligned buffers */
++              ret = brcmnand_ctrl_posted_read_cache(mtd, buffer, oobarea, offset);
++              return (ret);
++      }
++
++      if (wr_preempt_en) {
++              // local_irq_save(irqflags);
++      }
++
++#if defined( EDU_DEBUG_2 ) 
++      init_edu_buf();
++
++      buffer = edu_buf;
++
++#elif defined( EDU_DEBUG_4 ) 
++      init_edu_buf();
++      
++#endif
++
++      intr_status = 0;
++      do {
++
++              EDU_ldw =  chip->ctrl_writeAddr(chip, sliceOffset, 0);
++              PLATFORM_IOFLUSH_WAR(); 
++
++              if (intr_status & HIF_INTR2_EBI_TIMEOUT) {
++                      EDU_volatileWrite(EDU_BASE_ADDRESS + BCHP_HIF_INTR2_CPU_CLEAR, HIF_INTR2_EBI_TIMEOUT);
++              }
++              intr_status = EDU_read(buffer, EDU_ldw);
++
++#if 0
++if ((intr_status == ERESTARTSYS) || (intr_status & HIF_INTR2_EBI_TIMEOUT) ) {
++uint32_t rd_data = ISR_volatileRead(EDU_BASE_ADDRESS + BCHP_HIF_INTR2_CPU_STATUS);
++printk("%s: EDU_read returns error %08x , intr=%08x at offset %0llx\n", __FUNCTION__, intr_status, rd_data, offset);
++}
++#endif
++      } while (retries-- > 0 && ((intr_status == ERESTARTSYS) || (intr_status & HIF_INTR2_EBI_TIMEOUT) ));
++
++      if (retries <= 0 && ((intr_status == ERESTARTSYS) || (intr_status & HIF_INTR2_EBI_TIMEOUT))) { // EBI Timeout
++              // Use controller read
++              printk("%s: EBI timeout, use controller read at offset %0llx\n", __FUNCTION__, offset);
++              ret = brcmnand_ctrl_posted_read_cache(mtd, buffer, oobarea, offset);
++              return (ret); 
++      }
++
++      else if (intr_status & HIF_INTR2_EDU_ERR) {
+               if (wr_preempt_en) {
+                       //local_irq_restore(irqflags);
+               }
+-              edu_err_status = EDU_volatileRead(EDU_BASE_ADDRESS + EDU_ERR_STATUS);
++              edu_status = EDU_volatileRead(EDU_BASE_ADDRESS + EDU_ERR_STATUS);
++//if (edu_status == 0)
++//    printk("+++++++++++ %s:offset=%0llx Intr=%08x but EDU_status=%08x, LKG=%0llx\n", __FUNCTION__, 
++//            offset, intr_status, edu_status, gLastKnownGoodEcc);
++
+ /**** WAR WAR WAR WAR WAR WAR WAR WAR WAR WAR WAR WAR WAR WAR WAR WAR WAR */
+               /* Do a dummy read on a known good ECC sector to clear error */
+-              if (edu_err_status) {
+-                      static uint8_t myBuf2[512+31];
+-                      // EDU aligned
+-                      uint8_t* tmpBuf = (uint8_t*)  ((((unsigned int) &myBuf2[0]) + 31) & (~31));
+-                      
++              if (edu_status) {
++                      static uint32_t tmpBuf[128];
+                       // We start from the BBT, since these would (hopefully) always be good sectors.
+                       loff_t tmpOffset = chip->chipSize - 512;
++//printk("Handle HIF_INTR2_UNC_ERR: Step 1: @offset %0llx\n", offset);
++//print_oobreg(chip);
++
+                       // First make sure that there is a last known good sector
+                       while (gLastKnownGoodEcc == 0 && tmpOffset >= 0) {
+                               ret = brcmnand_ctrl_posted_read_cache(mtd, tmpBuf, NULL, tmpOffset);
+@@ -2502,21 +2225,22 @@
+                               uint32_t lkgs;
+                               // Clear the error condition
+                               //(void) brcmnand_EDU_posted_read_cache(mtd, tmpBuf, NULL, gLastKnownGoodEcc);
++                              lkgs =  chip->ctrl_writeAddr(chip, gLastKnownGoodEcc, 0);
++                              PLATFORM_IOFLUSH_WAR(); 
+-
+                                // Use Register Array
+                               // EDU_ldw = BCHP_PHYSICAL_OFFSET + BCHP_NAND_FLASH_CACHEi_ARRAY_BASE;
+-#ifdef CONFIG_MTD_BRCMNAND_ISR_QUEUE
+-                              // Reset EDU
+-                              ISR_push_request(mtd, tmpBuf, NULL, tmpOffset);
+-#else
+-                              lkgs =  chip->ctrl_writeAddr(chip, gLastKnownGoodEcc, 0);
+-                              PLATFORM_IOFLUSH_WAR(); 
+                               intr_status = EDU_read(buffer, lkgs);
+-#endif
+-
++//printk("intr_status returns from dummy read at offset %0llx: %08x\n", gLastKnownGoodEcc, intr_status);
++//printk("Handle HIF_INTR2_UNC_ERR: Step 2:\n");
++//print_oobreg(chip);
+                               ret = brcmnand_ctrl_posted_read_cache(mtd, buffer, p8, offset);
+-
++//printk("Handle HIF_INTR2_UNC_ERR: Step 3:\n");
++//print_oobreg(chip);
++//if (oobarea) 
++{
++//    printk("Unc Error WAR OOB="); print_oobbuf(p8, 16);
++}
+                               return ret;
+                       }
+                       // else there can be no workaround possible, use controller read
+@@ -2525,8 +2249,16 @@
+                       }
+               }
+ /**** ENDWAR ENDWAR ENDWAR ENDWAR */
++
++              // If error was not due to UNC or COR errors, or poll timeout, try the old-fashioned way
++              //ret = brcmnand_ctrl_posted_read_cache(mtd, buffer, oobarea, offset);
++              //return (ret);
+       }
+               
++
++//if (intr_status & HIF_INTR2_EDU_ERR)
++//    printk("%s: EDU_read returns error at offset=%0llx, intr_status=%08x\n", __FUNCTION__, offset, intr_status);
++
+       /*
+        * Wait for Controller ready, which indicates the OOB and buffer are ready to be read.
+        */
+@@ -2563,7 +2295,7 @@
+                       for (i = 0; i < 4; i++) {
+                               p32[i] =  be32_to_cpu (chip->ctrl_read(BCHP_NAND_SPARE_AREA_READ_OFS_0 + i*4));
+                       }
+-if (gdebug > 3) {printk("SUCCESS: %s: offset=%0llx, oob=\n", __FUNCTION__, offset); print_oobbuf((u_char*) &p32[0], 16);}
++if (gdebug > 3) {printk("SUCCESS: %s: offset=%0llx, oob=\n", __FUNCTION__, sliceOffset); print_oobbuf((u_char*) &p32[0], 16);}
+               }      
+               ret = 0;            // Success!
+               break;
+@@ -2571,7 +2303,9 @@
+       case BRCMEDU_CORRECTABLE_ECC_ERROR:
+               /* FALLTHRU */                
+       case BRCMNAND_CORRECTABLE_ECC_ERROR:
+-
++{save_debug = gdebug;
++//gdebug = 4;
++//edu_debug = 4;
+ printk("+++++++++++++++ CORRECTABLE_ECC: offset=%0llx  ++++++++++++++++++++\n", offset);
+               // Have to manually copy.  EDU drops the buffer on error - even correctable errors
+               if (buffer) {
+@@ -2584,7 +2318,7 @@
+                       for (i = 0; i < 4; i++) {
+                               p32[i] =  be32_to_cpu (chip->ctrl_read(BCHP_NAND_SPARE_AREA_READ_OFS_0 + i*4));
+                       }
+-if (gdebug > 3) {printk("CORRECTABLE: %s: offset=%0llx, oob=\n", __FUNCTION__, offset); print_oobbuf(oobarea, 16);}
++if (gdebug > 3) {printk("CORRECTABLE: %s: offset=%0llx, oob=\n", __FUNCTION__, sliceOffset); print_oobbuf(oobarea, 16);}
+               }
+ #ifndef DEBUG_HW_ECC // Comment out for debugging
+@@ -2604,7 +2338,7 @@
+                               }
+                       }
+               }
+-              
++gdebug = edu_debug = save_debug;}
+             break;
+       case BRCMEDU_UNCORRECTABLE_ECC_ERROR:
+@@ -2612,13 +2346,16 @@
+               {
+                       int valid;
+               
+-
++save_debug = gdebug;
++//gdebug = 4;
++//edu_debug = 4;
++//
+ PRINTK("************* UNCORRECTABLE_ECC (offset=%0llx) ********************\n", offset);
+                       /*
+                        * THT: Since EDU does not handle OOB area, unlike the UNC ERR case of the ctrl read,
+                        * we have to explicitly read the OOB, before calling the WAR routine.
+                        */
+-                      chip->ctrl_writeAddr(chip, offset, 0);
++                      chip->ctrl_writeAddr(chip, sliceOffset, 0);
+                       chip->ctrl_write(BCHP_NAND_CMD_START, OP_SPARE_AREA_READ);
+                       // Wait until spare area is filled up
+@@ -2635,6 +2372,8 @@
+ printk("************* UNCORRECTABLE_ECC (offset=%0llx) valid!=0 ********************\n", offset);
+                               ret = -EBADMSG;
+                       }
++if (!ret)
++{gdebug = edu_debug = save_debug;}
+               }
+               break;
+               
+@@ -2661,126 +2400,73 @@
+     
+ out:
+-
+-//gdebug=0;
+-    return ret;
+-}
+-
+-
+-  #ifndef CONFIG_MTD_BRCMNAND_ISR_QUEUE
+-/**
+- * brcmnand_posted_read_cache - [BrcmNAND Interface] Read the 512B cache area
+- * Assuming brcmnand_get_device() has been called to obtain exclusive lock
+- * @param mtd        MTD data structure
+- * @param oobarea    Spare area, pass NULL if not interested
+- * @param buffer    the databuffer to put/get data, pass NULL if only spare area is wanted.
+- * @param offset    offset to read from or write to, must be 512B aligned.
+- * @param raw: Ignore BBT bytes when raw = 1
+- *
+- * Caller is responsible to pass a buffer that is
+- * (1) large enough for 512B for data and optionally an oobarea large enough for 16B.
+- * (2) 4-byte aligned.
+- *
+- * Read the cache area into buffer.  The size of the cache is mtd-->eccsize and is always 512B.
+- */
+-
+-
+-static int brcmnand_EDU_posted_read_cache(struct mtd_info* mtd, 
+-        void* buffer, u_char* oobarea, loff_t offset)
++#if 0
+ {
++//if (!ret) 
++      u_char edu_sw_ecc[4];
+-      //int ecc;
++      debug_EDU_read(mtd, buffer, oobarea, offset, intr_status, edu_status, edu_sw_ecc);
+-      struct brcmnand_chip* chip = mtd->priv;
+-      loff_t sliceOffset = offset & (~ (mtd->eccsize - 1));
+-      int i, ret = 0;
+-      //static uint32_t oob0[4]; // Sparea Area to handle ECC workaround, aligned on DW boundary
+-      //uint32_t* p32 = (oobarea ?  (uint32_t*) oobarea :  (uint32_t*) &oob0[0]);
+-      //u_char* p8 = (u_char*) p32;
+-      uint32_t EDU_ldw;
+-      uint32_t intr_status;
+-      unsigned long irqflags;
+-      int retries = 5;
+-      
+-int save_debug;
+-uint32_t edu_status;
+-
+-#ifdef EDU_DEBUG_2
+-u_char* save_buf = buffer;
++       printk("!!!!!!!!! RD: offset=%0llx ECC=%02x%02x%02x, OOB:",
++offset, edu_sw_ecc[0], edu_sw_ecc[1], edu_sw_ecc[2]);
++       print_oobbuf(oobarea, 16);
++}
+ #endif
+-//if((offset >= (0x3a8148 & ~(0x1FF))) && (offset < ((0x3a8298+0x1F) & ~(0x1FF)))) gdebug=4;
+-//gdebug = 4;
+-if (gdebug > 3) {
+-printk("%s: offset=%0llx, buffer=%p, oobarea=%p\n", __FUNCTION__,  offset, buffer, oobarea);}
+-
+-#if 0 //def EDU_DEBUG_4
+-printk("%s: offset=%0llx, buffer=%p, oobarea=%p\n", __FUNCTION__,  offset, buffer, oobarea);
++#if 0
++if (offset <= 0x3a3600 && (offset+512) > 0x3a3600) {
++printk("@@@@@@@@@ Dump EDU Read around 0x3a3600:\n");
++print_databuf(buffer, 512);print_oobbuf(p32, 16);
++}
+ #endif
++#ifdef EDU_DEBUG_4
++{
++int ctrlret;
+-      if (unlikely(offset - sliceOffset)) {
+-              printk(KERN_ERR "%s: offset %0llx is not cache aligned, sliceOffset=%0llx, CacheSize=%d\n", 
+-                __FUNCTION__, offset, sliceOffset, mtd->eccsize);
+-              ret = -EINVAL;
+-              return (ret);
++      ctrlret = brcmnand_ctrl_posted_read_cache(mtd, ctrl_buf, ctrl_oob, offset);
++      //verify_edu_buf();
++      // Compare buffer returned from EDU and Ctrl reads:
++      if (0 != memcmp(ctrl_buf, buffer, 512)) {
++printk("$$$$$$$$$$$$ Read buffer from Ctrl & EDU read-ops differ at offset %0llx, intr_status=%08x, ecc=%d\n", 
++      offset, intr_status, ecc);
++printk("$$$$$$$$$$$$ EDU Read:\n");
++print_databuf(buffer, 512);
++printk("------------ Ctrl Read: \n");
++print_databuf(edu_buf, 512);
++              BUG();
+       }
+-
+-//#if 0 // Testing 1 2 3
+-      if (unlikely(!EDU_buffer_OK(buffer, EDU_READ))) 
+-//#endif
++      //if (oobarea) 
+       {
+-if (gdebug>3) printk("++++++++++++++++++++++++ %s: buffer not 32B aligned, trying non-EDU read\n", __FUNCTION__);
+-              /* EDU does not work on non-aligned buffers */
+-              ret = brcmnand_ctrl_posted_read_cache(mtd, buffer, oobarea, offset);
+-              return (ret);
++              if (0 != memcmp(p32, ctrl_oob, 16)) {
++printk("########## Read OOB from Ctrl & EDU read-ops differ at offset %0llx, intr_status=%08x, ecc=%d\n", 
++      offset,  intr_status, ecc);
++printk("########## Ctrl OOB:\n");
++print_oobbuf(ctrl_oob, 16);
++printk("------------ EDU OOB: \n");
++print_oobbuf(p32, 16);
++/* Which one is correct?  Since the data buffers agree, use Hamming codes */
++                      if (chip->ecclevel == BRCMNAND_ECC_HAMMING) 
++                      {
++                              unsigned char ecc1[3]; // SW ECC, manually calculated
++                              brcmnand_Hamming_WAR(mtd, offset, buffer, &ctrl_oob[6], &ecc1[0]);
++                              printk("Hamming ECC=%02x%02x%02x\n", ecc1[0], ecc1[1], ecc1[2]);
++                      }
++                      BUG();
++              }
+       }
++}
++#endif // Verify EDU on Read
+-      if (wr_preempt_en) {
+-              // local_irq_save(irqflags);
+-      }
+-
+-#if defined( EDU_DEBUG_2 ) 
+-      init_edu_buf();
+-
+-      buffer = edu_buf;
+-
+-#elif defined( EDU_DEBUG_4 )
+-      init_edu_buf();
+-      
+-#endif
+-
+-      intr_status = 0;
+-      do {
+-
+-              EDU_ldw =  chip->ctrl_writeAddr(chip, sliceOffset, 0);
+-              PLATFORM_IOFLUSH_WAR(); 
+-
+-              if (intr_status & HIF_INTR2_EBI_TIMEOUT) {
+-                      EDU_volatileWrite(EDU_BASE_ADDRESS + BCHP_HIF_INTR2_CPU_CLEAR, HIF_INTR2_EBI_TIMEOUT);
+-              }
+-              intr_status = EDU_read(buffer, EDU_ldw);
+-              
+-      } while (retries-- > 0 && ((intr_status == ERESTARTSYS) || (intr_status & HIF_INTR2_EBI_TIMEOUT) ));
+-
+-
+-      ret = brcmnand_edu_read_completion(mtd, buffer, oobarea, offset, intr_status);
+-
+-//gdebug=0;
++gdebug=0;
+     return ret;
+ }
+-
+ static int (*brcmnand_posted_read_cache)(struct mtd_info*, 
+               void*, u_char*, loff_t) = brcmnand_EDU_posted_read_cache;
+-  
+-  #else /* Queue Mode */
+-static int (*brcmnand_posted_read_cache)(struct mtd_info*, 
+-              void*, u_char*, loff_t) = brcmnand_ctrl_posted_read_cache;
+-  #endif
+-#else 
++#else
+ static int (*brcmnand_posted_read_cache)(struct mtd_info*, 
+               void*, u_char*, loff_t) = brcmnand_ctrl_posted_read_cache;
+ #endif
+@@ -2805,33 +2491,16 @@
+       loff_t sliceOffset = offset & (~(mtd->eccsize - 1));
+       int i, ret = 0, valid, done = 0;
+       int retries = 5;
+-      //unsigned long irqflags;
++      unsigned long irqflags;
+       
+ //char msg[20];
+-#if CONFIG_MTD_BRCMNAND_VERSION >= CONFIG_MTD_BRCMNAND_VERS_3_0
+-      static uint8_t myBuf2[512+31]; // Place holder only.
+-      static uint8_t* myBuf = NULL;
+-
+-      /*
+-       * Force alignment on 32B boundary
+-       */
+-      if (!myBuf) {
+-              myBuf = (uint8_t*)  ((((unsigned int) &myBuf2[0]) + 31) & (~31));
+-      }
+-      
+-  #if CONFIG_MTD_BRCMNAND_VERSION == CONFIG_MTD_BRCMNAND_VERS_3_0
+-      {
+-              // PR2516.  Not a very good WAR, but the affected chips (3548A0,7443A0) have been EOL'ed
+-              return brcmnand_ctrl_posted_read_cache(mtd, (void*) myBuf, oobarea, offset);
+-      }
+-
+-  #else /* 3.1 or later */
+-      // If BCH codes, force full page read to activate ECC correction on OOB bytes.
+-      if (chip->ecclevel != BRCMNAND_ECC_HAMMING && chip->ecclevel != BRCMNAND_ECC_DISABLE) {
+-              return brcmnand_ctrl_posted_read_cache(mtd, (void*) myBuf, oobarea, offset);
+-      }
+-  #endif
++#if CONFIG_MTD_BRCMNAND_VERSION == CONFIG_MTD_BRCMNAND_VERS_3_0
++{
++      // PR2516.  Not a very good WAR, but the affected chips (3548A0,7443A0) have been EOL'ed
++      static uint32_t myBuf[128]; // Place holder only.
++      return brcmnand_ctrl_posted_read_cache(mtd, (void*) myBuf, oobarea, offset);
++}
+ #endif
+ if (gdebug > 3 ) PRINTK("->%s: offset=%0llx\n", __FUNCTION__, offset);
+@@ -2921,151 +2590,6 @@
+       return ret;
+ }
+-
+-//#ifdef CONFIG_MTD_BRCMNAND_EDU
+-
+-//#define EDU_DEBUG_3
+-#undef EDU_DEBUG_3
+-
+-#if 0 //defined( EDU_DEBUG_3 ) || defined( EDU_DEBUG_5 ) || defined(BRCMNAND_WRITE_VERIFY )
+-
+-
+-/*
+- * Returns 0 on no errors.
+- * THis should never be called, because partial writes may screw up the verify-read.
+- */
+-static int edu_write_verify(struct mtd_info *mtd,
+-        const void* buffer, const u_char* oobarea, loff_t offset)
+-{
+-      struct brcmnand_chip* chip = mtd->priv;
+-      static uint8_t sw_ecc[4];
+-      static uint32_t read_oob[4];
+-      static uint8_t write_oob[16];
+-      uint8_t* oobpoi = (uint8_t*) &read_oob[0];
+-      int ret = 0;
+-
+-      // Dump the register, done immediately after EDU_Write returns
+-      // dump_nand_regs(chip, offset);
+-
+-      if ( chip->ecclevel != BRCMNAND_ECC_HAMMING) {
+-              // Read back the data, but first clear the internal cache first.
+-              debug_clear_ctrl_cache(mtd);
+-
+-              ret = brcmnand_ctrl_posted_read_cache(mtd, edu_write_buf, oobpoi, offset);
+-              if (ret) {
+-                      printk("+++++++++++++++++++++++ %s: Read Verify returns %d\n", __FUNCTION__, ret);
+-                      goto out;
+-              }
+-              if (0 != memcmp(buffer, edu_write_buf, 512)) {
+-                      printk("+++++++++++++++++++++++ %s: WRITE buffer differ with READ-Back buffer\n",
+-                      __FUNCTION__);
+-                      ret = (-1);
+-                      goto out;
+-              }
+-              if (oobarea) { /* For BCH, the ECC is at the end */
+-                      // Number of bytes to compare (with ECC bytes taken out)
+-                      int numFree = min(16, chip->eccOobSize - chip->eccbytes);
+-                      
+-                      if (memcmp(oobarea, oobpoi, numFree)) {
+-                              printk("+++++++++++++++++++++++ %s: BCH-%-d OOB comp failed, numFree=%d\n", 
+-                                      __FUNCTION__, chip->ecclevel, numFree);
+-                              printk("In OOB:\n"); print_oobbuf(oobarea, 16);
+-                              printk("\nVerify OOB:\n"); print_oobbuf(oobpoi, 16);
+-                              ret = (-2);
+-                              goto out;
+-                      }
+-              }
+-              return 0;
+-      }
+-      
+-      // Calculate the ECC
+-      // brcmnand_Hamming_ecc(buffer, sw_ecc);
+-
+-      // Read back the data, but first clear the internal cache first.
+-      debug_clear_ctrl_cache(mtd);
+-
+-in_verify = -1;               
+-      ret = brcmnand_ctrl_posted_read_cache(mtd, edu_write_buf, oobpoi, offset);
+-in_verify = 0;
+-
+-      if (ret) {
+-              printk("+++++++++++++++++++++++ %s: Read Verify returns %d\n", __FUNCTION__, ret);
+-              goto out;
+-      }
+-
+-#if 0
+-      if (sw_ecc[0] != oobpoi[6] || sw_ecc[1] != oobpoi[7] || sw_ecc[2] != oobpoi[8]) {
+-printk("+++++++++++++++++++++++ %s: SWECC=%02x%02x%02x ReadOOB=%02x%02x%02x, buffer=%p, offset=%0llx\n",
+-                      __FUNCTION__, 
+-                      sw_ecc[0], sw_ecc[1], sw_ecc[2], oobpoi[6], oobpoi[7], oobpoi[8], buffer, offset);
+-              
+-              ret = (-1);
+-              goto out;
+-      }
+-#endif
+-
+-      // Verify the OOB if not NULL
+-      if (oobarea) {
+-              //memcpy(write_oob, oobarea, 16);
+-              //write_oob[6] = sw_ecc[0];
+-              //write_oob[7] = sw_ecc[1];
+-              //write_oob[8] = sw_ecc[2];
+-              if (memcmp(oobarea, oobpoi, 6) || memcmp(&oobarea[9], &oobpoi[9],7)) {
+-                      printk("+++++++++++++++++++++++ %s: OOB comp Hamming failed\n", __FUNCTION__);
+-                      printk("In OOB:\n"); print_oobbuf(oobarea, 16);
+-                      printk("\nVerify OOB:\n"); print_oobbuf(oobpoi, 16);
+-                      ret = (-2);
+-                      goto out;
+-              }
+-      }
+-
+-out:
+-if (ret) {
+-      int i, j, k;
+-      uint8_t* writeBuf = (uint8_t*) buffer;
+-//for (i=0; i<2; i++) 
+-{
+-// Let user land completes its run to avoid garbled printout
+-//schedule();
+-for (j=0; j<512; j++) {
+-      if (writeBuf[j] != edu_write_buf[j]) {
+-              printk("Buffers differ at offset %04x\n", j);
+-              break;
+-      }
+-}
+-printk("$$$$$$$$$$$$$$$$$ Register dump:\n");
+-printk("\n");
+-printk("\n");
+-printk("\n");
+-printk("\n");
+-for (k=0; k<numDumps; k++) {
+-printk("\n");
+-printk("\n");
+-printk("$$$$$$$$$$$$$$$$$ Register dump snapshot #%d:\n", k+1);
+-print_dump_nand_regs(k);
+-printk("\n");
+-}
+-printk("\n");
+-printk("\n");
+-printk("EDU_write 99, ret=%d, offset=%0llx, buffer=%p\n", ret, offset, buffer);
+-printk("Write buffer:\n"); print_databuf(buffer, 512);
+-if (oobarea) { printk("Write OOB: "); print_oobbuf(oobarea, 512); }
+-printk("Read back buffer:\n"); print_databuf(edu_write_buf, 512);
+-if (oobarea) { printk("Read OOB: "); print_oobbuf(write_oob, 512); }
+-
+-//printk("$$$$$$$$$$$$$$$$$ Register dump:\n");
+-//print_dump_nand_regs();
+-}
+-}
+-      return ret;
+-}
+-
+-
+-#else
+-#define edu_write_verify(...) (0)
+-#endif
+-
+-
+ /**
+  * brcmnand_posted_write - [BrcmNAND Interface] Write a buffer to the flash cache
+  * Assuming brcmnand_get_device() has been called to obtain exclusive lock
+@@ -3160,136 +2684,89 @@
+ }
+-
+ #ifdef CONFIG_MTD_BRCMNAND_EDU
+-   #ifdef CONFIG_MTD_BRCMNAND_ISR_QUEUE
++#error
+-   /*
+-    * Performs WAR for queue-write. Currently, it is always called with needBBT=1
+-    * Runs in process context.
+-    * Return 0 on success, error codes on errors.
+-    */
+-int
+-brcmnand_edu_write_war(struct mtd_info *mtd,
+-        const void* buffer, const u_char* oobarea, loff_t offset, uint32_t intr_status, 
+-        int needBBT)
+-{
+-      struct brcmnand_chip* chip = mtd->priv;
+-      int ret = 0;
++//#define EDU_DEBUG_3
++#undef EDU_DEBUG_3
++#ifdef EDU_DEBUG_3
+-      if (!(intr_status & HIF_INTR2_CTRL_READY)) {
+-              printk("%s: Impossible, ctrl-ready asserted in interrupt handler\n", __FUNCTION__);
+-              BUG();
+-      }
++static uint8_t edu_write_buf[512];
+-      if (!needBBT) 
+-      {
+-              ret = 0;
+-      }
+-      else
+-      { // Need BBT
+-#if 1 //defined (ECC_CORRECTABLE_SIMULATION) || defined(ECC_UNCORRECTABLE_SIMULATION) || defined(WR_BADBLOCK_SIMULATION)
+-              printk("%s: Marking bad block @%0llx\n", __FUNCTION__, offset);
+-#endif            
+-              ret = chip->block_markbad(mtd, offset);
+-              ret = -EINVAL;
+-      }
+-
+-#if defined(EDU_DEBUG_5) // || defined( CONFIG_MTD_BRCMNAND_VERIFY_WRITE )
+-//gdebug = 0;
+-      if (0 == ret) {
+-              if (edu_write_verify(mtd, buffer, oobarea, offset)) {
+-                      BUG();
+-              }
+-      }
+-
+-#endif
+-      return ret;
+-}
+-
+-// When buffer is nor aligned as per EDU requirement, use controller-write
+-static int (*brcmnand_posted_write_cache)(struct mtd_info*, 
+-              const void*, const u_char*, loff_t) = brcmnand_ctrl_posted_write_cache; 
+-
+-  #else //#ifndef CONFIG_MTD_BRCMNAND_ISR_QUEUE
+-
+-/*
+- * Write completion after EDU_Read is called.
+- * Non-Queue mode
+- */
+-static int
+-brcmnand_edu_write_completion(struct mtd_info *mtd,
+-        const void* buffer, const u_char* oobarea, loff_t offset, uint32_t intr_status, uint32_t physAddr)
++static int edu_write_verify(struct mtd_info *mtd,
++        const void* buffer, const u_char* oobarea, loff_t offset)
+ {
+       struct brcmnand_chip* chip = mtd->priv;
+-      int comp;
+-      int needBBT;
+-      int ret;
++      static uint8_t sw_ecc[4];
++      static uint32_t read_oob[4];
++      static uint8_t write_oob[16];
++      uint8_t* oobpoi = (uint8_t*) &read_oob[0];
++      int ret = 0;
+-
+-#ifdef CONFIG_MTD_BRCMNAND_USE_ISR
+-      if (!(intr_status & HIF_INTR2_CTRL_READY)) {
+-              printk("%s: Impossible, ctrl-ready asserted in interrupt handler\n", __FUNCTION__);
+-              BUG();
+-      }
+-#else
+-      // Wait until flash is ready.  
+-      // Becareful here.  Since this can be called in interrupt context,
+-      // we cannot call sleep or schedule()
+-      comp = brcmnand_EDU_write_is_complete(mtd, &needBBT);
+-
+-      // Already done in interrupt handler
+-      (void) dma_unmap_single(NULL, physAddr, EDU_LENGTH_VALUE, DMA_TO_DEVICE);
+-#endif
+-
+-      if (comp) 
+-      {
+-              if (!needBBT) 
+-              {
+-                      ret = 0;
+-                      goto out;
++      if (chip->ecclevel != BRCMNAND_ECC_HAMMING) {
++              ret = brcmnand_ctrl_posted_read_cache(mtd, edu_write_buf, oobpoi, offset);
++              if (ret) {
++                      printk("+++++++++++++++++++++++ %s: Read Verify returns %d\n", __FUNCTION__, ret);
++                      return ret;
+               }
+-              else
+-              { // Need BBT
+-#if 1 //defined (ECC_CORRECTABLE_SIMULATION) || defined(ECC_UNCORRECTABLE_SIMULATION) || defined(WR_BADBLOCK_SIMULATION)
+-                      printk("%s: Marking bad block @%0llx\n", __FUNCTION__, offset);
+-#endif            
+-                      ret = chip->block_markbad(mtd, offset);
+-                      ret = -EINVAL;
+-                      //ret = -EINVAL;
+-                      goto out;
++              if (0 != memcmp(buffer, edu_write_buf, 512)) {
++                      printk("+++++++++++++++++++++++ %s: WRITE buffer differ with READ-Back buffer\n",
++                      __FUNCTION__);
++                      return (-1);
+               }
++              if (oobarea) {
++                      if (memcmp(oobarea, oobpoi, 16)) {
++                              printk("+++++++++++++++++++++++ %s: OOB comp failed\n", __FUNCTION__);
++                              printk("In OOB:\n"); print_oobbuf(oobarea, 16);
++                              printk("\nVerify OOB:\n"); print_oobbuf(oobpoi, 16);
++                      }
++              }
++              return 0;
+       }
++      
++      // Calculate the ECC
++      brcmnand_Hamming_ecc(buffer, sw_ecc);
+-      //Write has timed out or read found bad block. TBD: Find out which is which
+-      printk(KERN_INFO "%s: Timeout at offset %0llx\n", __FUNCTION__, offset);
+-      // Marking bad block
+-      if (needBBT) {
+-              printk("%s: Marking bad block @%0llx\n", __FUNCTION__, offset);
+-    
+-              ret = chip->block_markbad(mtd, offset);
+-              ret = -EINVAL;
+-              //ret = -EINVAL;
+-              goto out;
+-      }               
+-      ret = -ETIMEDOUT;
++      // Read back the data, but first clear the internal cache first.
++      debug_clear_ctrl_cache(mtd);
+-out:
++in_verify = -1;               
++      ret = brcmnand_ctrl_posted_read_cache(mtd, edu_write_buf, oobpoi, offset);
++in_verify = 0;
+-#if defined(EDU_DEBUG_5) // || defined( CONFIG_MTD_BRCMNAND_VERIFY_WRITE )
+-//gdebug = 0;
+-      if (0 == ret) {
+-              if (edu_write_verify(mtd, buffer, oobarea, offset)) {
+-                      BUG();
+-              }
+-      }
++      if (ret) {
++              printk("+++++++++++++++++++++++ %s: Read Verify returns %d\n", __FUNCTION__, ret);
++              return ret;
++      }
+-#endif
++      if (sw_ecc[0] != oobpoi[6] || sw_ecc[1] != oobpoi[7] || sw_ecc[2] != oobpoi[8]) {
++              printk("+++++++++++++++++++++++ %s: SWECC=%02x%02x%02x ReadOOB=%02x%02x%02x\n",
++                      __FUNCTION__, 
++                      sw_ecc[0], sw_ecc[1], sw_ecc[2], oobpoi[6], oobpoi[7], oobpoi[8]);
++              return (-1);
++      }
++
++      // Verify the OOB if not NULL
++      if (oobarea) {
++              memcpy(write_oob, oobarea, 16);
++              write_oob[6] = sw_ecc[0];
++              write_oob[7] = sw_ecc[1];
++              write_oob[8] = sw_ecc[2];
++              if (memcmp(write_oob, oobpoi, 16)) {
++                      printk("+++++++++++++++++++++++ %s: OOB comp failed\n", __FUNCTION__);
++                      printk("In OOB:\n"); print_oobbuf(write_oob, 16);
++                      printk("\nVerify OOB:\n"); print_oobbuf(oobpoi, 16);
++              }
++      }
+       return ret;
+ }
++#else
++#define edu_write_verify(...) (0)
++#endif
++
+ /**
+  * brcmnand_posted_write - [BrcmNAND Interface] Write a buffer to the flash cache
+  * Assuming brcmnand_get_device() has been called to obtain exclusive lock
+@@ -3307,14 +2784,12 @@
+       uint32_t* p32;
+       int i; 
+       int ret;
+-      int comp = 0;
+       struct brcmnand_chip* chip = mtd->priv;    
+       int needBBT=0;
+       loff_t sliceOffset = offset & (~ (mtd->eccsize - 1));
+       uint32_t EDU_ldw;
+       int retries = 5;
+-      uint32_t physAddr;
+ #ifdef WR_BADBLOCK_SIMULATION
+       unsigned long tmp = (unsigned long) offset;
+@@ -3333,7 +2808,7 @@
+               goto out;
+       }
+-      if (unlikely(!EDU_buffer_OK(buffer, EDU_WRITE))) {
++      if (unlikely(!EDU_buffer_OK(buffer))) {
+               // EDU requires the buffer to be DW-aligned
+ PRINTK("%s: Buffer %p not suitable for EDU at %0llx, trying ctrl read op\n", __FUNCTION__, buffer, offset);
+               ret = brcmnand_ctrl_posted_write_cache(mtd, buffer, oobarea, offset);
+@@ -3362,26 +2837,23 @@
+               PLATFORM_IOFLUSH_WAR(); // Check if this line may be taken-out
++      //chip->ctrl_write(BCHP_NAND_CMD_START, OP_PROGRAM_PAGE);
+               if (ret & HIF_INTR2_EBI_TIMEOUT) {
+                       EDU_volatileWrite(EDU_BASE_ADDRESS + BCHP_HIF_INTR2_CPU_CLEAR, HIF_INTR2_EBI_TIMEOUT);
+               }
+-              ret = EDU_write(buffer, EDU_ldw, &physAddr);
+-
++              ret = EDU_write(buffer, EDU_ldw);
+               if (ret) {
+                       // Nothing we can do, because, unlike read op, where we can just call the traditional read,
+                       // here we may need to erase the flash first before we can write again.
+-//printk("EDU_write returns %d, trying ctrl write \n", ret);
+-//                    ret = brcmnand_ctrl_posted_write_cache(mtd, buffer, oobarea, offset);
++                      ret = brcmnand_ctrl_posted_write_cache(mtd, buffer, oobarea, offset);
+                       goto out;
+               }
+       
+-//printk("EDU50\n");
++// printk("EDU50\n");
+               // Wait until flash is ready
+-              comp = brcmnand_EDU_write_is_complete(mtd, &needBBT);
+-
+-              (void) dma_unmap_single(NULL, physAddr, EDU_LENGTH_VALUE, DMA_TO_DEVICE);
++              ret = brcmnand_EDU_write_is_complete(mtd, &needBBT);
+       }while (retries-- > 0 && ((ret == ERESTARTSYS) || (ret & HIF_INTR2_EBI_TIMEOUT)));
+       if (retries <= 0 && ((ret == ERESTARTSYS) || (ret & HIF_INTR2_EBI_TIMEOUT))) { 
+@@ -3390,9 +2862,18 @@
+               goto out;
+       }
++#ifdef WR_BADBLOCK_SIMULATION
++      if((tmp == wrBadBlockFailLocation) && (bScanBypass_badBlock == 0))
++      {
++              wrFailLocationOffset.s.high = 0;
++              wrFailLocationOffset.s.low = wrBadBlockFailLocation;
++              printk("Creating new bad block @ %0llx\n", EDU_sprintf(brcmNandMsg, wrFailLocationOffset.ll, this->xor_invert_val));
++              needBBT = 1;
++              ret = 1;
++      }
++#endif 
+-
+-      if (comp) 
++      if (ret) 
+       {
+               if (!needBBT) 
+               {
+@@ -3425,10 +2906,10 @@
+       ret = -ETIMEDOUT;
+ out:
++// printk("EDU99\n");
++//gdebug = 0;
+-
+ #if defined(EDU_DEBUG_5) // || defined( CONFIG_MTD_BRCMNAND_VERIFY_WRITE )
+-//gdebug = 0;
+       if (0 == ret) {
+               if (edu_write_verify(mtd, buffer, oobarea, offset)) {
+                       BUG();
+@@ -3440,11 +2921,17 @@
+     return ret;
+ }
++#if 1
++
+ static int (*brcmnand_posted_write_cache)(struct mtd_info*, 
+               const void*, const u_char*, loff_t) = brcmnand_EDU_posted_write_cache; 
+-  #endif
++#else
++/* Testing 1 2 3, use controller write */
++static int (*brcmnand_posted_write_cache)(struct mtd_info*, 
++              const void*, const u_char*, loff_t) = brcmnand_ctrl_posted_write_cache;
++#endif
+-#else /* No EDU */
++#else
+ static int (*brcmnand_posted_write_cache)(struct mtd_info*, 
+               const void*, const u_char*, loff_t) = brcmnand_ctrl_posted_write_cache;
+@@ -3564,7 +3051,7 @@
+                       set_current_state(TASK_UNINTERRUPTIBLE);
+                       add_wait_queue(&chip->wq, &wait);
+                       spin_unlock(&chip->chip_lock);
+-                      if (!wr_preempt_en && !in_interrupt())
++                      if (!wr_preempt_en)
+                               schedule();
+                       remove_wait_queue(&chip->wq, &wait);
+               }
+@@ -3616,7 +3103,6 @@
+ }
+-
+ /**
+  * brcmnand_read_page - {REPLACEABLE] hardware ecc based page read function
+  * @mtd:      mtd info structure
+@@ -3722,7 +3208,7 @@
+ #ifdef CONFIG_MTD_BRCMNAND_CORRECTABLE_ERR_HANDLING
+ static int brcmnand_refresh_blk(struct mtd_info *mtd, loff_t from)
+ {
+-      struct brcmnand_chip *chip = mtd->priv;
++      struct brcmnand_chip *this = mtd->priv;
+       int i, j, k, numpages, ret, count = 0, nonecccount = 0;
+       uint8_t *blk_buf;       /* Store one block of data (including OOB) */
+       unsigned int  pg_idx, oob_idx;
+@@ -3737,9 +3223,9 @@
+ #if CONFIG_MTD_BRCMNAND_VERSION >= CONFIG_MTD_BRCMNAND_VERS_1_0
+-      chip->ctrl_write(BCHP_NAND_ECC_CORR_EXT_ADDR, 0);
++      this->ctrl_write(BCHP_NAND_ECC_CORR_EXT_ADDR, 0);
+ #endif
+-      chip->ctrl_write(BCHP_NAND_ECC_CORR_ADDR, 0);
++      this->ctrl_write(BCHP_NAND_ECC_CORR_ADDR, 0);
+       DEBUG(MTD_DEBUG_LEVEL3, "Inside %s: from=%0llx\n", __FUNCTION__, from);
+       printk(KERN_INFO "%s: Performing block refresh for correctable ECC error at %0llx\n",
+@@ -3747,9 +3233,9 @@
+       pg_idx = 0;
+       oob_idx = mtd->writesize;
+       numpages = mtd->erasesize/mtd->writesize;
+-      block_size = (1 << chip->erase_shift);
++      block_size = (1 << this->erase_shift);
+       blkbegin = (from & (~(mtd->erasesize-1)));
+-      realpage = blkbegin >> chip->page_shift;
++      realpage = blkbegin >> this->page_shift;
+ #ifdef CONFIG_MTD_BRCMNAND_EDU
+       if (!gblk_buf) {
+@@ -3777,7 +3263,7 @@
+       /* Read an entire block */
+       brcmnand_get_device(mtd, FL_READING);
+       for (i = 0; i < numpages; i++) {
+-              ret = chip->read_page(mtd, blk_buf+pg_idx, blk_buf+oob_idx, realpage);
++              ret = brcmnand_read_page(mtd, blk_buf+pg_idx, blk_buf+oob_idx, realpage);
+               if (ret < 0) {
+ #ifndef CONFIG_MTD_BRCMNAND_EDU
+                       BRCMNAND_free(blk_buf);
+@@ -3795,7 +3281,7 @@
+       if (unlikely(gdebug > 0)) {
+               printk("---> %s:  Read -> erase\n", __FUNCTION__);
+       }
+-      chip->state = FL_ERASING;
++      this->state = FL_ERASING;
+       /* Erase the block */
+       instr = kmalloc(sizeof(struct erase_info), GFP_KERNEL);
+@@ -3813,7 +3299,7 @@
+       instr->addr = blkbegin;
+       instr->len = mtd->erasesize;
+       if (unlikely(gdebug > 0)) {
+-              printk("DEBUG -> erasing %0llx, %x %d\n",instr->addr, instr->len, chip->state);
++              printk("DEBUG -> erasing %0llx, %x %d\n",instr->addr, instr->len, this->state);
+       }
+       ret = brcmnand_erase_nolock(mtd, instr, 0);
+       if (ret) {
+@@ -3831,12 +3317,12 @@
+       /* Write the entire block */
+       pg_idx = 0;
+       oob_idx = mtd->writesize;
+-      realpage = blkbegin >> chip->page_shift;
++      realpage = blkbegin >> this->page_shift;
+       if (unlikely(gdebug > 0)) {
+-              printk("---> %s: Erase -> write ... %d\n", __FUNCTION__, chip->state);
++              printk("---> %s: Erase -> write ... %d\n", __FUNCTION__, this->state);
+       }
+-      oobinfo = chip->ecclayout;
+-      chip->state = FL_WRITING;
++      oobinfo = this->ecclayout;
++      this->state = FL_WRITING;
+       for (i = 0; i < numpages; i++) {
+               /* Avoid writing empty pages */
+               count = 0;
+@@ -3858,7 +3344,7 @@
+               }
+               /* Skip this page, but write the OOB */
+               if (count == j && nonecccount != k) {
+-                      ret = chip->write_page_oob(mtd, blk_buf + oob_idx, realpage);
++                      ret = this->write_page_oob(mtd, blk_buf + oob_idx, realpage);
+                       if (ret) {
+ #ifndef CONFIG_MTD_BRCMNAND_EDU
+                               BRCMNAND_free(blk_buf);
+@@ -3875,7 +3361,7 @@
+               for (j = 0; j < oobinfo->eccbytes; j++) {
+                       oobptr[oobinfo->eccpos[j]] = 0xff;
+               }
+-              ret = chip->write_page(mtd, blk_buf+pg_idx, blk_buf+oob_idx, realpage);
++              ret = this->write_page(mtd, blk_buf+pg_idx, blk_buf+oob_idx, realpage);
+               if (ret) {
+ #ifndef CONFIG_MTD_BRCMNAND_EDU
+                       BRCMNAND_free(blk_buf);
+@@ -3900,463 +3386,7 @@
+ #endif
+-#ifdef CONFIG_MTD_BRCMNAND_USE_ISR
+-/*
+- * EDU ISR Implementation
+- */
+-
+- 
+-/*
+- * Submit the read op, then return immediately, without waiting for completion.
+- * Assuming queue lock held (with interrupt disable).
+- */
+-static void 
+-EDU_submit_read(eduIsrNode_t* req)
+-{
+-      struct brcmnand_chip* chip = (struct brcmnand_chip*) req->mtd->priv;
+-      uint32_t edu_status;
+-      
+-      // THT: TBD: Need to adjust for cache line size here, especially on 7420.
+-      req->physAddr = dma_map_single(NULL, req->buffer, EDU_LENGTH_VALUE, DMA_FROM_DEVICE);
+-
+-if (edu_debug) PRINTK("%s: vBuff: %p physDev: %08x, PA=%08x\n", __FUNCTION__,
+-req->buffer, external_physical_device_address, phys_mem);
+-
+-      spin_lock(&req->lock);
+-
+-      req->edu_ldw =  chip->ctrl_writeAddr(chip, req->offset, 0);
+-      PLATFORM_IOFLUSH_WAR(); 
+-
+-      //req->cmd = EDU_READ;
+-      req->opComplete = ISR_OP_SUBMITTED;
+-      req->status = 0;
+-
+-      // We must also wait for Ctlr_Ready, otherwise the OOB is not correct, since we read the OOB bytes off the controller
+-
+-      req->mask = HIF_INTR2_EDU_CLEAR_MASK|HIF_INTR2_CTRL_READY;
+-      req->expect = HIF_INTR2_EDU_DONE;
+-      // On error we also want Ctrlr-Ready because for COR ERR, the Hamming WAR depends on the OOB bytes.
+-      req->error = HIF_INTR2_EDU_ERR;
+-      req->intr = HIF_INTR2_EDU_DONE_MASK;
+-      req->expired = jiffies + 3*HZ;
+-
+-      edu_status = EDU_volatileRead(EDU_BASE_ADDRESS+EDU_STATUS);
+-      // Enable HIF_INTR2 only when we submit the first job in double buffering scheme
+-      if (0 == (edu_status & BCHP_EDU_STATUS_Active_MASK)) {
+-              ISR_enable_irq(req);
+-      }
+-
+-        //EDU_volatileWrite(EDU_BASE_ADDRESS  + EDU_DONE, 0x00000000);
+-       EDU_reset_done();
+-
+-       EDU_volatileWrite(EDU_BASE_ADDRESS  + EDU_ERR_STATUS, 0x00000000);
+-        
+-      EDU_volatileWrite(EDU_BASE_ADDRESS  + EDU_LENGTH, EDU_LENGTH_VALUE);
+-
+-      EDU_waitForNoPendingAndActiveBit();
+-
+-      EDU_issue_command(req->physAddr , req->edu_ldw, EDU_READ);
+-
+-      spin_unlock(&req->lock);
+-      return;
+-
+-} 
+-
+-int EDU_submit_write(eduIsrNode_t* req)
+-{
+-      struct brcmnand_chip* chip = (struct brcmnand_chip*) req->mtd->priv;
+-      uint32_t edu_status;
+-      uint32_t* p32;
+-      int i;
+-
+-      spin_lock(&req->lock);
+-      // EDU is not a PCI device
+-      // THT: TBD: Need to adjust for cache line size here, especially on 7420.
+-      req->physAddr  = dma_map_single(NULL, req->buffer, EDU_LENGTH_VALUE, DMA_TO_DEVICE);
+-
+-      if (!(req->physAddr)) {
+-              spin_unlock(&req->lock);
+-              return (-1);
+-      }
+-
+-
+-      req->edu_ldw = chip->ctrl_writeAddr(chip, req->offset, 0);
+-
+-
+-      if (req->oobarea) {
+-              p32 = (uint32_t*) req->oobarea;
+-if (gdebug) {printk("%s: oob=\n", __FUNCTION__); print_oobbuf(req->oobarea, 16);}
+-      }
+-      else {
+-              // Fill with 0xFF if don't want to change OOB
+-              p32 = (uint32_t*) &ffchars[0];
+-      }
+-
+-// printk("EDU40\n");
+-      for (i = 0; i < 4; i++) {
+-              chip->ctrl_write(BCHP_NAND_SPARE_AREA_WRITE_OFS_0 + i*4, cpu_to_be32(p32[i]));
+-      }
+-
+-      PLATFORM_IOFLUSH_WAR(); // Check if this line may be taken-out
+-      
+-      /*
+-       * Enable L2 Interrupt
+-       */
+-      //req->cmd = EDU_WRITE;
+-      req->opComplete = ISR_OP_SUBMITTED;
+-      req->status = 0;
+-      
+-      /* On write we wait for both DMA done|error and Flash Status */
+-      req->mask = HIF_INTR2_EDU_CLEAR_MASK|HIF_INTR2_CTRL_READY;
+-      req->expect = HIF_INTR2_EDU_DONE;
+-      req->error = HIF_INTR2_EDU_ERR;
+-      req->intr = HIF_INTR2_EDU_DONE_MASK|HIF_INTR2_CTRL_READY;
+-
+-      
+-      ISR_enable_irq(req);
+-
+-      //EDU_volatileWrite(EDU_BASE_ADDRESS  + EDU_DONE, 0x00000000); 
+-      EDU_reset_done();
+-      EDU_volatileWrite(EDU_BASE_ADDRESS  + EDU_ERR_STATUS, 0x00000000); 
+-
+-      EDU_volatileWrite(EDU_BASE_ADDRESS  + EDU_LENGTH, EDU_LENGTH_VALUE);
+-
+-      EDU_issue_command(req->physAddr, req->edu_ldw, EDU_WRITE); /* 1: Is a Read, 0 Is a Write */
+-      spin_unlock(&req->lock);
+-      return 0;
+-}
+-
+-
+-/*
+- * Submit the first entry that is in queued state,
+- * assuming queue lock has been held by caller.
+- * 
+- * @doubleBuffering indicates whether we need to submit just 1 job or until EDU is full (double buffering)
+- * Return the number of job submitted (either 1 or zero), as we don't support doublebuffering yet.
+- *
+- * In current version (v3.3 controller), since EDU only have 1 register for EDU_ERR_STATUS,
+- * we can't really do double-buffering without losing the returned status of the previous read-op.
+- */
+-int
+-brcmnand_isr_submit_job(void)
+-{
+-      uint32_t edu_pending;
+-      eduIsrNode_t* req;
+-      //struct list_head* node;
+-      int numReq = 0;
+-
+-//printk("-->%s\n", __FUNCTION__);
+-//ISR_print_queue();
+-
+-      list_for_each_entry(req, &gJobQ.jobQ, list) {
+-              //req = container_of(node, eduIsrNode_t, list);
+-              switch (req->opComplete) {
+-              case ISR_OP_QUEUED:
+-                      edu_pending = EDU_volatileRead(EDU_BASE_ADDRESS  + EDU_STATUS); 
+-                      if (!(BCHP_EDU_STATUS_Pending_MASK & edu_pending)) {
+-                              if (gJobQ.cmd == EDU_READ) {
+-                                      EDU_submit_read(req);
+-                              }
+-                              else if (gJobQ.cmd == EDU_WRITE) {
+-                                      EDU_submit_write(req);
+-                              }
+-                              else {
+-                                      printk("%s: Invalid op\n", __FUNCTION__);
+-                                      BUG();
+-                              }
+-                              numReq++;
+-#ifdef EDU_DOUBLE_BUFFER_READ
+-                              if (/*doubleBuffering &&*/ numReq < 2) {
+-                                      continue;
+-                              }
+-#endif
+-                      }
+-PRINTK("<-- %s: numReq=%d\n", __FUNCTION__, numReq);
+-                      return numReq; 
+-                      
+-              case ISR_OP_COMPLETED:
+-              case ISR_OP_SUBMITTED:
+-              case ISR_OP_NEED_WAR:
+-              case ISR_OP_TIMEDOUT:
+-                      /* next entry */
+-                      continue;
+-              }
+-      }
+-PRINTK("<-- %s: numReq=%d\n", __FUNCTION__, numReq);
+-      return numReq;
+-}
+-
+-/*
+- * Queue the entire page, then wait for completion
+- */
+-static int
+-brcmnand_isr_read_page(struct mtd_info *mtd,
+-                              uint8_t *outp_buf, uint8_t* outp_oob, uint64_t page)
+-{
+-      struct brcmnand_chip *chip = (struct brcmnand_chip*) mtd->priv;
+-      int eccstep;
+-      int dataRead = 0;
+-      int oobRead = 0;
+-      int ret = 0;
+-      uint64_t offset = ((uint64_t) page) << chip->page_shift;
+-      uint32_t edu_pending;
+-      int submitted = 0;
+-      unsigned long flags;
+-
+-//if (1/* (int) offset <= 0x2000 /*gdebug > 3 */) {
+-//printk("-->%s, offset=%08x\n", __FUNCTION__, (uint32_t) offset);}
+-if (gdebug > 3 ) {
+-printk("-->%s, page=%0llx, buffer=%p\n", __FUNCTION__, page, outp_buf);}
+-
+-
+-#if 0 // No need to check, we are aligned on a page
+-      if (unlikely(offset - sliceOffset)) {
+-              printk(KERN_ERR "%s: offset %0llx is not cache aligned, sliceOffset=%0llx, CacheSize=%d\n", 
+-                __FUNCTION__, offset, sliceOffset, mtd->eccsize);
+-              ret = -EINVAL;
+-              goto out;
+-      }
+-#endif
+-
+-
+-      if (unlikely(!EDU_buffer_OK(outp_buf, EDU_READ))) 
+-      {
+-if (gdebug>3) printk("++++++++++++++++++++++++ %s: buffer not 32B aligned, trying non-EDU read\n", __FUNCTION__);
+-              /* EDU does not work on non-aligned buffers */
+-              ret = brcmnand_read_page(mtd, outp_buf, outp_oob, page);
+-              return (ret);
+-      }
+-
+-      chip->pagebuf = page;
+-
+-      spin_lock_irqsave(&gJobQ.lock, flags);
+-      if (!list_empty(&gJobQ.jobQ)) {
+-              printk("%s: Start read page but job queue not empty\n", __FUNCTION__);
+-//ISR_print_queue();
+-              BUG();
+-      }
+-      gJobQ.cmd = EDU_READ;
+-      gJobQ.needWakeUp = 0;
+-      
+-      for (eccstep = 0; eccstep < chip->eccsteps && ret == 0; eccstep++) {
+-              eduIsrNode_t* req;
+-              /*
+-               * Queue the 512B sector read, then read the EDU pending bit, 
+-               * and issue read command, if EDU is available for read.
+-               */
+-              req = ISR_queue_read_request(mtd, &outp_buf[dataRead], 
+-                                      outp_oob ? &outp_oob[oobRead] : NULL, 
+-                                      offset + dataRead);
+-                              
+-              dataRead += chip->eccsize;
+-              oobRead += chip->eccOobSize;
+-      }
+-      //BUG_ON(submitted != 1);
+-      
+-      
+-
+-      /* Kick start it.  The ISR will submit the next job */
+-      if (!submitted) {
+-              submitted = brcmnand_isr_submit_job();
+-      }
+-      
+-      while (!list_empty(&gJobQ.jobQ)) {
+-              spin_unlock_irqrestore(&gJobQ.lock, flags);
+-              ret = ISR_wait_for_queue_completion();
+-              spin_lock_irqsave(&gJobQ.lock, flags);
+-      }
+-      spin_unlock_irqrestore(&gJobQ.lock, flags);
+-      return ret;
+-}
+-
+-
+-/*
+- * Queue several pages for small page SLC, then wait for completion,
+- * assuming that 
+- * (1) offset is aligned on a 512B boundary
+- * (2) that outp_buf is aligned on a 32B boundary.
+- * (3) Not in raw mode
+- * This routine only works when ECC-size = Page-Size (Small SLC flashes), and relies on the fact
+- * that the internal buffer can hold several data+OOB buffers for several small pages at once.
+- *
+- * The OOB are read into chip->buffers->OOB.
+- * The Queue Size and chip->buffers->oob are chosen such that the OOB
+- * will all fit inside the buffers.
+- * After a batch of jobs is completed, the OOB is then copied to the output OOB parameter.
+- * To keep it simple stupid, this routine cannot handle Raw mode Read.
+- *
+- * Arguments:
+- * @mtd:              MTD handle
+- * @outp_buf          Data buffer, passed from file system driver
+- * @inoutpp_oob       Address of OOB buffer, passed INOUT from file system driver
+- * @startPage page 0 of batch
+- * @numPages  nbr of pages in batch
+- * @ops                       MTD ops from file system driver.  We only look at the OOB mode (raw vs auto vs inplace)
+- */
+-static int
+-brcmnand_isr_read_pages(struct mtd_info *mtd,
+-                              uint8_t *outp_buf, uint8_t** inoutpp_oob, uint64_t startPage, int numPages,
+-                              struct mtd_oob_ops *ops)
+-{
+-      struct brcmnand_chip *chip = (struct brcmnand_chip*) mtd->priv;
+-      int eccstep;
+-      int dataRead = 0;
+-      int oobRead = 0;
+-      int ret = 0;
+-      uint64_t offset = ((uint64_t) startPage) << chip->page_shift;
+-      uint32_t edu_pending;
+-      int submitted = 0;
+-      unsigned long flags;
+-      int page;
+-      u_char* oob = inoutpp_oob ? *inoutpp_oob : NULL;
+-      u_char* oobpoi = NULL;
+-      u_char* buf = outp_buf;
+-
+-
+-      /* Paranoia */
+-      if (chip->pageSize != chip->eccsize) {
+-              printk("%s: Can only be called on small page flash\n", __FUNCTION__);
+-              BUG();
+-      }
+-
+-      if (ops->mode == MTD_OOB_RAW) {
+-              printk("%s: Can only be called when not in RAW mode\n", __FUNCTION__);
+-              BUG();
+-      }
+-#ifdef DEBUG_ISR
+-printk("-->%s: mtd=%p, buf=%p, &oob=%p, oob=%p\n", __FUNCTION__, 
+-mtd, outp_buf, inoutpp_oob, inoutpp_oob? *inoutpp_oob: NULL);
+-#endif        
+-
+-      spin_lock_irqsave(&gJobQ.lock, flags);
+-      if (!list_empty(&gJobQ.jobQ)) {
+-              printk("%s: Start read page but job queue not empty\n", __FUNCTION__);
+-//ISR_print_queue();
+-              BUG();
+-      }
+-      gJobQ.cmd = EDU_READ;
+-      gJobQ.needWakeUp = 0;
+-
+-      if (inoutpp_oob && *inoutpp_oob) {
+-              // In batch mode, read OOB into internal OOB buffer first.
+-              // This pointer will be advanced because oob_transfer depends on it.
+-              chip->oob_poi= BRCMNAND_OOBBUF(chip->buffers);
+-              oobpoi = chip->oob_poi; // This pointer remains fixed
+-      }
+-//gdebug=4;   
+-      for (page = 0; page < numPages && ret == 0; page++) {
+-              eduIsrNode_t* req;
+-
+-              req = ISR_queue_read_request(mtd, buf, 
+-                                      (inoutpp_oob && *inoutpp_oob) ? &oobpoi[oobRead] : NULL, 
+-                                      offset + dataRead);
+-                              
+-              dataRead += chip->eccsize;
+-              oobRead += chip->eccOobSize;
+-              buf += chip->eccsize;
+-      }
+-//gdebug=0;
+-      //BUG_ON(submitted != 1);
+-      
+-      /* Kick start it.  The ISR will submit the next job */
+-      if (!submitted) {
+-              submitted = brcmnand_isr_submit_job();
+-      }
+-      
+-      while (!list_empty(&gJobQ.jobQ)) {
+-              spin_unlock_irqrestore(&gJobQ.lock, flags);
+-              ret = ISR_wait_for_queue_completion();
+-              spin_lock_irqsave(&gJobQ.lock, flags);
+-      }
+-      spin_unlock_irqrestore(&gJobQ.lock, flags);
+-
+-      if (ret) {
+-              /* Abort, and return error to file system */
+-              return ret;
+-      }
+-
+-
+-      /* Format OOB, from chip->OOB buffers */
+-      
+-      buf = outp_buf;
+-      oob = (inoutpp_oob && *inoutpp_oob) ? *inoutpp_oob : NULL;
+-      dataRead = 0;
+-      oobRead = 0;
+-PRINTK("%s: B4 transfer OOB: buf=%08x, chip->buffers=%08x, offset=%08llx\n",
+-__FUNCTION__, (uint32_t) buf, chip->buffers, offset + dataRead);
+-
+-      // Reset oob_poi to beginning of OOB buffer.  
+-      // This will get advanced, cuz brcmnand_transfer_oob depends on it.
+-      chip->oob_poi = BRCMNAND_OOBBUF(chip->buffers);
+-      // oobpoi pointer does not change in for loop
+-      oobpoi = chip->oob_poi; 
+-
+-      for (page=0; page < numPages && ret == 0; page++) {
+-              u_char* newoob = NULL;
+-
+-#ifdef EDU_DEBUG_4 /* Read verify */
+-              ret = edu_read_verify(mtd, buf, 
+-                              (inoutpp_oob && *inoutpp_oob) ? &oobpoi[oobRead] : NULL, 
+-                              offset + dataRead);
+-      
+-              if (ret) BUG();
+-#endif
+-
+-              if (unlikely(inoutpp_oob && *inoutpp_oob)) {
+-                      newoob = brcmnand_transfer_oob(chip, oob, ops);
+-                      chip->oob_poi += chip->eccOobSize;
+-                      oob = newoob;
+-                      // oobpoi stays the same
+-              }
+-
+-              dataRead += chip->eccsize;
+-              oobRead += chip->eccOobSize;
+-              buf += chip->eccsize;
+-
+-      } /* for */
+-
+-      if (unlikely(inoutpp_oob && *inoutpp_oob)) {
+-              *inoutpp_oob = oob;
+-      }
+-
+-PRINTK("<-- %s\n", __FUNCTION__);
+-      
+-      return 0;
+-}
+-
+-
+ /**
+- * brcmnand_isr_read_page_oob - {REPLACABLE] hardware ecc based page read function
+- * @mtd:      mtd info structure
+- * @chip:     nand chip info structure.  The OOB buf is stored in the oob_poi ptr on return
+- *
+- * Not for syndrome calculating ecc controllers which need a special oob layout
+- */
+-static int 
+-brcmnand_isr_read_page_oob(struct mtd_info *mtd, 
+-                              uint8_t* outp_oob, uint64_t  page)
+-{
+-      struct brcmnand_chip *chip = (struct brcmnand_chip*) mtd->priv;
+-
+-      /*
+-       * if BCH codes, use full page read to activate ECC on OOB area
+-       */
+-      if (chip->ecclevel != BRCMNAND_ECC_HAMMING && chip->ecclevel != BRCMNAND_ECC_DISABLE) {
+-              return brcmnand_isr_read_page(mtd, chip->buffers->databuf, outp_oob, page);
+-      }
+-      
+-      else {
+-              return brcmnand_read_page_oob(mtd, outp_oob, page);
+-      }
+-}
+-
+-
+-
+-
+-#endif
+-
+-
+-/**
+  * brcmnand_do_read_ops - [Internal] Read data with ECC
+  *
+  * @mtd:      MTD device structure
+@@ -4390,13 +3420,17 @@
+       //int sndcmd = 1;
+       int ret = 0;
+       uint32_t readlen = ops->len;
+-      uint32_t oobread = 0;
+       uint8_t *bufpoi, *oob, *buf;
+-      int numPages;
+-      int buffer_aligned = 0;
+-//int nonBatch = 0;
++if (gdebug > 3 ) 
++{
++printk("-->%s, buf=%p, oob=%p, offset=%0llx, len=%d, end=%0llx\n", __FUNCTION__, 
++      ops->datbuf, ops->oobbuf, from, readlen, from+readlen);
++printk("chip->buffers=%p, chip->oob=%p\n", 
++      chip->buffers, BRCMNAND_OOBBUF(chip->buffers));
++}
++
+       stats = mtd->ecc_stats;
+       // THT: BrcmNAND controller treats multiple chip as one logical chip.
+@@ -4407,7 +3441,6 @@
+       //page = realpage & chip->pagemask;
+       col = mtd64_ll_low(from & (mtd->writesize - 1));
+-      
+ #ifndef EDU_DEBUG_1 
+ /* Debugging 12/27/08 */
+       chip->oob_poi = BRCMNAND_OOBBUF(chip->buffers);
+@@ -4419,91 +3452,38 @@
+       buf = ops->datbuf;
+       oob = ops->oobbuf;
+-#ifdef CONFIG_MTD_BRCMNAND_ISR_QUEUE  
+-      /*
+-       * Group several pages for submission for small page NAND
+-       */
+-      if (chip->pageSize == chip->eccsize && ops->mode != MTD_OOB_RAW) {
+-              while(1) {
+-//nonBatch = 0;
+-                      bytes = min(mtd->writesize - col, readlen);
+-                      // (1) Writing partial or full page
+-                      aligned = (bytes == mtd->writesize);
++      while(1) {
++              bytes = min(mtd->writesize - col, readlen);
++              aligned = (bytes == mtd->writesize);
+-                      // If writing full page, use user buffer, otherwise, internal buffer
++              /* Is the current page in the buffer ? */
++              if ( 1 /* (int64_t) realpage != chip->pagebuf */ || oob) {
++#ifndef EDU_DEBUG_1
+                       bufpoi = aligned ? buf : chip->buffers->databuf;
+-                      
+-                      // (2) Buffer satisfies 32B alignment required by EDU?
+-                      buffer_aligned = EDU_buffer_OK(bufpoi, EDU_READ);
+-
+-                      // (3) Batch mode if writing more than 1 pages.
+-                      numPages = min(MAX_JOB_QUEUE_SIZE, readlen>>chip->page_shift);
+-
+-                      // Only do Batch mode if all 3 conditions are satisfied.
+-                      if (!aligned || !buffer_aligned || numPages <= 1) {
+-                              /* Submit 1 page at a time */
+-
+-                              numPages = 1; // We count partial page read
+-                              ret = chip->read_page(mtd, bufpoi, chip->oob_poi, realpage);                            
+-
+-                              if (ret < 0)
+-                                      break;
+-
+-                              /* Transfer not aligned data */
+-                              if (!aligned) {
+-                                      chip->pagebuf = realpage;
+-                                      memcpy(buf, &bufpoi[col], bytes);
+-                              }
+-                              buf += bytes;
+-
+-                              if (unlikely(oob)) {
+-                                      /* if (ops->mode != MTD_OOB_RAW) */
+-                                      oob = brcmnand_transfer_oob(chip, oob, ops);
+-                                      
+-                              }
+-
+-                      }
+-                      else {
+-                              /* 
+-                                * Batch job possible, all 3 conditions are met
+-                                * bufpoi = Data buffer from FS driver
+-                                * oob = OOB buffer from FS driver
+-                                */    
+-                              bytes = numPages*mtd->writesize;
+-
+-                              ret = brcmnand_isr_read_pages(mtd, bufpoi, oob? &oob : NULL, realpage, numPages, ops);
+-
+-                              if (ret < 0)
+-                                      break;
+-
+-                              buf += bytes; /* Advance Read pointer */
+-
+-                      }
+-
+-
+-                      readlen -= bytes;
+-
+-                      if (!readlen)
+-                              break;
+-
+-                      /* For subsequent reads align to page boundary. */
+-                      col = 0;
+-                      /* Increment page address */
+-                      realpage += numPages;
+-              }
+-              goto out;       
+-      }
+-      else 
++#else
++/* EDU Testing */
++                      aligned=0;
++                      bufpoi = &debug_dbuf.databuf;
++                      // rely on size of buffer to be 4096
++                      memcpy(&bufpoi[mtd->writesize], debug_sig, 1+strlen(debug_sig));
+ #endif
+-      {
+-              while(1) {
+-                      bytes = min(mtd->writesize - col, readlen);
+-                      aligned = (bytes == mtd->writesize);
+-                      
+-                      bufpoi = aligned ? buf : chip->buffers->databuf;
++if (gdebug > 3 )  
++      printk("%s: aligned=%d, buf=%p, bufpoi=%p, oob_poi=%p, bytes=%d, readlen=%d\n",
++      __FUNCTION__, aligned, buf, bufpoi, chip->oob_poi, bytes, readlen);
++//gdebug=4;
+                       ret = chip->read_page(mtd, bufpoi, chip->oob_poi, realpage);
++//gdebug=0;
++#ifdef EDU_DEBUG_1
++                      if (0 != strcmp(&bufpoi[mtd->writesize], debug_sig)) {
++                              printk("$$$$$$$$$$$$$$ Memory smash at end of buffer at %0llx, expect=%s\n",
++                                      from, debug_sig);
++                              printk(".... found\n"); print_oobbuf(&bufpoi[mtd->writesize], 1+strlen(debug_sig));
++                      }
++                      if (buf) memcpy(buf, &bufpoi[col], bytes);
++                      if (oob) memcpy(oob, chip->oob_poi, mtd->oobsize);
++#endif
+                       if (ret < 0)
+                               break;
+@@ -4524,25 +3504,45 @@
+                               }
+                       }
++#if 0
++                      if (!(chip->options & NAND_NO_READRDY)) {
++                              /*
++                               * Apply delay or wait for ready/busy pin. Do
++                               * this before the AUTOINCR check, so no
++                               * problems arise if a chip which does auto
++                               * increment is marked as NOAUTOINCR by the
++                               * board driver.
++                               */
++                              if (!chip->dev_ready)
++                                      udelay(chip->chip_delay);
++                              else
++                                      nand_wait_ready(mtd);
++                      }
++#endif
++              } else {
++printk("%s: Should never get here\n", __FUNCTION__);
++BUG();
++                      memcpy(buf, chip->buffers->databuf + col, bytes);
++                      buf += bytes;
++              }
+-                      readlen -= bytes;
++              readlen -= bytes;
+-                      if (!readlen)
+-                              break;
++              if (!readlen)
++                      break;
+-                      /* For subsequent reads align to page boundary. */
+-                      col = 0;
+-                      /* Increment page address */
+-                      realpage++;
++              /* For subsequent reads align to page boundary. */
++              col = 0;
++              /* Increment page address */
++              realpage++;
+-              }
+       }
+-      
+-out:
+-//gdebug=0;
+       ops->retlen = ops->len - (size_t) readlen;
++//#ifndef EDU_DEBUG_1
++if (gdebug > 3 ) printk("<-- %s, ret=%d\n", __FUNCTION__, ret);
++//#endif
+       if (ret)
+               return ret;
+@@ -4577,7 +3577,7 @@
+       DEBUG(MTD_DEBUG_LEVEL3, "%s: from=%0llx\n", __FUNCTION__, from);
+ if (gdebug > 3 ) {
+-printk("-->%s, offset=%0llx, len=%08x\n", __FUNCTION__, from, len);}
++printk("-->%s, offset=%0llx\n", __FUNCTION__, from);}
+       /* Do not allow reads past end of device */
+@@ -4610,20 +3610,11 @@
+               if (likely(chip->cet)) {
+                       if (likely(chip->cet->flags != BRCMNAND_CET_DISABLED)) {
+                               if (brcmnand_cet_update(mtd, from, &status) == 0) {
+-
+-/*
+- * PR57272: Provide workaround for BCH-n ECC HW bug when # error bits >= 4 
+- * We will not mark a block bad when the a correctable error already happened on the same page
+- */
+-#if CONFIG_MTD_BRCMNAND_VERSION <= CONFIG_MTD_BRCMNAND_VERS_3_4
+-                                      ret = 0;
+-#else
+                                       if (status) {
+                                               ret = -EUCLEAN;
+                                       } else {
+                                               ret = 0;
+                                       }
+-#endif
+                               }
+                               if (gdebug > 3) {
+                                       printk(KERN_INFO "DEBUG -> %s ret = %d, status = %d\n", __FUNCTION__, ret, status);
+@@ -4879,7 +3870,7 @@
+               //struct nand_oobinfo noauto_oobsel;
+               printk("Comparison Failed\n");
+-              print_diagnostics(chip);
++              print_diagnostics();
+               
+               //noauto_oobsel = *oobsel;
+               //noauto_oobsel.useecc = MTD_NANDECC_PLACEONLY;
+@@ -4917,7 +3908,7 @@
+ {
+       struct brcmnand_chip * chip = mtd->priv;
+       
+-      int ret = 0; // Matched
++      int ret = 0;
+       //int ooblen=0, datalen=0;
+       //int complen;
+       u_char* oobbuf = v_oob_buf;
+@@ -4929,12 +3920,7 @@
+ if (gdebug > 3) printk("-->%s: addr=%0llx\n", __FUNCTION__, addr);
+-      /* 
+-       * Only do it for Hamming codes because
+-       * (1) We can't do it for BCH until we can read the full OOB area for BCH-8
+-       * (2) OOB area is included in ECC calculation for BCH, so no need to check it
+-       *      separately.
+-       */
++      /* Only do it for Hamming codes */
+       if (chip->ecclevel != BRCMNAND_ECC_HAMMING) {
+               return 0;
+       }
+@@ -4942,7 +3928,7 @@
+ #if 1
+       page = ((uint64_t) addr) >> chip->page_shift;
+       // Must read entire page
+-      ret = chip->read_page(mtd, vbuf, oobbuf, page);
++      ret = brcmnand_read_page(mtd, vbuf, oobbuf, page);
+       if (ret) {
+               printk(KERN_ERR "%s: brcmnand_read_page at %08x failed ret=%d\n", 
+                       __FUNCTION__, (unsigned int) addr, ret);
+@@ -4967,28 +3953,12 @@
+               brcmnand_Hamming_ecc(&dbuf[pageOffset], sw_ecc);
+               if (sw_ecc[0] != oobp[6] || sw_ecc[1] != oobp[7] || sw_ecc[2] != oobp[8]) {
+-                      if (oobp[6] == 0xff && oobp[7] == 0xff && oobp[8] == 0xff 
+-                              && sw_ecc[0] == 0 && sw_ecc[1] == 0 && sw_ecc[2] == 0) 
+-                              ; // OK
+-                      else {
+-                              printk("%s: Verification failed at %0llx.  HW ECC=%02x%02x%02x, SW ECC=%02x%02x%02x\n",
+-                                      __FUNCTION__, addr,
+-                                      oobp[6], oobp[7], oobp[8], sw_ecc[0], sw_ecc[1], sw_ecc[2]);
+-                              ret = 1;
+-                              break;
+-                      }
++                      printk("%s: Verification failed at %0llx.  HW ECC=%02x%02x%02x, SW ECC=%02x%02x%02x\n",
++                              __FUNCTION__, addr,
++                              oobp[6], oobp[7], oobp[8], sw_ecc[0], sw_ecc[1], sw_ecc[2]);
++                      ret = 1;
++                      break;
+               }
+-
+-              // Verify the OOB if not NULL
+-              if (inp_oob) {
+-                      if (memcmp(&inp_oob[oobOffset], oobp, 6) || memcmp(&inp_oob[oobOffset+9], &oobp[9],7)) {
+-                              printk("+++++++++++++++++++++++ %s: OOB comp Hamming failed\n", __FUNCTION__);
+-                              printk("In OOB:\n"); print_oobbuf(&inp_oob[oobOffset], 16);
+-                              printk("\nVerify OOB:\n"); print_oobbuf(oobp, 16);
+-                              ret = (-2);
+-                              break;
+-                      }
+-              }
+       }
+       return ret;
+@@ -5062,8 +4032,7 @@
+  * @page:     page number to write
+  * @cached:   cached programming [removed]
+  */
+-static int 
+-brcmnand_write_page(struct mtd_info *mtd,
++static int brcmnand_write_page(struct mtd_info *mtd,
+                          const uint8_t *inp_buf, const uint8_t* inp_oob, uint64_t page)
+ {
+       struct brcmnand_chip *chip = (struct brcmnand_chip*) mtd->priv;
+@@ -5094,206 +4063,17 @@
+       }
+       // TBD
+-#ifdef BRCMNAND_WRITE_VERIFY
+-if (0 == ret) {
+-int vret;
++if (0) {
++int save_debug = gdebug;
+ //gdebug = 0;
+-      vret = brcmnand_verify_page(mtd, offset, inp_buf, mtd->writesize, inp_oob, chip->eccOobSize);
++      ret = brcmnand_verify_page(mtd, offset, inp_buf, mtd->writesize, inp_oob, chip->eccOobSize);
+ //gdebug=save_debug;
+-      if (vret) BUG();
+ }
+-#endif
+-
+       
+       return ret;
+ }
+-#ifdef CONFIG_MTD_BRCMNAND_ISR_QUEUE
+-/*
+- * Queue the entire page, then wait for completion
+- */
+-static int
+-brcmnand_isr_write_page(struct mtd_info *mtd,
+-                         const uint8_t *inp_buf, const uint8_t* inp_oob, uint64_t page)
+-{
+-      struct brcmnand_chip *chip = (struct brcmnand_chip*) mtd->priv;
+-      int eccstep;
+-      int dataWritten = 0;
+-      int oobWritten = 0;
+-      int ret = 0;
+-      uint64_t offset = page << chip->page_shift;
+-
+-      uint32_t edu_pending;
+-      int submitted = 0;
+-      unsigned long flags;
+-
+-if (gdebug > 3 ) {
+-printk("-->%s, page=%0llx\n", __FUNCTION__, page);}
+-
+-
+-#if 0 // No need to check, we are aligned on a page
+-      if (unlikely(offset - sliceOffset)) {
+-              printk(KERN_ERR "%s: offset %0llx is not cache aligned, sliceOffset=%0llx, CacheSize=%d\n", 
+-                __FUNCTION__, offset, sliceOffset, mtd->eccsize);
+-              ret = -EINVAL;
+-              goto out;
+-      }
+-#endif
+-
+-
+-      if (unlikely(!EDU_buffer_OK(inp_buf, EDU_WRITE))) 
+-      {
+-if (gdebug>3) printk("++++++++++++++++++++++++ %s: buffer not 32B aligned, trying non-EDU read\n", __FUNCTION__);
+-              /* EDU does not work on non-aligned buffers */
+-              ret = brcmnand_write_page(mtd, inp_buf, inp_oob, page);
+-              return (ret);
+-      }
+-
+-      chip->pagebuf = page;
+-
+-      spin_lock_irqsave(&gJobQ.lock, flags);
+-      if (!list_empty(&gJobQ.jobQ)) {
+-              printk("%s: Start read page but job queue not empty\n", __FUNCTION__);
+-              BUG();
+-      }
+-      gJobQ.cmd = EDU_WRITE;
+-      gJobQ.needWakeUp = 0;
+-
+-
+-      for (eccstep = 0; eccstep < chip->eccsteps && ret == 0; eccstep++) {
+-              eduIsrNode_t* req;
+-              /*
+-               * Queue the 512B sector read, then read the EDU pending bit, 
+-               * and issue read command, if EDU is available for read.
+-               */
+-              req = ISR_queue_write_request(mtd, &inp_buf[dataWritten], 
+-                                      inp_oob ? &inp_oob[oobWritten]  : NULL, 
+-                                      offset + dataWritten);
+-              
+-              dataWritten += chip->eccsize;
+-              oobWritten += chip->eccOobSize;
+-      }
+-      
+-      
+-      /*
+-       * Kick start it.  The ISR will submit the next job
+-       */
+-      if (!submitted) {
+-              submitted = brcmnand_isr_submit_job();
+-      }
+-      
+-      while (!list_empty(&gJobQ.jobQ)) {
+-              spin_unlock_irqrestore(&gJobQ.lock, flags);
+-              ret = ISR_wait_for_queue_completion();
+-              spin_lock_irqsave(&gJobQ.lock, flags);
+-      }
+-      spin_unlock_irqrestore(&gJobQ.lock, flags);
+-      return ret;
+-
+-}
+-
+-/*
+- * Queue the several pages, then wait for completion
+- * For 512B page sizes only.
+- */
+-static int
+-brcmnand_isr_write_pages(struct mtd_info *mtd,
+-                         const uint8_t *inp_buf, const uint8_t* inp_oob, uint64_t startPage, int numPages)
+-{
+-      struct brcmnand_chip *chip = (struct brcmnand_chip*) mtd->priv;
+-      int eccstep;
+-      int dataWritten = 0;
+-      int oobWritten = 0;
+-      int ret = 0;
+-      uint64_t offset = startPage << chip->page_shift;
+-      int page;
+-
+-      uint32_t edu_pending;
+-      int submitted = 0;
+-      unsigned long flags;
+-
+-#if 0
+- /* Already checked by caller */
+-      if (unlikely(!EDU_buffer_OK(inp_buf, EDU_WRITE))) 
+-      {
+-if (gdebug>3) printk("++++++++++++++++++++++++ %s: buffer not 32B aligned, trying non-EDU read\n", __FUNCTION__);
+-              /* EDU does not work on non-aligned buffers */
+-              ret = brcmnand_write_page(mtd, inp_buf, inp_oob, startPage);
+-              return (ret);
+-      }
+-#endif
+-      /* Paranoia */
+-      if (chip->pageSize != chip->eccsize) {
+-              printk("%s: Can only be called on small page flash\n", __FUNCTION__);
+-              BUG();
+-      }
+-
+-      spin_lock_irqsave(&gJobQ.lock, flags);
+-      if (!list_empty(&gJobQ.jobQ)) {
+-              printk("%s: Start read page but job queue not empty\n", __FUNCTION__);
+-              BUG();
+-      }
+-      gJobQ.cmd = EDU_WRITE;
+-      gJobQ.needWakeUp = 0;
+-
+-//gdebug=4;
+-      for (page = 0; page < numPages && ret == 0; page++) {
+-              eduIsrNode_t* req;
+-              /*
+-               * Queue the 512B sector read, then read the EDU pending bit, 
+-               * and issue read command, if EDU is available for read.
+-               */
+-
+-              req = ISR_queue_write_request(mtd, &inp_buf[dataWritten], 
+-                                      inp_oob ? &inp_oob[oobWritten]  : NULL, 
+-                                      offset + dataWritten);
+-              
+-              dataWritten += chip->eccsize;
+-              oobWritten += chip->eccOobSize;
+-      }
+-//gdebug=0;   
+-      
+-      
+-      /*
+-       * Kick start it.  The ISR will submit the next job
+-       * We do it here, in order to avoid having to obtain the queue lock
+-       * inside the ISR, in preparation for an RCU implementation.
+-       */
+-      if (!submitted) {
+-              submitted = brcmnand_isr_submit_job();
+-      }
+-      
+-      while (!list_empty(&gJobQ.jobQ)) {
+-              spin_unlock_irqrestore(&gJobQ.lock, flags);
+-              ret = ISR_wait_for_queue_completion();
+-              spin_lock_irqsave(&gJobQ.lock, flags);
+-      }
+-      spin_unlock_irqrestore(&gJobQ.lock, flags);
+-
+-
+-#ifdef EDU_DEBUG_5
+-/* Verify */
+-      dataWritten = 0;
+-      oobWritten = 0;
+-      for (page = 0; page < numPages && ret == 0; page++) {
+-              ret = edu_write_verify(mtd, &inp_buf[dataWritten], 
+-                                      inp_oob ? &inp_oob[oobWritten]  : NULL, 
+-                                      offset + dataWritten);
+-              if (ret) BUG();
+-              dataWritten += chip->eccsize;
+-              oobWritten += chip->eccOobSize;
+-      }
+-#endif
+-      return ret;
+-
+-}
+-
+-
+-#endif
+-
+-
+-
+ /**
+  * brcmnand_fill_oob - [Internal] Transfer client buffer to oob
+  * @chip:     nand chip structure
+@@ -5307,7 +4087,6 @@
+ {
+       size_t len = ops->ooblen;
+-      
+       switch(ops->mode) {
+       case MTD_OOB_PLACE:
+@@ -5320,8 +4099,6 @@
+               uint32_t boffs = 0, woffs = ops->ooboffs;
+               size_t bytes = 0;
+-              memset(chip->oob_poi + ops->ooboffs, 0xff, chip->eccOobSize-ops->ooboffs);
+-
+               for(; free->length && len; free++, len -= bytes) {
+                       /* Write request not from offset 0 ? */
+                       if (unlikely(woffs)) {
+@@ -5370,8 +4147,6 @@
+       uint8_t *buf = ops->datbuf;
+       int bytes = mtd->writesize;
+       int ret = 0;
+-      int numPages; 
+-      int buffer_aligned = 0;
+ DEBUG(MTD_DEBUG_LEVEL3, "-->%s, offset=%0llx\n", __FUNCTION__, to);
+@@ -5392,8 +4167,13 @@
+       chip->select_chip(mtd, chipnr);
+ */
++#if 0
++/* THT TBD */
++      /* Check, if it is write protected */
++      if (nand_check_wp(mtd))
++              return -EIO;
++#endif
+-
+       realpage = to >> chip->page_shift;
+       //page = realpage & chip->pagemask;
+       blockmask = (1 << (chip->phys_erase_shift - chip->page_shift)) - 1;
+@@ -5414,70 +4194,15 @@
+               chip->oob_poi = NULL;
+       }
+-#ifdef  CONFIG_MTD_BRCMNAND_ISR_QUEUE 
+-      /* Buffer must be aligned for EDU */
+-      buffer_aligned = EDU_buffer_OK(buf, EDU_WRITE);
+-
+-#else /* Dont care */
+-      buffer_aligned = 0;
+-#endif
+-
+       while(1) {
+-
+-#ifdef  CONFIG_MTD_BRCMNAND_ISR_QUEUE 
+-              /*
+-               * Group several pages for submission for small page NAND
+-               */
+-              numPages = min(MAX_JOB_QUEUE_SIZE, writelen>>chip->page_shift);
+-
+-              // If Batch mode                
+-              if (buffer_aligned && numPages > 1 && chip->pageSize == chip->eccsize) {
+-                      int j;
+-
+-                      /* Submit min(queueSize, len/512B) at a time */
+-                      //numPages = min(MAX_JOB_QUEUE_SIZE, writelen>>chip->page_shift);                       
+-                      bytes = chip->eccsize*numPages;
+-
+-                      if (unlikely(oob)) {
+-                              //u_char* newoob;
+-                              for (j=0; j<numPages; j++) {
+-                                      oob = brcmnand_fill_oob(chip, oob, ops);
+-                                      /* THT: oob now points to where to read next, 
+-                                       * chip->oob_poi contains the OOB to be written
+-                                       */
+-                                      /* In batch mode, we advance the OOB pointer to the next OOB slot 
+-                                       * using chip->oob_poi
+-                                       */
+-                                      chip->oob_poi += chip->eccOobSize;
+-                              }
+-                              // Reset chip->oob_poi to beginning of OOB buffer for submission.
+-                              chip->oob_poi = BRCMNAND_OOBBUF(chip->buffers);
+-                      }
+-                      
+-                      ret = brcmnand_isr_write_pages(mtd, buf, chip->oob_poi, realpage, numPages);
+-
++              if (unlikely(oob)) {
++                      oob = brcmnand_fill_oob(chip, oob, ops);
++                      /* THT: oob now points to where to read next, 
++                       * chip->oob_poi contains the OOB to be written
++                       */
+               }
+-              
+-              else /* Else submit one page at a time */
+-#endif
+-              /* Submit one page at a time */
+-              { 
+-                      numPages = 1;
+-                      bytes = mtd->writesize;
+-                      
+-                      if (unlikely(oob)) {
+-                              chip->oob_poi = BRCMNAND_OOBBUF(chip->buffers);
+-                              oob = brcmnand_fill_oob(chip, oob, ops);
+-                              /* THT: oob now points to where to read next, 
+-                               * chip->oob_poi contains the OOB to be written
+-                               */
+-                      }
+-
+-                      ret = chip->write_page(mtd, buf, chip->oob_poi, realpage);
+-
+-              }
+-
++              ret = chip->write_page(mtd, buf, chip->oob_poi, realpage);
+               if (ret)
+                       break;
+@@ -5486,9 +4211,21 @@
+                       break;
+               buf += bytes;
+-              realpage += numPages;
++              realpage++;
++
++#if 0
++              page = realpage & chip->pagemask;
++              /* Check, if we cross a chip boundary */
++              if (!page) {
++                      chipnr++;
++                      chip->select_chip(mtd, -1);
++                      chip->select_chip(mtd, chipnr);
++              }
++#endif
+       }
++      if (unlikely(oob))
++              memset(chip->oob_poi, 0xff, mtd->oobsize);
+       ops->retlen = ops->len - writelen;
+       DEBUG(MTD_DEBUG_LEVEL3, "<-- %s\n", __FUNCTION__);
+@@ -6593,29 +5330,12 @@
+  */
+ static void brcmnand_adjust_timings(struct brcmnand_chip *this, brcmnand_chip_Id* chip)
+ {
+-      unsigned long nand_timing1 = this->ctrl_read(BCHP_NAND_TIMING_1);
+-      unsigned long nand_timing1_b4;
+-      unsigned long nand_timing2 = this->ctrl_read(BCHP_NAND_TIMING_2);
+-      unsigned long nand_timing2_b4;
+-      extern uint32_t gNandTiming1;
+-      extern uint32_t gNandTiming2;
+-
+-      /*
+-       * Override database values with kernel command line values
+-       */
+-       if (0 != gNandTiming1 || 0 != gNandTiming2) {
+-              if (0 != gNandTiming1) {
+-                      chip->timing1 = gNandTiming1;
+-                      //this->ctrl_write(BCHP_NAND_TIMING_1, gNandTiming1);
+-              }
+-              if (0 != gNandTiming2) {
+-                      chip->timing2 = gNandTiming2;
+-                      //this->ctrl_write(BCHP_NAND_TIMING_2, gNandTiming2);
+-              }
+-              //return;
+-       }
+-      
+-      // Adjust NAND timings from database or command line
++              unsigned long nand_timing1 = this->ctrl_read(BCHP_NAND_TIMING_1);
++              unsigned long nand_timing1_b4;
++              unsigned long nand_timing2 = this->ctrl_read(BCHP_NAND_TIMING_2);
++              unsigned long nand_timing2_b4;
++              
++      // Adjust NAND timings:
+       if (chip->timing1) {
+               nand_timing1_b4 = nand_timing1;
+@@ -6688,61 +5408,20 @@
+ brcmnand_read_id(struct mtd_info *mtd, unsigned int chipSelect, unsigned long* dev_id)
+ {
+       struct brcmnand_chip * chip = mtd->priv;
+-      uint32_t status;
+-      uint32_t nandConfig = chip->ctrl_read(BCHP_NAND_CONFIG);
+-      uint32_t csNandSelect = 0;
+-      uint32_t nandSelect = 0;
+-
+-      if (chipSelect > 0) { // Do not re-initialize when on CS0, Bootloader already done that
+-
+-#if CONFIG_MTD_BRCMNAND_VERSION >= CONFIG_MTD_BRCMNAND_VERS_0_1
+-              nandSelect = chip->ctrl_read(BCHP_NAND_CS_NAND_SELECT);
+-
+-printk("B4: NandSelect=%08x, nandConfig=%08x, chipSelect=%d\n", nandSelect, nandConfig, chipSelect);
+-
+       
+-  #if CONFIG_MTD_BRCMNAND_VERSION >= CONFIG_MTD_BRCMNAND_VERS_1_0
+-      /* Older version do not have EXT_ADDR registers */
+-              chip->ctrl_write(BCHP_NAND_CMD_ADDRESS, 0);
+-              chip->ctrl_write(BCHP_NAND_CMD_EXT_ADDRESS, chipSelect << BCHP_NAND_CMD_EXT_ADDRESS_CS_SEL_SHIFT);
+-  #endif  // Set EXT address if version >= 1.0
++#if CONFIG_MTD_BRCMNAND_VERSION >= CONFIG_MTD_BRCMNAND_VERS_1_0
++      /* Set correct chip Select */
++      chip->ctrl_write(BCHP_NAND_CMD_ADDRESS, BCHP_NAND_CMD_START_OPCODE_DEVICE_ID_READ);
++      chip->ctrl_write(BCHP_NAND_CMD_EXT_ADDRESS, chipSelect << 16);
++#endif
+-              // Has CFE initialized the register?  
+-              if (0 == (nandSelect & BCHP_NAND_CS_NAND_SELECT_AUTO_DEVICE_ID_CONFIG_MASK)) {
+-                      
+-  #if CONFIG_MTD_BRCMNAND_VERSION == CONFIG_MTD_BRCMNAND_VERS_0_1
+-                      csNandSelect = 1<<(BCHP_NAND_CS_NAND_SELECT_EBI_CS_0_SEL_SHIFT + chipSelect);
++PRINTK("-->%s: this=%p, chip->ctrl_read=%p\n", __FUNCTION__, chip, chip->ctrl_read);
+-  // v1.0 does not define it
+-  #elif CONFIG_MTD_BRCMNAND_VERSION >= CONFIG_MTD_BRCMNAND_VERS_2_0
+-                      csNandSelect = 1<<(BCHP_NAND_CS_NAND_SELECT_EBI_CS_0_USES_NAND_SHIFT + chipSelect);
+-
+-  #endif // If brcmNAND Version >= 1.0
+-      
+-                      nandSelect = BCHP_NAND_CS_NAND_SELECT_AUTO_DEVICE_ID_CONFIG_MASK | csNandSelect;
+-                      chip->ctrl_write(BCHP_NAND_CS_NAND_SELECT, nandSelect);
+-              }
+-
+-              /* Send the command for reading device ID from controller */
+-              chip->ctrl_write(BCHP_NAND_CMD_START, OP_DEVICE_ID_READ);
+-              
+-              /* Wait for CTRL_Ready */
+-              brcmnand_wait(mtd, FL_READY, &status);
+-                               
+-#endif // if BrcmNAND Version >= 0.1
+-      }
+-
++      /* Send the command for reading device ID from controller */
+       *dev_id = chip->ctrl_read(BCHP_NAND_FLASH_DEVICE_ID);
+       printk(KERN_INFO "brcmnand_probe: CS%1d: dev_id=%08x\n", chipSelect, (unsigned int) *dev_id);
+-#if CONFIG_MTD_BRCMNAND_VERSION >= CONFIG_MTD_BRCMNAND_VERS_0_1
+-      nandSelect = chip->ctrl_read(BCHP_NAND_CS_NAND_SELECT);
+-#endif
+-
+-      nandConfig = chip->ctrl_read(BCHP_NAND_CONFIG);
+-
+-printk("After: NandSelect=%08x, nandConfig=%08x\n", nandSelect, nandConfig);
+ }
+@@ -6764,8 +5443,6 @@
+       int version_id;
+       //int density;
+       int i;
+-
+-//gdebug=4;
+       
+       /* Read manufacturer and device IDs from Controller */
+       brcmnand_read_id(mtd, chipSelect, &chip->device_id);
+@@ -7169,10 +5846,9 @@
+       /* Version ID */
+       version_id = chip->ctrl_read(BCHP_NAND_REVISION);
+-      printk(KERN_INFO "BrcmNAND version = 0x%04x %dMB @%08lx\n", 
+-              version_id, mtd64_ll_low(chip->chipSize>>20), chip->pbase);
++      printk(KERN_INFO "BrcmNAND version = 0x%04x %dMB @%p\n", 
++              version_id, mtd64_ll_low(chip->chipSize>>20), chip->vbase);
+-//gdebug=0;
+       return 0;
+ }
+@@ -7615,92 +6291,51 @@
+       }
+       
+ #elif CONFIG_MTD_BRCMNAND_VERSION >= CONFIG_MTD_BRCMNAND_VERS_2_0
+-      {
+-              int i;
+-              uint32_t nand_xor;
++      /* 
++       * Starting with version 2.0 (bcm7325 and later), 
++       * we can use EBI_CS_USES_NAND  Registers to find out where the NAND
++       * chips are (which CS) 
++       */
++      if (gNumNand > 0) { /* Kernel argument nandcs=<comma-sep-list> override CFE settings */
++              if (brcmnand_sort_chipSelects(mtd, maxchips, gNandCS, chip->CS))
++                      return (-EINVAL);
++              cs = chip->CS[chip->numchips - 1];
++PRINTK("gNumNand=%d, cs=%d\n", gNumNand, cs);
++      }
++      else {
+               
+-              /* 
+-               * Starting with version 2.0 (bcm7325 and later), 
+-               * we can use EBI_CS_USES_NAND  Registers to find out where the NAND
+-               * chips are (which CS) 
+-               */
++              /* Load the gNandCS_priv[] array from EBI_CS_USES_NAND values,
++               * same way that get_options() does, i.e. first entry is gNumNand
++               */
++              int nandCsShift, i;
++              int numNand = 0;
++              int nandCS[MAX_NAND_CS];
+-
+-              if (gNumNand > 0) { /* Kernel argument nandcs=<comma-sep-list> override CFE settings */
+-                      if (brcmnand_sort_chipSelects(mtd, maxchips, gNandCS, chip->CS))
+-                              return (-EINVAL);
+-                      cs = chip->CS[chip->numchips - 1];
+-      PRINTK("gNumNand=%d, cs=%d\n", gNumNand, cs);
+-              }
+-              else {
+-                      
+-                      /* Load the gNandCS_priv[] array from EBI_CS_USES_NAND values,
+-                       * same way that get_options() does, i.e. first entry is gNumNand
+-                       */
+-                      int nandCsShift;
+-                      int numNand = 0; // Number of NAND chips
+-                      int nandCS[MAX_NAND_CS];
+-
+-                      for (i = 0; i< MAX_NAND_CS; i++) {
+-                              nandCS[i] = -1;
+-                      }
+-                      
+-                      nand_select = brcmnand_ctrl_read(BCHP_NAND_CS_NAND_SELECT);
+-                      // Be careful here, the last bound depends on chips.  Some chips allow 8 CS'es (3548a0) some only 2 (3548b0)
+-                      // Here we rely on BCHP_NAND_CS_NAND_SELECT_reserved1_SHIFT being the next bit.
+-                      for (i=0, nandCsShift = BCHP_NAND_CS_NAND_SELECT_EBI_CS_0_USES_NAND_SHIFT;
+-                              nandCsShift < BCHP_NAND_CS_NAND_SELECT_reserved1_SHIFT;
+-                              nandCsShift ++)
+-                      {
+-                              if (nand_select & (1 << nandCsShift)) {
+-                                      nandCS[i] = nandCsShift - BCHP_NAND_CS_NAND_SELECT_EBI_CS_0_USES_NAND_SHIFT;
+-                                      PRINTK("Found NAND on CS%1d\n", nandCS[i]);
+-                                      i++;
+-                              }
+-                      }
+-                      numNand = i;
+-                      if (brcmnand_sort_chipSelects(mtd, maxchips, nandCS, chip->CS))
+-                              return (-EINVAL);
+-                      cs = chip->CS[chip->numchips - 1];
+-      PRINTK("gNumNand=%d, cs=%d\n", gNumNand, cs);
+-
+-                              
+-
+-                      
+-
++              for (i = 0; i< MAX_NAND_CS; i++) {
++                      nandCS[i] = -1;
+               }
+-
+-              /*
+-               * 2618-7.3: For v2.0 or later, set xor_disable according to NAND_CS_NAND_XOR:00 bit
+-               */     
+-
+-              nand_xor = brcmnand_ctrl_read(BCHP_NAND_CS_NAND_XOR);
+-              printk("NAND_CS_NAND_XOR=%08x\n", nand_xor);
+-              //
+-#ifdef CONFIG_MTD_BRCMNAND_DISABLE_XOR
+-      /* Testing 1,2,3: Force XOR disable on CS0, if not done by CFE */
+-              if (chip->CS[0] == 0) { 
+-                      printk("Disabling XOR: Before: SEL=%08x, XOR=%08x\n", nand_select, nand_xor);
+-                      
+-                      nand_select &= ~BCHP_NAND_CS_NAND_SELECT_EBI_CS_0_SEL_MASK;
+-                      nand_xor &= ~BCHP_NAND_CS_NAND_XOR_EBI_CS_0_ADDR_1FC0_XOR_MASK;
+-
+-                      brcmnand_ctrl_write(BCHP_NAND_CS_NAND_SELECT, nand_select);
+-                      brcmnand_ctrl_write(BCHP_NAND_CS_NAND_XOR, nand_xor);
+-
+-                      printk("Disabling XOR: After: SEL=%08x, XOR=%08x\n", nand_select, nand_xor);
+-              }
+-#endif
+-              /* Translate nand_xor into our internal flag, for brcmnand_writeAddr */
+-              for (i=0; i<chip->numchips; i++) {
+-                                              
+-                      /* Set xor_disable, 1 for each NAND chip */
+-                      if (!(nand_xor & (BCHP_NAND_CS_NAND_XOR_EBI_CS_0_ADDR_1FC0_XOR_MASK<<i))) {
+-printk("Disabling XOR on CS#%1d\n", chip->CS[i]);
+-                              chip->xor_disable[i] = 1;
++              
++              nand_select = brcmnand_ctrl_read(BCHP_NAND_CS_NAND_SELECT);
++              // Be careful here, the last bound depends on chips.  Some chips allow 8 CS'es (3548a0) some only 2 (3548b0)
++              // Here we rely on BCHP_NAND_CS_NAND_SELECT_reserved1_SHIFT being the next bit.
++              for (i=0, nandCsShift = BCHP_NAND_CS_NAND_SELECT_EBI_CS_0_USES_NAND_SHIFT;
++                      nandCsShift < BCHP_NAND_CS_NAND_SELECT_reserved1_SHIFT;
++                      nandCsShift ++)
++              {
++                      if (nand_select & (1 << nandCsShift)) {
++                              nandCS[i] = nandCsShift - BCHP_NAND_CS_NAND_SELECT_EBI_CS_0_USES_NAND_SHIFT;
++                              PRINTK("Found NAND on CS%1d\n", nandCS[i]);
++                              i++;
+                       }
+               }
++              numNand = i;
++              if (brcmnand_sort_chipSelects(mtd, maxchips, nandCS, chip->CS))
++                      return (-EINVAL);
++              cs = chip->CS[chip->numchips - 1];
++PRINTK("gNumNand=%d, cs=%d\n", gNumNand, cs);
+       }
++
++  
+ #else
+       #error "Unknown Broadcom NAND controller version"
+ #endif /* Versions >= 1.0 */
+@@ -7728,15 +6363,24 @@
+               volatile unsigned long acc_control;
+               chip->numchips = 1;
++              if (chip->chipSize >= (128 << 20)) {
++                      chip->pbase = 0x11000000; /* Skip 16MB EBI Registers */
+-              /* Set up base, based on flash size */
+-              if (chip->chipSize >= (256 << 20)) {
+-                      chip->pbase = 0x12000000;
+-                      mtd->size = 0x20000000 - chip->pbase; // THT: This is different than chip->chipSize
+-              } else {
+-                      /* We know that flash endAddr is 0x2000_0000 */
+-                      chip->pbase = 0x20000000 - chip->chipSize;
++                      mtd->num_eraseblocks = (chip->chipSize - (16<<20)) >> chip->erase_shift; // Maximum size on a 128MB/256MB flash
++                      chip->mtdSize = device_size(mtd);
++              }
++/*
++              else if (chip->chipSize == (256 << 20)) {
++                      chip->pbase = 0x11000000; // Skip 16MB EBI Registers 
++                      mtd->size = 240<<20; // Maximum size on a 256MB flash, provided CS0/NOR is disabled
++              }
++ */
++              else {
++                      chip->pbase = 0x18000000 - chip->chipSize;
+                       mtd->size = chip->chipSize;
++                      chip->mtdSize = mtd->size;
++
++                      //mtd->size_hi = 0;
+               }
+               printk("Found NAND chip on Chip Select %d, chipSize=%dMB, usable size=%dMB, base=%08x\n", 
+@@ -7926,7 +6570,7 @@
+                               printk("ACC: %d OOB bytes per 512B ECC step; from ID probe: %d\n", eccOobSize, chip->eccOobSize);
+                               // We have recorded chip->eccOobSize during probe, let's compare it against value from ACC
+                               if (chip->eccOobSize < eccOobSize) {
+-                                      printk("Flash says it has %d OOB bytes, but ECC level %lu need %d bytes\n",
++                                      printk("Flash says it has %d OOB bytes, but ECC level %d need %d bytes\n",
+                                               chip->eccOobSize, eccLevel, eccOobSize);
+                                       printk(KERN_INFO "Please fix your board straps. Aborting to avoid file system damage\n");
+                                       BUG();
+@@ -7941,7 +6585,7 @@
+                               break;
+                       default:
+-                              printk(KERN_ERR "Unsupported ECC level %lu\n", eccLevel);
++                              printk(KERN_ERR "Unsupported ECC level %d\n", eccLevel);
+                               BUG();
+                               
+                       }
+@@ -7963,11 +6607,11 @@
+                               brcmnand_ctrl_write(BCHP_NAND_ACC_CONTROL, acc_control );
+                               printk("Corrected PARTIAL_PAGE_EN: ACC_CONTROL = %08lx\n", acc_control);
+                       }                       
+-#ifdef CONFIG_MIPS_BCM3548
+-                      /* THT PR50928: Disable WR_PREEMPT for 3548L and 3556 */
+-                      acc_control &= ~(BCHP_NAND_ACC_CONTROL_WR_PREEMPT_EN_MASK);
++#if 1
++                      /* THT Disable Optimization for 2K page */
++                      acc_control &= ~(BCHP_NAND_ACC_CONTROL_WR_PREEMPT_EN_MASK|BCHP_NAND_ACC_CONTROL_PAGE_HIT_EN_MASK);
+                       brcmnand_ctrl_write(BCHP_NAND_ACC_CONTROL, acc_control );
+-                      printk("Disable WR_PREEMPT: ACC_CONTROL = %08lx\n", acc_control);
++                      printk("Disable WR_PREEMPT and PAGE_HIT_EN: ACC_CONTROL = %08lx\n", acc_control);
+ #endif
+                       printk("ACC_CONTROL for MLC NAND: %08lx\n", acc_control);
+               }
+@@ -8010,58 +6654,7 @@
+                               printk("SLC flash: Corrected ACC_CONTROL = %08lx from %08lx\n", acc_control, org_acc_control);
+                       }
+               }
+-
+-
+-#if CONFIG_MTD_BRCMNAND_VERSION <= CONFIG_MTD_BRCMNAND_VERS_3_4
+-              /*
+-               * PR57272: Workaround for BCH-n error, 
+-               * reporting correctable errors with 4 or more bits as uncorrectable:
+-               */
+-              if (chip->ecclevel != 0 && chip->ecclevel != BRCMNAND_ECC_HAMMING) {
+-                      int corr_threshold;
+-
+-                      if ( chip->ecclevel >=  BRCMNAND_ECC_BCH_4) {
+-                              corr_threshold = 2;
+-                      } 
+-                      else {
+-                              corr_threshold = 1;  // 1 , default for Hamming
+-                      }
+-
+-                      printk(KERN_INFO "%s: CORR ERR threshold set to %d bits\n", __FUNCTION__, corr_threshold);
+-                      corr_threshold <<= BCHP_NAND_CORR_STAT_THRESHOLD_CORR_STAT_THRESHOLD_SHIFT;
+-                      brcmnand_ctrl_write(BCHP_NAND_CORR_STAT_THRESHOLD, corr_threshold);
+-              }
+-
+-#else
+-              /*
+-               * If ECC level is BCH, set CORR Threshold according to # bits corrected
+-               */
+-              if (chip->ecclevel != 0 && chip->ecclevel != BRCMNAND_ECC_HAMMING) {
+-                      int corr_threshold;
+-
+-                      if (chip->ecclevel >= BRCMNAND_ECC_BCH_8) {
+-                              corr_threshold = 6;  // 6 out of 8
+-                      } 
+-                      else if ( chip->ecclevel >=  BRCMNAND_ECC_BCH_4) {
+-                              corr_threshold = 3;  // 3 out of 4
+-                      } 
+-                      else {
+-                              corr_threshold = 1;  // 1 , default for Hamming
+-                      }
+-                      printk(KERN_INFO "%s: CORR ERR threshold set to %d bits\n", __FUNCTION__, corr_threshold);
+-                      corr_threshold <<= BCHP_NAND_CORR_STAT_THRESHOLD_CORR_STAT_THRESHOLD_SHIFT;
+-                      brcmnand_ctrl_write(BCHP_NAND_CORR_STAT_THRESHOLD, corr_threshold);
+-              }
+-#endif
+-                      
+       }
+-
+-#else
+-      /* Version 2.x, Hamming codes only */
+-      /* If chip Select is not zero, the CFE may not have initialized the NAND flash */
+-      if (chip->CS[0]) {
+-              /* Nothing for now */
+-      }
+ #endif // Version 3.0+
+ #endif // Version 1.0+
+@@ -8112,17 +6705,12 @@
+ #ifdef EDU_DEBUG_3
+ printk("++++++++++++ EDU_DEBUG_3 enabled\n");
+ #endif
+-#if defined( EDU_DEBUG_4 ) || defined( EDU_DEBUG_5 )
+-init_edu_buf();
+-
+-  #ifdef EDU_DEBUG_4
+-  printk("++++++++++++ EDU_DEBUG_4 (read verify) enabled\n");
+-  #endif
+-
+-  #ifdef EDU_DEBUG_5
+-  printk("++++++++++++ EDU_DEBUG_5 (write verify) enabled\n");
+-  #endif
++#ifdef EDU_DEBUG_4
++printk("++++++++++++ EDU_DEBUG_4 (read verify) enabled\n");
+ #endif
++#ifdef EDU_DEBUG_5
++printk("++++++++++++ EDU_DEBUG_5 (write verify) enabled\n");
++#endif
+ PRINTK("%s 30\n", __FUNCTION__);
+       /*
+@@ -8200,22 +6788,8 @@
+                               }
+                       }
+                       else {
+-                              switch (mtd->writesize) {
+-                              case 4096:
+-                                      if (chip->ecclevel == BRCMNAND_ECC_HAMMING) {
+-                                              printk(KERN_WARNING "This SLC-4K-page flash may not be suitable for Hamming codes\n");
+-                                              chip->ecclayout = &brcmnand_oob_128;
+-                                      }
+-                                      else {
+-                                              chip->ecclayout = &brcmnand_oob_bch4_4k;
+-                                      }
+-                                      break;
+-
+-                              default:
+-                                      printk(KERN_ERR "Unsupported page size of %d\n", mtd->writesize);
+-                                      BUG();
+-                                      break;
+-                              }
++                              printk(KERN_ERR "Unsupported SLC NAND with page size of %d\n", mtd->writesize);
++                              BUG();
+                       }
+                       break;
+                       
+@@ -8239,18 +6813,7 @@
+       //chip->eccOobSize = (mtd->oobsize*512) /mtd->writesize; 
+       printk(KERN_INFO "mtd->oobsize=%d, mtd->eccOobSize=%d\n", mtd->oobsize, chip->eccOobSize);
+-#ifdef CONFIG_MTD_BRCMNAND_ISR_QUEUE
+       if (!chip->read_page)
+-              chip->read_page = brcmnand_isr_read_page;
+-      if (!chip->write_page)
+-              chip->write_page = brcmnand_isr_write_page;
+-      if (!chip->read_page_oob)
+-              chip->read_page_oob = brcmnand_isr_read_page_oob;
+-      /* There is no brcmnand_isr_write_page_oob */
+-      if (!chip->write_page_oob)
+-              chip->write_page_oob = brcmnand_write_page_oob;
+-#else
+-      if (!chip->read_page)
+               chip->read_page = brcmnand_read_page;
+       if (!chip->write_page)
+               chip->write_page = brcmnand_write_page;
+@@ -8258,7 +6821,6 @@
+               chip->read_page_oob = brcmnand_read_page_oob;
+       if (!chip->write_page_oob)
+               chip->write_page_oob = brcmnand_write_page_oob;
+-#endif
+       if (!chip->read_oob)
+               chip->read_oob = brcmnand_do_read_ops;
+       if (!chip->write_oob)
+@@ -8387,17 +6949,21 @@
+       EDU_init();
+ #endif
++gdebug=0;
++if (0) {
++      char oob[128];
++      
++      printk("------------------> Dry-run\n");
++      brcmnand_posted_read_oob(mtd, oob, device_size(mtd) - mtd->erasesize, 1);
++      print_oobbuf(oob, 16);
++      printk("<------------------ End Dry-run\n");
++}
++if (gdebug > 3) printk("%s 60 Calling scan_bbt\n", __FUNCTION__);
+-#ifdef CONFIG_MTD_BRCMNAND_DISABLE_XOR
+-gdebug=4;
+-      printk("-----------------------------------------------------\n");
+-      print_nand_ctrl_regs();
+-      printk("-----------------------------------------------------\n");
+-#endif
+-
+-
+       err =  chip->scan_bbt(mtd);
++if (gdebug > 3) printk("%s 80 Done scan_bbt\n", __FUNCTION__);        
++//gdebug=0;
+ #ifdef CONFIG_MTD_BRCMNAND_CORRECTABLE_ERR_HANDLING
+@@ -8411,9 +6977,9 @@
+       }
+ #endif
+-//gdebug=0;
+ PRINTK("%s 99\n", __FUNCTION__);
++if (gdebug) print_diagnostics();
+       return err;
+ }
+Index: drivers/mtd/brcmnand/brcmnand_cet.c
+===================================================================
+--- drivers/mtd/brcmnand/brcmnand_cet.c        (revision 1)
++++ drivers/mtd/brcmnand/brcmnand_cet.c        (working copy)
+@@ -72,20 +72,12 @@
+ #define CET_SYNC_FREQ (10*60*HZ)      
+-
+ static char cet_pattern[] = {'C', 'E', 'T', 0};
+ static struct brcmnand_cet_descr cet_descr = {
+       .offs = 9,
+       .len = 4,
+       .pattern = cet_pattern
+ };
+-
+-/* 
+- * This also applies to Large Page SLC flashes with BCH-4 ECC.
+- * We don't support BCH-4 on Small Page SLCs because there are not 
+- * enough free bytes for the OOB, but we don't enforce it,
+- * in order to allow page aggregation like in YAFFS2 on small page SLCs.
+- */
+ static struct brcmnand_cet_descr cet_descr_mlc = {
+       .offs = 1,
+       .len = 4,
+@@ -685,18 +677,10 @@
+       if (unlikely(gdebug)) {
+               printk(KERN_INFO "brcmnandCET: Creating correctable error table ...\n");
+       }
+-      
+-      if (NAND_IS_MLC(this) || /* MLC flashes */
+-         /* SLC w/ BCH-n; We don't check for pageSize, and let it be */
+-         (this->ecclevel >= BRCMNAND_ECC_BCH_1 && this->ecclevel <= BRCMNAND_ECC_BCH_12)) 
+-      {
++      if (NAND_IS_MLC(this)) {
+               this->cet = cet = &cet_descr_mlc;
+-if (gdebug) printk("%s: CET = cet_desc_mlc\n", __FUNCTION__);
+-      } 
+-
+-      else {
++      } else {
+               this->cet = cet = &cet_descr;
+-if (gdebug) printk("%s: CET = cet_descr\n", __FUNCTION__);
+       }
+       cet->flags = 0x00;
+       /* Check that BBT table and mirror exist */
+Index: drivers/mtd/brcmnand/brcmnand_isr.c
+===================================================================
+--- drivers/mtd/brcmnand/brcmnand_isr.c        (revision 1)
++++ drivers/mtd/brcmnand/brcmnand_isr.c        (working copy)
+@@ -22,705 +22,189 @@
+  * 20090318   tht             Original coding
+  */
+-//#define ISR_DEBUG_SMP
+-#undef ISR_DEBUG_SMP
+-#ifdef ISR_DEBUG_SMP
+-#include <asm/atomic.h>
+-#endif
+-
+-
+ #include "brcmnand_priv.h"
+ #include "edu.h"
+-#include <linux/dma-mapping.h>
+-
+ #define PRINTK(...)
+-//#define PRINTK printk
+-
+-#ifdef ISR_DEBUG_SMP
+-static atomic_t v = ATOMIC_INIT(1);
+-#define PRINTK1(...) if (!atomic_dec_and_test(&v)) printk("<")
+-#define PRINTK2(...) atomic_inc(&v)  //, printk(">"))
+-#define PRINTK5(...) if (!atomic_dec_and_test(&v))  printk("+");
+-#define PRINTK6(...) atomic_inc(&v)  // printk("-");
+-#define PRINTK3(...) if (!atomic_dec_and_test(&v)) printk("[");
+-#define PRINTK4(...) atomic_inc(&v) // printk("]");
+-
+-#else
+-#define PRINTK1(...)
+-#define PRINTK2(...)
+-#define PRINTK3(...)
+-#define PRINTK4(...)
+-#define PRINTK5(...)
+-#define PRINTK6(...)
+-#endif
++//define PRINTK printk
+  
+  // Wakes up the sleeping calling thread.
+ static DECLARE_WAIT_QUEUE_HEAD(gEduWaitQ);
+-//eduIsrNode_t gEduIsrData; 
+-eduIsrNode_t gEduIsrPool[MAX_JOB_QUEUE_SIZE+2]; /* ReadOp Pool, add 2 for Pushed WAR jobs */
++eduIsrData_t gEduIsrData;
+-isrJobQ_t gJobQ; /* Job Queue */
+-
+-extern int gdebug;
+-
+-
+-/*
+- * Queue next sector for read/write, assuming caller holds queue lock
+- */
+-eduIsrNode_t* 
+-ISR_queue_read_request(struct mtd_info *mtd,
+-        void* buffer, u_char* oobarea, loff_t offset)
++static irqreturn_t ISR_isr(int irq, void *devid, struct pt_regs *regs)
+ {
+-      eduIsrNode_t* entry; 
+-      struct list_head* node;
+-
+-      // Grab one request from avail list
+-      if (list_empty(&gJobQ.availList)) {
+-              printk("%s: Empty avail list\n", __FUNCTION__);
+-              BUG();
+-      }
+-      node = gJobQ.availList.next;
+-      if (!node) {
+-              printk("%s: Empty avail list\n", __FUNCTION__);
+-              BUG();
+-      }
+-      entry = list_entry(node, eduIsrNode_t, list);
+-      list_del(node);
+-
+-      // Queue entry
+-      list_add_tail(node, &gJobQ.jobQ);
+-      spin_lock_init(&entry->lock);
+-      entry->mtd = mtd;
+-      entry->buffer = buffer;
+-      entry->oobarea = oobarea;
+-      entry->offset = offset;
+-      entry->ret = -1;
+-      entry->refCount = 1;
+-      entry->opComplete = ISR_OP_QUEUED;
+-      
+-      return entry;
+-}
+-
+-eduIsrNode_t* 
+-ISR_queue_write_request(struct mtd_info *mtd,
+-        const void* buffer, const u_char* oobarea, loff_t offset)
+-{
+-      eduIsrNode_t* entry; 
+-      struct list_head* node;
+-
+-      // Grab one request from avail list
+-      if (list_empty(&gJobQ.availList)) {
+-              printk("%s: Empty avail list\n", __FUNCTION__);
+-              BUG();
+-      }
+-      node = gJobQ.availList.next;
+-      if (!node) {
+-              printk("%s: Empty avail list\n", __FUNCTION__);
+-              BUG();
+-      }
+-      entry = list_entry(node, eduIsrNode_t, list);
+-      list_del(node);
+-
+-      // Queue entry
+-      list_add_tail(node, &gJobQ.jobQ);
+-      spin_lock_init(&entry->lock);
+-      entry->mtd = mtd;
+-      entry->buffer = buffer;
+-      entry->oobarea = oobarea;
+-      entry->offset = offset;
+-      entry->ret = -1;
+-      entry->refCount = 1;
+-      entry->opComplete = ISR_OP_QUEUED;
+-
+-      return entry;
+-}
+-
+-
+-/*
+- * Push next sector for dummy read to head of queue, assuming caller holds queue lock
+- * Job will be next to be executed
+- */
+-eduIsrNode_t*  
+-ISR_push_request(struct mtd_info *mtd,
+-        void* buffer, u_char* oobarea, loff_t offset) 
+-{
+-      eduIsrNode_t* entry; 
+-      struct list_head* node;
+-
+-      // Grab one request from avail list
+-      if (list_empty(&gJobQ.availList)) {
+-              printk("%s: Empty avail list\n", __FUNCTION__);
+-              BUG();
+-      }
+-      node = gJobQ.availList.next;
+-      if (!node) {
+-              printk("%s: Empty avail list\n", __FUNCTION__);
+-              BUG();
+-      }
+-      entry = list_entry(node, eduIsrNode_t, list);
+-      list_del(node);
+-
+-      // Push to head of queue
+-      list_add(node, &gJobQ.jobQ);
+-      spin_lock_init(&entry->lock);
+-      entry->mtd = mtd;
+-      entry->buffer = buffer;
+-      entry->oobarea = oobarea;
+-      entry->offset = offset;
+-      entry->ret = -1;
+-      entry->refCount = 1;
+-      entry->opComplete = ISR_OP_QUEUED;
+-
+-      return entry;   
+-}
+-
+-
+-/*
+- * Called with ReqdQ Read lock held
+- * Returns pointer to node that satisfies opStatus, 
+- * with spin lock held (spin_lock()'ed assuming queue lock has been held))
+- */
+-eduIsrNode_t*
+-ISR_find_request( isrOpStatus_t opStatus)
+-{
+-      eduIsrNode_t* req;
+-
+-      list_for_each_entry(req, &gJobQ.jobQ, list) {
+-              
+-              // We called this with spin_lock_irqsave on queue lock, so no need for the irq variant
+-              spin_lock(&req->lock);
+-              if (req->opComplete == opStatus) {
+-                      return req;
+-              }
+-              spin_unlock(&req->lock);
+-      }
+-      return (eduIsrNode_t*) 0;;
+-}
+-
+-#if 0
+-static void
+-ISR_print_queue(void)
+-{
+-      eduIsrNode_t* req;
+-      int i=0;
+-
+-      list_for_each_entry(req, &gJobQ.jobQ, list) {
+-              
+-              // We called this with spin_lock_irqsave on queue lock, so no need for the irq variant
+-              printk("I=%d req=%p, offset=%0llx, opComp=%d, list=%p, next=%p, prev=%p\n",
+-                      i, req, req->offset, req->opComplete, &req->list, req->list.next, req->list.prev);
+-              i++;
+-      }
+-      return (eduIsrNode_t*) 0;;
+-}
+-#endif
+-
+-
+-/*
+- * We've got interrupted, and verified that job is complete. 
+- * Job lock has been held by caller.
+- * Do Read completion routines
+- * runs in interrupt context.
+- * Return returned value of read-op.
+- */
+-
+-
+-
+-#if 0 //def EDU_DOUBLE_BUFFER_READ
+-
+-/* Save this to be revived when we are sure that EDU's double buffering works */
+-static int
+-ISR_read_completion(eduIsrNode_t* req)
+-{
+-      /* Make sure that the current request does not cause an UNC ERR, as
+-       * that would require a read from the LKGS to reset EDU
+-       */
+-      if (req->status & HIF_INTR2_EDU_ERR) {
+-              uint32_t edu_err_status;
+-
+-              edu_err_status = EDU_volatileRead(EDU_BASE_ADDRESS + EDU_ERR_STATUS);
+-              if (edu_err_status && edu_err_status != EDU_ERR_STATUS_NandECCcor) {
+-
+-                      /* If error, we must stop the on-going EDU op, because it will be dropped by EDU.  
+-                       * This is VLSI PR2389
+-                       */
+-                      edu_status = EDU_volatileRead(EDU_BASE_ADDRESS + EDU_STATUS);
+-                      if (edu_status & BCHP_EDU_STATUS_Active_MASK) {
+-                              uint32_t edu_done = EDU_volatileRead(EDU_BASE_ADDRESS + EDU_DONE);
+-
+-
+-                              // Abort current command
+-                              EDU_volatileWrite(EDU_BASE_ADDRESS + EDU_STOP, BCHP_EDU_STOP_Stop_MASK);
+-
+-                              // Wait for Done to increment
+-                              while (edu_done == EDU_volatileRead(EDU_BASE_ADDRESS + EDU_DONE))
+-                                      udelay(10);
+-                              // Wait for Pending and Active to Clear
+-                              while (0 != (edu_status = EDU_volatileRead(EDU_BASE_ADDRESS + EDU_STATUS)))
+-                                      udelay(10);
+-                              // Reset Stop
+-                              EDU_volatileWrite(EDU_BASE_ADDRESS + EDU_STOP, 0);
+-                              // Let the process context thread handle the WAR,
+-                              // But we need to requeue the current op (req2)
+-                              req2 = req->list.next;
+-                              down(&req2->lock);
+-                              if (req2 && req2->opComplete == ISR_OP_SUBMITTED) {
+-                                      req2->opComplete = ISR_OP_QUEUED;
+-                              }
+-                              up(&req2->lock);
+-                      }
+-              }
+-                      
+-      }
+-       // ReadOp completes with no errors, queue next requests until Pending is set
+-                      
+-
+-}
+-
+-#endif        
+-
+-/*
+- * The requests are queued, some with ISR_OP_SUBMITTED status, some with ISR_OP_QUEUED
+- * When an interrupt comes in, we just look for the one that are in submitted status, and mark them
+- * as ISR_OP_COMPLETE, and wake up the wait queue.
+- * However, if (1) there is an error that requires a workaround, or (2) that the operation is not yet completed,
+- * we need to take appropriate action depending on the case.
+- * In (1), we have a false uncorrectable error, that need a read from the last known good sector, 
+- * so if double buffering is in effect, we need to abort the current EDU job, in order to do the workaround.
+- * In (2) we just update the current job, and let the HW interrupt us again.
+- * 
+- * Runs in interrupt context.
+- */ 
+-static irqreturn_t 
+-ISR_isr(int irq, void *devid, struct pt_regs *regs)
+-{
+       uint32_t status, rd_data;
+       uint32_t intrMask;  
+-      eduIsrNode_t* req;
+-      //struct list_head* node;
+-      uint32_t flashAddr;
+       unsigned long flags;
+       /*
+        * Not mine
+        */
+-      if (devid != (void*) &gJobQ) {
++      if (devid != (void*) &gEduIsrData) {
+               return IRQ_NONE;
+       }
+-      spin_lock_irqsave(&gJobQ.lock, flags);
+-      /* TBD: How to tell Read Request from Write Request */
+-      if (list_empty(&gJobQ.jobQ)) { 
+-              printk("%s: Impossible no job to process\n", __FUNCTION__);
+-              //BUG();
+-              // CLear interrupt and return
+-              intrMask = ISR_volatileRead(BCM_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_MASK_STATUS);
+-              ISR_disable_irq(intrMask);
+-              spin_unlock_irqrestore(&gJobQ.lock, flags);
+-              return IRQ_HANDLED;
+-      } 
+-      
+-      flashAddr = EDU_volatileRead(EDU_BASE_ADDRESS+EDU_EXT_ADDR) - (EDU_LENGTH_VALUE-1);
+-
+-      flashAddr &= ~(EDU_LENGTH_VALUE-1);
+-      
+-      req = ISR_find_request(ISR_OP_SUBMITTED);
+-
+-      // Paranoia
+-      if (!req) {
+-              printk("%s: Impossible failed to find queued job\n", __FUNCTION__);
+-              BUG();
+-      }
+-
+-      // req->lock held here.
+-                      
+-      /*
+-       * Remember the status, as there can be several L1 interrupts before completion.
+-       * Grab the lock first, we don't want any race condition.
+-       */
+-      // spin_lock(&req->lock);  Already locked by ISR_find_request
+       intrMask = ISR_volatileRead(BCM_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_MASK_STATUS);
+       rd_data = ISR_volatileRead(BCM_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_STATUS);
+       
+-PRINTK("==> %s: Awaken rd_data=%08x, intrMask=%08x, cmd=%d, flashAddr=%08x\n", __FUNCTION__, 
+-      rd_data, intrMask, gJobQ.cmd, req->edu_ldw);
++PRINTK("%s: Awaken rd_data=%08x, intrMask=%08x, cmd=%d, flashAddr=%08x\n", __FUNCTION__, 
++      rd_data, intrMask, gEduIsrData.cmd, gEduIsrData.flashAddr);
+-      req->status |= rd_data;
+-      status = req->status & req->mask;
+-      
+       /*
+-       * Evaluate exit/completion condition. 
++       * Remember the status, as there can be several L1 interrupts before completion
+        */
+-      switch (gJobQ.cmd) {
++      spin_lock_irqsave(&gEduIsrData.lock, flags);
++      gEduIsrData.status |= rd_data;
++      status = gEduIsrData.status & gEduIsrData.mask;
++      
++      // Evaluate exit/completion condition
++      switch (gEduIsrData.cmd) {
+       case EDU_READ:
+       case NAND_CTRL_READY:
+-              if  ((req->expect == (req->status & req->expect)) || 
+-                                                              (req->status & req->error))
+-              {
+-                      req->opComplete = ISR_OP_COMPLETED;
+-              }
++              gEduIsrData.opComplete = ((gEduIsrData.expect == (gEduIsrData.status & gEduIsrData.expect)) || 
++                                                              (gEduIsrData.status & gEduIsrData.error));
+               break;
+               
+       case EDU_WRITE:
+               /* 
+                * We wait for both DONE|ERR +CTRL_READY
+                */
+-              if ((req->expect == (req->status & req->expect) ||
+-                                                                      (req->status & req->error))
++              gEduIsrData.opComplete = ((gEduIsrData.expect == (gEduIsrData.status & gEduIsrData.expect) ||
++                                                                      (gEduIsrData.status & gEduIsrData.error))
+                                                               &&
+-                                                              (req->status & HIF_INTR2_CTRL_READY))
+-              {
+-                      req->opComplete = ISR_OP_COMPLETED;
+-                      (void) dma_unmap_single(NULL, req->physAddr, EDU_LENGTH_VALUE, DMA_TO_DEVICE);
+-              }
+-              break;  
+-              
+-      default:
+-              printk("%s: Invalid command %08x\n", __FUNCTION__, gJobQ.cmd);
+-              BUG();
++                                                              (gEduIsrData.status & HIF_INTR2_CTRL_READY));
++              break;                                                  
+       }
+-      if (ISR_OP_COMPLETED == req->opComplete) {
+-              int submitted;
+-
+-              /* ACK interrupt */
+-              ISR_disable_irq(req->intr);
+-
+-              // Do we need to do WAR for EDU, since EDU stop dead in its track regardless of the kind of errors.  Bummer!
+-              if (req->status & HIF_INTR2_EDU_ERR) {
+-                      uint32_t edu_err_status;
+-
+-                      /*
+-                       * We need to do WAR for EDU, which just stops dead on its tracks if there is any error, correctable or not.
+-                       * Problem is, the WAR needs to be done in process context,
+-                       * so we wake up the process context thread, and handle the WAR there.
+-                       */
+-PRINTK("%s: Awaken process context thread for EDU WAR, flashAddr=%08x, status=%08x, hif_intr2=%08x\n", 
+-__FUNCTION__, req->edu_ldw, req->status, HIF_INTR2_EDU_ERR);
+-                      gJobQ.needWakeUp= 1;
+-                      req->opComplete = ISR_OP_NEED_WAR;
+-                      wake_up(&gEduWaitQ);
+-                      spin_unlock(&req->lock);
+-                      spin_unlock_irqrestore(&gJobQ.lock, flags);
+-                      return IRQ_HANDLED;
+-              }
+-
+-              /*
+-               * Get here only if there are no errors, call job completion routine.
+-               */
+-              switch (gJobQ.cmd) {
+-              case EDU_READ:
+-                      /* All is left to do is to handle the OOB read */
+-                      req->ret = brcmnand_edu_read_comp_intr(req->mtd, req->buffer, req->oobarea, req->offset,
+-                                              req->status);
+-                      break;
+-
+-              case EDU_WRITE:
+-                      {
+-                              /*
+-                               * Even if there are no HIF_INTR2_ERR, we still need to check
+-                               * the flash status.  If it is set, we need to update the BBT
+-                               * which requires process context WAR
+-                               */
+-                              struct brcmnand_chip *chip = req->mtd->priv;
+-                              uint32_t flashStatus = chip->ctrl_read(BCHP_NAND_INTFC_STATUS);
+-
+-                              req->needBBT=0;
+-                              /* Just to be dead sure */
+-                              if (!(flashStatus & BCHP_NAND_INTFC_STATUS_CTLR_READY_MASK)) {
+-                                      printk("%s: Impossible, CTRL-READY already asserted\n", __FUNCTION__);
+-                                      BUG();
+-                              }
+-                              /* Check for flash write error, in which case tell process context thread to handle it */
+-                              if (flashStatus & 0x1) {
+-                                      req->needBBT = 1;
+-                                      gJobQ.needWakeUp= 1;
+-                                      req->opComplete = ISR_OP_NEED_WAR;
+-                                      wake_up(&gEduWaitQ);
+-                                      spin_unlock(&req->lock);
+-                                      spin_unlock_irqrestore(&gJobQ.lock, flags);
+-                                      return IRQ_HANDLED;
+-                              }
+-                              /* Nothing to be done when everything is OK 
+-                              *else
+-                              *       req->ret = brcmnand_edu_write_completion(req->mtd, req->buffer, req->oobarea, req->offset,
+-                              *               req->status, req->physAddr, rq->needBBT);
+-                              */
+-                      }
+-                      break;
+-              }
+-
+-              // Jop completes with no errors, queue next requests until Pending is set
+-              list_del(&req->list);
+-
+-              list_add_tail(&req->list, &gJobQ.availList);
+-              spin_unlock(&req->lock);
+-              
+-              submitted = brcmnand_isr_submit_job();
+-
+-              if (!submitted) { /* No more job to submit, we are done, wake up process context thread */
+-                      wake_up(&gEduWaitQ);
+-              }
+-
++      if (gEduIsrData.opComplete) {
++              ISR_disable_irq(gEduIsrData.intr);
++              wake_up_interruptible(&gEduWaitQ);
+       }
+-              
+       else {
+               /* Ack only the ones that show */
+-              uint32_t ack = req->status & req->intr;
++              uint32_t ack = gEduIsrData.status & gEduIsrData.intr;
+               
+-PRINTK("%s: opComp=0, intr=%08x, mask=%08x, expect=%08x, err=%08x, status=%08x, rd_data=%08x, intrMask=%08x, flashAddr=%08x, DRAM=%08x\n", __FUNCTION__, 
+-req->intr, req->mask, req->expect, req->error, req->status, rd_data, intrMask, req->flashAddr, req->dramAddr);
++printk("%s: opComp=0, intr=%08x, mask=%08x, expect=%08x, err=%08x, status=%08x, rd_data=%08x, intrMask=%08x, flashAddr=%08x, DRAM=%08x\n", __FUNCTION__, 
++gEduIsrData.intr, gEduIsrData.mask, gEduIsrData.expect, gEduIsrData.error, gEduIsrData.status, rd_data, intrMask, gEduIsrData.flashAddr, gEduIsrData.dramAddr);
+               // Just disable the ones that are triggered
+               ISR_disable_irq(ack);
+-              req->intr &= ~ack;
++              gEduIsrData.intr &= ~ack;
+-              if (req->intr) {
++              if (gEduIsrData.intr) {
+                       // Re-arm
+-                      ISR_enable_irq(req);
++                      ISR_enable_irq();
+               }
+               else {
+                       printk(KERN_ERR "%s: Lost interrupt\n", __FUNCTION__);
+                       BUG();
+               }
+-              spin_unlock(&req->lock);
+       }
+-      
+-      spin_unlock_irqrestore(&gJobQ.lock, flags);
+-      
+-PRINTK2("<== %s: \n", __FUNCTION__);
++      spin_unlock_irqrestore(&gEduIsrData.lock, flags);
+       return IRQ_HANDLED;
+ }
+-
+-
+-/*
+- * Called with no lock
+- * Wait until the Read Queue is empty
+- * Run in process context. 
+- * Return 0 if all jobs complete successfully
+- * Return error codes and abort if any job returned un-correctable errors.
+- */
+-int
+-ISR_wait_for_queue_completion(void)
++uint32_t ISR_wait_for_completion(void)
+ {
+       //uint32_t rd_data;
+-//volatile unsigned int c = 0xfedeadad;
+-      int ret = -ERESTARTSYS;
+-      int waitret;
++      int ret;
+       unsigned long to_jiffies = 3*HZ; /* 3 secs */
+-      //unsigned long cur_jiffies = jiffies;
+-      unsigned long expired = jiffies + to_jiffies;
+       int cmd;
+-      eduIsrNode_t* req;
+-      eduIsrNode_t saveReq;
+-      int submitted;
+       unsigned long flags;
+       
+-      /* Loop is for wait_event_interruptible_timeout */
+-      do {
+-              waitret = wait_event_timeout(gEduWaitQ, list_empty(&gJobQ.jobQ) || gJobQ.needWakeUp, to_jiffies);
+-              if (waitret == 0) { /* TimeOut */
+-                      ret = BRCMNAND_TIMED_OUT;
+-                      break;
+-              }
+-              spin_lock_irqsave(&gJobQ.lock, flags);
+-              if (gJobQ.needWakeUp) { /* Need to do process context WAR */                    
+-                      req = ISR_find_request(ISR_OP_NEED_WAR);
++      ret = wait_event_interruptible_timeout(gEduWaitQ, gEduIsrData.opComplete, to_jiffies);
+-                      if (!req) {
+-                              printk("%s: Cannot find job that need WAR\n", __FUNCTION__);
+-                              BUG();
+-                      }
++      spin_lock_irqsave(&gEduIsrData.lock, flags);
+-                      // Make a copy 
+-                      saveReq = *req;
++      cmd = gEduIsrData.cmd;
++      gEduIsrData.cmd = -1;
+-                      /* Mark the job as complete and free it */
+-                      req->opComplete = ISR_OP_COMPLETED;
+-                      gJobQ.needWakeUp = 0;
+-                      
+-                      // Job, with error, is now complete, remove it from queue, and submit next request
+-                      list_del(&req->list);
+-
+-                      list_add_tail(&req->list, &gJobQ.availList);
+-                      
+-                      spin_unlock(&req->lock);
+-
+-                      // req lock held inside ISR_find_request
+-                      switch (gJobQ.cmd) {
+-                      case EDU_READ:
+-                              ret = brcmnand_edu_read_completion(
+-                                                              saveReq.mtd, saveReq.buffer, saveReq.oobarea, saveReq.offset,
+-                                                              saveReq.status);
+-                              break;
+-                      case EDU_WRITE:
+-                              ret = brcmnand_edu_write_war(
+-                                                      saveReq.mtd, saveReq.buffer, saveReq.oobarea, saveReq.offset,
+-                                                      saveReq.status, saveReq.needBBT);
+-                              break;
+-                      default:
+-                              printk("%s: Unknown command %d\n", __FUNCTION__, gJobQ.cmd);
+-                              BUG();
+-                      }
+-                      if (ret == 0) { /* WAR worked */
+-                              // Submit next job (which is our dummy job in WAR)
+-                              submitted = brcmnand_isr_submit_job();
+-                      }
+-                      else {
+-                              eduIsrNode_t* tmp;
+-
+-                              // Abort queue, TBD
+-                              list_for_each_entry_safe(req, tmp, &gJobQ.jobQ, list) {
+-                                      list_del(&req->list);
+-
+-                                      list_add_tail(&req->list, &gJobQ.availList);
+-                              }
+-                      }
++      if (!gEduIsrData.opComplete && ret <= 0) {
++              ISR_disable_irq(gEduIsrData.intr);
++              if (ret == -ERESTARTSYS) {
++                      spin_unlock_irqrestore(&gEduIsrData.lock, flags);
++                      return (uint32_t) (ERESTARTSYS);  // Retry on Read
++              }       
++              else if (ret == 0) { 
++                      //gEduIsrData.opComplete = 1;
++                      printk("%s: DMA timedout\n", __FUNCTION__);
++                      spin_unlock_irqrestore(&gEduIsrData.lock, flags);
++                      return 0; // Timed Out
+               }
+-              else { // List is empty
+-                      ret = 0; // Loop exit condition
+-              }
+-              spin_unlock_irqrestore(&gJobQ.lock, flags);     
+-      } while ((ret == -ERESTARTSYS) && time_before(jiffies, expired));
+-      return ret;
++      
++              // DMA completes on Done or Error.
++              //rd_data = ISR_volatileRead(BCM_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_STATUS);
++      
++              printk("%s: EDU completes but Status is %08x\n", __FUNCTION__, gEduIsrData.status);
++              //rd_data = 0; // Treat as a timeout
++      }
++      spin_unlock_irqrestore(&gEduIsrData.lock, flags);
++      return gEduIsrData.status;
+ }
+-#if 0  //ndef CONFIG_MTD_BRCMNAND_ISR_QUEUE
+-
+-/*
+- * Wait for completion when not using queue
+- */
+-uint32_t ISR_wait_for_completion(void)
++uint32_t ISR_cache_is_valid(uint32_t clearMask)
+ {
+-      //uint32_t rd_data;
+-//volatile unsigned int c = 0xfedeadad;
+-      int ret = -ERESTARTSYS;
+-      unsigned long to_jiffies = 3*HZ; /* 3 secs */
+-      //unsigned long cur_jiffies = jiffies;
+-      unsigned long expired = jiffies + to_jiffies;
+-      int cmd;
+-      int retries = 2;
+-      //unsigned long flags;
+-//volatile unsigned int counter = 0xAABBCCDD;
+-//static int erestartsys = 0;
++      uint32_t rd_data = ISR_volatileRead(BCM_BASE_ADDRESS+BCHP_HIF_INTR2_CPU_STATUS);
++      unsigned long flags;
+-      
+-      while (ret == -ERESTARTSYS ) {
+-//printk("%s: jiffies=%08lx, expired=%08lx\n", __FUNCTION__, jiffies, expired);
+-              if (((retries--) < 0) || time_after(jiffies, expired)) {
+-                      ret = 0; // Timed out
+-                      return ERESTARTSYS;
+-              }
+-              else  {
+-                      // Recalculate TO, for retries
+-                      to_jiffies = expired - jiffies;
+-                      //ret = wait_event_interruptible_timeout(gEduWaitQ, gEduIsrData.opComplete, to_jiffies);
+-                      ret = wait_event_timeout(gEduWaitQ, gEduIsrData.opComplete, to_jiffies);
+-              }
++      /*
++       * Already there, no need to wait
++       */
++      if (rd_data & HIF_INTR2_CTRL_READY)
++              return rd_data;
+-PRINTK3("==>%s\n", __FUNCTION__);
+-              down(&gEduIsrData.lock);
+-
+-              cmd = gEduIsrData.cmd;
+-              gEduIsrData.cmd = -1;
+-
+-              if (!gEduIsrData.opComplete && ret <= 0) {
+-                      ISR_disable_irq(gEduIsrData.intr);
+-
+-                      if (ret == -ERESTARTSYS) {
+-                              up(&gEduIsrData.lock);
+-
+-//if (5 >= erestartsys++)
+-//printk("Pending signals: %08lx-%08lx-%08lx-%08lx\n", 
+-//current->pending.signal.sig[0], current->pending.signal.sig[1],current->pending.signal.sig[2], current->pending.signal.sig[3]);
+-                              continue;
+-                      }       
+-                      else if (ret == 0) { 
+-                              //gEduIsrData.opComplete = 1;
+-                              PRINTK("%s: DMA timedout\n", __FUNCTION__);
+-
+-                              up(&gEduIsrData.lock);
+-//printk("<==%s, ret=0 TimeOut\n", __FUNCTION__);
+-PRINTK4("<==%s, ret=0 TimeOut\n", __FUNCTION__);
+-
+-                              return 0; // Timed Out
+-                      }
+-
+-                      
+-                      
+-                      // DMA completes on Done or Error.
+-                      //rd_data = ISR_volatileRead(BCM_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_STATUS);
++      // Clear existing interrupt
++      ISR_volatileWrite(BCM_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_MASK_SET, clearMask);
++      
++       do {
++              spin_lock_irqsave(&gEduIsrData.lock, flags);
++              gEduIsrData.flashAddr = 0;
++              gEduIsrData.dramAddr = 0;
+               
+-PRINTK("%s: EDU completes but Status is %08x\n", __FUNCTION__, gEduIsrData.status);
+-                      //rd_data = 0; // Treat as a timeout
+-              }
++              /*
++               * Enable L2 Interrupt
++               */
++              gEduIsrData.cmd = NAND_CTRL_READY;
++              gEduIsrData.opComplete = 0;
++              gEduIsrData.status = 0;
++              
++              gEduIsrData.mask = HIF_INTR2_CTRL_READY;
++              gEduIsrData.expect = HIF_INTR2_CTRL_READY;
++              gEduIsrData.error = 0;
++              gEduIsrData.intr = HIF_INTR2_CTRL_READY;
+-              up(&gEduIsrData.lock);
+-      }
++              spin_unlock_irqrestore(&gEduIsrData.lock, flags);
+-      return gEduIsrData.status;
+-}
+-#endif
++              ISR_enable_irq();
++      
++              rd_data = ISR_wait_for_completion();
++      } while (rd_data != 0 && !(rd_data & HIF_INTR2_CTRL_READY));
++      return rd_data;
+-/*
+- * Since we cannot use the interrupt, or call schedule, we will have to busy-wait for controller ready.
+- * Executes in interrupt context
+- */
+-int 
+-ISR_cache_is_valid(void)
+-{
+-      uint32_t rd_data; 
+-      unsigned long expired = jiffies + HZ/10000; /* 100 usec, enough for any flash op to complete */
+-
+-      do {
+-              rd_data = ISR_volatileRead(BCM_BASE_ADDRESS+BCHP_HIF_INTR2_CPU_STATUS);
+-
+-      } while (!(rd_data & HIF_INTR2_CTRL_READY) && time_before(jiffies, expired));
+-      return (0 != (rd_data & HIF_INTR2_CTRL_READY)) ;
+ }
+ void ISR_init(void)
+ {
+-      int i, ret;
++      int ret;
+       uint32_t intrMask;
+-      unsigned long flags;
+-      //init_MUTEX(&gEduIsrData.lock); // Write lock
+-      spin_lock_init(&gJobQ.lock);            // Read queue lock
++      spin_lock_init(&gEduIsrData.lock);
+       
+-      INIT_LIST_HEAD(&gJobQ.jobQ);
+-      INIT_LIST_HEAD(&gJobQ.availList);
+-      /* Add all nodes from pool to avail list */
+-
+-      spin_lock_irqsave(&gJobQ.lock, flags);
+-PRINTK("%s: B4\n", __FUNCTION__);
+-ISR_print_avail_list();
+-      for (i=0; i<MAX_JOB_QUEUE_SIZE;i++) {
+-              eduIsrNode_t* e = &gEduIsrPool[i];
+-
+-              //init_MUTEX(&e->lock);
+-              list_add_tail(&e->list, &gJobQ.availList);
+-      }
+-      spin_unlock_irqrestore(&gJobQ.lock, flags);
+-PRINTK("%s: After\n", __FUNCTION__);
+-ISR_print_avail_list();
+-//BUG();
+-
+       // Mask all L2 interrupts
+       intrMask = ISR_volatileRead(BCM_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_MASK_STATUS);
+       ISR_volatileWrite(BCM_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_MASK_SET, ~intrMask);
+       BARRIER;
+-      ret = request_irq(BCM_LINUX_CPU_INTR1_IRQ, ISR_isr, SA_SHIRQ, "brcmnand EDU", &gJobQ);
++      ret = request_irq(BCM_LINUX_CPU_INTR1_IRQ, ISR_isr, SA_SHIRQ, "brcmnand EDU", &gEduIsrData);
+       if (ret) {
+               printk(KERN_INFO "%s: request_irq(BCM_LINUX_CPU_INTR1_IRQ) failed ret=%d.  Someone not sharing?\n", 
+                       __FUNCTION__, ret);
+       }
++      
+ }
+Index: drivers/mtd/brcmnand/eduproto.h
+===================================================================
+--- drivers/mtd/brcmnand/eduproto.h    (revision 1)
++++ drivers/mtd/brcmnand/eduproto.h    (working copy)
+@@ -77,7 +77,7 @@
+ extern void EDU_init(void);
+-extern int EDU_write(volatile const void*, uint32_t, uint32_t*);
++extern int EDU_write(volatile const void*, uint32_t);
+ extern int EDU_read(volatile void*, uint32_t);
+ extern uint32_t EDU_get_error_status_register(void);
+Index: drivers/mtd/brcmnand/brcmnand_priv.h
+===================================================================
+--- drivers/mtd/brcmnand/brcmnand_priv.h       (revision 1)
++++ drivers/mtd/brcmnand/brcmnand_priv.h       (working copy)
+@@ -38,27 +38,13 @@
+ #include <linux/wait.h>
+ #include <linux/spinlock.h>
+ #include <linux/interrupt.h>
+-#include <linux/list.h>
+ //#include "edu.h"
+ #endif
+-#define BRCMNAND_CORRECTABLE_ECC_ERROR                (1)
+-#define BRCMNAND_SUCCESS                                              (0)
+-#define BRCMNAND_UNCORRECTABLE_ECC_ERROR      (-1)
+-#define BRCMNAND_FLASH_STATUS_ERROR                   (-2)
+-#define BRCMNAND_TIMED_OUT                                    (-3)
+-
+-#ifdef CONFIG_MTD_BRCMNAND_EDU
+-#define BRCMEDU_CORRECTABLE_ECC_ERROR         (4)
+-#define BRCMEDU_UNCORRECTABLE_ECC_ERROR      (-4)
+-
+-#define  BRCMEDU_MEM_BUS_ERROR                                (-5)
+-
+-
++#if defined( CONFIG_MTD_BRCMNAND_EDU )
+ #define BRCMNAND_malloc(size) kmalloc(size, GFP_DMA)
+ #define BRCMNAND_free(addr) kfree(addr)
+-
+ #else
+ #define BRCMNAND_malloc(size) vmalloc(size)
+ #define BRCMNAND_free(addr) vfree(addr)
+@@ -77,125 +63,31 @@
+                                    "nop; nop; nop; nop; nop; nop;\n\t" \
+                                    ".set reorder\n\t")
+-/* 
+- * Right now we submit a full page Read for queueing, so with a 8KB page,
+- * and an ECC step of 512B, the queue depth is 16. Add 2 for dummy elements
+- * during EDU WAR
+- */
+-#if CONFIG_MTD_BRCMNAND_VERSION <=  CONFIG_MTD_BRCMNAND_VERS_3_3
+-#define MAX_NAND_PAGE_SIZE    (4<<10)
+-#else
+-#define MAX_NAND_PAGE_SIZE    (8<<10)
+-#endif
++typedef struct eduIsrData {
++      spinlock_t lock; // For SMP and future double buffering on Read.
++      int cmd;        // 1 == Read, 0 == Write
+-/* Max queue size is (PageSize/512B_ECCSize)+2 spare for WAR */
+-#define MAX_JOB_QUEUE_SIZE    ((MAX_NAND_PAGE_SIZE>>9))
+-
+-typedef enum {
+-      ISR_OP_QUEUED = 0, 
+-      ISR_OP_SUBMITTED = 1, 
+-      ISR_OP_NEED_WAR = 2,
+-      ISR_OP_COMPLETED = 3, 
+-      ISR_OP_TIMEDOUT = 4
+-} isrOpStatus_t;
+-
+-typedef struct eduIsrNode {
+-      struct list_head list;
+-      spinlock_t lock; // per Node update lock
+-      // int cmd;     // 1 == Read, 0 == Write
+-
+-      // ISR stuffs
+       uint32_t mask;  /* Clear status mask */
+       uint32_t expect;        /* Status on success */
+       uint32_t error; /* Status on error */
+       uint32_t intr;          /* Interrupt bits */
+       uint32_t status;        /* Status read during ISR.  There may be several interrupts before completion */
+-      isrOpStatus_t opComplete;       /* Completion status */
++      int opComplete; /* Completion criterium */
+-      /* Controller Level params (for queueing)  */
+-      struct mtd_info* mtd;
+-      void*   buffer;
+-      u_char*         oobarea;
+-      loff_t  offset;
+-      int             ret;
+-      int             needBBT;
++      /* For debugging only */
++      uint32_t flashAddr;
++      uint32_t dramAddr;
++} eduIsrData_t;
+-      /* EDU level params (for ISR) */
+-      uint32_t edu_ldw;
+-      uint32_t physAddr;
+-      uint32_t hif_intr2;
+-      uint32_t edu_status;
++extern eduIsrData_t gEduIsrData;
+-      int refCount;           /* Marked for re-use when refCount=0 */
+-      unsigned long expired; /* Time stamp for expiration, 3 secs from submission */
+-} eduIsrNode_t;
+-
+-/*
+- * Read/Write Job Q.
+- * Process one page at a time, and queue 512B sector Read or Write EDU jobs.
+- * ISR will wake up the process context thread iff
+- * 1-EDU reports an error, in which case the process context thread need to be awaken
+- *            in order to do WAR
+- * 2-Q is empty, in which case the page read/write op is complete.
+- */
+-typedef struct jobQ_t {
+-      struct list_head        jobQ;           /* Nodes queued for EDU jobs */
+-      struct list_head        availList;      /* Free Nodes */
+-      spinlock_t              lock;           /* Queues guarding spin lock */
+-      int                             needWakeUp;     /* Wake up Process context thread to do EDU WAR */
+-      int                             cmd;            /* 1 == Read, 0 == Write */
+-} isrJobQ_t;
+-
+-extern isrJobQ_t gJobQ; 
+-
+ void ISR_init(void);
+-/*
+- * Submit the first entry that is in queued state,
+- * assuming queue lock has been held by caller.
+- * 
+- * @doubleBuffering indicates whether we need to submit just 1 job or until EDU is full (double buffering)
+- * Return the number of job submitted for read.
+- *
+- * In current version (v3.3 controller), since EDU only have 1 register for EDU_ERR_STATUS,
+- * we can't really do double-buffering without losing the returned status of the previous read-op.
+- */
+-#undef EDU_DOUBLE_BUFFER_READ
+-
+-int brcmnand_isr_submit_job(void);
+-
+-eduIsrNode_t*  ISR_queue_read_request(struct mtd_info *mtd,
+-        void* buffer, u_char* oobarea, loff_t offset);
+-eduIsrNode_t* ISR_queue_write_request(struct mtd_info *mtd,
+-        const void* buffer, const u_char* oobarea, loff_t offset);
+-eduIsrNode_t*  ISR_push_request(struct mtd_info *mtd,
+-        void* buffer, u_char* oobarea, loff_t offset);
+-
+-
+-int brcmnand_edu_read_completion(struct mtd_info* mtd, 
+-        void* buffer, u_char* oobarea, loff_t offset, uint32_t intr_status);
+-
+-int brcmnand_edu_read_comp_intr(struct mtd_info* mtd, 
+-        void* buffer, u_char* oobarea, loff_t offset, uint32_t intr_status);
+-
+-#ifdef CONFIG_MTD_BRCMNAND_ISR_QUEUE
+-int brcmnand_edu_write_completion(struct mtd_info *mtd,
+-        const void* buffer, const u_char* oobarea, loff_t offset, uint32_t intr_status, 
+-        int needBBT);
+-#endif
+-eduIsrNode_t* ISR_find_request( isrOpStatus_t opStatus);
+-
+ uint32_t ISR_wait_for_completion(void);
++uint32_t ISR_cache_is_valid(uint32_t clearMask);
+-/*
+- *  wait for completion with read/write Queue
+- */
+-int ISR_wait_for_queue_completion(void);
+-
+-int ISR_cache_is_valid(void);
+-
+-static __inline__ uint32_t ISR_volatileRead(uint32_t addr)
++static inline uint32_t ISR_volatileRead(uint32_t addr)
+ {
+         volatile uint32_t* pAddr;
+         
+@@ -204,7 +96,7 @@
+         return *(uint32_t *)pAddr;
+ }
+-static __inline__ void ISR_volatileWrite(uint32_t addr, uint32_t data)
++static inline void ISR_volatileWrite(uint32_t addr, uint32_t data)
+ {
+         volatile uint32_t* pAddr;
+@@ -212,7 +104,7 @@
+         *pAddr = (volatile uint32_t)data;
+ }
+-static __inline__ void ISR_enable_irq(eduIsrNode_t* req)
++static inline void ISR_enable_irq(void)
+ {
+       uint32_t intrMask; 
+       //unsigned long flags;
+@@ -220,68 +112,42 @@
+       //spin_lock_irqsave(&gEduIsrData.lock, flags);
+       
+       // Clear status bits
+-      ISR_volatileWrite(BCM_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_CLEAR, req->mask);
++      ISR_volatileWrite(BCM_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_CLEAR, gEduIsrData.mask);
++#if 0
++      // Disable everything that may screw us up
++      intrMask = EDU_volatileRead(EDU_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_MASK_STATUS);
++      EDU_volatileWrite(EDU_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_MASK_SET, ~intrMask);
++PRINTK("%s-1: intrMask=%08x\n", __FUNCTION__, intrMask);
++
++      BARRIER;
++#endif
++
+       // Enable interrupt
+-      ISR_volatileWrite(BCM_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_MASK_CLEAR, req->intr);
++      ISR_volatileWrite(BCM_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_MASK_CLEAR, gEduIsrData.intr);
++#if 0 
++intrMask = EDU_volatileRead(EDU_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_MASK_STATUS);
++PRINTK("%s-2: intrMask=%08x\n", __FUNCTION__, intrMask);
++#endif
+       //spin_unlock_irqrestore(&gEduIsrData.lock, flags);
+ }
+-static __inline__ void ISR_disable_irq(uint32_t mask)
++static inline void ISR_disable_irq(uint32_t mask)
+ {
+       /* Disable L2 interrupts */
+       ISR_volatileWrite(BCM_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_MASK_SET, mask);
++      /* Clear L2 interrupts */
++      //EDU_volatileWrite(EDU_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_CLEAR, mask);
+ }
++#endif
+-/*
+- * For debugging
+- */
+-#ifdef DEBUG_ISR
+-static void __inline__
+-ISR_print_queue(void)
+-{
+-      eduIsrNode_t* req;
+-      //struct list_head* node;
+-      int i = 0;
+-      list_for_each_entry(req, &gJobQ.jobQ, list) {
+-              
+-              printk("i=%d, cmd=%d, offset=%08llx, flashAddr=%08x, opComp=%d, status=%08x\n",
+-                      i, gJobQ.cmd, req->offset, req->edu_ldw,req->opComplete, req->status);
+-              i++;
+-      }       
+-}
+-
+-static void __inline__
+-ISR_print_avail_list(void)
+-{
+-      eduIsrNode_t* req;
+-      //struct list_head* node;
+-      int i = 0;
+-
+-      printk("AvailList=%p, next=%p\n", &gJobQ.availList, gJobQ.availList.next);
+-      list_for_each_entry(req, &gJobQ.availList, list) {
+-              printk("i=%d, req=%p, list=%p\n", i, req, &req->list);
+-              i++;
+-      }       
+-}
+-#else
+-#define IS_print_queue()
+-#define ISR_print_avail_list()
+-#endif // DEBUG_ISR
+-
+-
+-#endif // CONFIG_MTD_BRCMNAND_USE_ISR
+-
+-
+-
+-
+ /**
+  * brcmnand_scan - [BrcmNAND Interface] Scan for the BrcmNAND device
+  * @param mtd         MTD device structure
+Index: drivers/mtd/brcmnand/edu.c
+===================================================================
+--- drivers/mtd/brcmnand/edu.c (revision 1)
++++ drivers/mtd/brcmnand/edu.c (working copy)
+@@ -37,7 +37,6 @@
+ #include <linux/mm.h>
+-#include <linux/dma-mapping.h>
+ #include <asm/page.h>
+@@ -134,11 +133,11 @@
+  * Returns 1 if OK
+  *            0 otherwise
+  */
+-int EDU_buffer_OK(volatile void* vaddr, int command)
++int EDU_buffer_OK(volatile void* vaddr)
+ {
+       unsigned long addr = (unsigned long) vaddr;
+-#if !defined(CONFIG_MIPS_BCM7440) && !defined(CONFIG_MIPS_BCM7601) && !defined(CONFIG_MIPS_BCM7635)
++#if !defined(CONFIG_MIPS_BCM7440) && !defined(CONFIG_MIPS_BCM7601)
+ // Requires 32byte alignment only of platforms other than 7440 and 7601 (and Dune)
+       if (addr & 0x1f) {
+               // Must be 32-byte-aligned
+@@ -155,14 +154,11 @@
+               return 0;
+       }
+ #endif
+-
+       else if (!(addr & KSEG0)) { 
+               // User Space
+               return 0;
+       }
+-      
+-
+       // TBD: Since we only enable block for MEM0, we should make sure that the physical
+       // address falls in MEM0.
+       
+@@ -170,13 +166,6 @@
+               // VM Address
+               return 0;
+       }
+-
+-#if 0 //def CONFIG_MIPS_BCM7420
+-      else if (command == EDU_WRITE && (addr & 0xff)) { // Write must be aligned on 256B
+-printk("Write must be aligned on 128B (addr=%08x)\n", addr);
+-              return 0;
+-      }
+-#endif
+       return 1;
+ }
+@@ -518,10 +507,6 @@
+  * Read data on success or error.
+  */
+-extern void 
+-dump_nand_regs(struct brcmnand_chip* chip, loff_t offset, uint32_t pa, int which);
+-#define MAX_DUMPS 10
+-extern int numDumps;
+ uint32_t EDU_poll(uint32_t address, uint32_t expect, uint32_t error, uint32_t mask)
+ {
+@@ -535,11 +520,6 @@
+       address, expect, mask, error);
+         __sync();
+         rd_data = EDU_volatileRead(address);
+-if (numDumps < MAX_DUMPS)
+- {
+- dump_nand_regs(NULL, 0, 0, numDumps++);
+- }
+-   
+ //edu_debug = 0;
+         
+         timeout = jiffies + msecs_to_jiffies(1000); // 3 sec timeout for now (testing)
+@@ -548,23 +528,18 @@
+ //     while ((rd_data & mask) != (expect & mask)) /* && (i<cnt) */
+        while (((rd_data & mask) != (expect & mask)) && !((rd_data & mask) & error))
+         {
+-
+                  if ( 0 /*(i %1000000) == 1 */) 
+                          {PRINTK("Polling addr=%08x, expect=%08x, mask=%08x!\n", address, expect, mask);
+                           PRINTK("EDU_poll read: %08x\n", rd_data);}
+                         
+                 //__sync(); //PLATFORM_IOFLUSH_WAR();
+                 rd_data = EDU_volatileRead(address);
+-
+-             // JR+ 2008-02-01 Allow other tasks to run while waiting
++                
++                // JR+ 2008-02-01 Allow other tasks to run while waiting
+                 //cond_resched();
+                 cond_resched();
+                 // JR- 2008-02-01 Allow other tasks to run while waiting
+-if (numDumps < MAX_DUMPS)
+- {
+- dump_nand_regs(NULL, 0, 0, numDumps++);
+- }
+-                   
++                
+                 i++;
+                 if(!time_before(jiffies, timeout))
+                 {
+@@ -662,7 +637,7 @@
+         // SUN_GISB_ARB_TIMER = 0x10000
+         EDU_volatileWrite(0xb040600c, 0x00010000);
+-#elif defined( CONFIG_MIPS_BCM7601 ) || defined( CONFIG_MIPS_BCM7635 )
++#elif defined( CONFIG_MIPS_BCM7601 )
+       {
+ #define ENABLE_256MB_GISB_WINDOW 0x1
+               volatile unsigned long* PCI_GEN_GISB_WINDOW_SIZE = 
+@@ -691,7 +666,7 @@
+       }
+ #elif defined( CONFIG_MIPS_BCM7420 )
+-      // Make sure that RTS grants some cycle to EDU, or we have to steal some from RR
++      // Make sure that RTS grant some cycle to EDU, or we have to steal some
+       {
+ #define BLOCKED_OUT 0x001fff00
+ #define RR_ENABLED    0x80   /* Bit 7 */
+@@ -708,29 +683,6 @@
+               volatile unsigned long* PCI_GEN_PCI_CTRL = 
+                       (volatile unsigned long*) KSEG1ADDR(0x10440104);
+               volatile unsigned long pci_gen_pci_ctrl;
+-
+-#if 0 // Block out MoCA
+-              volatile unsigned long* MEMC_0_1_CLIENT_INFO_59= 
+-                      (volatile unsigned long*) KSEG1ADDR(0x103b10f0);
+-              volatile unsigned long memc_client_59;
+-              volatile unsigned long* MEMC_0_1_CLIENT_INFO_62= 
+-                      (volatile unsigned long*) KSEG1ADDR(0x103b10fc);
+-              volatile unsigned long memc_client_62;
+-
+-              /* Bits 08-20 are all 1 == Blocked */
+-              memc_client_59 = *MEMC_0_1_CLIENT_INFO_59;
+-              printk("MEMC_0_1_CLIENT_INFO_59 Before=%08lx\n", memc_client_59);
+-              *MEMC_0_1_CLIENT_INFO_59 = memc_client_59|0x001fff00;
+-              *MEMC_0_1_CLIENT_INFO_59 &= ~RR_ENABLED;
+-              printk("MEMC_0_1_CLIENT_INFO_59 After blocked out=%08lx\n", *MEMC_0_1_CLIENT_INFO_59);
+-
+-              memc_client_62 = *MEMC_0_1_CLIENT_INFO_62;
+-              printk("MEMC_0_1_CLIENT_INFO_62 Before=%08lx\n", memc_client_62);
+-              *MEMC_0_1_CLIENT_INFO_62 = memc_client_62|0x001fff00;
+-              *MEMC_0_1_CLIENT_INFO_62 &= ~RR_ENABLED;
+-              printk("MEMC_0_1_CLIENT_INFO_62 After blocked out=%08lx\n", *MEMC_0_1_CLIENT_INFO_62);
+-              
+-#endif
+         
+               /* Bits 08-20 are all 1 == Blocked */
+               memc_client_17 = *MEMC_0_1_CLIENT_INFO_17;
+@@ -753,7 +705,6 @@
+                 pci_gen_pci_ctrl = *PCI_GEN_PCI_CTRL;
+                 pci_gen_pci_ctrl &= ~PARK_ON_MASK;
+                 pci_gen_pci_ctrl |= PARK_ON_EBI;
+-                EDU_volatileWrite(PCI_GEN_PCI_CTRL, pci_gen_pci_ctrl);
+       }
+ #endif
+@@ -771,50 +722,37 @@
+ //edu_debug = 0;
+ }
+-#ifndef CONFIG_MTD_BRCMNAND_ISR_QUEUE // batch mode
+-
+ /*
+  * THT: 07/31/08: This does not work.  One has to write the 512B Array from the NAND controller into 
+  * the EXT registers for it to work.  Will fix it when I come back.
+  */
+-int EDU_write(volatile const void* virtual_addr_buffer, 
+-      uint32_t external_physical_device_address,
+-      uint32_t* physAddr)
++int EDU_write(volatile const void* virtual_addr_buffer, uint32_t external_physical_device_address)
+ {
+-      //uint32_t  phys_mem;
++      uint32_t  phys_mem;
+       // uint32_t  rd_data;
+-      //unsigned long flags;
++      unsigned long flags;
+ edu_debug = gdebug;
+-
+-#if 0
+       phys_mem = EDU_virt_to_phys((void *)virtual_addr_buffer);
+-
+-#else
+-      // EDU is not a PCI device
+-      // THT: TBD: Need to adjust for cache line size here, especially on 7420.
+-      *physAddr = dma_map_single(NULL, virtual_addr_buffer, EDU_LENGTH_VALUE, DMA_TO_DEVICE);
+-#endif
+-
+-      if (!(*physAddr)) {
++      if (!phys_mem) {
+               return (-1);
+       }
+ //edu_debug = 4;
+       
+-//printk("EDU_write: vBuff: %p physDev: %08x, PA=%08x\n", 
+-//    virtual_addr_buffer, external_physical_device_address, phys_mem);
++//PRINTK("EDU_write: vBuff: %p physDev: %08x, PA=%08x\n", 
++//virtual_addr_buffer, external_physical_device_address, phys_mem);
+ #ifdef CONFIG_MTD_BRCMNAND_USE_ISR
+-      down(&gEduIsrData.lock);
+-      gEduIsrData.edu_ldw = external_physical_device_address;
+-      gEduIsrData.physAddr = *physAddr;
++      spin_lock_irqsave(&gEduIsrData.lock, flags);
++      gEduIsrData.flashAddr = external_physical_device_address;
++      gEduIsrData.dramAddr = phys_mem;
+       
+       /*
+        * Enable L2 Interrupt
+        */
+       gEduIsrData.cmd = EDU_WRITE;
+-      gEduIsrData.opComplete = ISR_OP_SUBMITTED;
++      gEduIsrData.opComplete = 0;
+       gEduIsrData.status = 0;
+       
+       /* On write we wait for both DMA done|error and Flash Status */
+@@ -823,8 +761,8 @@
+       gEduIsrData.error = HIF_INTR2_EDU_ERR;
+       gEduIsrData.intr = HIF_INTR2_EDU_DONE_MASK|HIF_INTR2_CTRL_READY;
+-      up(&gEduIsrData.lock);
+-      ISR_enable_irq(&gEduIsrData);
++      spin_unlock_irqrestore(&gEduIsrData.lock, flags);
++      ISR_enable_irq();
+ #else
+       EDU_volatileWrite(EDU_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_CLEAR, HIF_INTR2_EDU_CLEAR_MASK);
+@@ -838,17 +776,15 @@
+       //EDU_waitForNoPendingAndActiveBit();
+-//    Already covered by dma_map_single()
+-//    dma_cache_wback((unsigned long) virtual_addr_buffer, EDU_LENGTH_VALUE);
+-      EDU_issue_command(*physAddr, external_physical_device_address, EDU_WRITE); /* 1: Is a Read, 0 Is a Write */
++      dma_cache_wback((unsigned long) virtual_addr_buffer, 512);
++      EDU_issue_command(phys_mem, external_physical_device_address, EDU_WRITE); /* 1: Is a Read, 0 Is a Write */
++
+ //      rd_data = EDU_poll(EDU_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_STATUS, HIF_INTR2_EDU_DONE, HIF_INTR2_EDU_DONE);
+ //      EDU_volatileWrite(EDU_BASE_ADDRESS  + EDU_DONE, 0x00000000);
+ //edu_debug = 0;
+-//printk("<-- %s\n", __FUNCTION__);
+-
+       return 0;
+ }
+@@ -863,7 +799,7 @@
+       // uint32_t  rd_data;
+       int ret;
+       int retries = 4;
+-      //unsigned long flags;
++      unsigned long flags;
+               
+ static int toggle;
+@@ -877,31 +813,33 @@
+ #endif
+ //PRINTK("--> %s: vAddr=%p, ext=%08x\n", __FUNCTION__, virtual_addr_buffer, external_physical_device_address);
+-#if 0
+       phys_mem = EDU_virt_to_phys((void *)virtual_addr_buffer);
+       if (!phys_mem) {
+               return (-1);
+       }
+-#else
+-      // THT: TBD: Need to adjust for cache line size here, especially on 7420.
+-      phys_mem = dma_map_single(NULL, virtual_addr_buffer, EDU_LENGTH_VALUE, DMA_FROM_DEVICE);
+-#endif
+ if (edu_debug) PRINTK("EDU_read: vBuff: %p physDev: %08x, PA=%08x\n", 
+ virtual_addr_buffer, external_physical_device_address, phys_mem);
+  #ifdef CONFIG_MTD_BRCMNAND_USE_ISR
+-      down(&gEduIsrData.lock);
+-      gEduIsrData.edu_ldw = external_physical_device_address;
+-      gEduIsrData.physAddr = phys_mem;
++      spin_lock_irqsave(&gEduIsrData.lock, flags);
++      gEduIsrData.flashAddr = external_physical_device_address;
++      gEduIsrData.dramAddr = phys_mem;
+       
+       /*
+        * Enable L2 Interrupt
+        */
+       gEduIsrData.cmd = EDU_READ;
+-      gEduIsrData.opComplete = ISR_OP_SUBMITTED;
++      gEduIsrData.opComplete = 0;
+       gEduIsrData.status = 0;
++#if 0
++      /* On Read we only wait for DMA completion or Error */
++      gEduIsrData.mask = HIF_INTR2_EDU_CLEAR_MASK|HIF_INTR2_CTRL_READY;
++      gEduIsrData.expect = HIF_INTR2_EDU_DONE;
++      gEduIsrData.error = HIF_INTR2_EDU_ERR;
++      gEduIsrData.intr = HIF_INTR2_EDU_DONE_MASK;
++#endif
+       // We must also wait for Ctlr_Ready, otherwise the OOB is not correct, since we read the OOB bytes off the controller
+@@ -910,9 +848,9 @@
+       // On error we also want Ctrlr-Ready because for COR ERR, the Hamming WAR depends on the OOB bytes.
+       gEduIsrData.error = HIF_INTR2_EDU_ERR;
+       gEduIsrData.intr = HIF_INTR2_EDU_DONE_MASK;
+-      up(&gEduIsrData.lock);
++      spin_unlock_irqrestore(&gEduIsrData.lock, flags);
+       
+-      ISR_enable_irq(&gEduIsrData);
++      ISR_enable_irq();
+ #else
+         EDU_volatileWrite(EDU_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_CLEAR, HIF_INTR2_EDU_CLEAR_MASK);
+@@ -928,7 +866,29 @@
+         //EDU_volatileWrite(EDU_BASE_ADDRESS  + EDU_DONE, 0x00000000);
+         EDU_reset_done();
++#if 0
++        if( (EDU_volatileRead(EDU_BASE_ADDRESS  + EDU_DONE) && 0x00000003) != 0)
++        {
++                PRINTK("EDU_DONE != 0!!!\n");
++        }
++#endif
+         EDU_volatileWrite(EDU_BASE_ADDRESS  + EDU_ERR_STATUS, 0x00000000);
++#if 0
++        if( EDU_volatileRead(EDU_BASE_ADDRESS  + EDU_ERR_STATUS) != 0)
++        {
++                PRINTK("EDU_ERR_STATUS != 0!!!\n");
++        }
++
++#endif
++#if 1 //ndef CONFIG_BMIPS4380
++       dma_cache_inv((unsigned long) virtual_addr_buffer, EDU_LENGTH_VALUE);
++#else
++      {
++              extern void (*flush_cache_all)(void);
++
++              flush_cache_all();
++      }
++#endif
+         
+        EDU_volatileWrite(EDU_BASE_ADDRESS  + EDU_LENGTH, EDU_LENGTH_VALUE);
+@@ -956,13 +916,8 @@
+               HIF_INTR2_EDU_DONE_MASK);
+ #endif
+-      (void) dma_unmap_single(NULL, phys_mem, EDU_LENGTH_VALUE, DMA_FROM_DEVICE);
+-
+ if (edu_debug) PRINTK("<-- %s ret=%08x\n", __FUNCTION__, ret);
+ //edu_debug = 0;
+ if (edu_debug > 3 && ret) {show_stack(current,NULL);dump_stack();}
+         return ret;
+ } 
+-
+-#endif // Batch mode
+-
diff --git a/recipes/linux/linux-bm750/linux_bm750_proc.patch b/recipes/linux/linux-bm750/linux_bm750_proc.patch
new file mode 100644 (file)
index 0000000..3281fe5
--- /dev/null
@@ -0,0 +1,14 @@
+Index: arch/mips/kernel/proc.c
+===================================================================
+--- arch/mips/kernel/proc.c    (revision 1)
++++ arch/mips/kernel/proc.c    (working copy)
+@@ -98,7 +98,8 @@
+       /* PR22847 - Add Broadcom models */
+       [CPU_BMIPS3300] = "BMIPS3300",
+       [CPU_BMIPS4350] = "BMIPS4350",
+-      [CPU_BMIPS4380] = "BMIPS4380",
++//    [CPU_BMIPS4380] = "BMIPS4380",
++      [CPU_BMIPS4380] = "Brcm4380",
+       [CPU_BMIPS5000] = "BMIPS5000",
+ };
diff --git a/recipes/linux/linux-bm750/linux_bm750_resource.patch b/recipes/linux/linux-bm750/linux_bm750_resource.patch
new file mode 100644 (file)
index 0000000..ca28355
--- /dev/null
@@ -0,0 +1,15 @@
+Index: include/linux/resource.h
+===================================================================
+--- include/linux/resource.h   (revision 1)
++++ include/linux/resource.h   (working copy)
+@@ -62,7 +62,10 @@
+  * THT: 8MB is unreasonably high for embedded systems,
+  * for which, by default, only 32MB is allocated to the kernel
+  */
++/*
+ #define _STK_LIM      (1<<20)
++*/
++#define _STK_LIM      (4<<20)
+ #else
+ #define _STK_LIM      (8*1024*1024)
diff --git a/recipes/linux/linux-bm750/linux_bm750_serial.patch b/recipes/linux/linux-bm750/linux_bm750_serial.patch
new file mode 100644 (file)
index 0000000..452725c
--- /dev/null
@@ -0,0 +1,20 @@
+Index: include/asm-mips/serial.h
+===================================================================
+--- include/asm-mips/serial.h  (revision 1)
++++ include/asm-mips/serial.h  (working copy)
+@@ -121,10 +121,15 @@
+ #else
+ /* 3 16550A compatible UARTs */
++#if 0
+ #define BRCM_UART_PORT_DEFNS                          \
+       _BRCM_16550_INIT(BRCM_SERIAL1_IRQ, BRCM_SERIAL1_BASE),          \
+       _BRCM_16550_INIT(BRCM_SERIAL2_IRQ, BRCM_SERIAL2_BASE),      \
+       _BRCM_16550_INIT(BRCM_SERIAL3_IRQ, BRCM_SERIAL3_BASE),  
++#else
++#define BRCM_UART_PORT_DEFNS                          \
++      _BRCM_16550_INIT(BRCM_SERIAL1_IRQ, BRCM_SERIAL1_BASE),
++#endif
+ #endif  //end SIM
+ #elif defined(CONFIG_MIPS_BCM7440A0) || defined(CONFIG_MIPS_BCM7325)
diff --git a/recipes/linux/linux-bm750/linux_bm750_setup.patch b/recipes/linux/linux-bm750/linux_bm750_setup.patch
new file mode 100644 (file)
index 0000000..44011e6
--- /dev/null
@@ -0,0 +1,13 @@
+Index: arch/mips/kernel/setup.c
+===================================================================
+--- arch/mips/kernel/setup.c   (revision 1)
++++ arch/mips/kernel/setup.c   (working copy)
+@@ -653,6 +653,8 @@
+                               usermem = 1;
+                       }
+                       mem_size = memparse(from + 4, &from);
++                      //csh memory_size hack for duo
++                      mem_size = 0x9000000;
+ #if defined (CONFIG_MIPS_BCM7440) || defined (CONFIG_MIPS_BCM7601) || defined (CONFIG_MIPS_BCM7635)
+                       upper_mem_ram_size = 0;
diff --git a/recipes/linux/linux-bm750/stblinux-2.6.18.makefile.patch b/recipes/linux/linux-bm750/stblinux-2.6.18.makefile.patch
new file mode 100644 (file)
index 0000000..0997ae1
--- /dev/null
@@ -0,0 +1,12 @@
+--- stblinux-2.6.18.org/Makefile       2008-10-03 06:15:18.000000000 +0900
++++ stblinux-2.6.18/Makefile   2009-03-06 20:34:04.000000000 +0900
+@@ -867,7 +867,8 @@
+ endef
+ define filechk_version.h
+-      (echo \#define LINUX_VERSION_CODE $(shell                             \
++      (echo \#define UTS_RELEASE \"$(KERNELRELEASE)\"; \
++      echo \#define LINUX_VERSION_CODE $(shell                             \
+       expr $(VERSION) \* 65536 + $(PATCHLEVEL) \* 256 + $(SUBLEVEL));     \
+       echo '#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))';)
+ endef
diff --git a/recipes/linux/linux-vusolo.bb b/recipes/linux/linux-vusolo.bb
new file mode 100644 (file)
index 0000000..003cc25
--- /dev/null
@@ -0,0 +1,78 @@
+DESCRIPTION = "Linux kernel for vuplus solo"
+LICENSE = "GPL"
+KV = "2.6.18-7.3"
+PV = "2.6.18-7.3"
+PR = "r4"
+
+MODULE = "stblinux-2.6.18"
+
+SRC_URI = "http://archive.vuplus.com/download/stblinux-${KV}.tar.bz2"
+
+SRC_URI += " file://vusolo_defconfig"
+
+
+SRC_URI += " file://linux-vusolo_nand4.patch;patch=1;pnum=0 \
+       file://linux-vusolo_info.patch;patch=1;pnum=0 \
+       file://linux-vusolo_resource.patch;patch=1;pnum=0 \
+       file://linux_vusolo_arch_makefile.patch;patch=1;pnum=0 \
+       file://linux-vusolo_kojbect.patch;patch=1;pnum=0 \
+       file://linux-vusolo_dvb-core_fe.patch;patch=1;pnum=0 \
+       file://linux-vusolo_romblock.patch;patch=1;pnum=0 \
+       file://linux-vusolo_serial.patch;patch=1;pnum=0"
+
+
+
+S = "${WORKDIR}/stblinux-2.6.18"
+
+inherit kernel
+
+FILES_kernel-image = "/boot/vmlinux.gz /boot/autoexec.bat"
+
+export OS = "Linux"
+KERNEL_IMAGETYPE = "vmlinux"
+KERNEL_OUTPUT = "vmlinux"
+KERNEL_OBJECT_SUFFIX = "ko"
+
+
+#addtask munge before do_patch after do_unpack
+
+do_configure_prepend() {
+       oe_machinstall -m 0644 ${WORKDIR}/vusolo_defconfig ${S}/.config
+       if [ -d ${WORKDIR}/cdfs-${PV} ]; then
+               mv ${WORKDIR}/cdfs-${PV} ${S}/fs/cdfs
+               cd ${S} & patch -p0 < ${S}/fs/cdfs/patch.cdfs
+       fi;
+       oe_runmake oldconfig
+}
+
+do_install_append () {
+        install -d ${D}/boot
+        install -m 0755 vmlinux ${D}/boot/vmlinux
+        gzip ${D}/boot/vmlinux
+}
+
+pkg_preinst_kernel-image () {
+       [ -d /proc/stb ] && mount -o rw,remount /boot
+       true
+        if [ -f /boot/vmlinux.gz ];
+        then rm -f /boot/vmlinux.gz;
+        fi  
+}
+
+pkg_postinst_kernel-image () {
+        if [ -d /proc/stb ];
+        then flash_eraseall /dev/mtd1; nandwrite /dev/mtd1 /boot/vmlinux.gz -p; 
+        fi  
+       [ -d /proc/stb ] && mount -o ro,remount /boot
+       true
+}
+
+pkg_prerm_kernel-image () {
+       [ -d /proc/stb ] && mount -o rw,remount /boot
+       true
+}
+
+pkg_postrm_kernel-image () {
+       [ -d /proc/stb ] && mount -o ro,remount /boot
+       true
+}
diff --git a/recipes/linux/linux-vusolo/linux-vusolo_dvb-core_fe.patch b/recipes/linux/linux-vusolo/linux-vusolo_dvb-core_fe.patch
new file mode 100644 (file)
index 0000000..4173c8f
--- /dev/null
@@ -0,0 +1,426 @@
+Index: drivers/media/dvb/dvb-core/dvb_frontend.h
+===================================================================
+--- drivers/media/dvb/dvb-core/dvb_frontend.h  (revision 1)
++++ drivers/media/dvb/dvb-core/dvb_frontend.h  (working copy)
+@@ -41,14 +41,40 @@
+ #include "dvbdev.h"
+ struct dvb_frontend_tune_settings {
+-      int min_delay_ms;
+-      int step_size;
+-      int max_drift;
+-      struct dvb_frontend_parameters parameters;
++        int min_delay_ms;
++        int step_size;
++        int max_drift;
++        struct dvb_frontend_parameters parameters;
+ };
+ struct dvb_frontend;
++//NOTE : LINUX_2_6_31 related stuffs are added to make back-porting of  frontend driver easier.
++
++#define LINUX_2_6_31          1
++
++#ifdef LINUX_2_6_31   
++
++#define FE_TUNE_MODE_ONESHOT 0x01
++#define FE_SET_FRONTEND_TUNE_MODE  _IO('o', 81) /* unsigned int */
++
++struct delayed_work {
++      struct work_struct work;
++      struct timer_list timer;
++};
++
++#define DVB_MAX_ADAPTERS 8
++
++#define DVB_UNSET (-1)
++
++#define DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr) \
++      static short adapter_nr[] = \
++              {[0 ... (DVB_MAX_ADAPTERS - 1)] = DVB_UNSET }; \
++      module_param_array(adapter_nr, short, NULL, 0444); \
++      MODULE_PARM_DESC(adapter_nr, "DVB adapter numbers")
++
++
++
+ struct dvb_tuner_info {
+       char name[128];
+@@ -61,6 +87,132 @@
+       u32 bandwidth_step;
+ };
++struct analog_parameters {
++      unsigned int frequency;
++      unsigned int mode;
++      unsigned int audmode;
++      u64 std;
++};
++
++enum dvbfe_modcod {
++      DVBFE_MODCOD_DUMMY_PLFRAME      = 0,
++      DVBFE_MODCOD_QPSK_1_4,
++      DVBFE_MODCOD_QPSK_1_3,
++      DVBFE_MODCOD_QPSK_2_5,
++      DVBFE_MODCOD_QPSK_1_2,
++      DVBFE_MODCOD_QPSK_3_5,
++      DVBFE_MODCOD_QPSK_2_3,
++      DVBFE_MODCOD_QPSK_3_4,
++      DVBFE_MODCOD_QPSK_4_5,
++      DVBFE_MODCOD_QPSK_5_6,
++      DVBFE_MODCOD_QPSK_8_9,
++      DVBFE_MODCOD_QPSK_9_10,
++      DVBFE_MODCOD_8PSK_3_5,
++      DVBFE_MODCOD_8PSK_2_3,
++      DVBFE_MODCOD_8PSK_3_4,
++      DVBFE_MODCOD_8PSK_5_6,
++      DVBFE_MODCOD_8PSK_8_9,
++      DVBFE_MODCOD_8PSK_9_10,
++      DVBFE_MODCOD_16APSK_2_3,
++      DVBFE_MODCOD_16APSK_3_4,
++      DVBFE_MODCOD_16APSK_4_5,
++      DVBFE_MODCOD_16APSK_5_6,
++      DVBFE_MODCOD_16APSK_8_9,
++      DVBFE_MODCOD_16APSK_9_10,
++      DVBFE_MODCOD_32APSK_3_4,
++      DVBFE_MODCOD_32APSK_4_5,
++      DVBFE_MODCOD_32APSK_5_6,
++      DVBFE_MODCOD_32APSK_8_9,
++      DVBFE_MODCOD_32APSK_9_10,
++      DVBFE_MODCOD_RESERVED_1,
++      DVBFE_MODCOD_BPSK_1_3,
++      DVBFE_MODCOD_BPSK_1_4,
++      DVBFE_MODCOD_RESERVED_2
++};
++
++enum tuner_param {
++      DVBFE_TUNER_FREQUENCY           = (1 <<  0),
++      DVBFE_TUNER_TUNERSTEP           = (1 <<  1),
++      DVBFE_TUNER_IFFREQ              = (1 <<  2),
++      DVBFE_TUNER_BANDWIDTH           = (1 <<  3),
++      DVBFE_TUNER_REFCLOCK            = (1 <<  4),
++      DVBFE_TUNER_IQSENSE             = (1 <<  5),
++      DVBFE_TUNER_DUMMY               = (1 << 31)
++};
++
++/*
++ * ALGO_HW: (Hardware Algorithm)
++ * ----------------------------------------------------------------
++ * Devices that support this algorithm do everything in hardware
++ * and no software support is needed to handle them.
++ * Requesting these devices to LOCK is the only thing required,
++ * device is supposed to do everything in the hardware.
++ *
++ * ALGO_SW: (Software Algorithm)
++ * ----------------------------------------------------------------
++ * These are dumb devices, that require software to do everything
++ *
++ * ALGO_CUSTOM: (Customizable Agorithm)
++ * ----------------------------------------------------------------
++ * Devices having this algorithm can be customized to have specific
++ * algorithms in the frontend driver, rather than simply doing a
++ * software zig-zag. In this case the zigzag maybe hardware assisted
++ * or it maybe completely done in hardware. In all cases, usage of
++ * this algorithm, in conjunction with the search and track
++ * callbacks, utilizes the driver specific algorithm.
++ *
++ * ALGO_RECOVERY: (Recovery Algorithm)
++ * ----------------------------------------------------------------
++ * These devices have AUTO recovery capabilities from LOCK failure
++ */
++enum dvbfe_algo {
++      DVBFE_ALGO_HW                   = (1 <<  0),
++      DVBFE_ALGO_SW                   = (1 <<  1),
++      DVBFE_ALGO_CUSTOM               = (1 <<  2),
++      DVBFE_ALGO_RECOVERY             = (1 << 31)
++};
++
++struct tuner_state {
++      u32 frequency;
++      u32 tunerstep;
++      u32 ifreq;
++      u32 bandwidth;
++      u32 iqsense;
++      u32 refclock;
++};
++
++/*
++ * search callback possible return status
++ *
++ * DVBFE_ALGO_SEARCH_SUCCESS
++ * The frontend search algorithm completed and returned succesfully
++ *
++ * DVBFE_ALGO_SEARCH_ASLEEP
++ * The frontend search algorithm is sleeping
++ *
++ * DVBFE_ALGO_SEARCH_FAILED
++ * The frontend search for a signal failed
++ *
++ * DVBFE_ALGO_SEARCH_INVALID
++ * The frontend search algorith was probably supplied with invalid
++ * parameters and the search is an invalid one
++ *
++ * DVBFE_ALGO_SEARCH_ERROR
++ * The frontend search algorithm failed due to some error
++ *
++ * DVBFE_ALGO_SEARCH_AGAIN
++ * The frontend search algorithm was requested to search again
++ */
++enum dvbfe_search {
++      DVBFE_ALGO_SEARCH_SUCCESS       = (1 <<  0),
++      DVBFE_ALGO_SEARCH_ASLEEP        = (1 <<  1),
++      DVBFE_ALGO_SEARCH_FAILED        = (1 <<  2),
++      DVBFE_ALGO_SEARCH_INVALID       = (1 <<  3),
++      DVBFE_ALGO_SEARCH_AGAIN         = (1 <<  4),
++      DVBFE_ALGO_SEARCH_ERROR         = (1 << 31),
++};
++
++
+ struct dvb_tuner_ops {
+       struct dvb_tuner_info info;
+@@ -71,22 +223,73 @@
+       /** This is for simple PLLs - set all parameters in one go. */
+       int (*set_params)(struct dvb_frontend *fe, struct dvb_frontend_parameters *p);
++      int (*set_analog_params)(struct dvb_frontend *fe, struct analog_parameters *p);
+       /** This is support for demods like the mt352 - fills out the supplied buffer with what to write. */
+       int (*calc_regs)(struct dvb_frontend *fe, struct dvb_frontend_parameters *p, u8 *buf, int buf_len);
++      /** This is to allow setting tuner-specific configs */
++      int (*set_config)(struct dvb_frontend *fe, void *priv_cfg);
++
+       int (*get_frequency)(struct dvb_frontend *fe, u32 *frequency);
+       int (*get_bandwidth)(struct dvb_frontend *fe, u32 *bandwidth);
+ #define TUNER_STATUS_LOCKED 1
++#define TUNER_STATUS_STEREO 2
+       int (*get_status)(struct dvb_frontend *fe, u32 *status);
++      int (*get_rf_strength)(struct dvb_frontend *fe, u16 *strength);
+       /** These are provided seperately from set_params in order to facilitate silicon
+        * tuners which require sophisticated tuning loops, controlling each parameter seperately. */
+       int (*set_frequency)(struct dvb_frontend *fe, u32 frequency);
+       int (*set_bandwidth)(struct dvb_frontend *fe, u32 bandwidth);
++
++      /*
++       * These are provided seperately from set_params in order to facilitate silicon
++       * tuners which require sophisticated tuning loops, controlling each parameter seperately.
++       */
++      int (*set_state)(struct dvb_frontend *fe, enum tuner_param param, struct tuner_state *state);
++      int (*get_state)(struct dvb_frontend *fe, enum tuner_param param, struct tuner_state *state);
+ };
++struct analog_demod_info {
++      char *name;
++};
++struct analog_demod_ops {
++
++      struct analog_demod_info info;
++
++      void (*set_params)(struct dvb_frontend *fe,
++                         struct analog_parameters *params);
++      int  (*has_signal)(struct dvb_frontend *fe);
++      int  (*is_stereo)(struct dvb_frontend *fe);
++      int  (*get_afc)(struct dvb_frontend *fe);
++      void (*tuner_status)(struct dvb_frontend *fe);
++      void (*standby)(struct dvb_frontend *fe);
++      void (*release)(struct dvb_frontend *fe);
++      int  (*i2c_gate_ctrl)(struct dvb_frontend *fe, int enable);
++
++      /** This is to allow setting tuner-specific configuration */
++      int (*set_config)(struct dvb_frontend *fe, void *priv_cfg);
++};
++struct dtv_property {
++        __u32 cmd;
++        __u32 reserved[3];
++        union {
++                __u32 data;
++                struct {
++                        __u8 data[32];
++                        __u32 len;
++                        __u32 reserved1[3];
++                        void *reserved2;
++                } buffer;
++        } u;
++        int result;
++} __attribute__ ((packed));
++
++
++#endif
++
+ struct dvb_frontend_ops {
+       struct dvb_frontend_info info;
+@@ -95,7 +298,7 @@
+       int (*init)(struct dvb_frontend* fe);
+       int (*sleep)(struct dvb_frontend* fe);
+-
++#ifdef LINUX_2_6_31   
+       /* if this is set, it overrides the default swzigzag */
+       int (*tune)(struct dvb_frontend* fe,
+                   struct dvb_frontend_parameters* params,
+@@ -106,11 +309,11 @@
+       int (*get_frontend_algo)(struct dvb_frontend *fe);
+       /* these two are only used for the swzigzag code */
++#endif
+       int (*set_frontend)(struct dvb_frontend* fe, struct dvb_frontend_parameters* params);
++      int (*get_frontend)(struct dvb_frontend* fe, struct dvb_frontend_parameters* params);
+       int (*get_tune_settings)(struct dvb_frontend* fe, struct dvb_frontend_tune_settings* settings);
+-      int (*get_frontend)(struct dvb_frontend* fe, struct dvb_frontend_parameters* params);
+-
+       int (*read_status)(struct dvb_frontend* fe, fe_status_t* status);
+       int (*read_ber)(struct dvb_frontend* fe, u32* ber);
+       int (*read_signal_strength)(struct dvb_frontend* fe, u16* strength);
+@@ -123,11 +326,27 @@
+       int (*diseqc_send_burst)(struct dvb_frontend* fe, fe_sec_mini_cmd_t minicmd);
+       int (*set_tone)(struct dvb_frontend* fe, fe_sec_tone_mode_t tone);
+       int (*set_voltage)(struct dvb_frontend* fe, fe_sec_voltage_t voltage);
+-      int (*enable_high_lnb_voltage)(struct dvb_frontend* fe, long arg);
+-      int (*dishnetwork_send_legacy_command)(struct dvb_frontend* fe, unsigned long cmd);
+-      int (*i2c_gate_ctrl)(struct dvb_frontend* fe, int enable);
++      int (*enable_high_lnb_voltage)(struct dvb_frontend* fe, int arg);
++      int (*dishnetwork_send_legacy_command)(struct dvb_frontend* fe, unsigned int cmd);
+-      struct dvb_tuner_ops tuner_ops;
++#ifdef LINUX_2_6_31   
++        int (*i2c_gate_ctrl)(struct dvb_frontend* fe, int enable);
++        int (*ts_bus_ctrl)(struct dvb_frontend* fe, int acquire);
++
++        /* These callbacks are for devices that implement their own
++         * tuning algorithms, rather than a simple swzigzag
++         */
++        enum dvbfe_search (*search)(struct dvb_frontend *fe, struct dvb_frontend_parameters *p);
++        int (*track)(struct dvb_frontend *fe, struct dvb_frontend_parameters *p);
++
++        struct dvb_tuner_ops tuner_ops;
++        struct analog_demod_ops analog_ops;
++
++        int (*set_property)(struct dvb_frontend* fe, struct dtv_property* tvp);
++        int (*get_property)(struct dvb_frontend* fe, struct dtv_property* tvp);
++#endif
++      
++      int (*set_sw_loopthrough)(struct dvb_frontend* fe, int* arg);
+ };
+ #define MAX_EVENT 8
+@@ -141,13 +360,102 @@
+       struct semaphore          sem;
+ };
++
++#ifdef LINUX_2_6_31   
++// 2.6.31
++typedef enum fe_pilot {
++      PILOT_ON,
++      PILOT_OFF,
++      PILOT_AUTO,
++} fe_pilot_t;
++
++typedef enum fe_rolloff {
++      ROLLOFF_35, /* Implied value in DVB-S, default for DVB-S2 */
++      ROLLOFF_20,
++      ROLLOFF_25,
++      ROLLOFF_AUTO,
++} fe_rolloff_t;
++
++typedef enum fe_delivery_system {
++      SYS_UNDEFINED,
++      SYS_DVBC_ANNEX_AC,
++      SYS_DVBC_ANNEX_B,
++      SYS_DVBT,
++      SYS_DSS,
++      SYS_DVBS,
++      SYS_DVBS2,
++      SYS_DVBH,
++      SYS_ISDBT,
++      SYS_ISDBS,
++      SYS_ISDBC,
++      SYS_ATSC,
++      SYS_ATSCMH,
++      SYS_DMBTH,
++      SYS_CMMB,
++      SYS_DAB,
++} fe_delivery_system_t;
++
++struct dtv_frontend_properties {
++
++      /* Cache State */
++      u32                     state;
++
++      u32                     frequency;
++      fe_modulation_t         modulation;
++
++      fe_sec_voltage_t        voltage;
++      fe_sec_tone_mode_t      sectone;
++      fe_spectral_inversion_t inversion;
++      fe_code_rate_t          fec_inner;
++      fe_transmit_mode_t      transmission_mode;
++      u32                     bandwidth_hz;   /* 0 = AUTO */
++      fe_guard_interval_t     guard_interval;
++      fe_hierarchy_t          hierarchy;
++      u32                     symbol_rate;
++      fe_code_rate_t          code_rate_HP;
++      fe_code_rate_t          code_rate_LP;
++
++      fe_pilot_t              pilot;
++      fe_rolloff_t            rolloff;
++
++      fe_delivery_system_t    delivery_system;
++};
++
++
++
++#ifndef false
++#define false 0
++#endif
++
++#ifndef true
++#define true  1
++#endif
++
++#define       KERN_CONT       "<c>"
++
++#endif
++
++
+ struct dvb_frontend {
++#ifndef LINUX_2_6_31  
++      struct dvb_frontend_ops* ops;
++      struct dvb_adapter *dvb;
++      void* demodulator_priv;
++      void* frontend_priv;
++#else
+       struct dvb_frontend_ops ops;
+       struct dvb_adapter *dvb;
+       void* demodulator_priv;
+-      void* tuner_priv;
+-      void* frontend_priv;
+-      void* misc_priv;
++      void *tuner_priv;
++      void *frontend_priv;
++      void *sec_priv;
++      void *analog_demod_priv;
++      struct dtv_frontend_properties dtv_property_cache;
++#define DVB_FRONTEND_COMPONENT_TUNER 0
++      int (*callback)(void *adapter_priv, int component, int cmd, int arg);
++      int id;
++
++#endif
+ };
+ extern int dvb_register_frontend(struct dvb_adapter* dvb,
+@@ -155,8 +463,6 @@
+ extern int dvb_unregister_frontend(struct dvb_frontend* fe);
+-extern void dvb_frontend_reinitialise(struct dvb_frontend *fe);
+-
+ extern void dvb_frontend_sleep_until(struct timeval *waketime, u32 add_usec);
+ extern s32 timeval_usec_diff(struct timeval lasttime, struct timeval curtime);
diff --git a/recipes/linux/linux-vusolo/linux-vusolo_info.patch b/recipes/linux/linux-vusolo/linux-vusolo_info.patch
new file mode 100644 (file)
index 0000000..3f4a6d2
--- /dev/null
@@ -0,0 +1,14 @@
+Index: arch/mips/kernel/proc.c
+===================================================================
+--- arch/mips/kernel/proc.c    (revision 1)
++++ arch/mips/kernel/proc.c    (working copy)
+@@ -84,7 +84,8 @@
+       [CPU_20KC]      = "MIPS 20Kc",
+       [CPU_24K]       = "MIPS 24K",
+       [CPU_25KF]      = "MIPS 25Kf",
+-      [CPU_34K]       = "MIPS 34K",
++//    [CPU_34K]       = "MIPS 34K",
++      [CPU_34K]       = "Brcm4380",
+       [CPU_74K]       = "MIPS 74K",
+       [CPU_VR4111]    = "NEC VR4111",
+       [CPU_VR4121]    = "NEC VR4121",
diff --git a/recipes/linux/linux-vusolo/linux-vusolo_kojbect.patch b/recipes/linux/linux-vusolo/linux-vusolo_kojbect.patch
new file mode 100644 (file)
index 0000000..c341a2c
--- /dev/null
@@ -0,0 +1,13 @@
+Index: lib/kobject.c
+===================================================================
+--- lib/kobject.c      (revision 1)
++++ lib/kobject.c      (working copy)
+@@ -588,7 +588,7 @@
+ EXPORT_SYMBOL(kset_register);
+ EXPORT_SYMBOL(kset_unregister);
+-
++EXPORT_SYMBOL(kobject_get_path);
+ EXPORT_SYMBOL(subsystem_register);
+ EXPORT_SYMBOL(subsystem_unregister);
+ EXPORT_SYMBOL(subsys_create_file);
diff --git a/recipes/linux/linux-vusolo/linux-vusolo_nand.patch b/recipes/linux/linux-vusolo/linux-vusolo_nand.patch
new file mode 100644 (file)
index 0000000..865a188
--- /dev/null
@@ -0,0 +1,5741 @@
+Index: drivers/mtd/brcmnand/bcm7xxx-nand.c
+===================================================================
+--- drivers/mtd/brcmnand/bcm7xxx-nand.c        (revision 1)
++++ drivers/mtd/brcmnand/bcm7xxx-nand.c        (working copy)
+@@ -74,31 +74,18 @@
+  *    start of flash  1f7f_ffff               flashSize-8MB   rootfs          Linux File System
+  */
+ #define SMALLEST_FLASH_SIZE   (16<<20)
+-#define DEFAULT_RESERVED_SIZE         (8<<20) 
++#ifdef USE_SPLASH
++#define DEFAULT_RESERVED_SIZE         (14<<20) 
++#else
++#define DEFAULT_RESERVED_SIZE         (12<<20) 
++#endif
+ #define DEFAULT_SPLASH_SIZE   (1<<20)
+ #define DEFAULT_BBT0_SIZE_MB  (1)
+ #define DEFAULT_BBT1_SIZE_MB  (4)
+ #define ROOTFS_PART   (0)
+-#if defined( CONFIG_MTD_BRCMNAND_DISABLE_XOR )
+-/* Implies new partition scheme, starting with 7420
+-      cfe: 0-4MB (not mapped)
+-      mtd0: rootfs: Starts at 4MB offset
+-      mtd1: all flash less BBT0 (1MB) for flash <= 512MB
+-      mtd2: Kernel (4MB)
+-      mtd3: Data, for flash>512MB, from 512MB up to flash - BBT1 (4MB)
+- */
+-
+-#define ALL_PART                              (1)
+-#define KERNEL_PART                   (2)
+-#define DATA_PART                     (3)
+-#define AVAIL1_PART                   (-1)
+-
+-#define DEFAULT_ECM_SIZE      (0)
+-#define DEFAULT_AVAIL1_SIZE   (0)
+-
+-#elif defined( CONFIG_MTD_NEW_PARTITION )
++#ifdef CONFIG_MTD_NEW_PARTITION
+ /* New partition scheme, starting with 7420
+       mtd0: rootfs
+       mtd1: all flash less BBT0 (1MB) for flash <= 512MB
+@@ -114,25 +101,18 @@
+ #define DEFAULT_ECM_SIZE      (0)
+ #define DEFAULT_AVAIL1_SIZE   (0)
+-#else
+-  #if defined( CONFIG_MTD_ECM_PARTITION )
++#elif defined( CONFIG_MTD_ECM_PARTITION )
+ #define DEFAULT_OCAP_SIZE     (6<<20)
+ #define DEFAULT_AVAIL1_SIZE (32<<20)
+ #define DEFAULT_ECM_SIZE (DEFAULT_OCAP_SIZE+DEFAULT_AVAIL1_SIZE)
+ #define AVAIL1_PART   (1)
+ #define OCAP_PART     (2)
+-  #else
++#else
+ #define DEFAULT_ECM_SIZE      (0)
+ #define DEFAULT_OCAP_SIZE     (0)
+ #define DEFAULT_AVAIL1_SIZE   (0)
+ #define AVAIL1_PART   (-1)
+ #define OCAP_PART     (-1)
+-  #endif // if ECM
+-
+-  /* Definitions for NOR+NAND */
+-#define ALL_PART                              (1)
+-#define KERNEL_PART                   (2)
+-#define DATA_PART                     (3)
+ #endif
+ #define DEFAULT_ROOTFS_SIZE (SMALLEST_FLASH_SIZE - DEFAULT_RESERVED_SIZE - DEFAULT_ECM_SIZE)
+@@ -147,22 +127,9 @@
+ #define N_ALL         "all"
+-static struct mtd_partition bcm7XXX_no_xor_partition[] = 
++static struct mtd_partition bcm7XXX_nand_parts[] = 
++#ifdef CONFIG_MTD_NEW_PARTITION
+ {
+-      /* XOR disabled: Everything is shifted down 4MB */
+-      { name: N_ROOTFS,       offset: 0x00400000,                     size: DEFAULT_ROOTFS_SIZE - (DEFAULT_BBT0_SIZE_MB <<20) },      // Less 1MB for BBT
+-      { name: N_ALL,          offset: 0,                                      size: DEFAULT_ROOTFS_SIZE - (DEFAULT_BBT0_SIZE_MB <<20) },
+-      { name: N_KERNEL,       offset: 0x00b00000,                     size: 4<<20 }, 
+-      /* BBT0 1MB not mountable by anyone */
+-
+-      /* Following partitions only present on flash with size > 512MB */
+-      { name: N_DATA,         offset: 0x20000000,                     size: 0 },
+-      /* BBT1 4MB not mountable by anyone */
+-      {name: NULL,            offset: 0,                                      size: 0}        /* End marker */
+-};
+-
+-static struct mtd_partition bcm7XXX_new_partition[] = 
+-{
+       { name: N_ROOTFS,       offset: 0,                                      size: DEFAULT_ROOTFS_SIZE },    
+       { name: N_ALL,          offset: 0x0,                                    size: DEFAULT_ROOTFS_SIZE - (DEFAULT_BBT0_SIZE_MB <<20) },
+       { name: N_KERNEL,       offset: 0x00800000,                     size: 4<<20 },
+@@ -174,15 +141,24 @@
+       {name: NULL,            offset: 0,                                      size: 0}        /* End marker */
+ };
+-static struct mtd_partition bcm7XXX_old_partition[] = 
++#else
+ {
+       { name: N_ROOTFS,       offset: 0,                                      size: DEFAULT_ROOTFS_SIZE },    
+ #ifdef CONFIG_MTD_ECM_PARTITION
+       { name: N_AVAIL1,       offset: DEFAULT_ROOTFS_SIZE,    size: DEFAULT_AVAIL1_SIZE },
+       { name: N_OCAP,         offset: DEFAULT_ROOTFS_SIZE+DEFAULT_AVAIL1_SIZE,        size: DEFAULT_OCAP_SIZE },
+ #endif
+-      { name: N_KERNEL,       offset: 0x00800000,                     size: 4<<20 },
+-      { name: N_CFE,          offset: 0x00C00000,                     size: 2<<20 },
++#ifdef USE_SPLASH
++      { name: N_KERNEL,       offset: 0x00200000,                     size: 4<<20 },
++      { name: "boot",         offset: 0x00600000,                     size: 4<<20 },
++      { name: "bootimg",      offset: 0x00A00000,                     size: 2<<20 },
++#else
++      { name: N_KERNEL,       offset: 0x00400000,                     size: 4<<20 },
++      { name: "boot",         offset: 0x00800000,                     size: 4<<20 },
++#endif
++      { name: N_CFE,          offset: 0x00C00000,                     size: 1<<20 },
++      { name: "mac",          offset: 0x00D00000,                     size: 1<<19 },
++      { name: "env",          offset: 0x00D80000,                     size: 1<<19 },
+       { name: N_NVM,          offset: 0x00E00000,                     size: 1<<20 },
+       /* BBT 1MB not mountable by anyone */
+       { name: N_DATA,         offset: 0x20000000,             size: 0 },
+@@ -190,15 +166,6 @@
+       {name: NULL, offset: 0, size: 0},
+       {name: NULL, offset: 0, size: 0}
+ };
+-
+-#if defined( CONFIG_MTD_BRCMNAND_DISABLE_XOR )
+-static struct mtd_partition* bcm7XXX_nand_parts = bcm7XXX_no_xor_partition;
+-
+-#elif defined( CONFIG_MTD_NEW_PARTITION )
+-static struct mtd_partition* bcm7XXX_nand_parts = bcm7XXX_new_partition;
+-
+-#else
+-static struct mtd_partition* bcm7XXX_nand_parts = bcm7XXX_old_partition;
+ #endif
+ struct brcmnand_info {
+@@ -253,41 +220,17 @@
+       unsigned int ocap_size = DEFAULT_OCAP_SIZE;
+ #endif
+       unsigned int avail1_size = DEFAULT_AVAIL1_SIZE;
+-      int oldNumParts = ARRAY_SIZE(bcm7XXX_old_partition);
+-//printk("========================> %s\n", __FUNCTION__);
+-
+-
+-      /* 
+-       * Is XOR disabled? if so use the new partition.
+-       */
+-      if (nandinfo->brcmnand.xor_disable) {
+-              bcm7XXX_nand_parts = bcm7XXX_no_xor_partition;
+-
+-              if (device_size(mtd) <= (512ULL <<20)) {
+-                      bcm7XXX_nand_parts[ALL_PART].size = 
+-                              device_size(mtd) - (uint64_t) (DEFAULT_BBT0_SIZE_MB<<20);
+-                      *numParts = 3;
+-              } 
+-              else {
+-                      bcm7XXX_nand_parts[ALL_PART].size = ((512-DEFAULT_BBT1_SIZE_MB)<<20);
+-                      *numParts = 4;
+-              }
+-              for (i=0; i<*numParts;i++) {
+-                      bcm7XXX_nand_parts[i].ecclayout = mtd->ecclayout;
+-              }
+-      
+-              // Kernel partition will be initialized by Env Vars.
+-      //printk("<-- %s, device_size=%0llx\n", __FUNCTION__, device_size(mtd));
+-      //print_partition(*numParts);
+-
+-              nandinfo->parts = bcm7XXX_nand_parts;
+-              
+-              return;
++      if (device_size(mtd) <= (512ULL <<20)) {
++              size = (unsigned long) device_size(mtd);        // mtd->size may be different than nandinfo->size
++              *numParts = ARRAY_SIZE(bcm7XXX_nand_parts) - 3; /* take into account the extra 2 parts
++                                                                 and the data partition */
++      } else {
++              size = 512 << 20;
++              *numParts = ARRAY_SIZE(bcm7XXX_nand_parts) - 2; // take into account the extra 2 parts
+       }
+-
+-#if defined( CONFIG_MTD_NEW_PARTITION ) 
++#ifdef CONFIG_MTD_NEW_PARTITION
+       if (device_size(mtd) <= (512ULL <<20)) {
+               bcm7XXX_nand_parts[ALL_PART].size = 
+                       device_size(mtd) - (uint64_t) (DEFAULT_BBT0_SIZE_MB<<20);
+@@ -308,53 +251,8 @@
+       nandinfo->parts = bcm7XXX_nand_parts;
+       
+       return;
+-#else
+-                                                                 
+-      /* NAND on CS1, same partition as that of CONFIG_MTD_NEW_PARTITION */
+-PRINTK("nandinfo->brcmnand.CS[0] = %d\n", nandinfo->brcmnand.CS[0]);
+-PRINTK("bcm7XXX_nand_parts=%p, bcm7XXX_new_partition=%p, bcm7XXX_old_partition=%p\n",
+-      bcm7XXX_nand_parts, &bcm7XXX_new_partition[0], &bcm7XXX_old_partition[0]);
+-      if (nandinfo->brcmnand.CS[0] != 0) {
+-              bcm7XXX_nand_parts = bcm7XXX_new_partition;
+-              
+-              if (device_size(mtd) <= (512ULL <<20)) {
+-                      bcm7XXX_nand_parts[0].size = device_size(mtd) - DEFAULT_RESERVED_SIZE - ecm_size;
+-                      bcm7XXX_nand_parts[ALL_PART].size = 
+-                              device_size(mtd) - ((uint64_t) (DEFAULT_BBT0_SIZE_MB) <<20);
+-                      *numParts = 3;
+-              } 
+-              else {
+-                      bcm7XXX_nand_parts[0].size = (512ULL <<20) - DEFAULT_RESERVED_SIZE - ecm_size;
+-                      bcm7XXX_nand_parts[ALL_PART].size = 
+-                              device_size(mtd) - ((uint64_t) (DEFAULT_BBT1_SIZE_MB)<<20);
+-                      *numParts = 4;
+-              }
+-              for (i=0; i<*numParts;i++) {
+-                      bcm7XXX_nand_parts[i].ecclayout = mtd->ecclayout;
+-              }
++#elif defined( CONFIG_MTD_ECM_PARTITION )
+-              nandinfo->parts = bcm7XXX_nand_parts;
+-
+-#if 1
+-PRINTK("%s: NAND on CS1: numparts=%d\n", __FUNCTION__, *numParts);
+-print_partition(*numParts);
+-#endif
+-
+-              return;
+-        }
+-
+-      /* From now on, we are only dealing with old partition table */
+-      if (device_size(mtd) <= (512ULL <<20)) {
+-              size = (unsigned long) device_size(mtd);        // mtd->size may be different than nandinfo->size
+-              *numParts =  oldNumParts - 3; /* take into account the extra 2 parts
+-                                                                 and the data partition */
+-      } else {
+-              size = 512 << 20;
+-              *numParts =  oldNumParts - 2; // take into account the extra 2 parts
+-      }
+-  
+-  #if defined( CONFIG_MTD_ECM_PARTITION )
+-
+       /* Do not generate AVAIL1 partition if usable flash size is less than 64MB */
+       
+       if (size < (64<<20)) {
+@@ -370,12 +268,11 @@
+               ecm_size = ocap_size + avail1_size;
+       }
+       
+-  #endif
++
+ #endif
+       nandinfo->parts = bcm7XXX_nand_parts;
+       bcm7XXX_nand_parts[0].size = size - DEFAULT_RESERVED_SIZE - ecm_size;
+       bcm7XXX_nand_parts[0].ecclayout = mtd->ecclayout;
+-PRINTK("numParts=%d\n", numParts);
+ PRINTK("Part[%d] name=%s, size=%llx, offset=%llx\n", i, bcm7XXX_nand_parts[0].name, 
+ bcm7XXX_nand_parts[0].size, bcm7XXX_nand_parts[0].offset);
+@@ -549,6 +446,7 @@
+       int e; // Index into Env vars
+       int i; // Index into mtd partition
++#ifndef USE_SPLASH
+       // Not configured for Splash, but does CFE define it?
+       if (!gBcmSplash) { 
+               for (i=0; i < gCfePartitions.numParts; i++) {
+@@ -558,6 +456,7 @@
+                       }
+               }
+       }
++#endif
+       /*
+        * Remove OCAP partitions if Env Vars are defined
+@@ -640,7 +539,6 @@
+       //unsigned long size = res->end - res->start + 1;
+       int err = 0;
+       int numParts = 0;
+-      struct brcmnand_chip* chip;
+       gPageBuffer = NULL;
+       info = kmalloc(sizeof(struct brcmnand_info), GFP_KERNEL);
+@@ -672,7 +570,7 @@
+       //info->brcmnand.mmcontrol = NULL;  // THT: Sync Burst Read TBD.  pdata->mmcontrol;
+       info->mtd.name = pdev->dev.bus_id;
+-      chip = info->mtd.priv = &info->brcmnand;
++      info->mtd.priv = &info->brcmnand;
+       info->mtd.owner = THIS_MODULE;
+       /* Enable the following for a flash based bad block table */
+@@ -690,19 +588,12 @@
+ //print_partition(numParts);
+-      // Nand not on CS0, set it up to allow 1 partition, as in the new partition scheme
+-      if (chip->CS[0] != 0) { 
+-              bcm7XXX_nand_parts = bcm7XXX_new_partition;
+-      }
+-      
+       if (gCfePartitions.numParts == 0) {
+               brcmnanddrv_setup_mtd_partitions(info, &numParts);
+       }
+       else {
+               brcmnanddrv_setup_mtdpart_cfe_env(info, &numParts);
+       }
+-      
+-      
+ //print_partition(numParts);
+               
+@@ -711,20 +602,6 @@
+ //printk("    dev_set_drvdata\n");    
+       dev_set_drvdata(&pdev->dev, info);
+ //printk("<-- brcmnanddrv_probe\n");
+-
+-/* NOR+NAND configuration */
+-#ifdef CONFIG_MTD_BRCMNAND_NOR_ACCESS
+-      /* Append NOR partition to the end */
+-      {
+-              extern void (*gInitialize_Nor_Partition)(void);
+-
+-              if (gInitialize_Nor_Partition) {
+-                      (*gInitialize_Nor_Partition) ();
+-              }
+-              // Else NAND is loaded first, NOR will append when it is started.
+-      }
+-
+-#endif
+       return 0;
+Index: drivers/mtd/brcmnand/brcmnand_base.c
+===================================================================
+--- drivers/mtd/brcmnand/brcmnand_base.c       (revision 1)
++++ drivers/mtd/brcmnand/brcmnand_base.c       (working copy)
+@@ -39,8 +39,6 @@
+ #include <linux/byteorder/generic.h>
+ #include <linux/reboot.h>
+ #include <linux/vmalloc.h>
+-#include <linux/dma-mapping.h>
+-#include <linux/interrupt.h>
+ #include <asm/io.h>
+ #include <asm/bug.h>
+@@ -60,26 +58,6 @@
+ //#define DEBUG_HW_ECC
+-//#define BRCMNAND_READ_VERIFY
+-#undef BRCMNAND_READ_VERIFY
+-
+-//#ifdef CONFIG_MTD_BRCMNAND_VERIFY_WRITE
+-//#define BRCMNAND_WRITE_VERIFY
+-//#endif
+-#undef BRCMNAND_WRITE_VERIFY
+-
+-//#define DEBUG_ISR
+-#undef DEBUG_ISR
+-#if defined( DEBUG_ISR )  || defined(BRCMNAND_READ_VERIFY) \
+-      || defined(BRCMNAND_WRITE_VERIFY)
+-#if defined(DEBUG_ISR )  || defined(BRCMNAND_READ_VERIFY)
+-#define EDU_DEBUG_4
+-#endif
+-#if defined(DEBUG_ISR )  || defined(BRCMNAND_WRITE_VERIFY)
+-#define EDU_DEBUG_5
+-#endif
+-#endif
+-
+ #define my_be32_to_cpu(x) be32_to_cpu(x)
+ #if defined( CONFIG_MTI_R24K ) || defined( CONFIG_MTI_R34K ) || defined( CONFIG_MTD_BRCMNAND_EDU )
+@@ -131,7 +109,21 @@
+ #define HW_AUTOOOB_LAYOUT_SIZE                32 /* should be enough */
++#define BRCMNAND_CORRECTABLE_ECC_ERROR                (1)
++#define BRCMNAND_SUCCESS                                              (0)
++#define BRCMNAND_UNCORRECTABLE_ECC_ERROR      (-1)
++#define BRCMNAND_FLASH_STATUS_ERROR                   (-2)
++#define BRCMNAND_TIMED_OUT                                    (-3)
++#ifdef CONFIG_MTD_BRCMNAND_EDU
++#define BRCMEDU_CORRECTABLE_ECC_ERROR         (4)
++#define BRCMEDU_UNCORRECTABLE_ECC_ERROR      (-4)
++
++#define  BRCMEDU_MEM_BUS_ERROR                                (-5)
++
++//uint32_t EDU_ldw;
++#endif // #ifdef CONFIG_MTD_BRCMNAND_EDU
++
+ #ifdef CONFIG_MTD_BRCMNAND_CORRECTABLE_ERR_HANDLING
+ /* Avoid infinite recursion between brcmnand_refresh_blk() and brcmnand_read_ecc() */
+ static atomic_t inrefresh = ATOMIC_INIT(0); 
+@@ -166,7 +158,6 @@
+       uint32 options;
+       uint32_t idOptions;     // Whether chip has all 5 ID bytes
+       uint32 timing1, timing2; // Specify a non-zero value to override the default timings.
+-      int nop;                                // Number of partial writes per page
+       unsigned int ctrlVersion; // Required controller version if different than 0
+ } brcmnand_chip_Id;
+@@ -183,7 +174,6 @@
+                               //| NAND_COMPLEX_OOB_WRITE      /* Write data together with OOB for write_oob */
+               .timing1 = 0, //00070000,
+               .timing2 = 0,
+-              .nop=8,
+               .ctrlVersion = 0, /* THT Verified on data-sheet 7/10/08: Allows 4 on main and 4 on OOB */
+       },
+@@ -195,7 +185,6 @@
+               .idOptions = 0,
+               .timing1 = 0, //0x6474555f, 
+               .timing2 = 0, //0x00000fc7,
+-              .nop=8,
+               .ctrlVersion = 0,
+       },
+       {       /* 2 */
+@@ -206,7 +195,6 @@
+               .idOptions = 0,
+               .timing1 = 0, //0x6474555f, 
+               .timing2 = 0, //0x00000fc7,
+-              .nop=8,
+               .ctrlVersion = 0,
+       },
+ #if 0 // EOL
+@@ -228,7 +216,6 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=8,
+               .ctrlVersion = 0,
+       },
+@@ -239,7 +226,6 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=8,
+               .ctrlVersion = 0,
+       },
+ /* This is just the 16 bit version of the above?
+@@ -259,8 +245,7 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=4,
+-              .ctrlVersion = CONFIG_MTD_BRCMNAND_VERS_2_1,
++              .ctrlVersion = CONFIG_MTD_BRCMNAND_VERS_2_0,
+       },
+       {       /* 6 */
+@@ -270,8 +255,7 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=4,
+-              .ctrlVersion = CONFIG_MTD_BRCMNAND_VERS_2_1,
++              .ctrlVersion = CONFIG_MTD_BRCMNAND_VERS_2_0,
+       },
+@@ -282,7 +266,6 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=8,
+               .ctrlVersion = 0,
+       },
+@@ -295,7 +278,6 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=8,
+               .ctrlVersion = 0,
+       },
+@@ -306,7 +288,6 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=8,
+               .ctrlVersion = 0,
+       },
+@@ -317,7 +298,6 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=8,
+               .ctrlVersion = 0,
+       },
+@@ -328,7 +308,6 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=8,
+               .ctrlVersion = 0,
+       },
+@@ -339,7 +318,6 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=8,
+               .ctrlVersion = 0,
+       },
+@@ -350,7 +328,6 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=8,
+               .ctrlVersion = 0,
+       },
+@@ -361,7 +338,6 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=8,
+               .ctrlVersion = 0,
+       },
+@@ -372,7 +348,6 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=8,
+               .ctrlVersion = 0,
+       },
+@@ -383,7 +358,6 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=8,
+               .ctrlVersion = 0,
+       },
+@@ -394,7 +368,6 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=8,
+               .ctrlVersion = 0,
+       },
+@@ -405,7 +378,6 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=8,
+               .ctrlVersion = 0,
+       },
+@@ -416,7 +388,6 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=8,
+               .ctrlVersion = 0,
+       },
+@@ -427,7 +398,6 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=8,
+               .ctrlVersion = 0,
+       },
+@@ -438,11 +408,10 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=8,
+               .ctrlVersion = 0,
+       },
+-      /* The following 6 ST chips only allow 4 writes per page, and requires version2.1 (4) of the controller or later */
++      /* The following 6 ST chips only allow 4 writes per page, and requires version2.2 (5) of the controller or later */
+       {       /* 22 */
+               .chipId = ST_NAND01GW3B,
+               .mafId = FLASHTYPE_ST,
+@@ -450,8 +419,7 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=4,
+-              .ctrlVersion = CONFIG_MTD_BRCMNAND_VERS_2_1,
++              .ctrlVersion = CONFIG_MTD_BRCMNAND_VERS_2_0,
+       },
+       {       /* 23 */ 
+@@ -461,8 +429,7 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=4,
+-              .ctrlVersion = CONFIG_MTD_BRCMNAND_VERS_2_1,
++              .ctrlVersion = CONFIG_MTD_BRCMNAND_VERS_2_0,
+       },
+       {       /* 24 */ 
+@@ -472,8 +439,7 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=4,
+-              .ctrlVersion = CONFIG_MTD_BRCMNAND_VERS_2_1,
++              .ctrlVersion = CONFIG_MTD_BRCMNAND_VERS_2_0,
+       },
+       {       /* 25 */ 
+               .chipId = ST_NAND02GW3B,
+@@ -482,8 +448,7 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=4,
+-              .ctrlVersion = CONFIG_MTD_BRCMNAND_VERS_2_1,
++              .ctrlVersion = CONFIG_MTD_BRCMNAND_VERS_2_0,
+       },
+       
+       {       /* 26 */ 
+@@ -493,8 +458,7 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=4,
+-              .ctrlVersion = CONFIG_MTD_BRCMNAND_VERS_2_1,
++              .ctrlVersion = CONFIG_MTD_BRCMNAND_VERS_2_0,
+       },
+       {       /* 27 */ 
+               .chipId = ST_NAND08GW3B,
+@@ -503,8 +467,7 @@
+               .options = NAND_USE_FLASH_BBT,
+               .idOptions = 0,
+               .timing1 = 0, .timing2 = 0,
+-              .nop=4,
+-              .ctrlVersion = CONFIG_MTD_BRCMNAND_VERS_2_1,
++              .ctrlVersion = CONFIG_MTD_BRCMNAND_VERS_2_0,
+       },
+               
+       {       /* 28 */
+@@ -514,9 +477,8 @@
+               .options = NAND_USE_FLASH_BBT,          /* Use BBT on flash */
+                               //| NAND_COMPLEX_OOB_WRITE      /* Write data together with OOB for write_oob */
+               .idOptions = BRCMNAND_ID_EXT_BYTES,
+-              .timing1 = 0, 
++              .timing1 = 0, //00070000,
+               .timing2 = 0,
+-              .nop=1,
+               .ctrlVersion = CONFIG_MTD_BRCMNAND_VERS_3_0, 
+       },
+@@ -527,9 +489,8 @@
+               .options = NAND_USE_FLASH_BBT,          /* Use BBT on flash */
+                               //| NAND_COMPLEX_OOB_WRITE      /* Write data together with OOB for write_oob */
+               .idOptions = BRCMNAND_ID_EXT_BYTES_TYPE2,
+-              .timing1 = 0, 
++              .timing1 = 0, //00070000,
+               .timing2 = 0,
+-              .nop=1,
+               .ctrlVersion = CONFIG_MTD_BRCMNAND_VERS_3_0, 
+       },
+@@ -540,24 +501,10 @@
+               .options = NAND_USE_FLASH_BBT,          /* Use BBT on flash */
+                               //| NAND_COMPLEX_OOB_WRITE      /* Write data together with OOB for write_oob */
+               .idOptions = BRCMNAND_ID_EXT_BYTES,
+-              .timing1 = 0, 
++              .timing1 = 0, //00070000,
+               .timing2 = 0,
+-              .nop=1,
+               .ctrlVersion = CONFIG_MTD_BRCMNAND_VERS_3_0, 
+       },
+-
+-      {       /* 31 */  
+-              .chipId = HYNIX_HY27UAG8T2M,
+-              .mafId = FLASHTYPE_HYNIX,
+-              .chipIdStr = "HYNIX_HY27UAG8T2M",
+-              .options = NAND_USE_FLASH_BBT,          /* Use BBT on flash */
+-                              //| NAND_COMPLEX_OOB_WRITE      /* Write data together with OOB for write_oob */
+-              .idOptions = BRCMNAND_ID_EXT_BYTES,
+-              .timing1 = 0, 
+-              .timing2 = 0,
+-              .nop=1,
+-              .ctrlVersion = CONFIG_MTD_BRCMNAND_VERS_3_0, 
+-      },
+               
+       {       /* LAST DUMMY ENTRY */
+               .chipId = 0,
+@@ -613,7 +560,7 @@
+       if (nandCtrlReg < BCHP_NAND_REVISION || nandCtrlReg > BCHP_NAND_BLK_WR_PROTECT ||
+               (nandCtrlReg & 0x3) != 0) {
+-              printk("brcmnand_ctrl_read: Invalid register value %08x\n", nandCtrlReg);
++              printk(KERN_ERR "brcmnand_ctrl_read: Invalid register value %08x\n", nandCtrlReg);
+       }
+ if (gdebug > 3) printk("%s: CMDREG=%08x val=%08x\n", __FUNCTION__, (unsigned int) nandCtrlReg, (unsigned int)*pReg);
+       return (uint32_t) (*pReg);
+@@ -627,7 +574,7 @@
+       if (nandCtrlReg < BCHP_NAND_REVISION || nandCtrlReg > BCHP_NAND_BLK_WR_PROTECT ||
+               (nandCtrlReg & 0x3) != 0) {
+-              printk( "brcmnand_ctrl_read: Invalid register value %08x\n", nandCtrlReg);
++              printk(KERN_ERR "brcmnand_ctrl_read: Invalid register value %08x\n", nandCtrlReg);
+       }
+       *pReg = (volatile unsigned long) (val);
+ if (gdebug > 3) printk("%s: CMDREG=%08x val=%08x\n", __FUNCTION__, nandCtrlReg, val);
+@@ -670,14 +617,13 @@
+       }
+ if (gdebug) printk("CS=%d, chip->CS[cs]=%d\n", cs, chip->CS[cs]);
+-      // ldw is lower 32 bit of chipOffset, need to add pbase when on CS0 and XOR is ON.
+-      if (!chip->xor_disable[cs]) {
++      // ldw is lower 32 bit of chipOffset, need to add pbase when on CS0
++      if (chip->CS[cs] == 0) {
+               ldw = chipOffset.s.low + chip->pbase;
+-      } 
++      }
+       else {
+               ldw = chipOffset.s.low;
+-      } 
+-      
++      }
+       udw = chipOffset.s.high | (chip->CS[cs] << 16);
+ if (gdebug > 3) printk("%s: offset=%0llx  cs=%d ldw = %08x, udw = %08x\n", __FUNCTION__, offset, cs,  ldw, udw);
+@@ -692,7 +638,7 @@
+ #if 1
+ /* Dont delete, may be useful for debugging */
+-static void print_diagnostics(struct brcmnand_chip* chip)
++static void print_diagnostics(void)
+ {
+       uint32_t nand_acc_control = brcmnand_ctrl_read(BCHP_NAND_ACC_CONTROL);
+       uint32_t nand_select = brcmnand_ctrl_read(BCHP_NAND_CS_NAND_SELECT);
+@@ -703,7 +649,7 @@
+       uint32_t pageAddrExt = brcmnand_ctrl_read(BCHP_NAND_PROGRAM_PAGE_EXT_ADDR);
+ #endif
+-      
++      uint32_t ebiCSBase0 = * ((volatile unsigned long*) (0xb0000000|BCHP_EBI_CS_BASE_0));
+       //unsigned long nand_timing1 = brcmnand_ctrl_read(BCHP_NAND_TIMING_1);
+       //unsigned long nand_timing2 = brcmnand_ctrl_read(BCHP_NAND_TIMING_2);
+@@ -712,17 +658,7 @@
+ #if CONFIG_MTD_BRCMNAND_VERSION >= CONFIG_MTD_BRCMNAND_VERS_1_0
+       printk("PAGE_EXT_ADDR=%08x\n", pageAddrExt);
+ #endif
+-      if (chip->CS[0] == 0) {
+-              uint32_t ebiCSBase0 = * ((volatile unsigned long*) (0xb0000000|BCHP_EBI_CS_BASE_0));
+-              printk("PAGE_ADDR=%08x, \tCS0_BASE=%08x\n", pageAddr, ebiCSBase0);
+-      }
+-      else {
+-              //uint32_t ebiCSBaseN = * ((volatile unsigned long*) (0xb0000000|(BCHP_EBI_CS_BASE_0));
+-              uint32_t csNandBaseN = *(volatile unsigned long*) (0xb0000000 + BCHP_EBI_CS_BASE_0 + 8*chip->CS[0]);
+-
+-              printk("PAGE_ADDR=%08x, \tCS%-d_BASE=%08x\n", pageAddr, chip->CS[0], csNandBaseN);
+-              printk("pbase=%08lx, vbase=%p\n", chip->pbase, chip->vbase);
+-      }
++      printk("PAGE_ADDR=%08x, \tCS0_BASE=%08x\n", pageAddr, ebiCSBase0);
+ }     
+ #endif
+@@ -739,51 +675,6 @@
+               nand_acc_control, nand_config, flash_id, nand_timing1, nand_timing2);   
+ }
+-#define NUM_NAND_REGS         (1+((BCHP_NAND_BLK_WR_PROTECT-BCHP_NAND_REVISION)/4))
+-
+-static void print_nand_ctrl_regs(void)
+-{
+-      int i;
+-
+-      for (i=0; i<NUM_NAND_REGS; i++) {
+-              uint32_t reg = (uint32_t) (BCHP_NAND_REVISION+(i*4));
+-              uint32_t regval; 
+-              uint32_t regoff = reg - BCHP_NAND_REVISION; // i*4
+-              
+-              if ((i % 4) == 0) {
+-                      printk("\n%08x:", reg);
+-              }
+-
+-#if CONFIG_MTD_BRCMNAND_VERSION < CONFIG_MTD_BRCMNAND_VERS_1_0
+-              // V0.0, V0.1 7401Cx
+-              if (regoff == 0x14 || regoff == 0x18 || regoff == 0x1c ) { // No NAND register at 0x281c
+-                      regval = 0;
+-              }               
+-#elif CONFIG_MTD_BRCMNAND_VERSION < CONFIG_MTD_BRCMNAND_VERS_2_0
+-              // V1.0 7440Bx
+-              if (regoff == 0x18 || regoff == 0x1c ) { // No NAND register at 0x281c
+-                      regval = 0;
+-              }
+-#elif CONFIG_MTD_BRCMNAND_VERSION < CONFIG_MTD_BRCMNAND_VERS_3_0
+-              // V2.x 7325, 7335, 7405bx
+-              if (regoff == 0x1c) { // No NAND register at 0x281c
+-                      regval = 0;
+-              }
+-#else // if CONFIG_MTD_BRCMNAND_VERSION >= CONFIG_MTD_BRCMNAND_VERS_3_0
+-              // V3.x 3548, 7420a0, 7420b0
+-              if (regoff == 0x1c || regoff == 0x44 || regoff == 0x4c || regoff == 0x5c 
+-                      || regoff == 0x88 || regoff == 0x8c
+-                      || regoff == 0xb8 || regoff == 0xbc) {
+-                      regval = 0;
+-              }
+-#endif
+-              else {
+-                      regval = (uint32_t) brcmnand_ctrl_read(reg);
+-              }
+-              printk("  %08x", regval);
+-      }
+-}
+-
+ void print_NandCtrl_Status(void)
+ {
+ #ifdef CONFIG_MTD_BRCMNAND_EDU
+@@ -1021,8 +912,11 @@
+               uint32_t rd_data;
+       
+-              rd_data = ISR_cache_is_valid();
++              rd_data = ISR_cache_is_valid(intr);
++
++
++
+               if (rd_data == 0) {
+               /* timed out */
+ printk("%s: rd_data=0 TIMEOUT\n", __FUNCTION__);
+@@ -1158,7 +1052,7 @@
+                       return 0;
+               }
+-              if (state != FL_READING && (!wr_preempt_en) && !in_interrupt())
++              if (state != FL_READING && (!wr_preempt_en))
+                       cond_resched();
+               //touch_softlockup_watchdog();
+       }
+@@ -1192,10 +1086,6 @@
+               if (ready & BCHP_NAND_INTFC_STATUS_CTLR_READY_MASK && 
+                  (ready & BCHP_NAND_INTFC_STATUS_SPARE_AREA_VALID_MASK)) {
+-
+-
+-#if 0
+-// THT 6/15/09: Reading OOB would not affect ECC
+                       int ecc;
+                       if (!raw) {
+@@ -1205,10 +1095,9 @@
+                                       return -1;
+                               }
+                       }
+-#endif
+                       return 1;
+               }
+-              if (state != FL_READING && !wr_preempt_en && !in_interrupt())
++              if (state != FL_READING && !wr_preempt_en)
+                       cond_resched();
+       }
+@@ -1261,7 +1150,7 @@
+                       //}
+                       //return BRCMNAND_SUCCESS;
+               }
+-              if (state != FL_READING && (!wr_preempt_en) && !in_interrupt())
++              if (state != FL_READING && (!wr_preempt_en))
+                       cond_resched();
+       }
+@@ -1292,7 +1181,7 @@
+       uint32_t rd_data;
+ if (gdebug > 3 ) {
+-printk("%s: intr_status = %08x\n", __FUNCTION__, intr_status); }       
++printk("%s: intr_status = %08x\n", intr_status); }     
+         if (intr_status == 0) {
+               /* EDU_read timed out */
+@@ -1319,7 +1208,7 @@
+                */
+               if (!(intr_status & HIF_INTR2_CTRL_READY)) {
+-                      (void) ISR_cache_is_valid(); 
++                      (void) ISR_cache_is_valid(0); 
+               }
+ #endif
+               /*
+@@ -1356,12 +1245,9 @@
+ #endif
+-/*
+- * Returns 1 on success,
+- *              0 on error
+- */
++
+ static int brcmnand_ctrl_write_is_complete(struct mtd_info *mtd, int* outp_needBBT)
+ {
+       int err;
+@@ -1384,188 +1270,8 @@
+ }
+-
+-
+-//#define EDU_DEBUG_2
+-#undef EDU_DEBUG_2
+-
+-// EDU_DEBUG_4: Verify on Read
+-//#define EDU_DEBUG_4
+-//#undef EDU_DEBUG_4
+-
+-// EDU_DEBUG_5: Verify on Write
+-//#define EDU_DEBUG_5
+-//#undef EDU_DEBUG_5
+-
+-#if defined( EDU_DEBUG_2 ) || defined( EDU_DEBUG_4 ) || defined( EDU_DEBUG_5 )
+-/* 3548 internal buffer is 4K in size */
+-//static uint32_t edu_lbuf[2048];
+-static uint32_t* edu_buf32;
+-static uint8_t* edu_buf;      // Used by EDU in Debug2
+-static uint8_t* ctrl_buf;     // Used by Ctrl in Debug4
+-static uint32_t ctrl_oob32[4];
+-static uint8_t* ctrl_oob = (uint8_t*) ctrl_oob32;
+-
+-#define PATTERN 0xa55a0000
+-
+-#define EDU_BUFSIZE_B (512)
+-// One before and one after
+-#define EDU_BUF32_SIZE_B (EDU_BUFSIZE_B*3)
+-
+-// Same as above in DW instead
+-#define EDU_BUFSIZE_DW (EDU_BUFSIZE_B/4)
+-#define EDU_BUF32_SIZE_DW (EDU_BUF32_SIZE_B/4)
+-
+-// Real buffer starts at 1/3 
+-#define EDU_BUF_START_DW (EDU_BUF32_SIZE_DW/3)
+-
+-
+-static void init_edu_buf(void)
+-{
+-      /* Write pattern */
+-      int i;
+-
+-      if (!edu_buf32) {
+-              edu_buf32 = (uint32_t*) kmalloc(EDU_BUF32_SIZE_B, GFP_KERNEL);
+-              if (!edu_buf32) {
+-                      printk("%s: Out of memory\n", __FUNCTION__);
+-                      BUG();
+-              }
+-                      
+-              edu_buf = ctrl_buf = (uint8_t*)  &edu_buf32[EDU_BUF_START_DW];
+-              printk("%s: Buffer allocated at %p, %d bytes\n", __FUNCTION__, edu_buf32, EDU_BUF32_SIZE_B);
+-              printk("Real buffer starts at %p\n", ctrl_buf);
+-      }
+-
+-      for (i=0; i<EDU_BUF32_SIZE_DW; i++) {
+-              edu_buf32[i] = PATTERN | i;
+-      }       
+-}
+-
+-static int verify_edu_buf(void) 
+-{
+-      int i;
+-      int ret = 0;
+-      
+-      for (i=0; i<EDU_BUF_START_DW; i++) {
+-              if (edu_buf32[i] != (PATTERN | i)) {
+-                      printk("############ %s: pattern overwritten at offset %d, expect %08x, found %08x\n", 
+-                              __FUNCTION__, i*4, PATTERN | i, edu_buf32[i]);
+-                      ret++;
+-              }
+-      }
+-      for (i=EDU_BUF_START_DW+EDU_BUFSIZE_DW; i<EDU_BUF32_SIZE_DW; i++) {
+-              if (edu_buf32[i] != (PATTERN | i)) {
+-                      printk("############ %s: pattern overwritten at offset %d, expect %08x, found %08x\n", 
+-                              __FUNCTION__, i*4, PATTERN | i, edu_buf32[i]);
+-                      ret++;
+-              }
+-      }
+-if (ret) printk("+++++++++++++++ %s: %d DW overwritten by EDU\n", __FUNCTION__, ret);
+-      return ret;
+-}
+-
+-
+-static uint8_t edu_write_buf[512];
+-
+-
+-
+ #ifdef CONFIG_MTD_BRCMNAND_EDU
+-#define NUM_EDU_REGS  (1+((BCHP_EDU_ERR_STATUS-BCHP_EDU_CONFIG)/4))
+-#else
+-#define NUM_EDU_REGS  1
+-#endif
+-#define MAX_DUMPS             20
+-
+-typedef struct nand_dump {
+-      loff_t offset;
+-      uint32_t physAddr;
+-      struct brcmnand_chip* chip;
+-      struct register_dump_t {
+-              unsigned long timestamp;
+-              uint32_t nand_regs[NUM_NAND_REGS]; // NAND register dump
+-              uint32_t edu_regs[NUM_EDU_REGS];        // EDU register
+-              uint32_t hif_intr2;             // HIF_INTR2 Interrupt status
+-              uint8_t data[512];              // NAND controller cache
+-      } dump[MAX_DUMPS];
+-      //uint8_t udata[512];   // Uncached
+-} nand_dump_t; // Before and after
+-nand_dump_t nandDump; 
+-int numDumps = 0;
+-
+-
+-#ifdef CONFIG_MTD_BRCMNAND_EDU
+-static void print_dump_nand_regs(int which)
+-{
+-      int i;
+-
+-      printk("NAND registers snapshot #%d: TS=%0lx, offset=%0llx, PA=%08x\n", 
+-              1+which, nandDump.dump[which].timestamp, nandDump.offset, nandDump.physAddr);
+-      for (i=0; i<NUM_NAND_REGS; i++) {
+-              if ((i % 4) == 0) {
+-                      printk("\n%08x:", BCHP_NAND_REVISION+(i*4));
+-              }
+-              printk("  %08x", nandDump.dump[which].nand_regs[i]);
+-      }
+-      printk("\nEDU registers:\n");
+-      for (i=0; i<NUM_EDU_REGS; i++) {
+-              if ((i % 4) == 0) {
+-                      printk("\n%08x:", BCHP_EDU_CONFIG+(i*4));
+-              }
+-              printk("  %08x", nandDump.dump[which].edu_regs[i]);
+-      }
+-      printk("\n HIF_INTR2_STATUS=%08x\n", nandDump.dump[which].hif_intr2);
+-      printk("\nNAND controller Internal cache:\n");
+-      print_databuf(nandDump.dump[which].data, 512);
+-}
+-
+-void dump_nand_regs(struct brcmnand_chip* chip, loff_t offset, uint32_t pa, int which)
+-{
+-      int i;
+-
+-      /* We don't have the value of offset during snapshot #2 */
+-      if (which == 0) {nandDump.offset = offset; nandDump.physAddr = pa;nandDump.chip = chip;}
+-
+-      nandDump.dump[which].timestamp = jiffies;
+-      
+-      for (i=0; i<NUM_NAND_REGS; i++) {
+-              uint32_t reg = BCHP_NAND_REVISION+(i*4);
+-              uint32_t regval;
+-
+-              if (reg == 0x281c) { // No NAND register at 0x281c
+-                      regval = 0;
+-              }
+-              else {
+-                      regval = brcmnand_ctrl_read(reg);
+-              }
+-              nandDump.dump[which].nand_regs[i] = regval;
+-      }
+-      for (i=0; i<NUM_EDU_REGS; i++) {
+-              nandDump.dump[which].edu_regs[i] = EDU_volatileRead(EDU_BASE_ADDRESS  + BCHP_EDU_CONFIG + ( i*4));
+-      }
+-      nandDump.dump[which].hif_intr2 = EDU_volatileRead(EDU_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_STATUS);
+-      brcmnand_from_flash_memcpy32(nandDump.chip, &nandDump.dump[which].data[0], nandDump.offset, 512);
+-}
+-
+-#else
+-
+-#define print_dump_nand_regs(...)
+-
+-#define dump_nand_regs(...)
+-
+-#endif // EDU_DEBUG_2,4,5
+-#endif
+-
+-
+-#ifdef CONFIG_MTD_BRCMNAND_EDU
+-
+-
+-/*
+- * Returns 1 on success,
+- *              0 on error
+- */
+-
+ static int brcmnand_EDU_write_is_complete(struct mtd_info *mtd, int* outp_needBBT)
+ {
+       uint32_t hif_err, edu_err;
+@@ -1581,45 +1287,37 @@
+ #ifdef CONFIG_MTD_BRCMNAND_USE_ISR
+-  #if 0 // No need in Batch mode
+       // Unlike the Read case where we retry on everything, we either complete the write or die trying.
+-      // Here we use retry only for ERESTARTSYS, relying on the fact that we write the same data 
+-      // over the flash.
+-      // Caution: Since this can be called from an interrupt context, we cannot call the regular brcmnand_wait()
+-      // call, since those call schedule()
++      // Here we use retry only for ERESTARTSYS, relying on the fact that we write the same data over the flash.
+       hif_err = ISR_wait_for_completion();
+       if ((hif_err == ERESTARTSYS) || (hif_err & HIF_INTR2_EBI_TIMEOUT))
+               return hif_err;
+-  #endif // Batch mode
++
+ #else
+       hif_err = EDU_poll(EDU_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_STATUS, 
+-              HIF_INTR2_EDU_DONE|HIF_INTR2_CTRL_READY, 
++              HIF_INTR2_EDU_DONE, 
+               HIF_INTR2_EDU_ERR, 
+-              HIF_INTR2_EDU_DONE_MASK|HIF_INTR2_CTRL_READY);
+-
++              HIF_INTR2_EDU_DONE_MASK);
+ #endif
+-
+       if (hif_err != 0) // No timeout
+       {
+-              uint32_t flashStatus; // = chip->ctrl_read(BCHP_NAND_INTFC_STATUS);
++              int flashStatus; // = chip->ctrl_read(BCHP_NAND_INTFC_STATUS);
+-#if 0
+-if (!(hif_err & HIF_INTR2_EDU_DONE))
+-printk("hif_err=%08x\n", hif_err);
+-#endif                        
+               
++                      
++              
+               /******************* BUG BUG BUG *****************
+                * THT 01/06/09: What if EDU returns bus error?  We should not mark the block bad then.
+                */
+                //Get status:  should we check HIF_INTR2_ERR?
+-              if (hif_err & HIF_INTR2_EDU_ERR)
+-                      edu_err = EDU_get_error_status_register();
+-              else
+-                      edu_err = 0;
++              edu_err = EDU_get_error_status_register();
+               //Clear interrupt:
+               //EDU_volatileWrite(EDU_BASE_ADDRESS  + EDU_DONE, 0x00000000);
++              EDU_reset_done();
++              EDU_volatileWrite(EDU_BASE_ADDRESS  + EDU_ERR_STATUS, 0x00000000);
++              EDU_volatileWrite(EDU_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_STATUS, HIF_INTR2_EDU_CLEAR_MASK);
+               flashStatus = chip->ctrl_read(BCHP_NAND_INTFC_STATUS);
+@@ -1627,56 +1325,39 @@
+               if (!(flashStatus & BCHP_NAND_INTFC_STATUS_CTLR_READY_MASK)) {
+                       ret = brcmnand_ctrl_write_is_complete(mtd, outp_needBBT); 
+                       // No need to check on the EDU side, already done inside ctrl_write_is_complete
+-                      udelay(1000);
+-                      //dump_nand_regs(chip, 0, 0, numDumps++);
+-                      goto out;
++                      return ret;
+               }
+-
+-#ifdef EDU_DEBUG_5
+-/* else */ {
+-
+-// 2nd dump after CTRL_READY is asserted
+-//udelay(1000);
+-//dump_nand_regs(chip, 0, 0, numDumps++);
+-}
+-#endif
+                       
+               if ((edu_err & EDU_ERR_STATUS_NandWrite) || (flashStatus & 0x01)) {
+                       /* Write did not complete, flash error, will mark block bad */
+                       *outp_needBBT = 1;
+                       printk("EDU_write_is_complete(): error 0x%08X\n", edu_err);
+-                      ret = 0;
+-                      goto out;
++                      return 0;
+               }
+               else if (edu_err) {
+                       /* Write did not complete, bus error, will NOT mark block bad */
+                       *outp_needBBT = 0;
+                       printk("EDU_write_is_complete(): error 0x%08X\n", edu_err);
+-                      ret = 0;
+-                      goto out;
++                      return 0;
+               }
+-              ret = 1; // Success    brcmnand_ctrl_write_is_complete(mtd, outp_needBBT);  
+-              goto out;
++              return 1; // Success    brcmnand_ctrl_write_is_complete(mtd, outp_needBBT);  
+       }
+       else { // Write timeout
+               printk("%s: Write has timed out\n", __FUNCTION__);
+               //*outp_needBBT = 1;
+-              ret = 0;
+-              goto out;
++              EDU_reset_done();
++              EDU_volatileWrite(EDU_BASE_ADDRESS  + EDU_ERR_STATUS, 0x00000000);
++              EDU_volatileWrite(EDU_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_STATUS, HIF_INTR2_EDU_CLEAR_MASK);
++              
++              return 0;
+       }
+-out:
+-      EDU_reset_done();
+-      EDU_volatileWrite(EDU_BASE_ADDRESS  + EDU_ERR_STATUS, 0x00000000);
+-      EDU_volatileWrite(EDU_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_STATUS, HIF_INTR2_EDU_CLEAR_MASK);
++      printk("EDU_write_is_complete(): error 2 hif_err: %08x\n", hif_err);
+-
+-      //printk("EDU_write_is_complete(): error 2 hif_err: %08x\n", hif_err);
+-
+       //Poll time out or did not return HIF_INTR2_EDU_DONE:
+-      return ret;
++      return 0;
+ }
+@@ -1689,7 +1370,7 @@
+ /**
+- * brcmnand_transfer_oob - [Internal] Transfer oob from chip->oob_poi to client buffer
++ * brcmnand_transfer_oob - [Internal] Transfer oob to client buffer
+  * @chip:     nand chip structure
+  * @oob:      oob destination address
+  * @ops:      oob ops structure
+@@ -1727,10 +1408,6 @@
+                               bytes = min_t(size_t, len, free->length);
+                               boffs = free->offset;
+                       }
+-#ifdef DEBUG_ISR
+-printk("%s: AUTO: oob=%p, chip->oob_poi=%p, ooboffs=%d, len=%d, bytes=%d, boffs=%d\n",
+-      __FUNCTION__, oob, chip->oob_poi, ops->ooboffs, len, bytes, boffs);
+-#endif
+                       memcpy(oob, chip->oob_poi + boffs, bytes);
+                       oob += bytes;
+               }
+@@ -1752,7 +1429,7 @@
+               void* buffer, u_char* oobarea, loff_t offset)
+ {
+       struct brcmnand_chip* chip = mtd->priv;
+-      //int retries = 2;
++      int retries = 2, done = 0;
+       static uint32_t oobbuf[4]; // Sparea Area to handle ECC workaround, aligned on DW boundary
+       uint32_t* p32 = (oobarea ?  (uint32_t*) oobarea :  (uint32_t*) &oobbuf[0]);
+       u_char* p8 = (u_char*) p32;
+@@ -1769,31 +1446,7 @@
+       //u_char oobbuf[16];
+       int erased, allFF;
+       int i;
+-      uint32_t acc, acc0;
+-      //int valid;
+-      /*
+-       * First disable Read ECC then re-try read OOB, because some times, the controller
+-       * just drop the op on ECC errors.
+-       */
+-
+-#if 1 /* Testing 1 2 3 */
+-      /* Disable ECC */
+-      acc = brcmnand_ctrl_read(BCHP_NAND_ACC_CONTROL);
+-      acc0 = acc & ~(BCHP_NAND_ACC_CONTROL_RD_ECC_EN_MASK | BCHP_NAND_ACC_CONTROL_RD_ECC_BLK0_EN_MASK);
+-      brcmnand_ctrl_write(BCHP_NAND_ACC_CONTROL, acc0);
+-
+-      chip->ctrl_writeAddr(chip, offset, 0);
+-      PLATFORM_IOFLUSH_WAR();
+-      chip->ctrl_write(BCHP_NAND_CMD_START, OP_SPARE_AREA_READ);
+-
+-      // Wait until cache is filled up, disabling ECC checking
+-      (void) brcmnand_spare_is_valid(mtd, FL_READING, 1);
+-      
+-      // Restore acc
+-      brcmnand_ctrl_write(BCHP_NAND_ACC_CONTROL, acc);
+-#endif
+-
+       for (i = 0; i < 4; i++) {
+               p32[i] = be32_to_cpu (chip->ctrl_read(BCHP_NAND_SPARE_AREA_READ_OFS_0 + i*4));
+       }
+@@ -1801,25 +1454,19 @@
+               erased = (p8[6] == 0xff && p8[7] == 0xff && p8[8] == 0xff);
+               allFF = (p8[6] == 0x00 && p8[7] == 0x00 && p8[8] == 0x00);
+ if (gdebug > 3 ) 
+-{printk("%s: offset=%0llx, erased=%d, allFF=%d\n", 
+-__FUNCTION__, offset, erased, allFF);
++{printk("%s: erased=%d, allFF=%d\n", __FUNCTION__, erased, allFF);
+ print_oobbuf(p8, 16);
+ }
+       }
+       else if (chip->ecclevel >= BRCMNAND_ECC_BCH_1 && chip->ecclevel <= BRCMNAND_ECC_BCH_12) {
+-              erased = 1;
+-              allFF = 0; // Not sure for BCH.
++              erased = allFF = 1;
+               // For BCH-n, the ECC bytes are at the end of the OOB area
+-              for (i=chip->eccOobSize-chip->eccbytes; i<min(16,chip->eccOobSize); i++) {
++              for (i=chip->eccOobSize-chip->eccbytes; i<chip->eccOobSize; i++) {
+                       erased = erased && (p8[i] == 0xff);
+-                      if (!erased) {
+-                              printk("p8[%d]=%02x\n", i, p8[i]); 
+-                              break;
++                      allFF = allFF && (p8[i] == 0x00);
+               }
+-              }
+-if (gdebug > 3 ) 
+-{printk("%s: offset=%0llx, i=%d from %d to %d, eccOobSize=%d, eccbytes=%d, erased=%d, allFF=%d\n",
+-__FUNCTION__, offset, i, chip->eccOobSize-chip->eccbytes, chip->eccOobSize,
++//if (gdebug > 3 ) 
++{printk("%s: eccOobSize=%d, eccbytes=%d, erased=%d, allFF=%d\n", __FUNCTION__, 
+ chip->eccOobSize, chip->eccbytes, erased, allFF);}
+       }
+       else {
+@@ -2134,7 +1781,7 @@
+       static uint32_t oob0[4]; // Sparea Area to handle ECC workaround, aligned on DW boundary
+       uint32_t* p32 = (oobarea ?  (uint32_t*) oobarea :  (uint32_t*) &oob0[0]);
+       u_char* p8 = (u_char*) p32;
+-      //unsigned long irqflags;       
++      unsigned long irqflags; 
+       int retries = 5, done=0;
+       int valid = 0;
+@@ -2257,24 +1904,17 @@
+ print_databuf(buffer, 32);
+ }
+-#if defined( EDU_DEBUG ) || defined (BRCMNAND_READ_VERIFY )
+-//if (in_verify <=0) 
+-if (chip->ecclevel == BRCMNAND_ECC_HAMMING) {
++#ifdef EDU_DEBUG
++if (in_verify <=0) {
+ u_char edu_sw_ecc[4];
+       brcmnand_Hamming_ecc(buffer, edu_sw_ecc);
+-if ((p8[6] != edu_sw_ecc[0] || p8[7] != edu_sw_ecc[1] || p8[8] != edu_sw_ecc[2])
+-      && !(p8[6]==0xff && p8[7]==0xff && p8[8]==0xff &&
+-              edu_sw_ecc[0]==0x0 && edu_sw_ecc[1]==0x0 && edu_sw_ecc[2]==0x0)
+-) {
+        printk("!!!!!!!!! %s: offset=%0llx ECC=%02x%02x%02x, OOB:",
+ in_verify < 0 ? "WR" : "RD",
+ offset, edu_sw_ecc[0], edu_sw_ecc[1], edu_sw_ecc[2]);
+-       print_oobbuf(p8, 16);
+-       BUG();
++       print_oobbuf(oobarea, 16);
+ }
+-}
+ #endif
+@@ -2282,14 +1922,24 @@
+ }
+-/*
+- * Clear the controller cache by reading at a location we don't normally read
+- */
++
++
++#ifdef CONFIG_MTD_BRCMNAND_EDU
++
++
++extern int EDU_buffer_OK(volatile void* addr);
++
++
++#if 1
++static uint32_t debug_buf32[512];
++static u_char* ver_buf = (u_char*) &debug_buf32[0];
++static u_char ver_oob[16];
++
+ static void debug_clear_ctrl_cache(struct mtd_info* mtd)
+ {
+       /* clear the internal cache by writing a new address */
+       struct brcmnand_chip* chip = mtd->priv;
+-      loff_t offset = chip->chipSize-chip->blockSize; // Start of BBT region
++      loff_t offset = chip->chipSize-0x100000; // Start of BBT region
+       
+       chip->ctrl_writeAddr(chip, offset, 0); 
+       PLATFORM_IOFLUSH_WAR();
+@@ -2299,20 +1949,6 @@
+       (void) brcmnand_cache_is_valid(mtd, FL_READING, offset);
+ }
+       
+-#ifdef CONFIG_MTD_BRCMNAND_EDU
+-
+-
+-extern int EDU_buffer_OK(volatile void* addr, int command);
+-
+-
+-#if 1
+-static uint32_t debug_buf32[512];
+-static u_char* ver_buf = (u_char*) &debug_buf32[0];
+-static u_char ver_oob[16];
+-
+-
+-
+-      
+ static void debug_EDU_read(struct mtd_info* mtd, 
+         void* edu_buffer, u_char* edu_oob, loff_t offset, uint32_t intr_status, 
+         uint32_t edu_status, u_char* edu_sw_ecc)
+@@ -2373,126 +2009,213 @@
+ }
+ #endif
++/**
++ * brcmnand_posted_read_cache - [BrcmNAND Interface] Read the 512B cache area
++ * Assuming brcmnand_get_device() has been called to obtain exclusive lock
++ * @param mtd        MTD data structure
++ * @param oobarea    Spare area, pass NULL if not interested
++ * @param buffer    the databuffer to put/get data, pass NULL if only spare area is wanted.
++ * @param offset    offset to read from or write to, must be 512B aligned.
++ * @param raw: Ignore BBT bytes when raw = 1
++ *
++ * Caller is responsible to pass a buffer that is
++ * (1) large enough for 512B for data and optionally an oobarea large enough for 16B.
++ * (2) 4-byte aligned.
++ *
++ * Read the cache area into buffer.  The size of the cache is mtd-->eccsize and is always 512B.
++ */
++//#define EDU_DEBUG_2
++#undef EDU_DEBUG_2
+-#ifdef EDU_DEBUG_4
+-int edu_read_verify(struct mtd_info *mtd, char* buffer, char* oobarea, loff_t offset)
+-{
+-      struct brcmnand_chip* chip = mtd->priv;
+-      static uint32_t oob0[4]; // Sparea Area to handle ECC workaround, aligned on DW boundary
+-      uint32_t* p32 = (oobarea ?  (uint32_t*) oobarea :  (uint32_t*) &oob0[0]);
+-int ctrlret;
++// EDU_DEBUG_4: Verify on Read
++//#define EDU_DEBUG_4
++#undef EDU_DEBUG_4
+-PRINTK("%s: buffer=%08x, ctrlbuf=%08x, oobarea=%08x, ctrl_oob=%08x, offset=%08llx\n", __FUNCTION__, 
+-      buffer, ctrl_buf, oobarea, ctrl_oob, offset);
++// EDU_DEBUG_5: Verify on Write
++//#define EDU_DEBUG_5
++#undef EDU_DEBUG_5
++#if defined( EDU_DEBUG_2 ) || defined( EDU_DEBUG_4 ) 
++/* 3548 internal buffer is 4K in size */
++//static uint32_t edu_lbuf[2048];
++static uint32_t* edu_buf32;
++static uint8_t* edu_buf;      // Used by EDU in Debug2
++static uint8_t* ctrl_buf;     // Used by Ctrl in Debug4
++static uint32_t ctrl_oob32[4];
++static uint8_t* ctrl_oob = (uint8_t*) ctrl_oob32;
++#define PATTERN 0xa55a0000
+-      ctrlret = brcmnand_ctrl_posted_read_cache(mtd, ctrl_buf, ctrl_oob, offset);
+-      //verify_edu_buf();
+-      // Compare buffer returned from EDU and Ctrl reads:
+-      if (0 != memcmp(ctrl_buf, buffer, 512)) {
+-printk("$$$$$$$$$$$$ EDU Read: offset=%08llx\n", offset);
+-print_databuf(buffer, 512);
+-printk("------------ Ctrl Read: \n");
+-print_databuf(ctrl_buf, 512);
+-              BUG();
+-      }
+-      if (oobarea) 
+-      {
+-              if (0 != memcmp(p32, ctrl_oob, 16)) {
+-printk("########## Ctrl OOB:\n");
+-print_oobbuf(ctrl_oob, 16);
+-printk("------------ EDU OOB: \n");
+-print_oobbuf(p32, 16);
+-/* Which one is correct?  Since the data buffers agree, use Hamming codes */
+-                      if (chip->ecclevel == BRCMNAND_ECC_HAMMING) 
+-                      {
+-                              unsigned char ecc1[3]; // SW ECC, manually calculated
+-                              brcmnand_Hamming_WAR(mtd, offset, buffer, &ctrl_oob[6], &ecc1[0]);
+-                              printk("Hamming ECC=%02x%02x%02x\n", ecc1[0], ecc1[1], ecc1[2]);
+-                      }
++#define EDU_BUFSIZE_B (512)
++// One before and one after
++#define EDU_BUF32_SIZE_B (EDU_BUFSIZE_B*3)
++
++// Same as above in DW instead
++#define EDU_BUFSIZE_DW (EDU_BUFSIZE_B/4)
++#define EDU_BUF32_SIZE_DW (EDU_BUF32_SIZE_B/4)
++
++// Real buffer starts at 1/3 
++#define EDU_BUF_START_DW (EDU_BUF32_SIZE_DW/3)
++
++
++static void init_edu_buf(void)
++{
++      /* Write pattern */
++      int i;
++
++      if (!edu_buf32) {
++              edu_buf32 = (uint32_t*) kmalloc(EDU_BUF32_SIZE_B, GFP_KERNEL);
++              if (!edu_buf32) {
++                      printk("%s: Out of memory\n", __FUNCTION__);
+                       BUG();
+               }
++                      
++              edu_buf = ctrl_buf = (uint8_t*)  &edu_buf32[EDU_BUF_START_DW];
++              printk("%s: Buffer allocated at %p, %d bytes\n", __FUNCTION__, edu_buf32, EDU_BUF32_SIZE_B);
++              printk("Real buffer starts at %p\n", ctrl_buf);
+       }
+-      return 0;
++
++      for (i=0; i<EDU_BUF32_SIZE_DW; i++) {
++              edu_buf32[i] = PATTERN | i;
++      }       
+ }
+-#endif // Verify EDU on Read
+-
+-/*
+- * Read completion after EDU_Read is called.
+- * In ISR mode, this routine is run in interrupt context
+- */
+-int
+-brcmnand_edu_read_comp_intr(struct mtd_info* mtd, 
+-        void* buffer, u_char* oobarea, loff_t offset, uint32_t intr_status)
++static int verify_edu_buf(void) 
+ {
+-      struct brcmnand_chip* chip = mtd->priv;
+-      uint32_t intfc_status;
+       int i;
+-      static uint32_t oob0[4]; // Sparea Area to handle ECC workaround, aligned on DW boundary
+-      uint32_t* p32 = (oobarea ?  (uint32_t*) oobarea :  (uint32_t*) &oob0[0]);
++      int ret = 0;
+       
+-      if (intr_status & HIF_INTR2_EDU_ERR) {
+-              printk("%s: Should not call me with EDU ERR\n", __FUNCTION__);
+-              BUG();
++      for (i=0; i<EDU_BUF_START_DW; i++) {
++              if (edu_buf32[i] != (PATTERN | i)) {
++                      printk("############ %s: pattern overwritten at offset %d, expect %08x, found %08x\n", 
++                              __FUNCTION__, i*4, PATTERN | i, edu_buf32[i]);
++                      ret++;
++              }
+       }
+-      intfc_status = chip->ctrl_read(BCHP_NAND_INTFC_STATUS);
+-      if (!(intfc_status & BCHP_NAND_INTFC_STATUS_CTLR_READY_MASK)) {
+-              printk("%s: Impossible, HIF_INTR2_CTRL_READY already asserted\n", __FUNCTION__);
+-              BUG();          
+-      }
+-
+-      // Remember last good sector read.  Needed for HIF_INTR2 workaround.
+-      gLastKnownGoodEcc = offset;
+-      if (oobarea) 
+-      {
+-              PLATFORM_IOFLUSH_WAR();
+-              for (i = 0; i < 4; i++) {
+-                      p32[i] =  be32_to_cpu (chip->ctrl_read(BCHP_NAND_SPARE_AREA_READ_OFS_0 + i*4));
++      for (i=EDU_BUF_START_DW+EDU_BUFSIZE_DW; i<EDU_BUF32_SIZE_DW; i++) {
++              if (edu_buf32[i] != (PATTERN | i)) {
++                      printk("############ %s: pattern overwritten at offset %d, expect %08x, found %08x\n", 
++                              __FUNCTION__, i*4, PATTERN | i, edu_buf32[i]);
++                      ret++;
+               }
+-if (gdebug > 3) {printk("SUCCESS: %s: offset=%0llx, oob=\n", __FUNCTION__, offset); print_oobbuf((u_char*) &p32[0], 16);}
+-      }      
+-
+-      return 0;       
++      }
++if (ret) printk("+++++++++++++++ %s: %d DW overwritten by EDU\n", __FUNCTION__, ret);
++      return ret;
+ }
+-/*
+- * Read WAR after EDU_Read is called, and EDU returns errors.
+- * This routine can only be called in process context
+- */
+-int
+-brcmnand_edu_read_completion(struct mtd_info* mtd, 
+-        void* buffer, u_char* oobarea, loff_t offset, uint32_t intr_status)
++#endif
++
++static int brcmnand_EDU_posted_read_cache(struct mtd_info* mtd, 
++        void* buffer, u_char* oobarea, loff_t offset)
+ {
++
++      int ecc;
++
+       struct brcmnand_chip* chip = mtd->priv;
+-      uint32_t edu_err_status;
++      loff_t sliceOffset = offset & (~ (mtd->eccsize - 1));
++      int i, ret = 0;
+       static uint32_t oob0[4]; // Sparea Area to handle ECC workaround, aligned on DW boundary
+       uint32_t* p32 = (oobarea ?  (uint32_t*) oobarea :  (uint32_t*) &oob0[0]);
+       u_char* p8 = (u_char*) p32;
+-      int ecc;
+-      int ret = 0, i;
++      uint32_t EDU_ldw;
++      uint32_t intr_status;
++      unsigned long irqflags;
++      int retries = 5;
++      
++int save_debug;
++uint32_t edu_status;
+-      if (in_interrupt()) {
+-              printk(KERN_ERR "%s cannot be run in interrupt context\n", __FUNCTION__);
+-              BUG();
++#ifdef EDU_DEBUG_2
++u_char* save_buf = buffer;
++#endif
++
++//if((offset >= (0x3a8148 & ~(0x1FF))) && (offset < ((0x3a8298+0x1F) & ~(0x1FF)))) gdebug=4;
++//gdebug = 4;
++if (gdebug > 3) {
++printk("%s: offset=%0llx, buffer=%p, oobarea=%p\n", __FUNCTION__,  offset, buffer, oobarea);}
++
++#if 0 //def EDU_DEBUG_4
++printk("%s: offset=%0llx, buffer=%p, oobarea=%p\n", __FUNCTION__,  offset, buffer, oobarea);
++#endif
++
++
++      if (unlikely(offset - sliceOffset)) {
++              printk(KERN_ERR "%s: offset %0llx is not cache aligned, sliceOffset=%0llx, CacheSize=%d\n", 
++                __FUNCTION__, offset, sliceOffset, mtd->eccsize);
++              ret = -EINVAL;
++              goto out;
+       }
+-      if (intr_status & HIF_INTR2_EDU_ERR) {
++
++//#if 0 // Testing 1 2 3
++      if (unlikely(!EDU_buffer_OK(buffer))) 
++//#endif
++      {
++if (gdebug>3) printk("++++++++++++++++++++++++ %s: buffer not 32B aligned, trying non-EDU read\n", __FUNCTION__);
++              /* EDU does not work on non-aligned buffers */
++              ret = brcmnand_ctrl_posted_read_cache(mtd, buffer, oobarea, offset);
++              return (ret);
++      }
++
++      if (wr_preempt_en) {
++              // local_irq_save(irqflags);
++      }
++
++#if defined( EDU_DEBUG_2 ) 
++      init_edu_buf();
++
++      buffer = edu_buf;
++
++#elif defined( EDU_DEBUG_4 ) 
++      init_edu_buf();
++      
++#endif
++
++      intr_status = 0;
++      do {
++
++              EDU_ldw =  chip->ctrl_writeAddr(chip, sliceOffset, 0);
++              PLATFORM_IOFLUSH_WAR(); 
++
++              if (intr_status & HIF_INTR2_EBI_TIMEOUT) {
++                      EDU_volatileWrite(EDU_BASE_ADDRESS + BCHP_HIF_INTR2_CPU_CLEAR, HIF_INTR2_EBI_TIMEOUT);
++              }
++              intr_status = EDU_read(buffer, EDU_ldw);
++
++#if 0
++if ((intr_status == ERESTARTSYS) || (intr_status & HIF_INTR2_EBI_TIMEOUT) ) {
++uint32_t rd_data = ISR_volatileRead(EDU_BASE_ADDRESS + BCHP_HIF_INTR2_CPU_STATUS);
++printk("%s: EDU_read returns error %08x , intr=%08x at offset %0llx\n", __FUNCTION__, intr_status, rd_data, offset);
++}
++#endif
++      } while (retries-- > 0 && ((intr_status == ERESTARTSYS) || (intr_status & HIF_INTR2_EBI_TIMEOUT) ));
++
++      if (retries <= 0 && ((intr_status == ERESTARTSYS) || (intr_status & HIF_INTR2_EBI_TIMEOUT))) { // EBI Timeout
++              // Use controller read
++              printk("%s: EBI timeout, use controller read at offset %0llx\n", __FUNCTION__, offset);
++              ret = brcmnand_ctrl_posted_read_cache(mtd, buffer, oobarea, offset);
++              return (ret); 
++      }
++
++      else if (intr_status & HIF_INTR2_EDU_ERR) {
+               if (wr_preempt_en) {
+                       //local_irq_restore(irqflags);
+               }
+-              edu_err_status = EDU_volatileRead(EDU_BASE_ADDRESS + EDU_ERR_STATUS);
++              edu_status = EDU_volatileRead(EDU_BASE_ADDRESS + EDU_ERR_STATUS);
++//if (edu_status == 0)
++//    printk("+++++++++++ %s:offset=%0llx Intr=%08x but EDU_status=%08x, LKG=%0llx\n", __FUNCTION__, 
++//            offset, intr_status, edu_status, gLastKnownGoodEcc);
++
+ /**** WAR WAR WAR WAR WAR WAR WAR WAR WAR WAR WAR WAR WAR WAR WAR WAR WAR */
+               /* Do a dummy read on a known good ECC sector to clear error */
+-              if (edu_err_status) {
+-                      static uint8_t myBuf2[512+31];
+-                      // EDU aligned
+-                      uint8_t* tmpBuf = (uint8_t*)  ((((unsigned int) &myBuf2[0]) + 31) & (~31));
+-                      
++              if (edu_status) {
++                      static uint32_t tmpBuf[128];
+                       // We start from the BBT, since these would (hopefully) always be good sectors.
+                       loff_t tmpOffset = chip->chipSize - 512;
++//printk("Handle HIF_INTR2_UNC_ERR: Step 1: @offset %0llx\n", offset);
++//print_oobreg(chip);
++
+                       // First make sure that there is a last known good sector
+                       while (gLastKnownGoodEcc == 0 && tmpOffset >= 0) {
+                               ret = brcmnand_ctrl_posted_read_cache(mtd, tmpBuf, NULL, tmpOffset);
+@@ -2502,21 +2225,22 @@
+                               uint32_t lkgs;
+                               // Clear the error condition
+                               //(void) brcmnand_EDU_posted_read_cache(mtd, tmpBuf, NULL, gLastKnownGoodEcc);
++                              lkgs =  chip->ctrl_writeAddr(chip, gLastKnownGoodEcc, 0);
++                              PLATFORM_IOFLUSH_WAR(); 
+-
+                                // Use Register Array
+                               // EDU_ldw = BCHP_PHYSICAL_OFFSET + BCHP_NAND_FLASH_CACHEi_ARRAY_BASE;
+-#ifdef CONFIG_MTD_BRCMNAND_ISR_QUEUE
+-                              // Reset EDU
+-                              ISR_push_request(mtd, tmpBuf, NULL, tmpOffset);
+-#else
+-                              lkgs =  chip->ctrl_writeAddr(chip, gLastKnownGoodEcc, 0);
+-                              PLATFORM_IOFLUSH_WAR(); 
+                               intr_status = EDU_read(buffer, lkgs);
+-#endif
+-
++//printk("intr_status returns from dummy read at offset %0llx: %08x\n", gLastKnownGoodEcc, intr_status);
++//printk("Handle HIF_INTR2_UNC_ERR: Step 2:\n");
++//print_oobreg(chip);
+                               ret = brcmnand_ctrl_posted_read_cache(mtd, buffer, p8, offset);
+-
++//printk("Handle HIF_INTR2_UNC_ERR: Step 3:\n");
++//print_oobreg(chip);
++//if (oobarea) 
++{
++//    printk("Unc Error WAR OOB="); print_oobbuf(p8, 16);
++}
+                               return ret;
+                       }
+                       // else there can be no workaround possible, use controller read
+@@ -2525,8 +2249,16 @@
+                       }
+               }
+ /**** ENDWAR ENDWAR ENDWAR ENDWAR */
++
++              // If error was not due to UNC or COR errors, or poll timeout, try the old-fashioned way
++              //ret = brcmnand_ctrl_posted_read_cache(mtd, buffer, oobarea, offset);
++              //return (ret);
+       }
+               
++
++//if (intr_status & HIF_INTR2_EDU_ERR)
++//    printk("%s: EDU_read returns error at offset=%0llx, intr_status=%08x\n", __FUNCTION__, offset, intr_status);
++
+       /*
+        * Wait for Controller ready, which indicates the OOB and buffer are ready to be read.
+        */
+@@ -2563,7 +2295,7 @@
+                       for (i = 0; i < 4; i++) {
+                               p32[i] =  be32_to_cpu (chip->ctrl_read(BCHP_NAND_SPARE_AREA_READ_OFS_0 + i*4));
+                       }
+-if (gdebug > 3) {printk("SUCCESS: %s: offset=%0llx, oob=\n", __FUNCTION__, offset); print_oobbuf((u_char*) &p32[0], 16);}
++if (gdebug > 3) {printk("SUCCESS: %s: offset=%0llx, oob=\n", __FUNCTION__, sliceOffset); print_oobbuf((u_char*) &p32[0], 16);}
+               }      
+               ret = 0;            // Success!
+               break;
+@@ -2571,7 +2303,9 @@
+       case BRCMEDU_CORRECTABLE_ECC_ERROR:
+               /* FALLTHRU */                
+       case BRCMNAND_CORRECTABLE_ECC_ERROR:
+-
++{save_debug = gdebug;
++//gdebug = 4;
++//edu_debug = 4;
+ printk("+++++++++++++++ CORRECTABLE_ECC: offset=%0llx  ++++++++++++++++++++\n", offset);
+               // Have to manually copy.  EDU drops the buffer on error - even correctable errors
+               if (buffer) {
+@@ -2584,7 +2318,7 @@
+                       for (i = 0; i < 4; i++) {
+                               p32[i] =  be32_to_cpu (chip->ctrl_read(BCHP_NAND_SPARE_AREA_READ_OFS_0 + i*4));
+                       }
+-if (gdebug > 3) {printk("CORRECTABLE: %s: offset=%0llx, oob=\n", __FUNCTION__, offset); print_oobbuf(oobarea, 16);}
++if (gdebug > 3) {printk("CORRECTABLE: %s: offset=%0llx, oob=\n", __FUNCTION__, sliceOffset); print_oobbuf(oobarea, 16);}
+               }
+ #ifndef DEBUG_HW_ECC // Comment out for debugging
+@@ -2604,7 +2338,7 @@
+                               }
+                       }
+               }
+-              
++gdebug = edu_debug = save_debug;}
+             break;
+       case BRCMEDU_UNCORRECTABLE_ECC_ERROR:
+@@ -2612,13 +2346,16 @@
+               {
+                       int valid;
+               
+-
++save_debug = gdebug;
++//gdebug = 4;
++//edu_debug = 4;
++//
+ PRINTK("************* UNCORRECTABLE_ECC (offset=%0llx) ********************\n", offset);
+                       /*
+                        * THT: Since EDU does not handle OOB area, unlike the UNC ERR case of the ctrl read,
+                        * we have to explicitly read the OOB, before calling the WAR routine.
+                        */
+-                      chip->ctrl_writeAddr(chip, offset, 0);
++                      chip->ctrl_writeAddr(chip, sliceOffset, 0);
+                       chip->ctrl_write(BCHP_NAND_CMD_START, OP_SPARE_AREA_READ);
+                       // Wait until spare area is filled up
+@@ -2635,6 +2372,8 @@
+ printk("************* UNCORRECTABLE_ECC (offset=%0llx) valid!=0 ********************\n", offset);
+                               ret = -EBADMSG;
+                       }
++if (!ret)
++{gdebug = edu_debug = save_debug;}
+               }
+               break;
+               
+@@ -2661,126 +2400,73 @@
+     
+ out:
+-
+-//gdebug=0;
+-    return ret;
+-}
+-
+-
+-  #ifndef CONFIG_MTD_BRCMNAND_ISR_QUEUE
+-/**
+- * brcmnand_posted_read_cache - [BrcmNAND Interface] Read the 512B cache area
+- * Assuming brcmnand_get_device() has been called to obtain exclusive lock
+- * @param mtd        MTD data structure
+- * @param oobarea    Spare area, pass NULL if not interested
+- * @param buffer    the databuffer to put/get data, pass NULL if only spare area is wanted.
+- * @param offset    offset to read from or write to, must be 512B aligned.
+- * @param raw: Ignore BBT bytes when raw = 1
+- *
+- * Caller is responsible to pass a buffer that is
+- * (1) large enough for 512B for data and optionally an oobarea large enough for 16B.
+- * (2) 4-byte aligned.
+- *
+- * Read the cache area into buffer.  The size of the cache is mtd-->eccsize and is always 512B.
+- */
+-
+-
+-static int brcmnand_EDU_posted_read_cache(struct mtd_info* mtd, 
+-        void* buffer, u_char* oobarea, loff_t offset)
++#if 0
+ {
++//if (!ret) 
++      u_char edu_sw_ecc[4];
+-      //int ecc;
++      debug_EDU_read(mtd, buffer, oobarea, offset, intr_status, edu_status, edu_sw_ecc);
+-      struct brcmnand_chip* chip = mtd->priv;
+-      loff_t sliceOffset = offset & (~ (mtd->eccsize - 1));
+-      int i, ret = 0;
+-      //static uint32_t oob0[4]; // Sparea Area to handle ECC workaround, aligned on DW boundary
+-      //uint32_t* p32 = (oobarea ?  (uint32_t*) oobarea :  (uint32_t*) &oob0[0]);
+-      //u_char* p8 = (u_char*) p32;
+-      uint32_t EDU_ldw;
+-      uint32_t intr_status;
+-      unsigned long irqflags;
+-      int retries = 5;
+-      
+-int save_debug;
+-uint32_t edu_status;
+-
+-#ifdef EDU_DEBUG_2
+-u_char* save_buf = buffer;
++       printk("!!!!!!!!! RD: offset=%0llx ECC=%02x%02x%02x, OOB:",
++offset, edu_sw_ecc[0], edu_sw_ecc[1], edu_sw_ecc[2]);
++       print_oobbuf(oobarea, 16);
++}
+ #endif
+-//if((offset >= (0x3a8148 & ~(0x1FF))) && (offset < ((0x3a8298+0x1F) & ~(0x1FF)))) gdebug=4;
+-//gdebug = 4;
+-if (gdebug > 3) {
+-printk("%s: offset=%0llx, buffer=%p, oobarea=%p\n", __FUNCTION__,  offset, buffer, oobarea);}
+-
+-#if 0 //def EDU_DEBUG_4
+-printk("%s: offset=%0llx, buffer=%p, oobarea=%p\n", __FUNCTION__,  offset, buffer, oobarea);
++#if 0
++if (offset <= 0x3a3600 && (offset+512) > 0x3a3600) {
++printk("@@@@@@@@@ Dump EDU Read around 0x3a3600:\n");
++print_databuf(buffer, 512);print_oobbuf(p32, 16);
++}
+ #endif
++#ifdef EDU_DEBUG_4
++{
++int ctrlret;
+-      if (unlikely(offset - sliceOffset)) {
+-              printk(KERN_ERR "%s: offset %0llx is not cache aligned, sliceOffset=%0llx, CacheSize=%d\n", 
+-                __FUNCTION__, offset, sliceOffset, mtd->eccsize);
+-              ret = -EINVAL;
+-              return (ret);
++      ctrlret = brcmnand_ctrl_posted_read_cache(mtd, ctrl_buf, ctrl_oob, offset);
++      //verify_edu_buf();
++      // Compare buffer returned from EDU and Ctrl reads:
++      if (0 != memcmp(ctrl_buf, buffer, 512)) {
++printk("$$$$$$$$$$$$ Read buffer from Ctrl & EDU read-ops differ at offset %0llx, intr_status=%08x, ecc=%d\n", 
++      offset, intr_status, ecc);
++printk("$$$$$$$$$$$$ EDU Read:\n");
++print_databuf(buffer, 512);
++printk("------------ Ctrl Read: \n");
++print_databuf(edu_buf, 512);
++              BUG();
+       }
+-
+-//#if 0 // Testing 1 2 3
+-      if (unlikely(!EDU_buffer_OK(buffer, EDU_READ))) 
+-//#endif
++      //if (oobarea) 
+       {
+-if (gdebug>3) printk("++++++++++++++++++++++++ %s: buffer not 32B aligned, trying non-EDU read\n", __FUNCTION__);
+-              /* EDU does not work on non-aligned buffers */
+-              ret = brcmnand_ctrl_posted_read_cache(mtd, buffer, oobarea, offset);
+-              return (ret);
++              if (0 != memcmp(p32, ctrl_oob, 16)) {
++printk("########## Read OOB from Ctrl & EDU read-ops differ at offset %0llx, intr_status=%08x, ecc=%d\n", 
++      offset,  intr_status, ecc);
++printk("########## Ctrl OOB:\n");
++print_oobbuf(ctrl_oob, 16);
++printk("------------ EDU OOB: \n");
++print_oobbuf(p32, 16);
++/* Which one is correct?  Since the data buffers agree, use Hamming codes */
++                      if (chip->ecclevel == BRCMNAND_ECC_HAMMING) 
++                      {
++                              unsigned char ecc1[3]; // SW ECC, manually calculated
++                              brcmnand_Hamming_WAR(mtd, offset, buffer, &ctrl_oob[6], &ecc1[0]);
++                              printk("Hamming ECC=%02x%02x%02x\n", ecc1[0], ecc1[1], ecc1[2]);
++                      }
++                      BUG();
++              }
+       }
++}
++#endif // Verify EDU on Read
+-      if (wr_preempt_en) {
+-              // local_irq_save(irqflags);
+-      }
+-
+-#if defined( EDU_DEBUG_2 ) 
+-      init_edu_buf();
+-
+-      buffer = edu_buf;
+-
+-#elif defined( EDU_DEBUG_4 )
+-      init_edu_buf();
+-      
+-#endif
+-
+-      intr_status = 0;
+-      do {
+-
+-              EDU_ldw =  chip->ctrl_writeAddr(chip, sliceOffset, 0);
+-              PLATFORM_IOFLUSH_WAR(); 
+-
+-              if (intr_status & HIF_INTR2_EBI_TIMEOUT) {
+-                      EDU_volatileWrite(EDU_BASE_ADDRESS + BCHP_HIF_INTR2_CPU_CLEAR, HIF_INTR2_EBI_TIMEOUT);
+-              }
+-              intr_status = EDU_read(buffer, EDU_ldw);
+-              
+-      } while (retries-- > 0 && ((intr_status == ERESTARTSYS) || (intr_status & HIF_INTR2_EBI_TIMEOUT) ));
+-
+-
+-      ret = brcmnand_edu_read_completion(mtd, buffer, oobarea, offset, intr_status);
+-
+-//gdebug=0;
++gdebug=0;
+     return ret;
+ }
+-
+ static int (*brcmnand_posted_read_cache)(struct mtd_info*, 
+               void*, u_char*, loff_t) = brcmnand_EDU_posted_read_cache;
+-  
+-  #else /* Queue Mode */
+-static int (*brcmnand_posted_read_cache)(struct mtd_info*, 
+-              void*, u_char*, loff_t) = brcmnand_ctrl_posted_read_cache;
+-  #endif
+-#else 
++#else
+ static int (*brcmnand_posted_read_cache)(struct mtd_info*, 
+               void*, u_char*, loff_t) = brcmnand_ctrl_posted_read_cache;
+ #endif
+@@ -2805,33 +2491,16 @@
+       loff_t sliceOffset = offset & (~(mtd->eccsize - 1));
+       int i, ret = 0, valid, done = 0;
+       int retries = 5;
+-      //unsigned long irqflags;
++      unsigned long irqflags;
+       
+ //char msg[20];
+-#if CONFIG_MTD_BRCMNAND_VERSION >= CONFIG_MTD_BRCMNAND_VERS_3_0
+-      static uint8_t myBuf2[512+31]; // Place holder only.
+-      static uint8_t* myBuf = NULL;
+-
+-      /*
+-       * Force alignment on 32B boundary
+-       */
+-      if (!myBuf) {
+-              myBuf = (uint8_t*)  ((((unsigned int) &myBuf2[0]) + 31) & (~31));
+-      }
+-      
+-  #if CONFIG_MTD_BRCMNAND_VERSION == CONFIG_MTD_BRCMNAND_VERS_3_0
+-      {
+-              // PR2516.  Not a very good WAR, but the affected chips (3548A0,7443A0) have been EOL'ed
+-              return brcmnand_ctrl_posted_read_cache(mtd, (void*) myBuf, oobarea, offset);
+-      }
+-
+-  #else /* 3.1 or later */
+-      // If BCH codes, force full page read to activate ECC correction on OOB bytes.
+-      if (chip->ecclevel != BRCMNAND_ECC_HAMMING && chip->ecclevel != BRCMNAND_ECC_DISABLE) {
+-              return brcmnand_ctrl_posted_read_cache(mtd, (void*) myBuf, oobarea, offset);
+-      }
+-  #endif
++#if CONFIG_MTD_BRCMNAND_VERSION == CONFIG_MTD_BRCMNAND_VERS_3_0
++{
++      // PR2516.  Not a very good WAR, but the affected chips (3548A0,7443A0) have been EOL'ed
++      static uint32_t myBuf[128]; // Place holder only.
++      return brcmnand_ctrl_posted_read_cache(mtd, (void*) myBuf, oobarea, offset);
++}
+ #endif
+ if (gdebug > 3 ) PRINTK("->%s: offset=%0llx\n", __FUNCTION__, offset);
+@@ -2921,151 +2590,6 @@
+       return ret;
+ }
+-
+-//#ifdef CONFIG_MTD_BRCMNAND_EDU
+-
+-//#define EDU_DEBUG_3
+-#undef EDU_DEBUG_3
+-
+-#if 0 //defined( EDU_DEBUG_3 ) || defined( EDU_DEBUG_5 ) || defined(BRCMNAND_WRITE_VERIFY )
+-
+-
+-/*
+- * Returns 0 on no errors.
+- * THis should never be called, because partial writes may screw up the verify-read.
+- */
+-static int edu_write_verify(struct mtd_info *mtd,
+-        const void* buffer, const u_char* oobarea, loff_t offset)
+-{
+-      struct brcmnand_chip* chip = mtd->priv;
+-      static uint8_t sw_ecc[4];
+-      static uint32_t read_oob[4];
+-      static uint8_t write_oob[16];
+-      uint8_t* oobpoi = (uint8_t*) &read_oob[0];
+-      int ret = 0;
+-
+-      // Dump the register, done immediately after EDU_Write returns
+-      // dump_nand_regs(chip, offset);
+-
+-      if ( chip->ecclevel != BRCMNAND_ECC_HAMMING) {
+-              // Read back the data, but first clear the internal cache first.
+-              debug_clear_ctrl_cache(mtd);
+-
+-              ret = brcmnand_ctrl_posted_read_cache(mtd, edu_write_buf, oobpoi, offset);
+-              if (ret) {
+-                      printk("+++++++++++++++++++++++ %s: Read Verify returns %d\n", __FUNCTION__, ret);
+-                      goto out;
+-              }
+-              if (0 != memcmp(buffer, edu_write_buf, 512)) {
+-                      printk("+++++++++++++++++++++++ %s: WRITE buffer differ with READ-Back buffer\n",
+-                      __FUNCTION__);
+-                      ret = (-1);
+-                      goto out;
+-              }
+-              if (oobarea) { /* For BCH, the ECC is at the end */
+-                      // Number of bytes to compare (with ECC bytes taken out)
+-                      int numFree = min(16, chip->eccOobSize - chip->eccbytes);
+-                      
+-                      if (memcmp(oobarea, oobpoi, numFree)) {
+-                              printk("+++++++++++++++++++++++ %s: BCH-%-d OOB comp failed, numFree=%d\n", 
+-                                      __FUNCTION__, chip->ecclevel, numFree);
+-                              printk("In OOB:\n"); print_oobbuf(oobarea, 16);
+-                              printk("\nVerify OOB:\n"); print_oobbuf(oobpoi, 16);
+-                              ret = (-2);
+-                              goto out;
+-                      }
+-              }
+-              return 0;
+-      }
+-      
+-      // Calculate the ECC
+-      // brcmnand_Hamming_ecc(buffer, sw_ecc);
+-
+-      // Read back the data, but first clear the internal cache first.
+-      debug_clear_ctrl_cache(mtd);
+-
+-in_verify = -1;               
+-      ret = brcmnand_ctrl_posted_read_cache(mtd, edu_write_buf, oobpoi, offset);
+-in_verify = 0;
+-
+-      if (ret) {
+-              printk("+++++++++++++++++++++++ %s: Read Verify returns %d\n", __FUNCTION__, ret);
+-              goto out;
+-      }
+-
+-#if 0
+-      if (sw_ecc[0] != oobpoi[6] || sw_ecc[1] != oobpoi[7] || sw_ecc[2] != oobpoi[8]) {
+-printk("+++++++++++++++++++++++ %s: SWECC=%02x%02x%02x ReadOOB=%02x%02x%02x, buffer=%p, offset=%0llx\n",
+-                      __FUNCTION__, 
+-                      sw_ecc[0], sw_ecc[1], sw_ecc[2], oobpoi[6], oobpoi[7], oobpoi[8], buffer, offset);
+-              
+-              ret = (-1);
+-              goto out;
+-      }
+-#endif
+-
+-      // Verify the OOB if not NULL
+-      if (oobarea) {
+-              //memcpy(write_oob, oobarea, 16);
+-              //write_oob[6] = sw_ecc[0];
+-              //write_oob[7] = sw_ecc[1];
+-              //write_oob[8] = sw_ecc[2];
+-              if (memcmp(oobarea, oobpoi, 6) || memcmp(&oobarea[9], &oobpoi[9],7)) {
+-                      printk("+++++++++++++++++++++++ %s: OOB comp Hamming failed\n", __FUNCTION__);
+-                      printk("In OOB:\n"); print_oobbuf(oobarea, 16);
+-                      printk("\nVerify OOB:\n"); print_oobbuf(oobpoi, 16);
+-                      ret = (-2);
+-                      goto out;
+-              }
+-      }
+-
+-out:
+-if (ret) {
+-      int i, j, k;
+-      uint8_t* writeBuf = (uint8_t*) buffer;
+-//for (i=0; i<2; i++) 
+-{
+-// Let user land completes its run to avoid garbled printout
+-//schedule();
+-for (j=0; j<512; j++) {
+-      if (writeBuf[j] != edu_write_buf[j]) {
+-              printk("Buffers differ at offset %04x\n", j);
+-              break;
+-      }
+-}
+-printk("$$$$$$$$$$$$$$$$$ Register dump:\n");
+-printk("\n");
+-printk("\n");
+-printk("\n");
+-printk("\n");
+-for (k=0; k<numDumps; k++) {
+-printk("\n");
+-printk("\n");
+-printk("$$$$$$$$$$$$$$$$$ Register dump snapshot #%d:\n", k+1);
+-print_dump_nand_regs(k);
+-printk("\n");
+-}
+-printk("\n");
+-printk("\n");
+-printk("EDU_write 99, ret=%d, offset=%0llx, buffer=%p\n", ret, offset, buffer);
+-printk("Write buffer:\n"); print_databuf(buffer, 512);
+-if (oobarea) { printk("Write OOB: "); print_oobbuf(oobarea, 512); }
+-printk("Read back buffer:\n"); print_databuf(edu_write_buf, 512);
+-if (oobarea) { printk("Read OOB: "); print_oobbuf(write_oob, 512); }
+-
+-//printk("$$$$$$$$$$$$$$$$$ Register dump:\n");
+-//print_dump_nand_regs();
+-}
+-}
+-      return ret;
+-}
+-
+-
+-#else
+-#define edu_write_verify(...) (0)
+-#endif
+-
+-
+ /**
+  * brcmnand_posted_write - [BrcmNAND Interface] Write a buffer to the flash cache
+  * Assuming brcmnand_get_device() has been called to obtain exclusive lock
+@@ -3160,136 +2684,88 @@
+ }
+-
+ #ifdef CONFIG_MTD_BRCMNAND_EDU
+-   #ifdef CONFIG_MTD_BRCMNAND_ISR_QUEUE
+-   /*
+-    * Performs WAR for queue-write. Currently, it is always called with needBBT=1
+-    * Runs in process context.
+-    * Return 0 on success, error codes on errors.
+-    */
+-int
+-brcmnand_edu_write_war(struct mtd_info *mtd,
+-        const void* buffer, const u_char* oobarea, loff_t offset, uint32_t intr_status, 
+-        int needBBT)
+-{
+-      struct brcmnand_chip* chip = mtd->priv;
+-      int ret = 0;
++//#define EDU_DEBUG_3
++#undef EDU_DEBUG_3
++#ifdef EDU_DEBUG_3
+-      if (!(intr_status & HIF_INTR2_CTRL_READY)) {
+-              printk("%s: Impossible, ctrl-ready asserted in interrupt handler\n", __FUNCTION__);
+-              BUG();
+-      }
++static uint8_t edu_write_buf[512];
+-      if (!needBBT) 
+-      {
+-              ret = 0;
+-      }
+-      else
+-      { // Need BBT
+-#if 1 //defined (ECC_CORRECTABLE_SIMULATION) || defined(ECC_UNCORRECTABLE_SIMULATION) || defined(WR_BADBLOCK_SIMULATION)
+-              printk("%s: Marking bad block @%0llx\n", __FUNCTION__, offset);
+-#endif            
+-              ret = chip->block_markbad(mtd, offset);
+-              ret = -EINVAL;
+-      }
+-
+-#if defined(EDU_DEBUG_5) // || defined( CONFIG_MTD_BRCMNAND_VERIFY_WRITE )
+-//gdebug = 0;
+-      if (0 == ret) {
+-              if (edu_write_verify(mtd, buffer, oobarea, offset)) {
+-                      BUG();
+-              }
+-      }
+-
+-#endif
+-      return ret;
+-}
+-
+-// When buffer is nor aligned as per EDU requirement, use controller-write
+-static int (*brcmnand_posted_write_cache)(struct mtd_info*, 
+-              const void*, const u_char*, loff_t) = brcmnand_ctrl_posted_write_cache; 
+-
+-  #else //#ifndef CONFIG_MTD_BRCMNAND_ISR_QUEUE
+-
+-/*
+- * Write completion after EDU_Read is called.
+- * Non-Queue mode
+- */
+-static int
+-brcmnand_edu_write_completion(struct mtd_info *mtd,
+-        const void* buffer, const u_char* oobarea, loff_t offset, uint32_t intr_status, uint32_t physAddr)
++static int edu_write_verify(struct mtd_info *mtd,
++        const void* buffer, const u_char* oobarea, loff_t offset)
+ {
+       struct brcmnand_chip* chip = mtd->priv;
+-      int comp;
+-      int needBBT;
+-      int ret;
++      static uint8_t sw_ecc[4];
++      static uint32_t read_oob[4];
++      static uint8_t write_oob[16];
++      uint8_t* oobpoi = (uint8_t*) &read_oob[0];
++      int ret = 0;
+-
+-#ifdef CONFIG_MTD_BRCMNAND_USE_ISR
+-      if (!(intr_status & HIF_INTR2_CTRL_READY)) {
+-              printk("%s: Impossible, ctrl-ready asserted in interrupt handler\n", __FUNCTION__);
+-              BUG();
+-      }
+-#else
+-      // Wait until flash is ready.  
+-      // Becareful here.  Since this can be called in interrupt context,
+-      // we cannot call sleep or schedule()
+-      comp = brcmnand_EDU_write_is_complete(mtd, &needBBT);
+-
+-      // Already done in interrupt handler
+-      (void) dma_unmap_single(NULL, physAddr, EDU_LENGTH_VALUE, DMA_TO_DEVICE);
+-#endif
+-
+-      if (comp) 
+-      {
+-              if (!needBBT) 
+-              {
+-                      ret = 0;
+-                      goto out;
++      if (chip->ecclevel != BRCMNAND_ECC_HAMMING) {
++              ret = brcmnand_ctrl_posted_read_cache(mtd, edu_write_buf, oobpoi, offset);
++              if (ret) {
++                      printk("+++++++++++++++++++++++ %s: Read Verify returns %d\n", __FUNCTION__, ret);
++                      return ret;
+               }
+-              else
+-              { // Need BBT
+-#if 1 //defined (ECC_CORRECTABLE_SIMULATION) || defined(ECC_UNCORRECTABLE_SIMULATION) || defined(WR_BADBLOCK_SIMULATION)
+-                      printk("%s: Marking bad block @%0llx\n", __FUNCTION__, offset);
+-#endif            
+-                      ret = chip->block_markbad(mtd, offset);
+-                      ret = -EINVAL;
+-                      //ret = -EINVAL;
+-                      goto out;
++              if (0 != memcmp(buffer, edu_write_buf, 512)) {
++                      printk("+++++++++++++++++++++++ %s: WRITE buffer differ with READ-Back buffer\n",
++                      __FUNCTION__);
++                      return (-1);
+               }
++              if (oobarea) {
++                      if (memcmp(oobarea, oobpoi, 16)) {
++                              printk("+++++++++++++++++++++++ %s: OOB comp failed\n", __FUNCTION__);
++                              printk("In OOB:\n"); print_oobbuf(oobarea, 16);
++                              printk("\nVerify OOB:\n"); print_oobbuf(oobpoi, 16);
++                      }
++              }
++              return 0;
+       }
++      
++      // Calculate the ECC
++      brcmnand_Hamming_ecc(buffer, sw_ecc);
+-      //Write has timed out or read found bad block. TBD: Find out which is which
+-      printk(KERN_INFO "%s: Timeout at offset %0llx\n", __FUNCTION__, offset);
+-      // Marking bad block
+-      if (needBBT) {
+-              printk("%s: Marking bad block @%0llx\n", __FUNCTION__, offset);
+-    
+-              ret = chip->block_markbad(mtd, offset);
+-              ret = -EINVAL;
+-              //ret = -EINVAL;
+-              goto out;
+-      }               
+-      ret = -ETIMEDOUT;
++      // Read back the data, but first clear the internal cache first.
++      debug_clear_ctrl_cache(mtd);
+-out:
++in_verify = -1;               
++      ret = brcmnand_ctrl_posted_read_cache(mtd, edu_write_buf, oobpoi, offset);
++in_verify = 0;
+-#if defined(EDU_DEBUG_5) // || defined( CONFIG_MTD_BRCMNAND_VERIFY_WRITE )
+-//gdebug = 0;
+-      if (0 == ret) {
+-              if (edu_write_verify(mtd, buffer, oobarea, offset)) {
+-                      BUG();
+-              }
+-      }
++      if (ret) {
++              printk("+++++++++++++++++++++++ %s: Read Verify returns %d\n", __FUNCTION__, ret);
++              return ret;
++      }
+-#endif
++      if (sw_ecc[0] != oobpoi[6] || sw_ecc[1] != oobpoi[7] || sw_ecc[2] != oobpoi[8]) {
++              printk("+++++++++++++++++++++++ %s: SWECC=%02x%02x%02x ReadOOB=%02x%02x%02x\n",
++                      __FUNCTION__, 
++                      sw_ecc[0], sw_ecc[1], sw_ecc[2], oobpoi[6], oobpoi[7], oobpoi[8]);
++              return (-1);
++      }
++
++      // Verify the OOB if not NULL
++      if (oobarea) {
++              memcpy(write_oob, oobarea, 16);
++              write_oob[6] = sw_ecc[0];
++              write_oob[7] = sw_ecc[1];
++              write_oob[8] = sw_ecc[2];
++              if (memcmp(write_oob, oobpoi, 16)) {
++                      printk("+++++++++++++++++++++++ %s: OOB comp failed\n", __FUNCTION__);
++                      printk("In OOB:\n"); print_oobbuf(write_oob, 16);
++                      printk("\nVerify OOB:\n"); print_oobbuf(oobpoi, 16);
++              }
++      }
+       return ret;
+ }
++#else
++#define edu_write_verify(...) (0)
++#endif
++
+ /**
+  * brcmnand_posted_write - [BrcmNAND Interface] Write a buffer to the flash cache
+  * Assuming brcmnand_get_device() has been called to obtain exclusive lock
+@@ -3307,14 +2783,12 @@
+       uint32_t* p32;
+       int i; 
+       int ret;
+-      int comp = 0;
+       struct brcmnand_chip* chip = mtd->priv;    
+       int needBBT=0;
+       loff_t sliceOffset = offset & (~ (mtd->eccsize - 1));
+       uint32_t EDU_ldw;
+       int retries = 5;
+-      uint32_t physAddr;
+ #ifdef WR_BADBLOCK_SIMULATION
+       unsigned long tmp = (unsigned long) offset;
+@@ -3333,7 +2807,7 @@
+               goto out;
+       }
+-      if (unlikely(!EDU_buffer_OK(buffer, EDU_WRITE))) {
++      if (unlikely(!EDU_buffer_OK(buffer))) {
+               // EDU requires the buffer to be DW-aligned
+ PRINTK("%s: Buffer %p not suitable for EDU at %0llx, trying ctrl read op\n", __FUNCTION__, buffer, offset);
+               ret = brcmnand_ctrl_posted_write_cache(mtd, buffer, oobarea, offset);
+@@ -3362,26 +2836,23 @@
+               PLATFORM_IOFLUSH_WAR(); // Check if this line may be taken-out
++      //chip->ctrl_write(BCHP_NAND_CMD_START, OP_PROGRAM_PAGE);
+               if (ret & HIF_INTR2_EBI_TIMEOUT) {
+                       EDU_volatileWrite(EDU_BASE_ADDRESS + BCHP_HIF_INTR2_CPU_CLEAR, HIF_INTR2_EBI_TIMEOUT);
+               }
+-              ret = EDU_write(buffer, EDU_ldw, &physAddr);
+-
++              ret = EDU_write(buffer, EDU_ldw);
+               if (ret) {
+                       // Nothing we can do, because, unlike read op, where we can just call the traditional read,
+                       // here we may need to erase the flash first before we can write again.
+-//printk("EDU_write returns %d, trying ctrl write \n", ret);
+-//                    ret = brcmnand_ctrl_posted_write_cache(mtd, buffer, oobarea, offset);
++                      ret = brcmnand_ctrl_posted_write_cache(mtd, buffer, oobarea, offset);
+                       goto out;
+               }
+       
+-//printk("EDU50\n");
++// printk("EDU50\n");
+               // Wait until flash is ready
+-              comp = brcmnand_EDU_write_is_complete(mtd, &needBBT);
+-
+-              (void) dma_unmap_single(NULL, physAddr, EDU_LENGTH_VALUE, DMA_TO_DEVICE);
++              ret = brcmnand_EDU_write_is_complete(mtd, &needBBT);
+       }while (retries-- > 0 && ((ret == ERESTARTSYS) || (ret & HIF_INTR2_EBI_TIMEOUT)));
+       if (retries <= 0 && ((ret == ERESTARTSYS) || (ret & HIF_INTR2_EBI_TIMEOUT))) { 
+@@ -3390,9 +2861,18 @@
+               goto out;
+       }
++#ifdef WR_BADBLOCK_SIMULATION
++      if((tmp == wrBadBlockFailLocation) && (bScanBypass_badBlock == 0))
++      {
++              wrFailLocationOffset.s.high = 0;
++              wrFailLocationOffset.s.low = wrBadBlockFailLocation;
++              printk("Creating new bad block @ %0llx\n", EDU_sprintf(brcmNandMsg, wrFailLocationOffset.ll, this->xor_invert_val));
++              needBBT = 1;
++              ret = 1;
++      }
++#endif 
+-
+-      if (comp) 
++      if (ret) 
+       {
+               if (!needBBT) 
+               {
+@@ -3425,10 +2905,10 @@
+       ret = -ETIMEDOUT;
+ out:
++// printk("EDU99\n");
++//gdebug = 0;
+-
+ #if defined(EDU_DEBUG_5) // || defined( CONFIG_MTD_BRCMNAND_VERIFY_WRITE )
+-//gdebug = 0;
+       if (0 == ret) {
+               if (edu_write_verify(mtd, buffer, oobarea, offset)) {
+                       BUG();
+@@ -3440,11 +2920,17 @@
+     return ret;
+ }
++#if 1
++
+ static int (*brcmnand_posted_write_cache)(struct mtd_info*, 
+               const void*, const u_char*, loff_t) = brcmnand_EDU_posted_write_cache; 
+-  #endif
++#else
++/* Testing 1 2 3, use controller write */
++static int (*brcmnand_posted_write_cache)(struct mtd_info*, 
++              const void*, const u_char*, loff_t) = brcmnand_ctrl_posted_write_cache;
++#endif
+-#else /* No EDU */
++#else
+ static int (*brcmnand_posted_write_cache)(struct mtd_info*, 
+               const void*, const u_char*, loff_t) = brcmnand_ctrl_posted_write_cache;
+@@ -3564,7 +3050,7 @@
+                       set_current_state(TASK_UNINTERRUPTIBLE);
+                       add_wait_queue(&chip->wq, &wait);
+                       spin_unlock(&chip->chip_lock);
+-                      if (!wr_preempt_en && !in_interrupt())
++                      if (!wr_preempt_en)
+                               schedule();
+                       remove_wait_queue(&chip->wq, &wait);
+               }
+@@ -3616,7 +3102,6 @@
+ }
+-
+ /**
+  * brcmnand_read_page - {REPLACEABLE] hardware ecc based page read function
+  * @mtd:      mtd info structure
+@@ -3722,7 +3207,7 @@
+ #ifdef CONFIG_MTD_BRCMNAND_CORRECTABLE_ERR_HANDLING
+ static int brcmnand_refresh_blk(struct mtd_info *mtd, loff_t from)
+ {
+-      struct brcmnand_chip *chip = mtd->priv;
++      struct brcmnand_chip *this = mtd->priv;
+       int i, j, k, numpages, ret, count = 0, nonecccount = 0;
+       uint8_t *blk_buf;       /* Store one block of data (including OOB) */
+       unsigned int  pg_idx, oob_idx;
+@@ -3737,9 +3222,9 @@
+ #if CONFIG_MTD_BRCMNAND_VERSION >= CONFIG_MTD_BRCMNAND_VERS_1_0
+-      chip->ctrl_write(BCHP_NAND_ECC_CORR_EXT_ADDR, 0);
++      this->ctrl_write(BCHP_NAND_ECC_CORR_EXT_ADDR, 0);
+ #endif
+-      chip->ctrl_write(BCHP_NAND_ECC_CORR_ADDR, 0);
++      this->ctrl_write(BCHP_NAND_ECC_CORR_ADDR, 0);
+       DEBUG(MTD_DEBUG_LEVEL3, "Inside %s: from=%0llx\n", __FUNCTION__, from);
+       printk(KERN_INFO "%s: Performing block refresh for correctable ECC error at %0llx\n",
+@@ -3747,9 +3232,9 @@
+       pg_idx = 0;
+       oob_idx = mtd->writesize;
+       numpages = mtd->erasesize/mtd->writesize;
+-      block_size = (1 << chip->erase_shift);
++      block_size = (1 << this->erase_shift);
+       blkbegin = (from & (~(mtd->erasesize-1)));
+-      realpage = blkbegin >> chip->page_shift;
++      realpage = blkbegin >> this->page_shift;
+ #ifdef CONFIG_MTD_BRCMNAND_EDU
+       if (!gblk_buf) {
+@@ -3777,7 +3262,7 @@
+       /* Read an entire block */
+       brcmnand_get_device(mtd, FL_READING);
+       for (i = 0; i < numpages; i++) {
+-              ret = chip->read_page(mtd, blk_buf+pg_idx, blk_buf+oob_idx, realpage);
++              ret = brcmnand_read_page(mtd, blk_buf+pg_idx, blk_buf+oob_idx, realpage);
+               if (ret < 0) {
+ #ifndef CONFIG_MTD_BRCMNAND_EDU
+                       BRCMNAND_free(blk_buf);
+@@ -3795,7 +3280,7 @@
+       if (unlikely(gdebug > 0)) {
+               printk("---> %s:  Read -> erase\n", __FUNCTION__);
+       }
+-      chip->state = FL_ERASING;
++      this->state = FL_ERASING;
+       /* Erase the block */
+       instr = kmalloc(sizeof(struct erase_info), GFP_KERNEL);
+@@ -3813,7 +3298,7 @@
+       instr->addr = blkbegin;
+       instr->len = mtd->erasesize;
+       if (unlikely(gdebug > 0)) {
+-              printk("DEBUG -> erasing %0llx, %x %d\n",instr->addr, instr->len, chip->state);
++              printk("DEBUG -> erasing %0llx, %x %d\n",instr->addr, instr->len, this->state);
+       }
+       ret = brcmnand_erase_nolock(mtd, instr, 0);
+       if (ret) {
+@@ -3831,12 +3316,12 @@
+       /* Write the entire block */
+       pg_idx = 0;
+       oob_idx = mtd->writesize;
+-      realpage = blkbegin >> chip->page_shift;
++      realpage = blkbegin >> this->page_shift;
+       if (unlikely(gdebug > 0)) {
+-              printk("---> %s: Erase -> write ... %d\n", __FUNCTION__, chip->state);
++              printk("---> %s: Erase -> write ... %d\n", __FUNCTION__, this->state);
+       }
+-      oobinfo = chip->ecclayout;
+-      chip->state = FL_WRITING;
++      oobinfo = this->ecclayout;
++      this->state = FL_WRITING;
+       for (i = 0; i < numpages; i++) {
+               /* Avoid writing empty pages */
+               count = 0;
+@@ -3858,7 +3343,7 @@
+               }
+               /* Skip this page, but write the OOB */
+               if (count == j && nonecccount != k) {
+-                      ret = chip->write_page_oob(mtd, blk_buf + oob_idx, realpage);
++                      ret = this->write_page_oob(mtd, blk_buf + oob_idx, realpage);
+                       if (ret) {
+ #ifndef CONFIG_MTD_BRCMNAND_EDU
+                               BRCMNAND_free(blk_buf);
+@@ -3875,7 +3360,7 @@
+               for (j = 0; j < oobinfo->eccbytes; j++) {
+                       oobptr[oobinfo->eccpos[j]] = 0xff;
+               }
+-              ret = chip->write_page(mtd, blk_buf+pg_idx, blk_buf+oob_idx, realpage);
++              ret = this->write_page(mtd, blk_buf+pg_idx, blk_buf+oob_idx, realpage);
+               if (ret) {
+ #ifndef CONFIG_MTD_BRCMNAND_EDU
+                       BRCMNAND_free(blk_buf);
+@@ -3900,463 +3385,7 @@
+ #endif
+-#ifdef CONFIG_MTD_BRCMNAND_USE_ISR
+-/*
+- * EDU ISR Implementation
+- */
+-
+- 
+-/*
+- * Submit the read op, then return immediately, without waiting for completion.
+- * Assuming queue lock held (with interrupt disable).
+- */
+-static void 
+-EDU_submit_read(eduIsrNode_t* req)
+-{
+-      struct brcmnand_chip* chip = (struct brcmnand_chip*) req->mtd->priv;
+-      uint32_t edu_status;
+-      
+-      // THT: TBD: Need to adjust for cache line size here, especially on 7420.
+-      req->physAddr = dma_map_single(NULL, req->buffer, EDU_LENGTH_VALUE, DMA_FROM_DEVICE);
+-
+-if (edu_debug) PRINTK("%s: vBuff: %p physDev: %08x, PA=%08x\n", __FUNCTION__,
+-req->buffer, external_physical_device_address, phys_mem);
+-
+-      spin_lock(&req->lock);
+-
+-      req->edu_ldw =  chip->ctrl_writeAddr(chip, req->offset, 0);
+-      PLATFORM_IOFLUSH_WAR(); 
+-
+-      //req->cmd = EDU_READ;
+-      req->opComplete = ISR_OP_SUBMITTED;
+-      req->status = 0;
+-
+-      // We must also wait for Ctlr_Ready, otherwise the OOB is not correct, since we read the OOB bytes off the controller
+-
+-      req->mask = HIF_INTR2_EDU_CLEAR_MASK|HIF_INTR2_CTRL_READY;
+-      req->expect = HIF_INTR2_EDU_DONE;
+-      // On error we also want Ctrlr-Ready because for COR ERR, the Hamming WAR depends on the OOB bytes.
+-      req->error = HIF_INTR2_EDU_ERR;
+-      req->intr = HIF_INTR2_EDU_DONE_MASK;
+-      req->expired = jiffies + 3*HZ;
+-
+-      edu_status = EDU_volatileRead(EDU_BASE_ADDRESS+EDU_STATUS);
+-      // Enable HIF_INTR2 only when we submit the first job in double buffering scheme
+-      if (0 == (edu_status & BCHP_EDU_STATUS_Active_MASK)) {
+-              ISR_enable_irq(req);
+-      }
+-
+-        //EDU_volatileWrite(EDU_BASE_ADDRESS  + EDU_DONE, 0x00000000);
+-       EDU_reset_done();
+-
+-       EDU_volatileWrite(EDU_BASE_ADDRESS  + EDU_ERR_STATUS, 0x00000000);
+-        
+-      EDU_volatileWrite(EDU_BASE_ADDRESS  + EDU_LENGTH, EDU_LENGTH_VALUE);
+-
+-      EDU_waitForNoPendingAndActiveBit();
+-
+-      EDU_issue_command(req->physAddr , req->edu_ldw, EDU_READ);
+-
+-      spin_unlock(&req->lock);
+-      return;
+-
+-} 
+-
+-int EDU_submit_write(eduIsrNode_t* req)
+-{
+-      struct brcmnand_chip* chip = (struct brcmnand_chip*) req->mtd->priv;
+-      uint32_t edu_status;
+-      uint32_t* p32;
+-      int i;
+-
+-      spin_lock(&req->lock);
+-      // EDU is not a PCI device
+-      // THT: TBD: Need to adjust for cache line size here, especially on 7420.
+-      req->physAddr  = dma_map_single(NULL, req->buffer, EDU_LENGTH_VALUE, DMA_TO_DEVICE);
+-
+-      if (!(req->physAddr)) {
+-              spin_unlock(&req->lock);
+-              return (-1);
+-      }
+-
+-
+-      req->edu_ldw = chip->ctrl_writeAddr(chip, req->offset, 0);
+-
+-
+-      if (req->oobarea) {
+-              p32 = (uint32_t*) req->oobarea;
+-if (gdebug) {printk("%s: oob=\n", __FUNCTION__); print_oobbuf(req->oobarea, 16);}
+-      }
+-      else {
+-              // Fill with 0xFF if don't want to change OOB
+-              p32 = (uint32_t*) &ffchars[0];
+-      }
+-
+-// printk("EDU40\n");
+-      for (i = 0; i < 4; i++) {
+-              chip->ctrl_write(BCHP_NAND_SPARE_AREA_WRITE_OFS_0 + i*4, cpu_to_be32(p32[i]));
+-      }
+-
+-      PLATFORM_IOFLUSH_WAR(); // Check if this line may be taken-out
+-      
+-      /*
+-       * Enable L2 Interrupt
+-       */
+-      //req->cmd = EDU_WRITE;
+-      req->opComplete = ISR_OP_SUBMITTED;
+-      req->status = 0;
+-      
+-      /* On write we wait for both DMA done|error and Flash Status */
+-      req->mask = HIF_INTR2_EDU_CLEAR_MASK|HIF_INTR2_CTRL_READY;
+-      req->expect = HIF_INTR2_EDU_DONE;
+-      req->error = HIF_INTR2_EDU_ERR;
+-      req->intr = HIF_INTR2_EDU_DONE_MASK|HIF_INTR2_CTRL_READY;
+-
+-      
+-      ISR_enable_irq(req);
+-
+-      //EDU_volatileWrite(EDU_BASE_ADDRESS  + EDU_DONE, 0x00000000); 
+-      EDU_reset_done();
+-      EDU_volatileWrite(EDU_BASE_ADDRESS  + EDU_ERR_STATUS, 0x00000000); 
+-
+-      EDU_volatileWrite(EDU_BASE_ADDRESS  + EDU_LENGTH, EDU_LENGTH_VALUE);
+-
+-      EDU_issue_command(req->physAddr, req->edu_ldw, EDU_WRITE); /* 1: Is a Read, 0 Is a Write */
+-      spin_unlock(&req->lock);
+-      return 0;
+-}
+-
+-
+-/*
+- * Submit the first entry that is in queued state,
+- * assuming queue lock has been held by caller.
+- * 
+- * @doubleBuffering indicates whether we need to submit just 1 job or until EDU is full (double buffering)
+- * Return the number of job submitted (either 1 or zero), as we don't support doublebuffering yet.
+- *
+- * In current version (v3.3 controller), since EDU only have 1 register for EDU_ERR_STATUS,
+- * we can't really do double-buffering without losing the returned status of the previous read-op.
+- */
+-int
+-brcmnand_isr_submit_job(void)
+-{
+-      uint32_t edu_pending;
+-      eduIsrNode_t* req;
+-      //struct list_head* node;
+-      int numReq = 0;
+-
+-//printk("-->%s\n", __FUNCTION__);
+-//ISR_print_queue();
+-
+-      list_for_each_entry(req, &gJobQ.jobQ, list) {
+-              //req = container_of(node, eduIsrNode_t, list);
+-              switch (req->opComplete) {
+-              case ISR_OP_QUEUED:
+-                      edu_pending = EDU_volatileRead(EDU_BASE_ADDRESS  + EDU_STATUS); 
+-                      if (!(BCHP_EDU_STATUS_Pending_MASK & edu_pending)) {
+-                              if (gJobQ.cmd == EDU_READ) {
+-                                      EDU_submit_read(req);
+-                              }
+-                              else if (gJobQ.cmd == EDU_WRITE) {
+-                                      EDU_submit_write(req);
+-                              }
+-                              else {
+-                                      printk("%s: Invalid op\n", __FUNCTION__);
+-                                      BUG();
+-                              }
+-                              numReq++;
+-#ifdef EDU_DOUBLE_BUFFER_READ
+-                              if (/*doubleBuffering &&*/ numReq < 2) {
+-                                      continue;
+-                              }
+-#endif
+-                      }
+-PRINTK("<-- %s: numReq=%d\n", __FUNCTION__, numReq);
+-                      return numReq; 
+-                      
+-              case ISR_OP_COMPLETED:
+-              case ISR_OP_SUBMITTED:
+-              case ISR_OP_NEED_WAR:
+-              case ISR_OP_TIMEDOUT:
+-                      /* next entry */
+-                      continue;
+-              }
+-      }
+-PRINTK("<-- %s: numReq=%d\n", __FUNCTION__, numReq);
+-      return numReq;
+-}
+-
+-/*
+- * Queue the entire page, then wait for completion
+- */
+-static int
+-brcmnand_isr_read_page(struct mtd_info *mtd,
+-                              uint8_t *outp_buf, uint8_t* outp_oob, uint64_t page)
+-{
+-      struct brcmnand_chip *chip = (struct brcmnand_chip*) mtd->priv;
+-      int eccstep;
+-      int dataRead = 0;
+-      int oobRead = 0;
+-      int ret = 0;
+-      uint64_t offset = ((uint64_t) page) << chip->page_shift;
+-      uint32_t edu_pending;
+-      int submitted = 0;
+-      unsigned long flags;
+-
+-//if (1/* (int) offset <= 0x2000 /*gdebug > 3 */) {
+-//printk("-->%s, offset=%08x\n", __FUNCTION__, (uint32_t) offset);}
+-if (gdebug > 3 ) {
+-printk("-->%s, page=%0llx, buffer=%p\n", __FUNCTION__, page, outp_buf);}
+-
+-
+-#if 0 // No need to check, we are aligned on a page
+-      if (unlikely(offset - sliceOffset)) {
+-              printk(KERN_ERR "%s: offset %0llx is not cache aligned, sliceOffset=%0llx, CacheSize=%d\n", 
+-                __FUNCTION__, offset, sliceOffset, mtd->eccsize);
+-              ret = -EINVAL;
+-              goto out;
+-      }
+-#endif
+-
+-
+-      if (unlikely(!EDU_buffer_OK(outp_buf, EDU_READ))) 
+-      {
+-if (gdebug>3) printk("++++++++++++++++++++++++ %s: buffer not 32B aligned, trying non-EDU read\n", __FUNCTION__);
+-              /* EDU does not work on non-aligned buffers */
+-              ret = brcmnand_read_page(mtd, outp_buf, outp_oob, page);
+-              return (ret);
+-      }
+-
+-      chip->pagebuf = page;
+-
+-      spin_lock_irqsave(&gJobQ.lock, flags);
+-      if (!list_empty(&gJobQ.jobQ)) {
+-              printk("%s: Start read page but job queue not empty\n", __FUNCTION__);
+-//ISR_print_queue();
+-              BUG();
+-      }
+-      gJobQ.cmd = EDU_READ;
+-      gJobQ.needWakeUp = 0;
+-      
+-      for (eccstep = 0; eccstep < chip->eccsteps && ret == 0; eccstep++) {
+-              eduIsrNode_t* req;
+-              /*
+-               * Queue the 512B sector read, then read the EDU pending bit, 
+-               * and issue read command, if EDU is available for read.
+-               */
+-              req = ISR_queue_read_request(mtd, &outp_buf[dataRead], 
+-                                      outp_oob ? &outp_oob[oobRead] : NULL, 
+-                                      offset + dataRead);
+-                              
+-              dataRead += chip->eccsize;
+-              oobRead += chip->eccOobSize;
+-      }
+-      //BUG_ON(submitted != 1);
+-      
+-      
+-
+-      /* Kick start it.  The ISR will submit the next job */
+-      if (!submitted) {
+-              submitted = brcmnand_isr_submit_job();
+-      }
+-      
+-      while (!list_empty(&gJobQ.jobQ)) {
+-              spin_unlock_irqrestore(&gJobQ.lock, flags);
+-              ret = ISR_wait_for_queue_completion();
+-              spin_lock_irqsave(&gJobQ.lock, flags);
+-      }
+-      spin_unlock_irqrestore(&gJobQ.lock, flags);
+-      return ret;
+-}
+-
+-
+-/*
+- * Queue several pages for small page SLC, then wait for completion,
+- * assuming that 
+- * (1) offset is aligned on a 512B boundary
+- * (2) that outp_buf is aligned on a 32B boundary.
+- * (3) Not in raw mode
+- * This routine only works when ECC-size = Page-Size (Small SLC flashes), and relies on the fact
+- * that the internal buffer can hold several data+OOB buffers for several small pages at once.
+- *
+- * The OOB are read into chip->buffers->OOB.
+- * The Queue Size and chip->buffers->oob are chosen such that the OOB
+- * will all fit inside the buffers.
+- * After a batch of jobs is completed, the OOB is then copied to the output OOB parameter.
+- * To keep it simple stupid, this routine cannot handle Raw mode Read.
+- *
+- * Arguments:
+- * @mtd:              MTD handle
+- * @outp_buf          Data buffer, passed from file system driver
+- * @inoutpp_oob       Address of OOB buffer, passed INOUT from file system driver
+- * @startPage page 0 of batch
+- * @numPages  nbr of pages in batch
+- * @ops                       MTD ops from file system driver.  We only look at the OOB mode (raw vs auto vs inplace)
+- */
+-static int
+-brcmnand_isr_read_pages(struct mtd_info *mtd,
+-                              uint8_t *outp_buf, uint8_t** inoutpp_oob, uint64_t startPage, int numPages,
+-                              struct mtd_oob_ops *ops)
+-{
+-      struct brcmnand_chip *chip = (struct brcmnand_chip*) mtd->priv;
+-      int eccstep;
+-      int dataRead = 0;
+-      int oobRead = 0;
+-      int ret = 0;
+-      uint64_t offset = ((uint64_t) startPage) << chip->page_shift;
+-      uint32_t edu_pending;
+-      int submitted = 0;
+-      unsigned long flags;
+-      int page;
+-      u_char* oob = inoutpp_oob ? *inoutpp_oob : NULL;
+-      u_char* oobpoi = NULL;
+-      u_char* buf = outp_buf;
+-
+-
+-      /* Paranoia */
+-      if (chip->pageSize != chip->eccsize) {
+-              printk("%s: Can only be called on small page flash\n", __FUNCTION__);
+-              BUG();
+-      }
+-
+-      if (ops->mode == MTD_OOB_RAW) {
+-              printk("%s: Can only be called when not in RAW mode\n", __FUNCTION__);
+-              BUG();
+-      }
+-#ifdef DEBUG_ISR
+-printk("-->%s: mtd=%p, buf=%p, &oob=%p, oob=%p\n", __FUNCTION__, 
+-mtd, outp_buf, inoutpp_oob, inoutpp_oob? *inoutpp_oob: NULL);
+-#endif        
+-
+-      spin_lock_irqsave(&gJobQ.lock, flags);
+-      if (!list_empty(&gJobQ.jobQ)) {
+-              printk("%s: Start read page but job queue not empty\n", __FUNCTION__);
+-//ISR_print_queue();
+-              BUG();
+-      }
+-      gJobQ.cmd = EDU_READ;
+-      gJobQ.needWakeUp = 0;
+-
+-      if (inoutpp_oob && *inoutpp_oob) {
+-              // In batch mode, read OOB into internal OOB buffer first.
+-              // This pointer will be advanced because oob_transfer depends on it.
+-              chip->oob_poi= BRCMNAND_OOBBUF(chip->buffers);
+-              oobpoi = chip->oob_poi; // This pointer remains fixed
+-      }
+-//gdebug=4;   
+-      for (page = 0; page < numPages && ret == 0; page++) {
+-              eduIsrNode_t* req;
+-
+-              req = ISR_queue_read_request(mtd, buf, 
+-                                      (inoutpp_oob && *inoutpp_oob) ? &oobpoi[oobRead] : NULL, 
+-                                      offset + dataRead);
+-                              
+-              dataRead += chip->eccsize;
+-              oobRead += chip->eccOobSize;
+-              buf += chip->eccsize;
+-      }
+-//gdebug=0;
+-      //BUG_ON(submitted != 1);
+-      
+-      /* Kick start it.  The ISR will submit the next job */
+-      if (!submitted) {
+-              submitted = brcmnand_isr_submit_job();
+-      }
+-      
+-      while (!list_empty(&gJobQ.jobQ)) {
+-              spin_unlock_irqrestore(&gJobQ.lock, flags);
+-              ret = ISR_wait_for_queue_completion();
+-              spin_lock_irqsave(&gJobQ.lock, flags);
+-      }
+-      spin_unlock_irqrestore(&gJobQ.lock, flags);
+-
+-      if (ret) {
+-              /* Abort, and return error to file system */
+-              return ret;
+-      }
+-
+-
+-      /* Format OOB, from chip->OOB buffers */
+-      
+-      buf = outp_buf;
+-      oob = (inoutpp_oob && *inoutpp_oob) ? *inoutpp_oob : NULL;
+-      dataRead = 0;
+-      oobRead = 0;
+-PRINTK("%s: B4 transfer OOB: buf=%08x, chip->buffers=%08x, offset=%08llx\n",
+-__FUNCTION__, (uint32_t) buf, chip->buffers, offset + dataRead);
+-
+-      // Reset oob_poi to beginning of OOB buffer.  
+-      // This will get advanced, cuz brcmnand_transfer_oob depends on it.
+-      chip->oob_poi = BRCMNAND_OOBBUF(chip->buffers);
+-      // oobpoi pointer does not change in for loop
+-      oobpoi = chip->oob_poi; 
+-
+-      for (page=0; page < numPages && ret == 0; page++) {
+-              u_char* newoob = NULL;
+-
+-#ifdef EDU_DEBUG_4 /* Read verify */
+-              ret = edu_read_verify(mtd, buf, 
+-                              (inoutpp_oob && *inoutpp_oob) ? &oobpoi[oobRead] : NULL, 
+-                              offset + dataRead);
+-      
+-              if (ret) BUG();
+-#endif
+-
+-              if (unlikely(inoutpp_oob && *inoutpp_oob)) {
+-                      newoob = brcmnand_transfer_oob(chip, oob, ops);
+-                      chip->oob_poi += chip->eccOobSize;
+-                      oob = newoob;
+-                      // oobpoi stays the same
+-              }
+-
+-              dataRead += chip->eccsize;
+-              oobRead += chip->eccOobSize;
+-              buf += chip->eccsize;
+-
+-      } /* for */
+-
+-      if (unlikely(inoutpp_oob && *inoutpp_oob)) {
+-              *inoutpp_oob = oob;
+-      }
+-
+-PRINTK("<-- %s\n", __FUNCTION__);
+-      
+-      return 0;
+-}
+-
+-
+ /**
+- * brcmnand_isr_read_page_oob - {REPLACABLE] hardware ecc based page read function
+- * @mtd:      mtd info structure
+- * @chip:     nand chip info structure.  The OOB buf is stored in the oob_poi ptr on return
+- *
+- * Not for syndrome calculating ecc controllers which need a special oob layout
+- */
+-static int 
+-brcmnand_isr_read_page_oob(struct mtd_info *mtd, 
+-                              uint8_t* outp_oob, uint64_t  page)
+-{
+-      struct brcmnand_chip *chip = (struct brcmnand_chip*) mtd->priv;
+-
+-      /*
+-       * if BCH codes, use full page read to activate ECC on OOB area
+-       */
+-      if (chip->ecclevel != BRCMNAND_ECC_HAMMING && chip->ecclevel != BRCMNAND_ECC_DISABLE) {
+-              return brcmnand_isr_read_page(mtd, chip->buffers->databuf, outp_oob, page);
+-      }
+-      
+-      else {
+-              return brcmnand_read_page_oob(mtd, outp_oob, page);
+-      }
+-}
+-
+-
+-
+-
+-#endif
+-
+-
+-/**
+  * brcmnand_do_read_ops - [Internal] Read data with ECC
+  *
+  * @mtd:      MTD device structure
+@@ -4390,13 +3419,17 @@
+       //int sndcmd = 1;
+       int ret = 0;
+       uint32_t readlen = ops->len;
+-      uint32_t oobread = 0;
+       uint8_t *bufpoi, *oob, *buf;
+-      int numPages;
+-      int buffer_aligned = 0;
+-//int nonBatch = 0;
++if (gdebug > 3 ) 
++{
++printk("-->%s, buf=%p, oob=%p, offset=%0llx, len=%d, end=%0llx\n", __FUNCTION__, 
++      ops->datbuf, ops->oobbuf, from, readlen, from+readlen);
++printk("chip->buffers=%p, chip->oob=%p\n", 
++      chip->buffers, BRCMNAND_OOBBUF(chip->buffers));
++}
++
+       stats = mtd->ecc_stats;
+       // THT: BrcmNAND controller treats multiple chip as one logical chip.
+@@ -4407,7 +3440,6 @@
+       //page = realpage & chip->pagemask;
+       col = mtd64_ll_low(from & (mtd->writesize - 1));
+-      
+ #ifndef EDU_DEBUG_1 
+ /* Debugging 12/27/08 */
+       chip->oob_poi = BRCMNAND_OOBBUF(chip->buffers);
+@@ -4419,91 +3451,38 @@
+       buf = ops->datbuf;
+       oob = ops->oobbuf;
+-#ifdef CONFIG_MTD_BRCMNAND_ISR_QUEUE  
+-      /*
+-       * Group several pages for submission for small page NAND
+-       */
+-      if (chip->pageSize == chip->eccsize && ops->mode != MTD_OOB_RAW) {
+-              while(1) {
+-//nonBatch = 0;
+-                      bytes = min(mtd->writesize - col, readlen);
+-                      // (1) Writing partial or full page
+-                      aligned = (bytes == mtd->writesize);
++      while(1) {
++              bytes = min(mtd->writesize - col, readlen);
++              aligned = (bytes == mtd->writesize);
+-                      // If writing full page, use user buffer, otherwise, internal buffer
++              /* Is the current page in the buffer ? */
++              if ( 1 /* (int64_t) realpage != chip->pagebuf */ || oob) {
++#ifndef EDU_DEBUG_1
+                       bufpoi = aligned ? buf : chip->buffers->databuf;
+-                      
+-                      // (2) Buffer satisfies 32B alignment required by EDU?
+-                      buffer_aligned = EDU_buffer_OK(bufpoi, EDU_READ);
+-
+-                      // (3) Batch mode if writing more than 1 pages.
+-                      numPages = min(MAX_JOB_QUEUE_SIZE, readlen>>chip->page_shift);
+-
+-                      // Only do Batch mode if all 3 conditions are satisfied.
+-                      if (!aligned || !buffer_aligned || numPages <= 1) {
+-                              /* Submit 1 page at a time */
+-
+-                              numPages = 1; // We count partial page read
+-                              ret = chip->read_page(mtd, bufpoi, chip->oob_poi, realpage);                            
+-
+-                              if (ret < 0)
+-                                      break;
+-
+-                              /* Transfer not aligned data */
+-                              if (!aligned) {
+-                                      chip->pagebuf = realpage;
+-                                      memcpy(buf, &bufpoi[col], bytes);
+-                              }
+-                              buf += bytes;
+-
+-                              if (unlikely(oob)) {
+-                                      /* if (ops->mode != MTD_OOB_RAW) */
+-                                      oob = brcmnand_transfer_oob(chip, oob, ops);
+-                                      
+-                              }
+-
+-                      }
+-                      else {
+-                              /* 
+-                                * Batch job possible, all 3 conditions are met
+-                                * bufpoi = Data buffer from FS driver
+-                                * oob = OOB buffer from FS driver
+-                                */    
+-                              bytes = numPages*mtd->writesize;
+-
+-                              ret = brcmnand_isr_read_pages(mtd, bufpoi, oob? &oob : NULL, realpage, numPages, ops);
+-
+-                              if (ret < 0)
+-                                      break;
+-
+-                              buf += bytes; /* Advance Read pointer */
+-
+-                      }
+-
+-
+-                      readlen -= bytes;
+-
+-                      if (!readlen)
+-                              break;
+-
+-                      /* For subsequent reads align to page boundary. */
+-                      col = 0;
+-                      /* Increment page address */
+-                      realpage += numPages;
+-              }
+-              goto out;       
+-      }
+-      else 
++#else
++/* EDU Testing */
++                      aligned=0;
++                      bufpoi = &debug_dbuf.databuf;
++                      // rely on size of buffer to be 4096
++                      memcpy(&bufpoi[mtd->writesize], debug_sig, 1+strlen(debug_sig));
+ #endif
+-      {
+-              while(1) {
+-                      bytes = min(mtd->writesize - col, readlen);
+-                      aligned = (bytes == mtd->writesize);
+-                      
+-                      bufpoi = aligned ? buf : chip->buffers->databuf;
++if (gdebug > 3 )  
++      printk("%s: aligned=%d, buf=%p, bufpoi=%p, oob_poi=%p, bytes=%d, readlen=%d\n",
++      __FUNCTION__, aligned, buf, bufpoi, chip->oob_poi, bytes, readlen);
++//gdebug=4;
+                       ret = chip->read_page(mtd, bufpoi, chip->oob_poi, realpage);
++//gdebug=0;
++#ifdef EDU_DEBUG_1
++                      if (0 != strcmp(&bufpoi[mtd->writesize], debug_sig)) {
++                              printk("$$$$$$$$$$$$$$ Memory smash at end of buffer at %0llx, expect=%s\n",
++                                      from, debug_sig);
++                              printk(".... found\n"); print_oobbuf(&bufpoi[mtd->writesize], 1+strlen(debug_sig));
++                      }
++                      if (buf) memcpy(buf, &bufpoi[col], bytes);
++                      if (oob) memcpy(oob, chip->oob_poi, mtd->oobsize);
++#endif
+                       if (ret < 0)
+                               break;
+@@ -4524,25 +3503,45 @@
+                               }
+                       }
++#if 0
++                      if (!(chip->options & NAND_NO_READRDY)) {
++                              /*
++                               * Apply delay or wait for ready/busy pin. Do
++                               * this before the AUTOINCR check, so no
++                               * problems arise if a chip which does auto
++                               * increment is marked as NOAUTOINCR by the
++                               * board driver.
++                               */
++                              if (!chip->dev_ready)
++                                      udelay(chip->chip_delay);
++                              else
++                                      nand_wait_ready(mtd);
++                      }
++#endif
++              } else {
++printk("%s: Should never get here\n", __FUNCTION__);
++BUG();
++                      memcpy(buf, chip->buffers->databuf + col, bytes);
++                      buf += bytes;
++              }
+-                      readlen -= bytes;
++              readlen -= bytes;
+-                      if (!readlen)
+-                              break;
++              if (!readlen)
++                      break;
+-                      /* For subsequent reads align to page boundary. */
+-                      col = 0;
+-                      /* Increment page address */
+-                      realpage++;
++              /* For subsequent reads align to page boundary. */
++              col = 0;
++              /* Increment page address */
++              realpage++;
+-              }
+       }
+-      
+-out:
+-//gdebug=0;
+       ops->retlen = ops->len - (size_t) readlen;
++//#ifndef EDU_DEBUG_1
++if (gdebug > 3 ) printk("<-- %s, ret=%d\n", __FUNCTION__, ret);
++//#endif
+       if (ret)
+               return ret;
+@@ -4577,7 +3576,7 @@
+       DEBUG(MTD_DEBUG_LEVEL3, "%s: from=%0llx\n", __FUNCTION__, from);
+ if (gdebug > 3 ) {
+-printk("-->%s, offset=%0llx, len=%08x\n", __FUNCTION__, from, len);}
++printk("-->%s, offset=%0llx\n", __FUNCTION__, from);}
+       /* Do not allow reads past end of device */
+@@ -4610,20 +3609,11 @@
+               if (likely(chip->cet)) {
+                       if (likely(chip->cet->flags != BRCMNAND_CET_DISABLED)) {
+                               if (brcmnand_cet_update(mtd, from, &status) == 0) {
+-
+-/*
+- * PR57272: Provide workaround for BCH-n ECC HW bug when # error bits >= 4 
+- * We will not mark a block bad when the a correctable error already happened on the same page
+- */
+-#if CONFIG_MTD_BRCMNAND_VERSION <= CONFIG_MTD_BRCMNAND_VERS_3_4
+-                                      ret = 0;
+-#else
+                                       if (status) {
+                                               ret = -EUCLEAN;
+                                       } else {
+                                               ret = 0;
+                                       }
+-#endif
+                               }
+                               if (gdebug > 3) {
+                                       printk(KERN_INFO "DEBUG -> %s ret = %d, status = %d\n", __FUNCTION__, ret, status);
+@@ -4879,7 +3869,7 @@
+               //struct nand_oobinfo noauto_oobsel;
+               printk("Comparison Failed\n");
+-              print_diagnostics(chip);
++              print_diagnostics();
+               
+               //noauto_oobsel = *oobsel;
+               //noauto_oobsel.useecc = MTD_NANDECC_PLACEONLY;
+@@ -4917,7 +3907,7 @@
+ {
+       struct brcmnand_chip * chip = mtd->priv;
+       
+-      int ret = 0; // Matched
++      int ret = 0;
+       //int ooblen=0, datalen=0;
+       //int complen;
+       u_char* oobbuf = v_oob_buf;
+@@ -4929,12 +3919,7 @@
+ if (gdebug > 3) printk("-->%s: addr=%0llx\n", __FUNCTION__, addr);
+-      /* 
+-       * Only do it for Hamming codes because
+-       * (1) We can't do it for BCH until we can read the full OOB area for BCH-8
+-       * (2) OOB area is included in ECC calculation for BCH, so no need to check it
+-       *      separately.
+-       */
++      /* Only do it for Hamming codes */
+       if (chip->ecclevel != BRCMNAND_ECC_HAMMING) {
+               return 0;
+       }
+@@ -4942,7 +3927,7 @@
+ #if 1
+       page = ((uint64_t) addr) >> chip->page_shift;
+       // Must read entire page
+-      ret = chip->read_page(mtd, vbuf, oobbuf, page);
++      ret = brcmnand_read_page(mtd, vbuf, oobbuf, page);
+       if (ret) {
+               printk(KERN_ERR "%s: brcmnand_read_page at %08x failed ret=%d\n", 
+                       __FUNCTION__, (unsigned int) addr, ret);
+@@ -4967,28 +3952,12 @@
+               brcmnand_Hamming_ecc(&dbuf[pageOffset], sw_ecc);
+               if (sw_ecc[0] != oobp[6] || sw_ecc[1] != oobp[7] || sw_ecc[2] != oobp[8]) {
+-                      if (oobp[6] == 0xff && oobp[7] == 0xff && oobp[8] == 0xff 
+-                              && sw_ecc[0] == 0 && sw_ecc[1] == 0 && sw_ecc[2] == 0) 
+-                              ; // OK
+-                      else {
+-                              printk("%s: Verification failed at %0llx.  HW ECC=%02x%02x%02x, SW ECC=%02x%02x%02x\n",
+-                                      __FUNCTION__, addr,
+-                                      oobp[6], oobp[7], oobp[8], sw_ecc[0], sw_ecc[1], sw_ecc[2]);
+-                              ret = 1;
+-                              break;
+-                      }
++                      printk("%s: Verification failed at %0llx.  HW ECC=%02x%02x%02x, SW ECC=%02x%02x%02x\n",
++                              __FUNCTION__, addr,
++                              oobp[6], oobp[7], oobp[8], sw_ecc[0], sw_ecc[1], sw_ecc[2]);
++                      ret = 1;
++                      break;
+               }
+-
+-              // Verify the OOB if not NULL
+-              if (inp_oob) {
+-                      if (memcmp(&inp_oob[oobOffset], oobp, 6) || memcmp(&inp_oob[oobOffset+9], &oobp[9],7)) {
+-                              printk("+++++++++++++++++++++++ %s: OOB comp Hamming failed\n", __FUNCTION__);
+-                              printk("In OOB:\n"); print_oobbuf(&inp_oob[oobOffset], 16);
+-                              printk("\nVerify OOB:\n"); print_oobbuf(oobp, 16);
+-                              ret = (-2);
+-                              break;
+-                      }
+-              }
+       }
+       return ret;
+@@ -5062,8 +4031,7 @@
+  * @page:     page number to write
+  * @cached:   cached programming [removed]
+  */
+-static int 
+-brcmnand_write_page(struct mtd_info *mtd,
++static int brcmnand_write_page(struct mtd_info *mtd,
+                          const uint8_t *inp_buf, const uint8_t* inp_oob, uint64_t page)
+ {
+       struct brcmnand_chip *chip = (struct brcmnand_chip*) mtd->priv;
+@@ -5094,206 +4062,17 @@
+       }
+       // TBD
+-#ifdef BRCMNAND_WRITE_VERIFY
+-if (0 == ret) {
+-int vret;
++if (0) {
++int save_debug = gdebug;
+ //gdebug = 0;
+-      vret = brcmnand_verify_page(mtd, offset, inp_buf, mtd->writesize, inp_oob, chip->eccOobSize);
++      ret = brcmnand_verify_page(mtd, offset, inp_buf, mtd->writesize, inp_oob, chip->eccOobSize);
+ //gdebug=save_debug;
+-      if (vret) BUG();
+ }
+-#endif
+-
+       
+       return ret;
+ }
+-#ifdef CONFIG_MTD_BRCMNAND_ISR_QUEUE
+-/*
+- * Queue the entire page, then wait for completion
+- */
+-static int
+-brcmnand_isr_write_page(struct mtd_info *mtd,
+-                         const uint8_t *inp_buf, const uint8_t* inp_oob, uint64_t page)
+-{
+-      struct brcmnand_chip *chip = (struct brcmnand_chip*) mtd->priv;
+-      int eccstep;
+-      int dataWritten = 0;
+-      int oobWritten = 0;
+-      int ret = 0;
+-      uint64_t offset = page << chip->page_shift;
+-
+-      uint32_t edu_pending;
+-      int submitted = 0;
+-      unsigned long flags;
+-
+-if (gdebug > 3 ) {
+-printk("-->%s, page=%0llx\n", __FUNCTION__, page);}
+-
+-
+-#if 0 // No need to check, we are aligned on a page
+-      if (unlikely(offset - sliceOffset)) {
+-              printk(KERN_ERR "%s: offset %0llx is not cache aligned, sliceOffset=%0llx, CacheSize=%d\n", 
+-                __FUNCTION__, offset, sliceOffset, mtd->eccsize);
+-              ret = -EINVAL;
+-              goto out;
+-      }
+-#endif
+-
+-
+-      if (unlikely(!EDU_buffer_OK(inp_buf, EDU_WRITE))) 
+-      {
+-if (gdebug>3) printk("++++++++++++++++++++++++ %s: buffer not 32B aligned, trying non-EDU read\n", __FUNCTION__);
+-              /* EDU does not work on non-aligned buffers */
+-              ret = brcmnand_write_page(mtd, inp_buf, inp_oob, page);
+-              return (ret);
+-      }
+-
+-      chip->pagebuf = page;
+-
+-      spin_lock_irqsave(&gJobQ.lock, flags);
+-      if (!list_empty(&gJobQ.jobQ)) {
+-              printk("%s: Start read page but job queue not empty\n", __FUNCTION__);
+-              BUG();
+-      }
+-      gJobQ.cmd = EDU_WRITE;
+-      gJobQ.needWakeUp = 0;
+-
+-
+-      for (eccstep = 0; eccstep < chip->eccsteps && ret == 0; eccstep++) {
+-              eduIsrNode_t* req;
+-              /*
+-               * Queue the 512B sector read, then read the EDU pending bit, 
+-               * and issue read command, if EDU is available for read.
+-               */
+-              req = ISR_queue_write_request(mtd, &inp_buf[dataWritten], 
+-                                      inp_oob ? &inp_oob[oobWritten]  : NULL, 
+-                                      offset + dataWritten);
+-              
+-              dataWritten += chip->eccsize;
+-              oobWritten += chip->eccOobSize;
+-      }
+-      
+-      
+-      /*
+-       * Kick start it.  The ISR will submit the next job
+-       */
+-      if (!submitted) {
+-              submitted = brcmnand_isr_submit_job();
+-      }
+-      
+-      while (!list_empty(&gJobQ.jobQ)) {
+-              spin_unlock_irqrestore(&gJobQ.lock, flags);
+-              ret = ISR_wait_for_queue_completion();
+-              spin_lock_irqsave(&gJobQ.lock, flags);
+-      }
+-      spin_unlock_irqrestore(&gJobQ.lock, flags);
+-      return ret;
+-
+-}
+-
+-/*
+- * Queue the several pages, then wait for completion
+- * For 512B page sizes only.
+- */
+-static int
+-brcmnand_isr_write_pages(struct mtd_info *mtd,
+-                         const uint8_t *inp_buf, const uint8_t* inp_oob, uint64_t startPage, int numPages)
+-{
+-      struct brcmnand_chip *chip = (struct brcmnand_chip*) mtd->priv;
+-      int eccstep;
+-      int dataWritten = 0;
+-      int oobWritten = 0;
+-      int ret = 0;
+-      uint64_t offset = startPage << chip->page_shift;
+-      int page;
+-
+-      uint32_t edu_pending;
+-      int submitted = 0;
+-      unsigned long flags;
+-
+-#if 0
+- /* Already checked by caller */
+-      if (unlikely(!EDU_buffer_OK(inp_buf, EDU_WRITE))) 
+-      {
+-if (gdebug>3) printk("++++++++++++++++++++++++ %s: buffer not 32B aligned, trying non-EDU read\n", __FUNCTION__);
+-              /* EDU does not work on non-aligned buffers */
+-              ret = brcmnand_write_page(mtd, inp_buf, inp_oob, startPage);
+-              return (ret);
+-      }
+-#endif
+-      /* Paranoia */
+-      if (chip->pageSize != chip->eccsize) {
+-              printk("%s: Can only be called on small page flash\n", __FUNCTION__);
+-              BUG();
+-      }
+-
+-      spin_lock_irqsave(&gJobQ.lock, flags);
+-      if (!list_empty(&gJobQ.jobQ)) {
+-              printk("%s: Start read page but job queue not empty\n", __FUNCTION__);
+-              BUG();
+-      }
+-      gJobQ.cmd = EDU_WRITE;
+-      gJobQ.needWakeUp = 0;
+-
+-//gdebug=4;
+-      for (page = 0; page < numPages && ret == 0; page++) {
+-              eduIsrNode_t* req;
+-              /*
+-               * Queue the 512B sector read, then read the EDU pending bit, 
+-               * and issue read command, if EDU is available for read.
+-               */
+-
+-              req = ISR_queue_write_request(mtd, &inp_buf[dataWritten], 
+-                                      inp_oob ? &inp_oob[oobWritten]  : NULL, 
+-                                      offset + dataWritten);
+-              
+-              dataWritten += chip->eccsize;
+-              oobWritten += chip->eccOobSize;
+-      }
+-//gdebug=0;   
+-      
+-      
+-      /*
+-       * Kick start it.  The ISR will submit the next job
+-       * We do it here, in order to avoid having to obtain the queue lock
+-       * inside the ISR, in preparation for an RCU implementation.
+-       */
+-      if (!submitted) {
+-              submitted = brcmnand_isr_submit_job();
+-      }
+-      
+-      while (!list_empty(&gJobQ.jobQ)) {
+-              spin_unlock_irqrestore(&gJobQ.lock, flags);
+-              ret = ISR_wait_for_queue_completion();
+-              spin_lock_irqsave(&gJobQ.lock, flags);
+-      }
+-      spin_unlock_irqrestore(&gJobQ.lock, flags);
+-
+-
+-#ifdef EDU_DEBUG_5
+-/* Verify */
+-      dataWritten = 0;
+-      oobWritten = 0;
+-      for (page = 0; page < numPages && ret == 0; page++) {
+-              ret = edu_write_verify(mtd, &inp_buf[dataWritten], 
+-                                      inp_oob ? &inp_oob[oobWritten]  : NULL, 
+-                                      offset + dataWritten);
+-              if (ret) BUG();
+-              dataWritten += chip->eccsize;
+-              oobWritten += chip->eccOobSize;
+-      }
+-#endif
+-      return ret;
+-
+-}
+-
+-
+-#endif
+-
+-
+-
+ /**
+  * brcmnand_fill_oob - [Internal] Transfer client buffer to oob
+  * @chip:     nand chip structure
+@@ -5307,7 +4086,6 @@
+ {
+       size_t len = ops->ooblen;
+-      
+       switch(ops->mode) {
+       case MTD_OOB_PLACE:
+@@ -5320,8 +4098,6 @@
+               uint32_t boffs = 0, woffs = ops->ooboffs;
+               size_t bytes = 0;
+-              memset(chip->oob_poi + ops->ooboffs, 0xff, chip->eccOobSize-ops->ooboffs);
+-
+               for(; free->length && len; free++, len -= bytes) {
+                       /* Write request not from offset 0 ? */
+                       if (unlikely(woffs)) {
+@@ -5370,8 +4146,6 @@
+       uint8_t *buf = ops->datbuf;
+       int bytes = mtd->writesize;
+       int ret = 0;
+-      int numPages; 
+-      int buffer_aligned = 0;
+ DEBUG(MTD_DEBUG_LEVEL3, "-->%s, offset=%0llx\n", __FUNCTION__, to);
+@@ -5392,8 +4166,13 @@
+       chip->select_chip(mtd, chipnr);
+ */
++#if 0
++/* THT TBD */
++      /* Check, if it is write protected */
++      if (nand_check_wp(mtd))
++              return -EIO;
++#endif
+-
+       realpage = to >> chip->page_shift;
+       //page = realpage & chip->pagemask;
+       blockmask = (1 << (chip->phys_erase_shift - chip->page_shift)) - 1;
+@@ -5414,70 +4193,15 @@
+               chip->oob_poi = NULL;
+       }
+-#ifdef  CONFIG_MTD_BRCMNAND_ISR_QUEUE 
+-      /* Buffer must be aligned for EDU */
+-      buffer_aligned = EDU_buffer_OK(buf, EDU_WRITE);
+-
+-#else /* Dont care */
+-      buffer_aligned = 0;
+-#endif
+-
+       while(1) {
+-
+-#ifdef  CONFIG_MTD_BRCMNAND_ISR_QUEUE 
+-              /*
+-               * Group several pages for submission for small page NAND
+-               */
+-              numPages = min(MAX_JOB_QUEUE_SIZE, writelen>>chip->page_shift);
+-
+-              // If Batch mode                
+-              if (buffer_aligned && numPages > 1 && chip->pageSize == chip->eccsize) {
+-                      int j;
+-
+-                      /* Submit min(queueSize, len/512B) at a time */
+-                      //numPages = min(MAX_JOB_QUEUE_SIZE, writelen>>chip->page_shift);                       
+-                      bytes = chip->eccsize*numPages;
+-
+-                      if (unlikely(oob)) {
+-                              //u_char* newoob;
+-                              for (j=0; j<numPages; j++) {
+-                                      oob = brcmnand_fill_oob(chip, oob, ops);
+-                                      /* THT: oob now points to where to read next, 
+-                                       * chip->oob_poi contains the OOB to be written
+-                                       */
+-                                      /* In batch mode, we advance the OOB pointer to the next OOB slot 
+-                                       * using chip->oob_poi
+-                                       */
+-                                      chip->oob_poi += chip->eccOobSize;
+-                              }
+-                              // Reset chip->oob_poi to beginning of OOB buffer for submission.
+-                              chip->oob_poi = BRCMNAND_OOBBUF(chip->buffers);
+-                      }
+-                      
+-                      ret = brcmnand_isr_write_pages(mtd, buf, chip->oob_poi, realpage, numPages);
+-
++              if (unlikely(oob)) {
++                      oob = brcmnand_fill_oob(chip, oob, ops);
++                      /* THT: oob now points to where to read next, 
++                       * chip->oob_poi contains the OOB to be written
++                       */
+               }
+-              
+-              else /* Else submit one page at a time */
+-#endif
+-              /* Submit one page at a time */
+-              { 
+-                      numPages = 1;
+-                      bytes = mtd->writesize;
+-                      
+-                      if (unlikely(oob)) {
+-                              chip->oob_poi = BRCMNAND_OOBBUF(chip->buffers);
+-                              oob = brcmnand_fill_oob(chip, oob, ops);
+-                              /* THT: oob now points to where to read next, 
+-                               * chip->oob_poi contains the OOB to be written
+-                               */
+-                      }
+-
+-                      ret = chip->write_page(mtd, buf, chip->oob_poi, realpage);
+-
+-              }
+-
++              ret = chip->write_page(mtd, buf, chip->oob_poi, realpage);
+               if (ret)
+                       break;
+@@ -5486,9 +4210,21 @@
+                       break;
+               buf += bytes;
+-              realpage += numPages;
++              realpage++;
++
++#if 0
++              page = realpage & chip->pagemask;
++              /* Check, if we cross a chip boundary */
++              if (!page) {
++                      chipnr++;
++                      chip->select_chip(mtd, -1);
++                      chip->select_chip(mtd, chipnr);
++              }
++#endif
+       }
++      if (unlikely(oob))
++              memset(chip->oob_poi, 0xff, mtd->oobsize);
+       ops->retlen = ops->len - writelen;
+       DEBUG(MTD_DEBUG_LEVEL3, "<-- %s\n", __FUNCTION__);
+@@ -6593,29 +5329,12 @@
+  */
+ static void brcmnand_adjust_timings(struct brcmnand_chip *this, brcmnand_chip_Id* chip)
+ {
+-      unsigned long nand_timing1 = this->ctrl_read(BCHP_NAND_TIMING_1);
+-      unsigned long nand_timing1_b4;
+-      unsigned long nand_timing2 = this->ctrl_read(BCHP_NAND_TIMING_2);
+-      unsigned long nand_timing2_b4;
+-      extern uint32_t gNandTiming1;
+-      extern uint32_t gNandTiming2;
+-
+-      /*
+-       * Override database values with kernel command line values
+-       */
+-       if (0 != gNandTiming1 || 0 != gNandTiming2) {
+-              if (0 != gNandTiming1) {
+-                      chip->timing1 = gNandTiming1;
+-                      //this->ctrl_write(BCHP_NAND_TIMING_1, gNandTiming1);
+-              }
+-              if (0 != gNandTiming2) {
+-                      chip->timing2 = gNandTiming2;
+-                      //this->ctrl_write(BCHP_NAND_TIMING_2, gNandTiming2);
+-              }
+-              //return;
+-       }
+-      
+-      // Adjust NAND timings from database or command line
++              unsigned long nand_timing1 = this->ctrl_read(BCHP_NAND_TIMING_1);
++              unsigned long nand_timing1_b4;
++              unsigned long nand_timing2 = this->ctrl_read(BCHP_NAND_TIMING_2);
++              unsigned long nand_timing2_b4;
++              
++      // Adjust NAND timings:
+       if (chip->timing1) {
+               nand_timing1_b4 = nand_timing1;
+@@ -6688,61 +5407,20 @@
+ brcmnand_read_id(struct mtd_info *mtd, unsigned int chipSelect, unsigned long* dev_id)
+ {
+       struct brcmnand_chip * chip = mtd->priv;
+-      uint32_t status;
+-      uint32_t nandConfig = chip->ctrl_read(BCHP_NAND_CONFIG);
+-      uint32_t csNandSelect = 0;
+-      uint32_t nandSelect = 0;
+-
+-      if (chipSelect > 0) { // Do not re-initialize when on CS0, Bootloader already done that
+-
+-#if CONFIG_MTD_BRCMNAND_VERSION >= CONFIG_MTD_BRCMNAND_VERS_0_1
+-              nandSelect = chip->ctrl_read(BCHP_NAND_CS_NAND_SELECT);
+-
+-printk("B4: NandSelect=%08x, nandConfig=%08x, chipSelect=%d\n", nandSelect, nandConfig, chipSelect);
+-
+       
+-  #if CONFIG_MTD_BRCMNAND_VERSION >= CONFIG_MTD_BRCMNAND_VERS_1_0
+-      /* Older version do not have EXT_ADDR registers */
+-              chip->ctrl_write(BCHP_NAND_CMD_ADDRESS, 0);
+-              chip->ctrl_write(BCHP_NAND_CMD_EXT_ADDRESS, chipSelect << BCHP_NAND_CMD_EXT_ADDRESS_CS_SEL_SHIFT);
+-  #endif  // Set EXT address if version >= 1.0
++#if CONFIG_MTD_BRCMNAND_VERSION >= CONFIG_MTD_BRCMNAND_VERS_1_0
++      /* Set correct chip Select */
++      chip->ctrl_write(BCHP_NAND_CMD_ADDRESS, BCHP_NAND_CMD_START_OPCODE_DEVICE_ID_READ);
++      chip->ctrl_write(BCHP_NAND_CMD_EXT_ADDRESS, chipSelect << 16);
++#endif
+-              // Has CFE initialized the register?  
+-              if (0 == (nandSelect & BCHP_NAND_CS_NAND_SELECT_AUTO_DEVICE_ID_CONFIG_MASK)) {
+-                      
+-  #if CONFIG_MTD_BRCMNAND_VERSION == CONFIG_MTD_BRCMNAND_VERS_0_1
+-                      csNandSelect = 1<<(BCHP_NAND_CS_NAND_SELECT_EBI_CS_0_SEL_SHIFT + chipSelect);
++PRINTK("-->%s: this=%p, chip->ctrl_read=%p\n", __FUNCTION__, chip, chip->ctrl_read);
+-  // v1.0 does not define it
+-  #elif CONFIG_MTD_BRCMNAND_VERSION >= CONFIG_MTD_BRCMNAND_VERS_2_0
+-                      csNandSelect = 1<<(BCHP_NAND_CS_NAND_SELECT_EBI_CS_0_USES_NAND_SHIFT + chipSelect);
+-
+-  #endif // If brcmNAND Version >= 1.0
+-      
+-                      nandSelect = BCHP_NAND_CS_NAND_SELECT_AUTO_DEVICE_ID_CONFIG_MASK | csNandSelect;
+-                      chip->ctrl_write(BCHP_NAND_CS_NAND_SELECT, nandSelect);
+-              }
+-
+-              /* Send the command for reading device ID from controller */
+-              chip->ctrl_write(BCHP_NAND_CMD_START, OP_DEVICE_ID_READ);
+-              
+-              /* Wait for CTRL_Ready */
+-              brcmnand_wait(mtd, FL_READY, &status);
+-                               
+-#endif // if BrcmNAND Version >= 0.1
+-      }
+-
++      /* Send the command for reading device ID from controller */
+       *dev_id = chip->ctrl_read(BCHP_NAND_FLASH_DEVICE_ID);
+       printk(KERN_INFO "brcmnand_probe: CS%1d: dev_id=%08x\n", chipSelect, (unsigned int) *dev_id);
+-#if CONFIG_MTD_BRCMNAND_VERSION >= CONFIG_MTD_BRCMNAND_VERS_0_1
+-      nandSelect = chip->ctrl_read(BCHP_NAND_CS_NAND_SELECT);
+-#endif
+-
+-      nandConfig = chip->ctrl_read(BCHP_NAND_CONFIG);
+-
+-printk("After: NandSelect=%08x, nandConfig=%08x\n", nandSelect, nandConfig);
+ }
+@@ -6764,8 +5442,6 @@
+       int version_id;
+       //int density;
+       int i;
+-
+-//gdebug=4;
+       
+       /* Read manufacturer and device IDs from Controller */
+       brcmnand_read_id(mtd, chipSelect, &chip->device_id);
+@@ -7169,10 +5845,9 @@
+       /* Version ID */
+       version_id = chip->ctrl_read(BCHP_NAND_REVISION);
+-      printk(KERN_INFO "BrcmNAND version = 0x%04x %dMB @%08lx\n", 
+-              version_id, mtd64_ll_low(chip->chipSize>>20), chip->pbase);
++      printk(KERN_INFO "BrcmNAND version = 0x%04x %dMB @%p\n", 
++              version_id, mtd64_ll_low(chip->chipSize>>20), chip->vbase);
+-//gdebug=0;
+       return 0;
+ }
+@@ -7615,92 +6290,51 @@
+       }
+       
+ #elif CONFIG_MTD_BRCMNAND_VERSION >= CONFIG_MTD_BRCMNAND_VERS_2_0
+-      {
+-              int i;
+-              uint32_t nand_xor;
++      /* 
++       * Starting with version 2.0 (bcm7325 and later), 
++       * we can use EBI_CS_USES_NAND  Registers to find out where the NAND
++       * chips are (which CS) 
++       */
++      if (gNumNand > 0) { /* Kernel argument nandcs=<comma-sep-list> override CFE settings */
++              if (brcmnand_sort_chipSelects(mtd, maxchips, gNandCS, chip->CS))
++                      return (-EINVAL);
++              cs = chip->CS[chip->numchips - 1];
++PRINTK("gNumNand=%d, cs=%d\n", gNumNand, cs);
++      }
++      else {
+               
+-              /* 
+-               * Starting with version 2.0 (bcm7325 and later), 
+-               * we can use EBI_CS_USES_NAND  Registers to find out where the NAND
+-               * chips are (which CS) 
+-               */
++              /* Load the gNandCS_priv[] array from EBI_CS_USES_NAND values,
++               * same way that get_options() does, i.e. first entry is gNumNand
++               */
++              int nandCsShift, i;
++              int numNand = 0;
++              int nandCS[MAX_NAND_CS];
+-
+-              if (gNumNand > 0) { /* Kernel argument nandcs=<comma-sep-list> override CFE settings */
+-                      if (brcmnand_sort_chipSelects(mtd, maxchips, gNandCS, chip->CS))
+-                              return (-EINVAL);
+-                      cs = chip->CS[chip->numchips - 1];
+-      PRINTK("gNumNand=%d, cs=%d\n", gNumNand, cs);
+-              }
+-              else {
+-                      
+-                      /* Load the gNandCS_priv[] array from EBI_CS_USES_NAND values,
+-                       * same way that get_options() does, i.e. first entry is gNumNand
+-                       */
+-                      int nandCsShift;
+-                      int numNand = 0; // Number of NAND chips
+-                      int nandCS[MAX_NAND_CS];
+-
+-                      for (i = 0; i< MAX_NAND_CS; i++) {
+-                              nandCS[i] = -1;
+-                      }
+-                      
+-                      nand_select = brcmnand_ctrl_read(BCHP_NAND_CS_NAND_SELECT);
+-                      // Be careful here, the last bound depends on chips.  Some chips allow 8 CS'es (3548a0) some only 2 (3548b0)
+-                      // Here we rely on BCHP_NAND_CS_NAND_SELECT_reserved1_SHIFT being the next bit.
+-                      for (i=0, nandCsShift = BCHP_NAND_CS_NAND_SELECT_EBI_CS_0_USES_NAND_SHIFT;
+-                              nandCsShift < BCHP_NAND_CS_NAND_SELECT_reserved1_SHIFT;
+-                              nandCsShift ++)
+-                      {
+-                              if (nand_select & (1 << nandCsShift)) {
+-                                      nandCS[i] = nandCsShift - BCHP_NAND_CS_NAND_SELECT_EBI_CS_0_USES_NAND_SHIFT;
+-                                      PRINTK("Found NAND on CS%1d\n", nandCS[i]);
+-                                      i++;
+-                              }
+-                      }
+-                      numNand = i;
+-                      if (brcmnand_sort_chipSelects(mtd, maxchips, nandCS, chip->CS))
+-                              return (-EINVAL);
+-                      cs = chip->CS[chip->numchips - 1];
+-      PRINTK("gNumNand=%d, cs=%d\n", gNumNand, cs);
+-
+-                              
+-
+-                      
+-
++              for (i = 0; i< MAX_NAND_CS; i++) {
++                      nandCS[i] = -1;
+               }
+-
+-              /*
+-               * 2618-7.3: For v2.0 or later, set xor_disable according to NAND_CS_NAND_XOR:00 bit
+-               */     
+-
+-              nand_xor = brcmnand_ctrl_read(BCHP_NAND_CS_NAND_XOR);
+-              printk("NAND_CS_NAND_XOR=%08x\n", nand_xor);
+-              //
+-#ifdef CONFIG_MTD_BRCMNAND_DISABLE_XOR
+-      /* Testing 1,2,3: Force XOR disable on CS0, if not done by CFE */
+-              if (chip->CS[0] == 0) { 
+-                      printk("Disabling XOR: Before: SEL=%08x, XOR=%08x\n", nand_select, nand_xor);
+-                      
+-                      nand_select &= ~BCHP_NAND_CS_NAND_SELECT_EBI_CS_0_SEL_MASK;
+-                      nand_xor &= ~BCHP_NAND_CS_NAND_XOR_EBI_CS_0_ADDR_1FC0_XOR_MASK;
+-
+-                      brcmnand_ctrl_write(BCHP_NAND_CS_NAND_SELECT, nand_select);
+-                      brcmnand_ctrl_write(BCHP_NAND_CS_NAND_XOR, nand_xor);
+-
+-                      printk("Disabling XOR: After: SEL=%08x, XOR=%08x\n", nand_select, nand_xor);
+-              }
+-#endif
+-              /* Translate nand_xor into our internal flag, for brcmnand_writeAddr */
+-              for (i=0; i<chip->numchips; i++) {
+-                                              
+-                      /* Set xor_disable, 1 for each NAND chip */
+-                      if (!(nand_xor & (BCHP_NAND_CS_NAND_XOR_EBI_CS_0_ADDR_1FC0_XOR_MASK<<i))) {
+-printk("Disabling XOR on CS#%1d\n", chip->CS[i]);
+-                              chip->xor_disable[i] = 1;
++              
++              nand_select = brcmnand_ctrl_read(BCHP_NAND_CS_NAND_SELECT);
++              // Be careful here, the last bound depends on chips.  Some chips allow 8 CS'es (3548a0) some only 2 (3548b0)
++              // Here we rely on BCHP_NAND_CS_NAND_SELECT_reserved1_SHIFT being the next bit.
++              for (i=0, nandCsShift = BCHP_NAND_CS_NAND_SELECT_EBI_CS_0_USES_NAND_SHIFT;
++                      nandCsShift < BCHP_NAND_CS_NAND_SELECT_reserved1_SHIFT;
++                      nandCsShift ++)
++              {
++                      if (nand_select & (1 << nandCsShift)) {
++                              nandCS[i] = nandCsShift - BCHP_NAND_CS_NAND_SELECT_EBI_CS_0_USES_NAND_SHIFT;
++                              PRINTK("Found NAND on CS%1d\n", nandCS[i]);
++                              i++;
+                       }
+               }
++              numNand = i;
++              if (brcmnand_sort_chipSelects(mtd, maxchips, nandCS, chip->CS))
++                      return (-EINVAL);
++              cs = chip->CS[chip->numchips - 1];
++PRINTK("gNumNand=%d, cs=%d\n", gNumNand, cs);
+       }
++
++  
+ #else
+       #error "Unknown Broadcom NAND controller version"
+ #endif /* Versions >= 1.0 */
+@@ -7728,15 +6362,24 @@
+               volatile unsigned long acc_control;
+               chip->numchips = 1;
++              if (chip->chipSize >= (128 << 20)) {
++                      chip->pbase = 0x11000000; /* Skip 16MB EBI Registers */
+-              /* Set up base, based on flash size */
+-              if (chip->chipSize >= (256 << 20)) {
+-                      chip->pbase = 0x12000000;
+-                      mtd->size = 0x20000000 - chip->pbase; // THT: This is different than chip->chipSize
+-              } else {
+-                      /* We know that flash endAddr is 0x2000_0000 */
+-                      chip->pbase = 0x20000000 - chip->chipSize;
++                      mtd->num_eraseblocks = (chip->chipSize - (16<<20)) >> chip->erase_shift; // Maximum size on a 128MB/256MB flash
++                      chip->mtdSize = device_size(mtd);
++              }
++/*
++              else if (chip->chipSize == (256 << 20)) {
++                      chip->pbase = 0x11000000; // Skip 16MB EBI Registers 
++                      mtd->size = 240<<20; // Maximum size on a 256MB flash, provided CS0/NOR is disabled
++              }
++ */
++              else {
++                      chip->pbase = 0x18000000 - chip->chipSize;
+                       mtd->size = chip->chipSize;
++                      chip->mtdSize = mtd->size;
++
++                      //mtd->size_hi = 0;
+               }
+               printk("Found NAND chip on Chip Select %d, chipSize=%dMB, usable size=%dMB, base=%08x\n", 
+@@ -7926,7 +6569,7 @@
+                               printk("ACC: %d OOB bytes per 512B ECC step; from ID probe: %d\n", eccOobSize, chip->eccOobSize);
+                               // We have recorded chip->eccOobSize during probe, let's compare it against value from ACC
+                               if (chip->eccOobSize < eccOobSize) {
+-                                      printk("Flash says it has %d OOB bytes, but ECC level %lu need %d bytes\n",
++                                      printk("Flash says it has %d OOB bytes, but ECC level %d need %d bytes\n",
+                                               chip->eccOobSize, eccLevel, eccOobSize);
+                                       printk(KERN_INFO "Please fix your board straps. Aborting to avoid file system damage\n");
+                                       BUG();
+@@ -7941,7 +6584,7 @@
+                               break;
+                       default:
+-                              printk(KERN_ERR "Unsupported ECC level %lu\n", eccLevel);
++                              printk(KERN_ERR "Unsupported ECC level %d\n", eccLevel);
+                               BUG();
+                               
+                       }
+@@ -7963,11 +6606,11 @@
+                               brcmnand_ctrl_write(BCHP_NAND_ACC_CONTROL, acc_control );
+                               printk("Corrected PARTIAL_PAGE_EN: ACC_CONTROL = %08lx\n", acc_control);
+                       }                       
+-#ifdef CONFIG_MIPS_BCM3548
+-                      /* THT PR50928: Disable WR_PREEMPT for 3548L and 3556 */
+-                      acc_control &= ~(BCHP_NAND_ACC_CONTROL_WR_PREEMPT_EN_MASK);
++#if 1
++                      /* THT Disable Optimization for 2K page */
++                      acc_control &= ~(BCHP_NAND_ACC_CONTROL_WR_PREEMPT_EN_MASK|BCHP_NAND_ACC_CONTROL_PAGE_HIT_EN_MASK);
+                       brcmnand_ctrl_write(BCHP_NAND_ACC_CONTROL, acc_control );
+-                      printk("Disable WR_PREEMPT: ACC_CONTROL = %08lx\n", acc_control);
++                      printk("Disable WR_PREEMPT and PAGE_HIT_EN: ACC_CONTROL = %08lx\n", acc_control);
+ #endif
+                       printk("ACC_CONTROL for MLC NAND: %08lx\n", acc_control);
+               }
+@@ -8010,58 +6653,7 @@
+                               printk("SLC flash: Corrected ACC_CONTROL = %08lx from %08lx\n", acc_control, org_acc_control);
+                       }
+               }
+-
+-
+-#if CONFIG_MTD_BRCMNAND_VERSION <= CONFIG_MTD_BRCMNAND_VERS_3_4
+-              /*
+-               * PR57272: Workaround for BCH-n error, 
+-               * reporting correctable errors with 4 or more bits as uncorrectable:
+-               */
+-              if (chip->ecclevel != 0 && chip->ecclevel != BRCMNAND_ECC_HAMMING) {
+-                      int corr_threshold;
+-
+-                      if ( chip->ecclevel >=  BRCMNAND_ECC_BCH_4) {
+-                              corr_threshold = 2;
+-                      } 
+-                      else {
+-                              corr_threshold = 1;  // 1 , default for Hamming
+-                      }
+-
+-                      printk(KERN_INFO "%s: CORR ERR threshold set to %d bits\n", __FUNCTION__, corr_threshold);
+-                      corr_threshold <<= BCHP_NAND_CORR_STAT_THRESHOLD_CORR_STAT_THRESHOLD_SHIFT;
+-                      brcmnand_ctrl_write(BCHP_NAND_CORR_STAT_THRESHOLD, corr_threshold);
+-              }
+-
+-#else
+-              /*
+-               * If ECC level is BCH, set CORR Threshold according to # bits corrected
+-               */
+-              if (chip->ecclevel != 0 && chip->ecclevel != BRCMNAND_ECC_HAMMING) {
+-                      int corr_threshold;
+-
+-                      if (chip->ecclevel >= BRCMNAND_ECC_BCH_8) {
+-                              corr_threshold = 6;  // 6 out of 8
+-                      } 
+-                      else if ( chip->ecclevel >=  BRCMNAND_ECC_BCH_4) {
+-                              corr_threshold = 3;  // 3 out of 4
+-                      } 
+-                      else {
+-                              corr_threshold = 1;  // 1 , default for Hamming
+-                      }
+-                      printk(KERN_INFO "%s: CORR ERR threshold set to %d bits\n", __FUNCTION__, corr_threshold);
+-                      corr_threshold <<= BCHP_NAND_CORR_STAT_THRESHOLD_CORR_STAT_THRESHOLD_SHIFT;
+-                      brcmnand_ctrl_write(BCHP_NAND_CORR_STAT_THRESHOLD, corr_threshold);
+-              }
+-#endif
+-                      
+       }
+-
+-#else
+-      /* Version 2.x, Hamming codes only */
+-      /* If chip Select is not zero, the CFE may not have initialized the NAND flash */
+-      if (chip->CS[0]) {
+-              /* Nothing for now */
+-      }
+ #endif // Version 3.0+
+ #endif // Version 1.0+
+@@ -8112,17 +6704,12 @@
+ #ifdef EDU_DEBUG_3
+ printk("++++++++++++ EDU_DEBUG_3 enabled\n");
+ #endif
+-#if defined( EDU_DEBUG_4 ) || defined( EDU_DEBUG_5 )
+-init_edu_buf();
+-
+-  #ifdef EDU_DEBUG_4
+-  printk("++++++++++++ EDU_DEBUG_4 (read verify) enabled\n");
+-  #endif
+-
+-  #ifdef EDU_DEBUG_5
+-  printk("++++++++++++ EDU_DEBUG_5 (write verify) enabled\n");
+-  #endif
++#ifdef EDU_DEBUG_4
++printk("++++++++++++ EDU_DEBUG_4 (read verify) enabled\n");
+ #endif
++#ifdef EDU_DEBUG_5
++printk("++++++++++++ EDU_DEBUG_5 (write verify) enabled\n");
++#endif
+ PRINTK("%s 30\n", __FUNCTION__);
+       /*
+@@ -8200,22 +6787,8 @@
+                               }
+                       }
+                       else {
+-                              switch (mtd->writesize) {
+-                              case 4096:
+-                                      if (chip->ecclevel == BRCMNAND_ECC_HAMMING) {
+-                                              printk(KERN_WARNING "This SLC-4K-page flash may not be suitable for Hamming codes\n");
+-                                              chip->ecclayout = &brcmnand_oob_128;
+-                                      }
+-                                      else {
+-                                              chip->ecclayout = &brcmnand_oob_bch4_4k;
+-                                      }
+-                                      break;
+-
+-                              default:
+-                                      printk(KERN_ERR "Unsupported page size of %d\n", mtd->writesize);
+-                                      BUG();
+-                                      break;
+-                              }
++                              printk(KERN_ERR "Unsupported SLC NAND with page size of %d\n", mtd->writesize);
++                              BUG();
+                       }
+                       break;
+                       
+@@ -8239,18 +6812,7 @@
+       //chip->eccOobSize = (mtd->oobsize*512) /mtd->writesize; 
+       printk(KERN_INFO "mtd->oobsize=%d, mtd->eccOobSize=%d\n", mtd->oobsize, chip->eccOobSize);
+-#ifdef CONFIG_MTD_BRCMNAND_ISR_QUEUE
+       if (!chip->read_page)
+-              chip->read_page = brcmnand_isr_read_page;
+-      if (!chip->write_page)
+-              chip->write_page = brcmnand_isr_write_page;
+-      if (!chip->read_page_oob)
+-              chip->read_page_oob = brcmnand_isr_read_page_oob;
+-      /* There is no brcmnand_isr_write_page_oob */
+-      if (!chip->write_page_oob)
+-              chip->write_page_oob = brcmnand_write_page_oob;
+-#else
+-      if (!chip->read_page)
+               chip->read_page = brcmnand_read_page;
+       if (!chip->write_page)
+               chip->write_page = brcmnand_write_page;
+@@ -8258,7 +6820,6 @@
+               chip->read_page_oob = brcmnand_read_page_oob;
+       if (!chip->write_page_oob)
+               chip->write_page_oob = brcmnand_write_page_oob;
+-#endif
+       if (!chip->read_oob)
+               chip->read_oob = brcmnand_do_read_ops;
+       if (!chip->write_oob)
+@@ -8387,17 +6948,21 @@
+       EDU_init();
+ #endif
++gdebug=0;
++if (0) {
++      char oob[128];
++      
++      printk("------------------> Dry-run\n");
++      brcmnand_posted_read_oob(mtd, oob, device_size(mtd) - mtd->erasesize, 1);
++      print_oobbuf(oob, 16);
++      printk("<------------------ End Dry-run\n");
++}
++if (gdebug > 3) printk("%s 60 Calling scan_bbt\n", __FUNCTION__);
+-#ifdef CONFIG_MTD_BRCMNAND_DISABLE_XOR
+-gdebug=4;
+-      printk("-----------------------------------------------------\n");
+-      print_nand_ctrl_regs();
+-      printk("-----------------------------------------------------\n");
+-#endif
+-
+-
+       err =  chip->scan_bbt(mtd);
++if (gdebug > 3) printk("%s 80 Done scan_bbt\n", __FUNCTION__);        
++//gdebug=0;
+ #ifdef CONFIG_MTD_BRCMNAND_CORRECTABLE_ERR_HANDLING
+@@ -8411,9 +6976,9 @@
+       }
+ #endif
+-//gdebug=0;
+ PRINTK("%s 99\n", __FUNCTION__);
++if (gdebug) print_diagnostics();
+       return err;
+ }
+Index: drivers/mtd/brcmnand/brcmnand_cet.c
+===================================================================
+--- drivers/mtd/brcmnand/brcmnand_cet.c        (revision 1)
++++ drivers/mtd/brcmnand/brcmnand_cet.c        (working copy)
+@@ -72,20 +72,12 @@
+ #define CET_SYNC_FREQ (10*60*HZ)      
+-
+ static char cet_pattern[] = {'C', 'E', 'T', 0};
+ static struct brcmnand_cet_descr cet_descr = {
+       .offs = 9,
+       .len = 4,
+       .pattern = cet_pattern
+ };
+-
+-/* 
+- * This also applies to Large Page SLC flashes with BCH-4 ECC.
+- * We don't support BCH-4 on Small Page SLCs because there are not 
+- * enough free bytes for the OOB, but we don't enforce it,
+- * in order to allow page aggregation like in YAFFS2 on small page SLCs.
+- */
+ static struct brcmnand_cet_descr cet_descr_mlc = {
+       .offs = 1,
+       .len = 4,
+@@ -685,18 +677,10 @@
+       if (unlikely(gdebug)) {
+               printk(KERN_INFO "brcmnandCET: Creating correctable error table ...\n");
+       }
+-      
+-      if (NAND_IS_MLC(this) || /* MLC flashes */
+-         /* SLC w/ BCH-n; We don't check for pageSize, and let it be */
+-         (this->ecclevel >= BRCMNAND_ECC_BCH_1 && this->ecclevel <= BRCMNAND_ECC_BCH_12)) 
+-      {
++      if (NAND_IS_MLC(this)) {
+               this->cet = cet = &cet_descr_mlc;
+-if (gdebug) printk("%s: CET = cet_desc_mlc\n", __FUNCTION__);
+-      } 
+-
+-      else {
++      } else {
+               this->cet = cet = &cet_descr;
+-if (gdebug) printk("%s: CET = cet_descr\n", __FUNCTION__);
+       }
+       cet->flags = 0x00;
+       /* Check that BBT table and mirror exist */
+Index: drivers/mtd/brcmnand/brcmnand_isr.c
+===================================================================
+--- drivers/mtd/brcmnand/brcmnand_isr.c        (revision 1)
++++ drivers/mtd/brcmnand/brcmnand_isr.c        (working copy)
+@@ -22,705 +22,189 @@
+  * 20090318   tht             Original coding
+  */
+-//#define ISR_DEBUG_SMP
+-#undef ISR_DEBUG_SMP
+-#ifdef ISR_DEBUG_SMP
+-#include <asm/atomic.h>
+-#endif
+-
+-
+ #include "brcmnand_priv.h"
+ #include "edu.h"
+-#include <linux/dma-mapping.h>
+-
+ #define PRINTK(...)
+-//#define PRINTK printk
+-
+-#ifdef ISR_DEBUG_SMP
+-static atomic_t v = ATOMIC_INIT(1);
+-#define PRINTK1(...) if (!atomic_dec_and_test(&v)) printk("<")
+-#define PRINTK2(...) atomic_inc(&v)  //, printk(">"))
+-#define PRINTK5(...) if (!atomic_dec_and_test(&v))  printk("+");
+-#define PRINTK6(...) atomic_inc(&v)  // printk("-");
+-#define PRINTK3(...) if (!atomic_dec_and_test(&v)) printk("[");
+-#define PRINTK4(...) atomic_inc(&v) // printk("]");
+-
+-#else
+-#define PRINTK1(...)
+-#define PRINTK2(...)
+-#define PRINTK3(...)
+-#define PRINTK4(...)
+-#define PRINTK5(...)
+-#define PRINTK6(...)
+-#endif
++//define PRINTK printk
+  
+  // Wakes up the sleeping calling thread.
+ static DECLARE_WAIT_QUEUE_HEAD(gEduWaitQ);
+-//eduIsrNode_t gEduIsrData; 
+-eduIsrNode_t gEduIsrPool[MAX_JOB_QUEUE_SIZE+2]; /* ReadOp Pool, add 2 for Pushed WAR jobs */
++eduIsrData_t gEduIsrData;
+-isrJobQ_t gJobQ; /* Job Queue */
+-
+-extern int gdebug;
+-
+-
+-/*
+- * Queue next sector for read/write, assuming caller holds queue lock
+- */
+-eduIsrNode_t* 
+-ISR_queue_read_request(struct mtd_info *mtd,
+-        void* buffer, u_char* oobarea, loff_t offset)
++static irqreturn_t ISR_isr(int irq, void *devid, struct pt_regs *regs)
+ {
+-      eduIsrNode_t* entry; 
+-      struct list_head* node;
+-
+-      // Grab one request from avail list
+-      if (list_empty(&gJobQ.availList)) {
+-              printk("%s: Empty avail list\n", __FUNCTION__);
+-              BUG();
+-      }
+-      node = gJobQ.availList.next;
+-      if (!node) {
+-              printk("%s: Empty avail list\n", __FUNCTION__);
+-              BUG();
+-      }
+-      entry = list_entry(node, eduIsrNode_t, list);
+-      list_del(node);
+-
+-      // Queue entry
+-      list_add_tail(node, &gJobQ.jobQ);
+-      spin_lock_init(&entry->lock);
+-      entry->mtd = mtd;
+-      entry->buffer = buffer;
+-      entry->oobarea = oobarea;
+-      entry->offset = offset;
+-      entry->ret = -1;
+-      entry->refCount = 1;
+-      entry->opComplete = ISR_OP_QUEUED;
+-      
+-      return entry;
+-}
+-
+-eduIsrNode_t* 
+-ISR_queue_write_request(struct mtd_info *mtd,
+-        const void* buffer, const u_char* oobarea, loff_t offset)
+-{
+-      eduIsrNode_t* entry; 
+-      struct list_head* node;
+-
+-      // Grab one request from avail list
+-      if (list_empty(&gJobQ.availList)) {
+-              printk("%s: Empty avail list\n", __FUNCTION__);
+-              BUG();
+-      }
+-      node = gJobQ.availList.next;
+-      if (!node) {
+-              printk("%s: Empty avail list\n", __FUNCTION__);
+-              BUG();
+-      }
+-      entry = list_entry(node, eduIsrNode_t, list);
+-      list_del(node);
+-
+-      // Queue entry
+-      list_add_tail(node, &gJobQ.jobQ);
+-      spin_lock_init(&entry->lock);
+-      entry->mtd = mtd;
+-      entry->buffer = buffer;
+-      entry->oobarea = oobarea;
+-      entry->offset = offset;
+-      entry->ret = -1;
+-      entry->refCount = 1;
+-      entry->opComplete = ISR_OP_QUEUED;
+-
+-      return entry;
+-}
+-
+-
+-/*
+- * Push next sector for dummy read to head of queue, assuming caller holds queue lock
+- * Job will be next to be executed
+- */
+-eduIsrNode_t*  
+-ISR_push_request(struct mtd_info *mtd,
+-        void* buffer, u_char* oobarea, loff_t offset) 
+-{
+-      eduIsrNode_t* entry; 
+-      struct list_head* node;
+-
+-      // Grab one request from avail list
+-      if (list_empty(&gJobQ.availList)) {
+-              printk("%s: Empty avail list\n", __FUNCTION__);
+-              BUG();
+-      }
+-      node = gJobQ.availList.next;
+-      if (!node) {
+-              printk("%s: Empty avail list\n", __FUNCTION__);
+-              BUG();
+-      }
+-      entry = list_entry(node, eduIsrNode_t, list);
+-      list_del(node);
+-
+-      // Push to head of queue
+-      list_add(node, &gJobQ.jobQ);
+-      spin_lock_init(&entry->lock);
+-      entry->mtd = mtd;
+-      entry->buffer = buffer;
+-      entry->oobarea = oobarea;
+-      entry->offset = offset;
+-      entry->ret = -1;
+-      entry->refCount = 1;
+-      entry->opComplete = ISR_OP_QUEUED;
+-
+-      return entry;   
+-}
+-
+-
+-/*
+- * Called with ReqdQ Read lock held
+- * Returns pointer to node that satisfies opStatus, 
+- * with spin lock held (spin_lock()'ed assuming queue lock has been held))
+- */
+-eduIsrNode_t*
+-ISR_find_request( isrOpStatus_t opStatus)
+-{
+-      eduIsrNode_t* req;
+-
+-      list_for_each_entry(req, &gJobQ.jobQ, list) {
+-              
+-              // We called this with spin_lock_irqsave on queue lock, so no need for the irq variant
+-              spin_lock(&req->lock);
+-              if (req->opComplete == opStatus) {
+-                      return req;
+-              }
+-              spin_unlock(&req->lock);
+-      }
+-      return (eduIsrNode_t*) 0;;
+-}
+-
+-#if 0
+-static void
+-ISR_print_queue(void)
+-{
+-      eduIsrNode_t* req;
+-      int i=0;
+-
+-      list_for_each_entry(req, &gJobQ.jobQ, list) {
+-              
+-              // We called this with spin_lock_irqsave on queue lock, so no need for the irq variant
+-              printk("I=%d req=%p, offset=%0llx, opComp=%d, list=%p, next=%p, prev=%p\n",
+-                      i, req, req->offset, req->opComplete, &req->list, req->list.next, req->list.prev);
+-              i++;
+-      }
+-      return (eduIsrNode_t*) 0;;
+-}
+-#endif
+-
+-
+-/*
+- * We've got interrupted, and verified that job is complete. 
+- * Job lock has been held by caller.
+- * Do Read completion routines
+- * runs in interrupt context.
+- * Return returned value of read-op.
+- */
+-
+-
+-
+-#if 0 //def EDU_DOUBLE_BUFFER_READ
+-
+-/* Save this to be revived when we are sure that EDU's double buffering works */
+-static int
+-ISR_read_completion(eduIsrNode_t* req)
+-{
+-      /* Make sure that the current request does not cause an UNC ERR, as
+-       * that would require a read from the LKGS to reset EDU
+-       */
+-      if (req->status & HIF_INTR2_EDU_ERR) {
+-              uint32_t edu_err_status;
+-
+-              edu_err_status = EDU_volatileRead(EDU_BASE_ADDRESS + EDU_ERR_STATUS);
+-              if (edu_err_status && edu_err_status != EDU_ERR_STATUS_NandECCcor) {
+-
+-                      /* If error, we must stop the on-going EDU op, because it will be dropped by EDU.  
+-                       * This is VLSI PR2389
+-                       */
+-                      edu_status = EDU_volatileRead(EDU_BASE_ADDRESS + EDU_STATUS);
+-                      if (edu_status & BCHP_EDU_STATUS_Active_MASK) {
+-                              uint32_t edu_done = EDU_volatileRead(EDU_BASE_ADDRESS + EDU_DONE);
+-
+-
+-                              // Abort current command
+-                              EDU_volatileWrite(EDU_BASE_ADDRESS + EDU_STOP, BCHP_EDU_STOP_Stop_MASK);
+-
+-                              // Wait for Done to increment
+-                              while (edu_done == EDU_volatileRead(EDU_BASE_ADDRESS + EDU_DONE))
+-                                      udelay(10);
+-                              // Wait for Pending and Active to Clear
+-                              while (0 != (edu_status = EDU_volatileRead(EDU_BASE_ADDRESS + EDU_STATUS)))
+-                                      udelay(10);
+-                              // Reset Stop
+-                              EDU_volatileWrite(EDU_BASE_ADDRESS + EDU_STOP, 0);
+-                              // Let the process context thread handle the WAR,
+-                              // But we need to requeue the current op (req2)
+-                              req2 = req->list.next;
+-                              down(&req2->lock);
+-                              if (req2 && req2->opComplete == ISR_OP_SUBMITTED) {
+-                                      req2->opComplete = ISR_OP_QUEUED;
+-                              }
+-                              up(&req2->lock);
+-                      }
+-              }
+-                      
+-      }
+-       // ReadOp completes with no errors, queue next requests until Pending is set
+-                      
+-
+-}
+-
+-#endif        
+-
+-/*
+- * The requests are queued, some with ISR_OP_SUBMITTED status, some with ISR_OP_QUEUED
+- * When an interrupt comes in, we just look for the one that are in submitted status, and mark them
+- * as ISR_OP_COMPLETE, and wake up the wait queue.
+- * However, if (1) there is an error that requires a workaround, or (2) that the operation is not yet completed,
+- * we need to take appropriate action depending on the case.
+- * In (1), we have a false uncorrectable error, that need a read from the last known good sector, 
+- * so if double buffering is in effect, we need to abort the current EDU job, in order to do the workaround.
+- * In (2) we just update the current job, and let the HW interrupt us again.
+- * 
+- * Runs in interrupt context.
+- */ 
+-static irqreturn_t 
+-ISR_isr(int irq, void *devid, struct pt_regs *regs)
+-{
+       uint32_t status, rd_data;
+       uint32_t intrMask;  
+-      eduIsrNode_t* req;
+-      //struct list_head* node;
+-      uint32_t flashAddr;
+       unsigned long flags;
+       /*
+        * Not mine
+        */
+-      if (devid != (void*) &gJobQ) {
++      if (devid != (void*) &gEduIsrData) {
+               return IRQ_NONE;
+       }
+-      spin_lock_irqsave(&gJobQ.lock, flags);
+-      /* TBD: How to tell Read Request from Write Request */
+-      if (list_empty(&gJobQ.jobQ)) { 
+-              printk("%s: Impossible no job to process\n", __FUNCTION__);
+-              //BUG();
+-              // CLear interrupt and return
+-              intrMask = ISR_volatileRead(BCM_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_MASK_STATUS);
+-              ISR_disable_irq(intrMask);
+-              spin_unlock_irqrestore(&gJobQ.lock, flags);
+-              return IRQ_HANDLED;
+-      } 
+-      
+-      flashAddr = EDU_volatileRead(EDU_BASE_ADDRESS+EDU_EXT_ADDR) - (EDU_LENGTH_VALUE-1);
+-
+-      flashAddr &= ~(EDU_LENGTH_VALUE-1);
+-      
+-      req = ISR_find_request(ISR_OP_SUBMITTED);
+-
+-      // Paranoia
+-      if (!req) {
+-              printk("%s: Impossible failed to find queued job\n", __FUNCTION__);
+-              BUG();
+-      }
+-
+-      // req->lock held here.
+-                      
+-      /*
+-       * Remember the status, as there can be several L1 interrupts before completion.
+-       * Grab the lock first, we don't want any race condition.
+-       */
+-      // spin_lock(&req->lock);  Already locked by ISR_find_request
+       intrMask = ISR_volatileRead(BCM_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_MASK_STATUS);
+       rd_data = ISR_volatileRead(BCM_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_STATUS);
+       
+-PRINTK("==> %s: Awaken rd_data=%08x, intrMask=%08x, cmd=%d, flashAddr=%08x\n", __FUNCTION__, 
+-      rd_data, intrMask, gJobQ.cmd, req->edu_ldw);
++PRINTK("%s: Awaken rd_data=%08x, intrMask=%08x, cmd=%d, flashAddr=%08x\n", __FUNCTION__, 
++      rd_data, intrMask, gEduIsrData.cmd, gEduIsrData.flashAddr);
+-      req->status |= rd_data;
+-      status = req->status & req->mask;
+-      
+       /*
+-       * Evaluate exit/completion condition. 
++       * Remember the status, as there can be several L1 interrupts before completion
+        */
+-      switch (gJobQ.cmd) {
++      spin_lock_irqsave(&gEduIsrData.lock, flags);
++      gEduIsrData.status |= rd_data;
++      status = gEduIsrData.status & gEduIsrData.mask;
++      
++      // Evaluate exit/completion condition
++      switch (gEduIsrData.cmd) {
+       case EDU_READ:
+       case NAND_CTRL_READY:
+-              if  ((req->expect == (req->status & req->expect)) || 
+-                                                              (req->status & req->error))
+-              {
+-                      req->opComplete = ISR_OP_COMPLETED;
+-              }
++              gEduIsrData.opComplete = ((gEduIsrData.expect == (gEduIsrData.status & gEduIsrData.expect)) || 
++                                                              (gEduIsrData.status & gEduIsrData.error));
+               break;
+               
+       case EDU_WRITE:
+               /* 
+                * We wait for both DONE|ERR +CTRL_READY
+                */
+-              if ((req->expect == (req->status & req->expect) ||
+-                                                                      (req->status & req->error))
++              gEduIsrData.opComplete = ((gEduIsrData.expect == (gEduIsrData.status & gEduIsrData.expect) ||
++                                                                      (gEduIsrData.status & gEduIsrData.error))
+                                                               &&
+-                                                              (req->status & HIF_INTR2_CTRL_READY))
+-              {
+-                      req->opComplete = ISR_OP_COMPLETED;
+-                      (void) dma_unmap_single(NULL, req->physAddr, EDU_LENGTH_VALUE, DMA_TO_DEVICE);
+-              }
+-              break;  
+-              
+-      default:
+-              printk("%s: Invalid command %08x\n", __FUNCTION__, gJobQ.cmd);
+-              BUG();
++                                                              (gEduIsrData.status & HIF_INTR2_CTRL_READY));
++              break;                                                  
+       }
+-      if (ISR_OP_COMPLETED == req->opComplete) {
+-              int submitted;
+-
+-              /* ACK interrupt */
+-              ISR_disable_irq(req->intr);
+-
+-              // Do we need to do WAR for EDU, since EDU stop dead in its track regardless of the kind of errors.  Bummer!
+-              if (req->status & HIF_INTR2_EDU_ERR) {
+-                      uint32_t edu_err_status;
+-
+-                      /*
+-                       * We need to do WAR for EDU, which just stops dead on its tracks if there is any error, correctable or not.
+-                       * Problem is, the WAR needs to be done in process context,
+-                       * so we wake up the process context thread, and handle the WAR there.
+-                       */
+-PRINTK("%s: Awaken process context thread for EDU WAR, flashAddr=%08x, status=%08x, hif_intr2=%08x\n", 
+-__FUNCTION__, req->edu_ldw, req->status, HIF_INTR2_EDU_ERR);
+-                      gJobQ.needWakeUp= 1;
+-                      req->opComplete = ISR_OP_NEED_WAR;
+-                      wake_up(&gEduWaitQ);
+-                      spin_unlock(&req->lock);
+-                      spin_unlock_irqrestore(&gJobQ.lock, flags);
+-                      return IRQ_HANDLED;
+-              }
+-
+-              /*
+-               * Get here only if there are no errors, call job completion routine.
+-               */
+-              switch (gJobQ.cmd) {
+-              case EDU_READ:
+-                      /* All is left to do is to handle the OOB read */
+-                      req->ret = brcmnand_edu_read_comp_intr(req->mtd, req->buffer, req->oobarea, req->offset,
+-                                              req->status);
+-                      break;
+-
+-              case EDU_WRITE:
+-                      {
+-                              /*
+-                               * Even if there are no HIF_INTR2_ERR, we still need to check
+-                               * the flash status.  If it is set, we need to update the BBT
+-                               * which requires process context WAR
+-                               */
+-                              struct brcmnand_chip *chip = req->mtd->priv;
+-                              uint32_t flashStatus = chip->ctrl_read(BCHP_NAND_INTFC_STATUS);
+-
+-                              req->needBBT=0;
+-                              /* Just to be dead sure */
+-                              if (!(flashStatus & BCHP_NAND_INTFC_STATUS_CTLR_READY_MASK)) {
+-                                      printk("%s: Impossible, CTRL-READY already asserted\n", __FUNCTION__);
+-                                      BUG();
+-                              }
+-                              /* Check for flash write error, in which case tell process context thread to handle it */
+-                              if (flashStatus & 0x1) {
+-                                      req->needBBT = 1;
+-                                      gJobQ.needWakeUp= 1;
+-                                      req->opComplete = ISR_OP_NEED_WAR;
+-                                      wake_up(&gEduWaitQ);
+-                                      spin_unlock(&req->lock);
+-                                      spin_unlock_irqrestore(&gJobQ.lock, flags);
+-                                      return IRQ_HANDLED;
+-                              }
+-                              /* Nothing to be done when everything is OK 
+-                              *else
+-                              *       req->ret = brcmnand_edu_write_completion(req->mtd, req->buffer, req->oobarea, req->offset,
+-                              *               req->status, req->physAddr, rq->needBBT);
+-                              */
+-                      }
+-                      break;
+-              }
+-
+-              // Jop completes with no errors, queue next requests until Pending is set
+-              list_del(&req->list);
+-
+-              list_add_tail(&req->list, &gJobQ.availList);
+-              spin_unlock(&req->lock);
+-              
+-              submitted = brcmnand_isr_submit_job();
+-
+-              if (!submitted) { /* No more job to submit, we are done, wake up process context thread */
+-                      wake_up(&gEduWaitQ);
+-              }
+-
++      if (gEduIsrData.opComplete) {
++              ISR_disable_irq(gEduIsrData.intr);
++              wake_up_interruptible(&gEduWaitQ);
+       }
+-              
+       else {
+               /* Ack only the ones that show */
+-              uint32_t ack = req->status & req->intr;
++              uint32_t ack = gEduIsrData.status & gEduIsrData.intr;
+               
+-PRINTK("%s: opComp=0, intr=%08x, mask=%08x, expect=%08x, err=%08x, status=%08x, rd_data=%08x, intrMask=%08x, flashAddr=%08x, DRAM=%08x\n", __FUNCTION__, 
+-req->intr, req->mask, req->expect, req->error, req->status, rd_data, intrMask, req->flashAddr, req->dramAddr);
++printk("%s: opComp=0, intr=%08x, mask=%08x, expect=%08x, err=%08x, status=%08x, rd_data=%08x, intrMask=%08x, flashAddr=%08x, DRAM=%08x\n", __FUNCTION__, 
++gEduIsrData.intr, gEduIsrData.mask, gEduIsrData.expect, gEduIsrData.error, gEduIsrData.status, rd_data, intrMask, gEduIsrData.flashAddr, gEduIsrData.dramAddr);
+               // Just disable the ones that are triggered
+               ISR_disable_irq(ack);
+-              req->intr &= ~ack;
++              gEduIsrData.intr &= ~ack;
+-              if (req->intr) {
++              if (gEduIsrData.intr) {
+                       // Re-arm
+-                      ISR_enable_irq(req);
++                      ISR_enable_irq();
+               }
+               else {
+                       printk(KERN_ERR "%s: Lost interrupt\n", __FUNCTION__);
+                       BUG();
+               }
+-              spin_unlock(&req->lock);
+       }
+-      
+-      spin_unlock_irqrestore(&gJobQ.lock, flags);
+-      
+-PRINTK2("<== %s: \n", __FUNCTION__);
++      spin_unlock_irqrestore(&gEduIsrData.lock, flags);
+       return IRQ_HANDLED;
+ }
+-
+-
+-/*
+- * Called with no lock
+- * Wait until the Read Queue is empty
+- * Run in process context. 
+- * Return 0 if all jobs complete successfully
+- * Return error codes and abort if any job returned un-correctable errors.
+- */
+-int
+-ISR_wait_for_queue_completion(void)
++uint32_t ISR_wait_for_completion(void)
+ {
+       //uint32_t rd_data;
+-//volatile unsigned int c = 0xfedeadad;
+-      int ret = -ERESTARTSYS;
+-      int waitret;
++      int ret;
+       unsigned long to_jiffies = 3*HZ; /* 3 secs */
+-      //unsigned long cur_jiffies = jiffies;
+-      unsigned long expired = jiffies + to_jiffies;
+       int cmd;
+-      eduIsrNode_t* req;
+-      eduIsrNode_t saveReq;
+-      int submitted;
+       unsigned long flags;
+       
+-      /* Loop is for wait_event_interruptible_timeout */
+-      do {
+-              waitret = wait_event_timeout(gEduWaitQ, list_empty(&gJobQ.jobQ) || gJobQ.needWakeUp, to_jiffies);
+-              if (waitret == 0) { /* TimeOut */
+-                      ret = BRCMNAND_TIMED_OUT;
+-                      break;
+-              }
+-              spin_lock_irqsave(&gJobQ.lock, flags);
+-              if (gJobQ.needWakeUp) { /* Need to do process context WAR */                    
+-                      req = ISR_find_request(ISR_OP_NEED_WAR);
++      ret = wait_event_interruptible_timeout(gEduWaitQ, gEduIsrData.opComplete, to_jiffies);
+-                      if (!req) {
+-                              printk("%s: Cannot find job that need WAR\n", __FUNCTION__);
+-                              BUG();
+-                      }
++      spin_lock_irqsave(&gEduIsrData.lock, flags);
+-                      // Make a copy 
+-                      saveReq = *req;
++      cmd = gEduIsrData.cmd;
++      gEduIsrData.cmd = -1;
+-                      /* Mark the job as complete and free it */
+-                      req->opComplete = ISR_OP_COMPLETED;
+-                      gJobQ.needWakeUp = 0;
+-                      
+-                      // Job, with error, is now complete, remove it from queue, and submit next request
+-                      list_del(&req->list);
+-
+-                      list_add_tail(&req->list, &gJobQ.availList);
+-                      
+-                      spin_unlock(&req->lock);
+-
+-                      // req lock held inside ISR_find_request
+-                      switch (gJobQ.cmd) {
+-                      case EDU_READ:
+-                              ret = brcmnand_edu_read_completion(
+-                                                              saveReq.mtd, saveReq.buffer, saveReq.oobarea, saveReq.offset,
+-                                                              saveReq.status);
+-                              break;
+-                      case EDU_WRITE:
+-                              ret = brcmnand_edu_write_war(
+-                                                      saveReq.mtd, saveReq.buffer, saveReq.oobarea, saveReq.offset,
+-                                                      saveReq.status, saveReq.needBBT);
+-                              break;
+-                      default:
+-                              printk("%s: Unknown command %d\n", __FUNCTION__, gJobQ.cmd);
+-                              BUG();
+-                      }
+-                      if (ret == 0) { /* WAR worked */
+-                              // Submit next job (which is our dummy job in WAR)
+-                              submitted = brcmnand_isr_submit_job();
+-                      }
+-                      else {
+-                              eduIsrNode_t* tmp;
+-
+-                              // Abort queue, TBD
+-                              list_for_each_entry_safe(req, tmp, &gJobQ.jobQ, list) {
+-                                      list_del(&req->list);
+-
+-                                      list_add_tail(&req->list, &gJobQ.availList);
+-                              }
+-                      }
++      if (!gEduIsrData.opComplete && ret <= 0) {
++              ISR_disable_irq(gEduIsrData.intr);
++              if (ret == -ERESTARTSYS) {
++                      spin_unlock_irqrestore(&gEduIsrData.lock, flags);
++                      return (uint32_t) (ERESTARTSYS);  // Retry on Read
++              }       
++              else if (ret == 0) { 
++                      //gEduIsrData.opComplete = 1;
++                      printk("%s: DMA timedout\n", __FUNCTION__);
++                      spin_unlock_irqrestore(&gEduIsrData.lock, flags);
++                      return 0; // Timed Out
+               }
+-              else { // List is empty
+-                      ret = 0; // Loop exit condition
+-              }
+-              spin_unlock_irqrestore(&gJobQ.lock, flags);     
+-      } while ((ret == -ERESTARTSYS) && time_before(jiffies, expired));
+-      return ret;
++      
++              // DMA completes on Done or Error.
++              //rd_data = ISR_volatileRead(BCM_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_STATUS);
++      
++              printk("%s: EDU completes but Status is %08x\n", __FUNCTION__, gEduIsrData.status);
++              //rd_data = 0; // Treat as a timeout
++      }
++      spin_unlock_irqrestore(&gEduIsrData.lock, flags);
++      return gEduIsrData.status;
+ }
+-#if 0  //ndef CONFIG_MTD_BRCMNAND_ISR_QUEUE
+-
+-/*
+- * Wait for completion when not using queue
+- */
+-uint32_t ISR_wait_for_completion(void)
++uint32_t ISR_cache_is_valid(uint32_t clearMask)
+ {
+-      //uint32_t rd_data;
+-//volatile unsigned int c = 0xfedeadad;
+-      int ret = -ERESTARTSYS;
+-      unsigned long to_jiffies = 3*HZ; /* 3 secs */
+-      //unsigned long cur_jiffies = jiffies;
+-      unsigned long expired = jiffies + to_jiffies;
+-      int cmd;
+-      int retries = 2;
+-      //unsigned long flags;
+-//volatile unsigned int counter = 0xAABBCCDD;
+-//static int erestartsys = 0;
++      uint32_t rd_data = ISR_volatileRead(BCM_BASE_ADDRESS+BCHP_HIF_INTR2_CPU_STATUS);
++      unsigned long flags;
+-      
+-      while (ret == -ERESTARTSYS ) {
+-//printk("%s: jiffies=%08lx, expired=%08lx\n", __FUNCTION__, jiffies, expired);
+-              if (((retries--) < 0) || time_after(jiffies, expired)) {
+-                      ret = 0; // Timed out
+-                      return ERESTARTSYS;
+-              }
+-              else  {
+-                      // Recalculate TO, for retries
+-                      to_jiffies = expired - jiffies;
+-                      //ret = wait_event_interruptible_timeout(gEduWaitQ, gEduIsrData.opComplete, to_jiffies);
+-                      ret = wait_event_timeout(gEduWaitQ, gEduIsrData.opComplete, to_jiffies);
+-              }
++      /*
++       * Already there, no need to wait
++       */
++      if (rd_data & HIF_INTR2_CTRL_READY)
++              return rd_data;
+-PRINTK3("==>%s\n", __FUNCTION__);
+-              down(&gEduIsrData.lock);
+-
+-              cmd = gEduIsrData.cmd;
+-              gEduIsrData.cmd = -1;
+-
+-              if (!gEduIsrData.opComplete && ret <= 0) {
+-                      ISR_disable_irq(gEduIsrData.intr);
+-
+-                      if (ret == -ERESTARTSYS) {
+-                              up(&gEduIsrData.lock);
+-
+-//if (5 >= erestartsys++)
+-//printk("Pending signals: %08lx-%08lx-%08lx-%08lx\n", 
+-//current->pending.signal.sig[0], current->pending.signal.sig[1],current->pending.signal.sig[2], current->pending.signal.sig[3]);
+-                              continue;
+-                      }       
+-                      else if (ret == 0) { 
+-                              //gEduIsrData.opComplete = 1;
+-                              PRINTK("%s: DMA timedout\n", __FUNCTION__);
+-
+-                              up(&gEduIsrData.lock);
+-//printk("<==%s, ret=0 TimeOut\n", __FUNCTION__);
+-PRINTK4("<==%s, ret=0 TimeOut\n", __FUNCTION__);
+-
+-                              return 0; // Timed Out
+-                      }
+-
+-                      
+-                      
+-                      // DMA completes on Done or Error.
+-                      //rd_data = ISR_volatileRead(BCM_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_STATUS);
++      // Clear existing interrupt
++      ISR_volatileWrite(BCM_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_MASK_SET, clearMask);
++      
++       do {
++              spin_lock_irqsave(&gEduIsrData.lock, flags);
++              gEduIsrData.flashAddr = 0;
++              gEduIsrData.dramAddr = 0;
+               
+-PRINTK("%s: EDU completes but Status is %08x\n", __FUNCTION__, gEduIsrData.status);
+-                      //rd_data = 0; // Treat as a timeout
+-              }
++              /*
++               * Enable L2 Interrupt
++               */
++              gEduIsrData.cmd = NAND_CTRL_READY;
++              gEduIsrData.opComplete = 0;
++              gEduIsrData.status = 0;
++              
++              gEduIsrData.mask = HIF_INTR2_CTRL_READY;
++              gEduIsrData.expect = HIF_INTR2_CTRL_READY;
++              gEduIsrData.error = 0;
++              gEduIsrData.intr = HIF_INTR2_CTRL_READY;
+-              up(&gEduIsrData.lock);
+-      }
++              spin_unlock_irqrestore(&gEduIsrData.lock, flags);
+-      return gEduIsrData.status;
+-}
+-#endif
++              ISR_enable_irq();
++      
++              rd_data = ISR_wait_for_completion();
++      } while (rd_data != 0 && !(rd_data & HIF_INTR2_CTRL_READY));
++      return rd_data;
+-/*
+- * Since we cannot use the interrupt, or call schedule, we will have to busy-wait for controller ready.
+- * Executes in interrupt context
+- */
+-int 
+-ISR_cache_is_valid(void)
+-{
+-      uint32_t rd_data; 
+-      unsigned long expired = jiffies + HZ/10000; /* 100 usec, enough for any flash op to complete */
+-
+-      do {
+-              rd_data = ISR_volatileRead(BCM_BASE_ADDRESS+BCHP_HIF_INTR2_CPU_STATUS);
+-
+-      } while (!(rd_data & HIF_INTR2_CTRL_READY) && time_before(jiffies, expired));
+-      return (0 != (rd_data & HIF_INTR2_CTRL_READY)) ;
+ }
+ void ISR_init(void)
+ {
+-      int i, ret;
++      int ret;
+       uint32_t intrMask;
+-      unsigned long flags;
+-      //init_MUTEX(&gEduIsrData.lock); // Write lock
+-      spin_lock_init(&gJobQ.lock);            // Read queue lock
++      spin_lock_init(&gEduIsrData.lock);
+       
+-      INIT_LIST_HEAD(&gJobQ.jobQ);
+-      INIT_LIST_HEAD(&gJobQ.availList);
+-      /* Add all nodes from pool to avail list */
+-
+-      spin_lock_irqsave(&gJobQ.lock, flags);
+-PRINTK("%s: B4\n", __FUNCTION__);
+-ISR_print_avail_list();
+-      for (i=0; i<MAX_JOB_QUEUE_SIZE;i++) {
+-              eduIsrNode_t* e = &gEduIsrPool[i];
+-
+-              //init_MUTEX(&e->lock);
+-              list_add_tail(&e->list, &gJobQ.availList);
+-      }
+-      spin_unlock_irqrestore(&gJobQ.lock, flags);
+-PRINTK("%s: After\n", __FUNCTION__);
+-ISR_print_avail_list();
+-//BUG();
+-
+       // Mask all L2 interrupts
+       intrMask = ISR_volatileRead(BCM_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_MASK_STATUS);
+       ISR_volatileWrite(BCM_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_MASK_SET, ~intrMask);
+       BARRIER;
+-      ret = request_irq(BCM_LINUX_CPU_INTR1_IRQ, ISR_isr, SA_SHIRQ, "brcmnand EDU", &gJobQ);
++      ret = request_irq(BCM_LINUX_CPU_INTR1_IRQ, ISR_isr, SA_SHIRQ, "brcmnand EDU", &gEduIsrData);
+       if (ret) {
+               printk(KERN_INFO "%s: request_irq(BCM_LINUX_CPU_INTR1_IRQ) failed ret=%d.  Someone not sharing?\n", 
+                       __FUNCTION__, ret);
+       }
++      
+ }
+Index: drivers/mtd/brcmnand/eduproto.h
+===================================================================
+--- drivers/mtd/brcmnand/eduproto.h    (revision 1)
++++ drivers/mtd/brcmnand/eduproto.h    (working copy)
+@@ -77,7 +77,7 @@
+ extern void EDU_init(void);
+-extern int EDU_write(volatile const void*, uint32_t, uint32_t*);
++extern int EDU_write(volatile const void*, uint32_t);
+ extern int EDU_read(volatile void*, uint32_t);
+ extern uint32_t EDU_get_error_status_register(void);
+Index: drivers/mtd/brcmnand/brcmnand_priv.h
+===================================================================
+--- drivers/mtd/brcmnand/brcmnand_priv.h       (revision 1)
++++ drivers/mtd/brcmnand/brcmnand_priv.h       (working copy)
+@@ -38,27 +38,13 @@
+ #include <linux/wait.h>
+ #include <linux/spinlock.h>
+ #include <linux/interrupt.h>
+-#include <linux/list.h>
+ //#include "edu.h"
+ #endif
+-#define BRCMNAND_CORRECTABLE_ECC_ERROR                (1)
+-#define BRCMNAND_SUCCESS                                              (0)
+-#define BRCMNAND_UNCORRECTABLE_ECC_ERROR      (-1)
+-#define BRCMNAND_FLASH_STATUS_ERROR                   (-2)
+-#define BRCMNAND_TIMED_OUT                                    (-3)
+-
+-#ifdef CONFIG_MTD_BRCMNAND_EDU
+-#define BRCMEDU_CORRECTABLE_ECC_ERROR         (4)
+-#define BRCMEDU_UNCORRECTABLE_ECC_ERROR      (-4)
+-
+-#define  BRCMEDU_MEM_BUS_ERROR                                (-5)
+-
+-
++#if defined( CONFIG_MTD_BRCMNAND_EDU )
+ #define BRCMNAND_malloc(size) kmalloc(size, GFP_DMA)
+ #define BRCMNAND_free(addr) kfree(addr)
+-
+ #else
+ #define BRCMNAND_malloc(size) vmalloc(size)
+ #define BRCMNAND_free(addr) vfree(addr)
+@@ -77,125 +63,31 @@
+                                    "nop; nop; nop; nop; nop; nop;\n\t" \
+                                    ".set reorder\n\t")
+-/* 
+- * Right now we submit a full page Read for queueing, so with a 8KB page,
+- * and an ECC step of 512B, the queue depth is 16. Add 2 for dummy elements
+- * during EDU WAR
+- */
+-#if CONFIG_MTD_BRCMNAND_VERSION <=  CONFIG_MTD_BRCMNAND_VERS_3_3
+-#define MAX_NAND_PAGE_SIZE    (4<<10)
+-#else
+-#define MAX_NAND_PAGE_SIZE    (8<<10)
+-#endif
++typedef struct eduIsrData {
++      spinlock_t lock; // For SMP and future double buffering on Read.
++      int cmd;        // 1 == Read, 0 == Write
+-/* Max queue size is (PageSize/512B_ECCSize)+2 spare for WAR */
+-#define MAX_JOB_QUEUE_SIZE    ((MAX_NAND_PAGE_SIZE>>9))
+-
+-typedef enum {
+-      ISR_OP_QUEUED = 0, 
+-      ISR_OP_SUBMITTED = 1, 
+-      ISR_OP_NEED_WAR = 2,
+-      ISR_OP_COMPLETED = 3, 
+-      ISR_OP_TIMEDOUT = 4
+-} isrOpStatus_t;
+-
+-typedef struct eduIsrNode {
+-      struct list_head list;
+-      spinlock_t lock; // per Node update lock
+-      // int cmd;     // 1 == Read, 0 == Write
+-
+-      // ISR stuffs
+       uint32_t mask;  /* Clear status mask */
+       uint32_t expect;        /* Status on success */
+       uint32_t error; /* Status on error */
+       uint32_t intr;          /* Interrupt bits */
+       uint32_t status;        /* Status read during ISR.  There may be several interrupts before completion */
+-      isrOpStatus_t opComplete;       /* Completion status */
++      int opComplete; /* Completion criterium */
+-      /* Controller Level params (for queueing)  */
+-      struct mtd_info* mtd;
+-      void*   buffer;
+-      u_char*         oobarea;
+-      loff_t  offset;
+-      int             ret;
+-      int             needBBT;
++      /* For debugging only */
++      uint32_t flashAddr;
++      uint32_t dramAddr;
++} eduIsrData_t;
+-      /* EDU level params (for ISR) */
+-      uint32_t edu_ldw;
+-      uint32_t physAddr;
+-      uint32_t hif_intr2;
+-      uint32_t edu_status;
++extern eduIsrData_t gEduIsrData;
+-      int refCount;           /* Marked for re-use when refCount=0 */
+-      unsigned long expired; /* Time stamp for expiration, 3 secs from submission */
+-} eduIsrNode_t;
+-
+-/*
+- * Read/Write Job Q.
+- * Process one page at a time, and queue 512B sector Read or Write EDU jobs.
+- * ISR will wake up the process context thread iff
+- * 1-EDU reports an error, in which case the process context thread need to be awaken
+- *            in order to do WAR
+- * 2-Q is empty, in which case the page read/write op is complete.
+- */
+-typedef struct jobQ_t {
+-      struct list_head        jobQ;           /* Nodes queued for EDU jobs */
+-      struct list_head        availList;      /* Free Nodes */
+-      spinlock_t              lock;           /* Queues guarding spin lock */
+-      int                             needWakeUp;     /* Wake up Process context thread to do EDU WAR */
+-      int                             cmd;            /* 1 == Read, 0 == Write */
+-} isrJobQ_t;
+-
+-extern isrJobQ_t gJobQ; 
+-
+ void ISR_init(void);
+-/*
+- * Submit the first entry that is in queued state,
+- * assuming queue lock has been held by caller.
+- * 
+- * @doubleBuffering indicates whether we need to submit just 1 job or until EDU is full (double buffering)
+- * Return the number of job submitted for read.
+- *
+- * In current version (v3.3 controller), since EDU only have 1 register for EDU_ERR_STATUS,
+- * we can't really do double-buffering without losing the returned status of the previous read-op.
+- */
+-#undef EDU_DOUBLE_BUFFER_READ
+-
+-int brcmnand_isr_submit_job(void);
+-
+-eduIsrNode_t*  ISR_queue_read_request(struct mtd_info *mtd,
+-        void* buffer, u_char* oobarea, loff_t offset);
+-eduIsrNode_t* ISR_queue_write_request(struct mtd_info *mtd,
+-        const void* buffer, const u_char* oobarea, loff_t offset);
+-eduIsrNode_t*  ISR_push_request(struct mtd_info *mtd,
+-        void* buffer, u_char* oobarea, loff_t offset);
+-
+-
+-int brcmnand_edu_read_completion(struct mtd_info* mtd, 
+-        void* buffer, u_char* oobarea, loff_t offset, uint32_t intr_status);
+-
+-int brcmnand_edu_read_comp_intr(struct mtd_info* mtd, 
+-        void* buffer, u_char* oobarea, loff_t offset, uint32_t intr_status);
+-
+-#ifdef CONFIG_MTD_BRCMNAND_ISR_QUEUE
+-int brcmnand_edu_write_completion(struct mtd_info *mtd,
+-        const void* buffer, const u_char* oobarea, loff_t offset, uint32_t intr_status, 
+-        int needBBT);
+-#endif
+-eduIsrNode_t* ISR_find_request( isrOpStatus_t opStatus);
+-
+ uint32_t ISR_wait_for_completion(void);
++uint32_t ISR_cache_is_valid(uint32_t clearMask);
+-/*
+- *  wait for completion with read/write Queue
+- */
+-int ISR_wait_for_queue_completion(void);
+-
+-int ISR_cache_is_valid(void);
+-
+-static __inline__ uint32_t ISR_volatileRead(uint32_t addr)
++static inline uint32_t ISR_volatileRead(uint32_t addr)
+ {
+         volatile uint32_t* pAddr;
+         
+@@ -204,7 +96,7 @@
+         return *(uint32_t *)pAddr;
+ }
+-static __inline__ void ISR_volatileWrite(uint32_t addr, uint32_t data)
++static inline void ISR_volatileWrite(uint32_t addr, uint32_t data)
+ {
+         volatile uint32_t* pAddr;
+@@ -212,7 +104,7 @@
+         *pAddr = (volatile uint32_t)data;
+ }
+-static __inline__ void ISR_enable_irq(eduIsrNode_t* req)
++static inline void ISR_enable_irq(void)
+ {
+       uint32_t intrMask; 
+       //unsigned long flags;
+@@ -220,68 +112,42 @@
+       //spin_lock_irqsave(&gEduIsrData.lock, flags);
+       
+       // Clear status bits
+-      ISR_volatileWrite(BCM_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_CLEAR, req->mask);
++      ISR_volatileWrite(BCM_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_CLEAR, gEduIsrData.mask);
++#if 0
++      // Disable everything that may screw us up
++      intrMask = EDU_volatileRead(EDU_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_MASK_STATUS);
++      EDU_volatileWrite(EDU_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_MASK_SET, ~intrMask);
++PRINTK("%s-1: intrMask=%08x\n", __FUNCTION__, intrMask);
++
++      BARRIER;
++#endif
++
+       // Enable interrupt
+-      ISR_volatileWrite(BCM_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_MASK_CLEAR, req->intr);
++      ISR_volatileWrite(BCM_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_MASK_CLEAR, gEduIsrData.intr);
++#if 0 
++intrMask = EDU_volatileRead(EDU_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_MASK_STATUS);
++PRINTK("%s-2: intrMask=%08x\n", __FUNCTION__, intrMask);
++#endif
+       //spin_unlock_irqrestore(&gEduIsrData.lock, flags);
+ }
+-static __inline__ void ISR_disable_irq(uint32_t mask)
++static inline void ISR_disable_irq(uint32_t mask)
+ {
+       /* Disable L2 interrupts */
+       ISR_volatileWrite(BCM_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_MASK_SET, mask);
++      /* Clear L2 interrupts */
++      //EDU_volatileWrite(EDU_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_CLEAR, mask);
+ }
++#endif
+-/*
+- * For debugging
+- */
+-#ifdef DEBUG_ISR
+-static void __inline__
+-ISR_print_queue(void)
+-{
+-      eduIsrNode_t* req;
+-      //struct list_head* node;
+-      int i = 0;
+-      list_for_each_entry(req, &gJobQ.jobQ, list) {
+-              
+-              printk("i=%d, cmd=%d, offset=%08llx, flashAddr=%08x, opComp=%d, status=%08x\n",
+-                      i, gJobQ.cmd, req->offset, req->edu_ldw,req->opComplete, req->status);
+-              i++;
+-      }       
+-}
+-
+-static void __inline__
+-ISR_print_avail_list(void)
+-{
+-      eduIsrNode_t* req;
+-      //struct list_head* node;
+-      int i = 0;
+-
+-      printk("AvailList=%p, next=%p\n", &gJobQ.availList, gJobQ.availList.next);
+-      list_for_each_entry(req, &gJobQ.availList, list) {
+-              printk("i=%d, req=%p, list=%p\n", i, req, &req->list);
+-              i++;
+-      }       
+-}
+-#else
+-#define IS_print_queue()
+-#define ISR_print_avail_list()
+-#endif // DEBUG_ISR
+-
+-
+-#endif // CONFIG_MTD_BRCMNAND_USE_ISR
+-
+-
+-
+-
+ /**
+  * brcmnand_scan - [BrcmNAND Interface] Scan for the BrcmNAND device
+  * @param mtd         MTD device structure
+Index: drivers/mtd/brcmnand/edu.c
+===================================================================
+--- drivers/mtd/brcmnand/edu.c (revision 1)
++++ drivers/mtd/brcmnand/edu.c (working copy)
+@@ -37,7 +37,6 @@
+ #include <linux/mm.h>
+-#include <linux/dma-mapping.h>
+ #include <asm/page.h>
+@@ -134,11 +133,11 @@
+  * Returns 1 if OK
+  *            0 otherwise
+  */
+-int EDU_buffer_OK(volatile void* vaddr, int command)
++int EDU_buffer_OK(volatile void* vaddr)
+ {
+       unsigned long addr = (unsigned long) vaddr;
+-#if !defined(CONFIG_MIPS_BCM7440) && !defined(CONFIG_MIPS_BCM7601) && !defined(CONFIG_MIPS_BCM7635)
++#if !defined(CONFIG_MIPS_BCM7440) && !defined(CONFIG_MIPS_BCM7601)
+ // Requires 32byte alignment only of platforms other than 7440 and 7601 (and Dune)
+       if (addr & 0x1f) {
+               // Must be 32-byte-aligned
+@@ -155,14 +154,11 @@
+               return 0;
+       }
+ #endif
+-
+       else if (!(addr & KSEG0)) { 
+               // User Space
+               return 0;
+       }
+-      
+-
+       // TBD: Since we only enable block for MEM0, we should make sure that the physical
+       // address falls in MEM0.
+       
+@@ -170,13 +166,6 @@
+               // VM Address
+               return 0;
+       }
+-
+-#if 0 //def CONFIG_MIPS_BCM7420
+-      else if (command == EDU_WRITE && (addr & 0xff)) { // Write must be aligned on 256B
+-printk("Write must be aligned on 128B (addr=%08x)\n", addr);
+-              return 0;
+-      }
+-#endif
+       return 1;
+ }
+@@ -518,10 +507,6 @@
+  * Read data on success or error.
+  */
+-extern void 
+-dump_nand_regs(struct brcmnand_chip* chip, loff_t offset, uint32_t pa, int which);
+-#define MAX_DUMPS 10
+-extern int numDumps;
+ uint32_t EDU_poll(uint32_t address, uint32_t expect, uint32_t error, uint32_t mask)
+ {
+@@ -535,11 +520,6 @@
+       address, expect, mask, error);
+         __sync();
+         rd_data = EDU_volatileRead(address);
+-if (numDumps < MAX_DUMPS)
+- {
+- dump_nand_regs(NULL, 0, 0, numDumps++);
+- }
+-   
+ //edu_debug = 0;
+         
+         timeout = jiffies + msecs_to_jiffies(1000); // 3 sec timeout for now (testing)
+@@ -548,23 +528,18 @@
+ //     while ((rd_data & mask) != (expect & mask)) /* && (i<cnt) */
+        while (((rd_data & mask) != (expect & mask)) && !((rd_data & mask) & error))
+         {
+-
+                  if ( 0 /*(i %1000000) == 1 */) 
+                          {PRINTK("Polling addr=%08x, expect=%08x, mask=%08x!\n", address, expect, mask);
+                           PRINTK("EDU_poll read: %08x\n", rd_data);}
+                         
+                 //__sync(); //PLATFORM_IOFLUSH_WAR();
+                 rd_data = EDU_volatileRead(address);
+-
+-             // JR+ 2008-02-01 Allow other tasks to run while waiting
++                
++                // JR+ 2008-02-01 Allow other tasks to run while waiting
+                 //cond_resched();
+                 cond_resched();
+                 // JR- 2008-02-01 Allow other tasks to run while waiting
+-if (numDumps < MAX_DUMPS)
+- {
+- dump_nand_regs(NULL, 0, 0, numDumps++);
+- }
+-                   
++                
+                 i++;
+                 if(!time_before(jiffies, timeout))
+                 {
+@@ -662,7 +637,7 @@
+         // SUN_GISB_ARB_TIMER = 0x10000
+         EDU_volatileWrite(0xb040600c, 0x00010000);
+-#elif defined( CONFIG_MIPS_BCM7601 ) || defined( CONFIG_MIPS_BCM7635 )
++#elif defined( CONFIG_MIPS_BCM7601 )
+       {
+ #define ENABLE_256MB_GISB_WINDOW 0x1
+               volatile unsigned long* PCI_GEN_GISB_WINDOW_SIZE = 
+@@ -691,7 +666,7 @@
+       }
+ #elif defined( CONFIG_MIPS_BCM7420 )
+-      // Make sure that RTS grants some cycle to EDU, or we have to steal some from RR
++      // Make sure that RTS grant some cycle to EDU, or we have to steal some
+       {
+ #define BLOCKED_OUT 0x001fff00
+ #define RR_ENABLED    0x80   /* Bit 7 */
+@@ -708,29 +683,6 @@
+               volatile unsigned long* PCI_GEN_PCI_CTRL = 
+                       (volatile unsigned long*) KSEG1ADDR(0x10440104);
+               volatile unsigned long pci_gen_pci_ctrl;
+-
+-#if 0 // Block out MoCA
+-              volatile unsigned long* MEMC_0_1_CLIENT_INFO_59= 
+-                      (volatile unsigned long*) KSEG1ADDR(0x103b10f0);
+-              volatile unsigned long memc_client_59;
+-              volatile unsigned long* MEMC_0_1_CLIENT_INFO_62= 
+-                      (volatile unsigned long*) KSEG1ADDR(0x103b10fc);
+-              volatile unsigned long memc_client_62;
+-
+-              /* Bits 08-20 are all 1 == Blocked */
+-              memc_client_59 = *MEMC_0_1_CLIENT_INFO_59;
+-              printk("MEMC_0_1_CLIENT_INFO_59 Before=%08lx\n", memc_client_59);
+-              *MEMC_0_1_CLIENT_INFO_59 = memc_client_59|0x001fff00;
+-              *MEMC_0_1_CLIENT_INFO_59 &= ~RR_ENABLED;
+-              printk("MEMC_0_1_CLIENT_INFO_59 After blocked out=%08lx\n", *MEMC_0_1_CLIENT_INFO_59);
+-
+-              memc_client_62 = *MEMC_0_1_CLIENT_INFO_62;
+-              printk("MEMC_0_1_CLIENT_INFO_62 Before=%08lx\n", memc_client_62);
+-              *MEMC_0_1_CLIENT_INFO_62 = memc_client_62|0x001fff00;
+-              *MEMC_0_1_CLIENT_INFO_62 &= ~RR_ENABLED;
+-              printk("MEMC_0_1_CLIENT_INFO_62 After blocked out=%08lx\n", *MEMC_0_1_CLIENT_INFO_62);
+-              
+-#endif
+         
+               /* Bits 08-20 are all 1 == Blocked */
+               memc_client_17 = *MEMC_0_1_CLIENT_INFO_17;
+@@ -753,7 +705,6 @@
+                 pci_gen_pci_ctrl = *PCI_GEN_PCI_CTRL;
+                 pci_gen_pci_ctrl &= ~PARK_ON_MASK;
+                 pci_gen_pci_ctrl |= PARK_ON_EBI;
+-                EDU_volatileWrite(PCI_GEN_PCI_CTRL, pci_gen_pci_ctrl);
+       }
+ #endif
+@@ -771,50 +722,37 @@
+ //edu_debug = 0;
+ }
+-#ifndef CONFIG_MTD_BRCMNAND_ISR_QUEUE // batch mode
+-
+ /*
+  * THT: 07/31/08: This does not work.  One has to write the 512B Array from the NAND controller into 
+  * the EXT registers for it to work.  Will fix it when I come back.
+  */
+-int EDU_write(volatile const void* virtual_addr_buffer, 
+-      uint32_t external_physical_device_address,
+-      uint32_t* physAddr)
++int EDU_write(volatile const void* virtual_addr_buffer, uint32_t external_physical_device_address)
+ {
+-      //uint32_t  phys_mem;
++      uint32_t  phys_mem;
+       // uint32_t  rd_data;
+-      //unsigned long flags;
++      unsigned long flags;
+ edu_debug = gdebug;
+-
+-#if 0
+       phys_mem = EDU_virt_to_phys((void *)virtual_addr_buffer);
+-
+-#else
+-      // EDU is not a PCI device
+-      // THT: TBD: Need to adjust for cache line size here, especially on 7420.
+-      *physAddr = dma_map_single(NULL, virtual_addr_buffer, EDU_LENGTH_VALUE, DMA_TO_DEVICE);
+-#endif
+-
+-      if (!(*physAddr)) {
++      if (!phys_mem) {
+               return (-1);
+       }
+ //edu_debug = 4;
+       
+-//printk("EDU_write: vBuff: %p physDev: %08x, PA=%08x\n", 
+-//    virtual_addr_buffer, external_physical_device_address, phys_mem);
++//PRINTK("EDU_write: vBuff: %p physDev: %08x, PA=%08x\n", 
++//virtual_addr_buffer, external_physical_device_address, phys_mem);
+ #ifdef CONFIG_MTD_BRCMNAND_USE_ISR
+-      down(&gEduIsrData.lock);
+-      gEduIsrData.edu_ldw = external_physical_device_address;
+-      gEduIsrData.physAddr = *physAddr;
++      spin_lock_irqsave(&gEduIsrData.lock, flags);
++      gEduIsrData.flashAddr = external_physical_device_address;
++      gEduIsrData.dramAddr = phys_mem;
+       
+       /*
+        * Enable L2 Interrupt
+        */
+       gEduIsrData.cmd = EDU_WRITE;
+-      gEduIsrData.opComplete = ISR_OP_SUBMITTED;
++      gEduIsrData.opComplete = 0;
+       gEduIsrData.status = 0;
+       
+       /* On write we wait for both DMA done|error and Flash Status */
+@@ -823,8 +761,8 @@
+       gEduIsrData.error = HIF_INTR2_EDU_ERR;
+       gEduIsrData.intr = HIF_INTR2_EDU_DONE_MASK|HIF_INTR2_CTRL_READY;
+-      up(&gEduIsrData.lock);
+-      ISR_enable_irq(&gEduIsrData);
++      spin_unlock_irqrestore(&gEduIsrData.lock, flags);
++      ISR_enable_irq();
+ #else
+       EDU_volatileWrite(EDU_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_CLEAR, HIF_INTR2_EDU_CLEAR_MASK);
+@@ -838,17 +776,15 @@
+       //EDU_waitForNoPendingAndActiveBit();
+-//    Already covered by dma_map_single()
+-//    dma_cache_wback((unsigned long) virtual_addr_buffer, EDU_LENGTH_VALUE);
+-      EDU_issue_command(*physAddr, external_physical_device_address, EDU_WRITE); /* 1: Is a Read, 0 Is a Write */
++      dma_cache_wback((unsigned long) virtual_addr_buffer, 512);
++      EDU_issue_command(phys_mem, external_physical_device_address, EDU_WRITE); /* 1: Is a Read, 0 Is a Write */
++
+ //      rd_data = EDU_poll(EDU_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_STATUS, HIF_INTR2_EDU_DONE, HIF_INTR2_EDU_DONE);
+ //      EDU_volatileWrite(EDU_BASE_ADDRESS  + EDU_DONE, 0x00000000);
+ //edu_debug = 0;
+-//printk("<-- %s\n", __FUNCTION__);
+-
+       return 0;
+ }
+@@ -863,7 +799,7 @@
+       // uint32_t  rd_data;
+       int ret;
+       int retries = 4;
+-      //unsigned long flags;
++      unsigned long flags;
+               
+ static int toggle;
+@@ -877,31 +813,33 @@
+ #endif
+ //PRINTK("--> %s: vAddr=%p, ext=%08x\n", __FUNCTION__, virtual_addr_buffer, external_physical_device_address);
+-#if 0
+       phys_mem = EDU_virt_to_phys((void *)virtual_addr_buffer);
+       if (!phys_mem) {
+               return (-1);
+       }
+-#else
+-      // THT: TBD: Need to adjust for cache line size here, especially on 7420.
+-      phys_mem = dma_map_single(NULL, virtual_addr_buffer, EDU_LENGTH_VALUE, DMA_FROM_DEVICE);
+-#endif
+ if (edu_debug) PRINTK("EDU_read: vBuff: %p physDev: %08x, PA=%08x\n", 
+ virtual_addr_buffer, external_physical_device_address, phys_mem);
+  #ifdef CONFIG_MTD_BRCMNAND_USE_ISR
+-      down(&gEduIsrData.lock);
+-      gEduIsrData.edu_ldw = external_physical_device_address;
+-      gEduIsrData.physAddr = phys_mem;
++      spin_lock_irqsave(&gEduIsrData.lock, flags);
++      gEduIsrData.flashAddr = external_physical_device_address;
++      gEduIsrData.dramAddr = phys_mem;
+       
+       /*
+        * Enable L2 Interrupt
+        */
+       gEduIsrData.cmd = EDU_READ;
+-      gEduIsrData.opComplete = ISR_OP_SUBMITTED;
++      gEduIsrData.opComplete = 0;
+       gEduIsrData.status = 0;
++#if 0
++      /* On Read we only wait for DMA completion or Error */
++      gEduIsrData.mask = HIF_INTR2_EDU_CLEAR_MASK|HIF_INTR2_CTRL_READY;
++      gEduIsrData.expect = HIF_INTR2_EDU_DONE;
++      gEduIsrData.error = HIF_INTR2_EDU_ERR;
++      gEduIsrData.intr = HIF_INTR2_EDU_DONE_MASK;
++#endif
+       // We must also wait for Ctlr_Ready, otherwise the OOB is not correct, since we read the OOB bytes off the controller
+@@ -910,9 +848,9 @@
+       // On error we also want Ctrlr-Ready because for COR ERR, the Hamming WAR depends on the OOB bytes.
+       gEduIsrData.error = HIF_INTR2_EDU_ERR;
+       gEduIsrData.intr = HIF_INTR2_EDU_DONE_MASK;
+-      up(&gEduIsrData.lock);
++      spin_unlock_irqrestore(&gEduIsrData.lock, flags);
+       
+-      ISR_enable_irq(&gEduIsrData);
++      ISR_enable_irq();
+ #else
+         EDU_volatileWrite(EDU_BASE_ADDRESS  + BCHP_HIF_INTR2_CPU_CLEAR, HIF_INTR2_EDU_CLEAR_MASK);
+@@ -928,7 +866,29 @@
+         //EDU_volatileWrite(EDU_BASE_ADDRESS  + EDU_DONE, 0x00000000);
+         EDU_reset_done();
++#if 0
++        if( (EDU_volatileRead(EDU_BASE_ADDRESS  + EDU_DONE) && 0x00000003) != 0)
++        {
++                PRINTK("EDU_DONE != 0!!!\n");
++        }
++#endif
+         EDU_volatileWrite(EDU_BASE_ADDRESS  + EDU_ERR_STATUS, 0x00000000);
++#if 0
++        if( EDU_volatileRead(EDU_BASE_ADDRESS  + EDU_ERR_STATUS) != 0)
++        {
++                PRINTK("EDU_ERR_STATUS != 0!!!\n");
++        }
++
++#endif
++#if 1 //ndef CONFIG_BMIPS4380
++       dma_cache_inv((unsigned long) virtual_addr_buffer, EDU_LENGTH_VALUE);
++#else
++      {
++              extern void (*flush_cache_all)(void);
++
++              flush_cache_all();
++      }
++#endif
+         
+        EDU_volatileWrite(EDU_BASE_ADDRESS  + EDU_LENGTH, EDU_LENGTH_VALUE);
+@@ -956,13 +916,8 @@
+               HIF_INTR2_EDU_DONE_MASK);
+ #endif
+-      (void) dma_unmap_single(NULL, phys_mem, EDU_LENGTH_VALUE, DMA_FROM_DEVICE);
+-
+ if (edu_debug) PRINTK("<-- %s ret=%08x\n", __FUNCTION__, ret);
+ //edu_debug = 0;
+ if (edu_debug > 3 && ret) {show_stack(current,NULL);dump_stack();}
+         return ret;
+ } 
+-
+-#endif // Batch mode
+-
diff --git a/recipes/linux/linux-vusolo/linux-vusolo_nand4.patch b/recipes/linux/linux-vusolo/linux-vusolo_nand4.patch
new file mode 100644 (file)
index 0000000..25bfb76
--- /dev/null
@@ -0,0 +1,58 @@
+Index: drivers/mtd/brcmnand/bcm7xxx-nand.c
+===================================================================
+--- drivers/mtd/brcmnand/bcm7xxx-nand.c        (revision 1)
++++ drivers/mtd/brcmnand/bcm7xxx-nand.c        (working copy)
+@@ -149,20 +149,33 @@
+ static struct mtd_partition bcm7XXX_no_xor_partition[] = 
+ {
+-      /* XOR disabled: Everything is shifted down 4MB */
+-      { name: N_ROOTFS,       offset: 0x00400000,                     size: DEFAULT_ROOTFS_SIZE - (DEFAULT_BBT0_SIZE_MB <<20) },      // Less 1MB for BBT
+-      { name: N_ALL,          offset: 0,                                      size: DEFAULT_ROOTFS_SIZE - (DEFAULT_BBT0_SIZE_MB <<20) },
+-      { name: N_KERNEL,       offset: 0x00b00000,                     size: 4<<20 }, 
+-      /* BBT0 1MB not mountable by anyone */
+-
+-      /* Following partitions only present on flash with size > 512MB */
+-      { name: N_DATA,         offset: 0x20000000,                     size: 0 },
+-      /* BBT1 4MB not mountable by anyone */
+-      {name: NULL,            offset: 0,                                      size: 0}        /* End marker */
++      { name: N_ROOTFS,       offset: 0,                                      size: DEFAULT_ROOTFS_SIZE },    
++#ifdef CONFIG_MTD_ECM_PARTITION
++      { name: N_AVAIL1,       offset: DEFAULT_ROOTFS_SIZE,    size: DEFAULT_AVAIL1_SIZE },
++      { name: N_OCAP,         offset: DEFAULT_ROOTFS_SIZE+DEFAULT_AVAIL1_SIZE,        size: DEFAULT_OCAP_SIZE },
++#endif
++#ifdef USE_SPLASH
++      { name: N_KERNEL,       offset: 0x00200000,                     size: 4<<20 },
++      { name: "boot",         offset: 0x00600000,                     size: 4<<20 },
++      { name: "bootimg",      offset: 0x00A00000,                     size: 2<<20 },
++#else
++      { name: N_KERNEL,       offset: 0x00400000,                     size: 4<<20 },
++      { name: "boot",         offset: 0x07800000,                     size: 4<<20 },
++#endif
++      { name: N_CFE,          offset: 0x07C00000,                     size: 1<<20 },
++      { name: "mac",          offset: 0x07D00000,                     size: 1<<19 },
++      { name: "env",          offset: 0x07D80000,                     size: 1<<19 },
++      { name: N_NVM,          offset: 0x07E00000,                     size: 1<<20 },
++      /* BBT 1MB not mountable by anyone */
++      { name: N_DATA,         offset: 0x20000000,             size: 0 },
++/* Add 1 extra place-holder partition for splash, and a safety guard element */
++      {name: NULL, offset: 0, size: 0},
++      {name: NULL, offset: 0, size: 0}
+ };
+ static struct mtd_partition bcm7XXX_new_partition[] = 
+ {
++
+       { name: N_ROOTFS,       offset: 0,                                      size: DEFAULT_ROOTFS_SIZE },    
+       { name: N_ALL,          offset: 0x0,                                    size: DEFAULT_ROOTFS_SIZE - (DEFAULT_BBT0_SIZE_MB <<20) },
+       { name: N_KERNEL,       offset: 0x00800000,                     size: 4<<20 },
+@@ -267,7 +280,8 @@
+               if (device_size(mtd) <= (512ULL <<20)) {
+                       bcm7XXX_nand_parts[ALL_PART].size = 
+                               device_size(mtd) - (uint64_t) (DEFAULT_BBT0_SIZE_MB<<20);
+-                      *numParts = 3;
++//                    *numParts = 3;
++                      *numParts = 7;
+               } 
+               else {
+                       bcm7XXX_nand_parts[ALL_PART].size = ((512-DEFAULT_BBT1_SIZE_MB)<<20);
diff --git a/recipes/linux/linux-vusolo/linux-vusolo_resource.patch b/recipes/linux/linux-vusolo/linux-vusolo_resource.patch
new file mode 100644 (file)
index 0000000..1f1493f
--- /dev/null
@@ -0,0 +1,14 @@
+Index: include/linux/resource.h
+===================================================================
+--- include/linux/resource.h   (revision 1)
++++ include/linux/resource.h   (working copy)
+@@ -62,7 +62,8 @@
+  * THT: 8MB is unreasonably high for embedded systems,
+  * for which, by default, only 32MB is allocated to the kernel
+  */
+-#define _STK_LIM      (1<<20)
++/* #define _STK_LIM   (1<<20) */
++#define _STK_LIM      (4<<20)
+ #else
+ #define _STK_LIM      (8*1024*1024)
diff --git a/recipes/linux/linux-vusolo/linux-vusolo_romblock.patch b/recipes/linux/linux-vusolo/linux-vusolo_romblock.patch
new file mode 100644 (file)
index 0000000..988dca9
--- /dev/null
@@ -0,0 +1,12 @@
+Index: arch/mips/Kconfig
+===================================================================
+--- arch/mips/Kconfig  (revision 1)
++++ arch/mips/Kconfig  (working copy)
+@@ -429,7 +429,6 @@
+       select BRCM_SCM_L2
+       select MTD_BRCMNAND
+       select MTD_BRCMNAND_VERIFY_WRITE
+-      select MTD_BLOCK_ROMBLOCK
+ config MIPS_BCM7440BX
+       bool "Support for BCM97440Bx with NOR flash"
diff --git a/recipes/linux/linux-vusolo/linux-vusolo_serial.patch b/recipes/linux/linux-vusolo/linux-vusolo_serial.patch
new file mode 100644 (file)
index 0000000..20db08b
--- /dev/null
@@ -0,0 +1,17 @@
+Index: include/asm-mips/serial.h
+===================================================================
+--- include/asm-mips/serial.h  (revision 1)
++++ include/asm-mips/serial.h  (working copy)
+@@ -130,8 +130,10 @@
+ #elif defined(CONFIG_MIPS_BCM7440A0) || defined(CONFIG_MIPS_BCM7325)
+ // 7440A0 uses UARTB as default UART.  Hopefully this will be fixed in a later revision.
+ #define BRCM_UART_PORT_DEFNS                          \
+-      _BRCM_16550_INIT(BRCM_SERIAL1_IRQ, BRCM_SERIAL1_BASE),      \
+-      _BRCM_16550_INIT(BRCM_SERIAL2_IRQ, BRCM_SERIAL2_BASE),  
++      _BRCM_16550_INIT(BRCM_SERIAL1_IRQ, BRCM_SERIAL1_BASE),
++
++//    _BRCM_16550_INIT(BRCM_SERIAL1_IRQ, BRCM_SERIAL1_BASE),      \
++//    _BRCM_16550_INIT(BRCM_SERIAL2_IRQ, BRCM_SERIAL2_BASE),  
+       
+ #elif defined(CONFIG_MIPS_BCM7401B0) || defined(CONFIG_MIPS_BCM7402) || \
+       defined(CONFIG_MIPS_BCM7401C0) || defined(CONFIG_MIPS_BCM7403A0)
diff --git a/recipes/linux/linux-vusolo/linux_vusolo_arch_makefile.patch b/recipes/linux/linux-vusolo/linux_vusolo_arch_makefile.patch
new file mode 100644 (file)
index 0000000..76fec3f
--- /dev/null
@@ -0,0 +1,24 @@
+Index: arch/mips/Makefile
+===================================================================
+--- arch/mips/Makefile (revision 1)
++++ arch/mips/Makefile (working copy)
+@@ -18,15 +18,15 @@
+ # Select the object file format to substitute into the linker script.
+ #
+ ifdef CONFIG_CPU_LITTLE_ENDIAN
+-32bit-tool-prefix     = mipsel-linux-
+-64bit-tool-prefix     = mips64el-linux-
++32bit-tool-prefix     = mipsel-oe-linux-
++64bit-tool-prefix     = mips64el-oe-linux-
+ 32bit-bfd             = elf32-tradlittlemips
+ 64bit-bfd             = elf64-tradlittlemips
+ 32bit-emul            = elf32ltsmip
+ 64bit-emul            = elf64ltsmip
+ else
+-32bit-tool-prefix     = mips-linux-
+-64bit-tool-prefix     = mips64-linux-
++32bit-tool-prefix     = mips-oe-linux-
++64bit-tool-prefix     = mips64-oe-linux-
+ 32bit-bfd             = elf32-tradbigmips
+ 64bit-bfd             = elf64-tradbigmips
+ 32bit-emul            = elf32btsmip
diff --git a/recipes/linux/linux-vusolo/stblinux-2.6.18.makefile.patch b/recipes/linux/linux-vusolo/stblinux-2.6.18.makefile.patch
new file mode 100644 (file)
index 0000000..0997ae1
--- /dev/null
@@ -0,0 +1,12 @@
+--- stblinux-2.6.18.org/Makefile       2008-10-03 06:15:18.000000000 +0900
++++ stblinux-2.6.18/Makefile   2009-03-06 20:34:04.000000000 +0900
+@@ -867,7 +867,8 @@
+ endef
+ define filechk_version.h
+-      (echo \#define LINUX_VERSION_CODE $(shell                             \
++      (echo \#define UTS_RELEASE \"$(KERNELRELEASE)\"; \
++      echo \#define LINUX_VERSION_CODE $(shell                             \
+       expr $(VERSION) \* 65536 + $(PATCHLEVEL) \* 256 + $(SUBLEVEL));     \
+       echo '#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))';)
+ endef
diff --git a/recipes/linux/linux-vusolo/vusolo_defconfig b/recipes/linux/linux-vusolo/vusolo_defconfig
new file mode 100644 (file)
index 0000000..47cd95e
--- /dev/null
@@ -0,0 +1,1473 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.18-6.6
+# Mon Mar 23 16:50:00 2009
+#
+CONFIG_MIPS=y
+
+#
+# Machine selection
+#
+# CONFIG_MIPS_BCM3548BX_SPI is not set
+# CONFIG_MIPS_BCM3548BX_NAND is not set
+# CONFIG_MIPS_BCM3563CX is not set
+# CONFIG_MIPS_BCM3563CX_DDR1 is not set
+# CONFIG_MIPS_BCM3563CX_NAND is not set
+# CONFIG_MIPS_BCM7038CX is not set
+# CONFIG_MIPS_BCM7118AX is not set
+# CONFIG_MIPS_BCM7118AX_NAND is not set
+# CONFIG_MIPS_BCM7118CX is not set
+# CONFIG_MIPS_BCM7118CX_NAND is not set
+# CONFIG_MIPS_BCM7405BX is not set
+# CONFIG_MIPS_BCM7405DX is not set
+# CONFIG_MIPS_BCM97459BX is not set
+# CONFIG_MIPS_BCM7405BX_NAND is not set
+# CONFIG_MIPS_BCM7405DX_NAND is not set
+# CONFIG_MIPS_BCM97459BX_NAND is not set
+# CONFIG_MIPS_BCM7335BX is not set
+# CONFIG_MIPS_BCM7336AX is not set
+# CONFIG_MIPS_BCM7420AX is not set
+# CONFIG_MIPS_BCM97456DX is not set
+# CONFIG_MIPS_BCM7400DX is not set
+# CONFIG_MIPS_BCM7400DX_NAND is not set
+# CONFIG_MIPS_BCM97456DX_NAND is not set
+# CONFIG_MIPS_BCM97455CX is not set
+# CONFIG_MIPS_BCM97455CX_NAND is not set
+# CONFIG_MIPS_BCM7401CX is not set
+# CONFIG_MIPS_BCM7401CX_NAND is not set
+# CONFIG_MIPS_BCM97401CX_SW is not set
+# CONFIG_MIPS_BCM97458AX is not set
+# CONFIG_MIPS_BCM97458AX_NAND is not set
+# CONFIG_MIPS_BCM7402CX is not set
+# CONFIG_MIPS_BCM7402CX_NAND is not set
+# CONFIG_MIPS_BCM7454 is not set
+# CONFIG_MIPS_BCM7403AX is not set
+# CONFIG_MIPS_BCM7403AX_NAND is not set
+# CONFIG_MIPS_BCM7325BX is not set
+CONFIG_MIPS_BCM7325BX_NAND=y
+# CONFIG_MIPS_BCM7440BX is not set
+# CONFIG_MIPS_BCM7440BX_NAND is not set
+# CONFIG_MIPS_BCM7443AX is not set
+# CONFIG_MIPS_BCM7601BX_NAND is not set
+# CONFIG_MIPS_MTX1 is not set
+# CONFIG_MIPS_BOSPORUS is not set
+# CONFIG_MIPS_PB1000 is not set
+# CONFIG_MIPS_PB1100 is not set
+# CONFIG_MIPS_PB1500 is not set
+# CONFIG_MIPS_PB1550 is not set
+# CONFIG_MIPS_PB1200 is not set
+# CONFIG_MIPS_DB1000 is not set
+# CONFIG_MIPS_DB1100 is not set
+# CONFIG_MIPS_DB1500 is not set
+# CONFIG_MIPS_DB1550 is not set
+# CONFIG_MIPS_DB1200 is not set
+# CONFIG_MIPS_MIRAGE is not set
+# CONFIG_BASLER_EXCITE is not set
+# CONFIG_MIPS_COBALT is not set
+# CONFIG_MACH_DECSTATION is not set
+# CONFIG_MIPS_EV64120 is not set
+# CONFIG_MIPS_EV96100 is not set
+# CONFIG_MIPS_IVR is not set
+# CONFIG_MIPS_ITE8172 is not set
+# CONFIG_MACH_JAZZ is not set
+# CONFIG_LASAT is not set
+# CONFIG_MIPS_ATLAS is not set
+# CONFIG_MIPS_MALTA is not set
+# CONFIG_MIPS_SEAD is not set
+# CONFIG_WR_PPMC is not set
+# CONFIG_MIPS_SIM is not set
+# CONFIG_MOMENCO_JAGUAR_ATX is not set
+# CONFIG_MOMENCO_OCELOT is not set
+# CONFIG_MOMENCO_OCELOT_3 is not set
+# CONFIG_MOMENCO_OCELOT_C is not set
+# CONFIG_MOMENCO_OCELOT_G is not set
+# CONFIG_MIPS_XXS1500 is not set
+# CONFIG_PNX8550_V2PCI is not set
+# CONFIG_PNX8550_JBS is not set
+# CONFIG_DDB5477 is not set
+# CONFIG_MACH_VR41XX is not set
+# CONFIG_PMC_YOSEMITE is not set
+# CONFIG_QEMU is not set
+# CONFIG_MARKEINS is not set
+# CONFIG_SGI_IP22 is not set
+# CONFIG_SGI_IP27 is not set
+# CONFIG_SGI_IP32 is not set
+# CONFIG_SIBYTE_BIGSUR is not set
+# CONFIG_SIBYTE_SWARM is not set
+# CONFIG_SIBYTE_SENTOSA is not set
+# CONFIG_SIBYTE_RHONE is not set
+# CONFIG_SIBYTE_CARMEL is not set
+# CONFIG_SIBYTE_PTSWARM is not set
+# CONFIG_SIBYTE_LITTLESUR is not set
+# CONFIG_SIBYTE_CRHINE is not set
+# CONFIG_SIBYTE_CRHONE is not set
+# CONFIG_SNI_RM200_PCI is not set
+# CONFIG_TOSHIBA_JMR3927 is not set
+# CONFIG_TOSHIBA_RBTX4927 is not set
+# CONFIG_TOSHIBA_RBTX4938 is not set
+CONFIG_BRCM_BUILD_TARGET="unknown"
+CONFIG_LONG_LONG_SUPPORT=y
+CONFIG_BRCM_COMMON_PCI=y
+# CONFIG_MIPS_BCM_NDVD is not set
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_FIND_NEXT_BIT=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
+CONFIG_DMA_NONCOHERENT=y
+CONFIG_DMA_NEED_PCI_MAP_STATE=y
+# CONFIG_CPU_BIG_ENDIAN is not set
+CONFIG_CPU_LITTLE_ENDIAN=y
+CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
+CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
+CONFIG_IRQ_CPU=y
+CONFIG_MIPS_BRCM97XXX=y
+# CONFIG_BMIPS3300 is not set
+# CONFIG_BMIPS4380 is not set
+# CONFIG_BMIPS5000 is not set
+# CONFIG_MTI_R5K is not set
+# CONFIG_MTI_R24K is not set
+CONFIG_MTI_R34K=y
+CONFIG_BRCM_SCM_L2=y
+CONFIG_MIPS_BCM7325B0=y
+CONFIG_MIPS_BCM7325=y
+CONFIG_MIPS_BRCM=y
+# CONFIG_BRCM_7XXX_SERIAL is not set
+CONFIG_SERIAL=y
+CONFIG_BRCM_SKIP_CHECK_BOOTROM=y
+CONFIG_MIPS_L1_CACHE_SHIFT=7
+CONFIG_SYS_SUPPORTS_PM=y
+
+#
+# Power management
+#
+CONFIG_BRCM_PM=y
+
+#
+# CPU selection
+#
+# CONFIG_CPU_MIPS32_R1 is not set
+CONFIG_CPU_MIPS32_R2=y
+# CONFIG_CPU_MIPS64_R1 is not set
+# CONFIG_CPU_MIPS64_R2 is not set
+# CONFIG_CPU_R3000 is not set
+# CONFIG_CPU_TX39XX is not set
+# CONFIG_CPU_VR41XX is not set
+# CONFIG_CPU_R4300 is not set
+# CONFIG_CPU_R4X00 is not set
+# CONFIG_CPU_TX49XX is not set
+# CONFIG_CPU_R5000 is not set
+# CONFIG_CPU_R5432 is not set
+# CONFIG_CPU_R6000 is not set
+# CONFIG_CPU_NEVADA is not set
+# CONFIG_CPU_R8000 is not set
+# CONFIG_CPU_R10000 is not set
+# CONFIG_CPU_RM7000 is not set
+# CONFIG_CPU_RM9000 is not set
+# CONFIG_CPU_SB1 is not set
+CONFIG_SYS_HAS_CPU_MIPS32_R2=y
+CONFIG_CPU_MIPS32=y
+CONFIG_CPU_MIPSR2=y
+CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
+CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
+
+#
+# Kernel type
+#
+CONFIG_32BIT=y
+# CONFIG_64BIT is not set
+CONFIG_PAGE_SIZE_4KB=y
+# CONFIG_PAGE_SIZE_8KB is not set
+# CONFIG_PAGE_SIZE_16KB is not set
+# CONFIG_PAGE_SIZE_64KB is not set
+CONFIG_BOARD_SCACHE=y
+CONFIG_MIPS_CPU_SCACHE=y
+CONFIG_CPU_HAS_PREFETCH=y
+CONFIG_MIPS_MT_DISABLED=y
+# CONFIG_MIPS_MT_SMTC is not set
+# CONFIG_MIPS_MT_SMP is not set
+# CONFIG_MIPS_VPE_LOADER is not set
+CONFIG_SYS_SUPPORTS_MULTITHREADING=y
+# CONFIG_64BIT_PHYS_ADDR is not set
+CONFIG_CPU_HAS_LLSC=y
+CONFIG_CPU_HAS_SYNC=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_CPU_SUPPORTS_HIGHMEM=y
+CONFIG_ARCH_FLATMEM_ENABLE=y
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+# CONFIG_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4
+# CONFIG_RESOURCES_64BIT is not set
+# CONFIG_HZ_48 is not set
+# CONFIG_HZ_100 is not set
+# CONFIG_HZ_128 is not set
+# CONFIG_HZ_250 is not set
+# CONFIG_HZ_256 is not set
+CONFIG_HZ_1000=y
+# CONFIG_HZ_1024 is not set
+CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
+CONFIG_HZ=1000
+CONFIG_PREEMPT_NONE=y
+# CONFIG_PREEMPT_VOLUNTARY is not set
+# CONFIG_PREEMPT is not set
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+# CONFIG_RELAY is not set
+CONFIG_INITRAMFS_SOURCE=""
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_EMBEDDED=y
+CONFIG_SYSCTL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SHMEM=y
+CONFIG_SLAB=y
+# CONFIG_KLOB is not set
+# CONFIG_VMALLOC_NOGUARD is not set
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+# CONFIG_SLOB is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+
+#
+# Block layer
+#
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+CONFIG_DEFAULT_AS=y
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="anticipatory"
+
+#
+# Bus options (PCI, PCMCIA, EISA, ISA, TC)
+#
+CONFIG_HW_HAS_PCI=y
+CONFIG_PCI=y
+CONFIG_MMU=y
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# PCI Hotplug Support
+#
+# CONFIG_HOTPLUG_PCI is not set
+
+#
+# Executable file formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_MISC is not set
+CONFIG_TRAD_SIGNALS=y
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+# CONFIG_XFRM_USER is not set
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+
+#CONFIG_IP_PNP=y
+#CONFIG_IP_PNP_DHCP=y
+#CONFIG_IP_PNP_BOOTP=y
+#CONFIG_IP_PNP_RARP=y
+#
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_IP_MROUTE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
+# CONFIG_INET_TUNNEL is not set
+CONFIG_INET_XFRM_MODE_TRANSPORT=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_BIC=y
+# CONFIG_IPV6 is not set
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL is not set
+# CONFIG_NETWORK_SECMARK is not set
+# CONFIG_NETFILTER is not set
+
+#
+# DCCP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP is not set
+
+#
+# TIPC Configuration (EXPERIMENTAL)
+#
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+# CONFIG_IEEE80211 is not set
+CONFIG_WIRELESS_EXT=y
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=m
+# CONFIG_SYS_HYPERVISOR is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+# CONFIG_CONNECTOR is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_MTD_BLOCK_ROMBLOCK is not set
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+# CONFIG_MTD_CFI is not set
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_PMC551 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+
+#
+# NAND Flash Device Drivers
+#
+# CONFIG_MTD_NAND is not set
+CONFIG_MTD_BRCMNAND=y
+CONFIG_MTD_BRCMNAND_VERIFY_WRITE=y
+CONFIG_MTD_BRCMNAND_VERSION=3
+CONFIG_MTD_BRCMNAND_CORRECTABLE_ERR_HANDLING=y
+#CONFIG_MTD_BRCMNAND_USE_ISR=y
+
+#
+# OneNAND Flash Device Drivers
+#
+# CONFIG_MTD_ONENAND is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+
+#
+# Block devices
+#
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+# CONFIG_BLK_DEV_UMEM is not set
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=y
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_SX8 is not set
+# CONFIG_BLK_DEV_UB is not set
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_BLK_DEV_INITRD is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=y
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_CHR_DEV_OSST is not set
+CONFIG_BLK_DEV_SR=m
+# CONFIG_BLK_DEV_SR_VENDOR is not set
+CONFIG_CHR_DEV_SG=y
+# CONFIG_CHR_DEV_SCH is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+# CONFIG_SCSI_MULTI_LUN is not set
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+
+#
+# SCSI Transport Attributes
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_ATTRS is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
+# CONFIG_SCSI_3W_9XXX is not set
+# CONFIG_SCSI_ACARD is not set
+# CONFIG_SCSI_AACRAID is not set
+# CONFIG_SCSI_AIC7XXX is not set
+# CONFIG_SCSI_AIC7XXX_OLD is not set
+# CONFIG_SCSI_AIC79XX is not set
+# CONFIG_SCSI_DPT_I2O is not set
+# CONFIG_MEGARAID_NEWGEN is not set
+# CONFIG_MEGARAID_LEGACY is not set
+# CONFIG_MEGARAID_SAS is not set
+# CONFIG_SCSI_DMX3191D is not set
+# CONFIG_SCSI_FUTURE_DOMAIN is not set
+# CONFIG_SCSI_IPS is not set
+# CONFIG_SCSI_INITIO is not set
+# CONFIG_SCSI_INIA100 is not set
+# CONFIG_SCSI_SYM53C8XX_2 is not set
+# CONFIG_SCSI_IPR is not set
+# CONFIG_SCSI_QLOGIC_1280 is not set
+# CONFIG_SCSI_QLA_FC is not set
+# CONFIG_SCSI_LPFC is not set
+# CONFIG_SCSI_DC395x is not set
+# CONFIG_SCSI_DC390T is not set
+# CONFIG_SCSI_NSP32 is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+CONFIG_ATA=m
+# CONFIG_SATA_FORCE_SPINUP is not set
+# CONFIG_SATA_AHCI is not set
+# CONFIG_SATA_SVW is not set
+# CONFIG_ATA_PIIX is not set
+# CONFIG_SATA_MV is not set
+# CONFIG_SATA_NV is not set
+# CONFIG_PDC_ADMA is not set
+# CONFIG_SATA_QSTOR is not set
+# CONFIG_SATA_PROMISE is not set
+# CONFIG_SATA_SX4 is not set
+# CONFIG_SATA_SIL is not set
+# CONFIG_SATA_SIL24 is not set
+# CONFIG_SATA_SIS is not set
+# CONFIG_SATA_ULI is not set
+# CONFIG_SATA_VIA is not set
+# CONFIG_SATA_VITESSE is not set
+# CONFIG_PATA_ALI is not set
+# CONFIG_PATA_AMD is not set
+# CONFIG_PATA_ARTOP is not set
+# CONFIG_PATA_ATIIXP is not set
+# CONFIG_PATA_CMD64X is not set
+# CONFIG_PATA_CS5520 is not set
+# CONFIG_PATA_CS5530 is not set
+# CONFIG_PATA_CYPRESS is not set
+# CONFIG_PATA_EFAR is not set
+# CONFIG_ATA_GENERIC is not set
+# CONFIG_PATA_HPT366 is not set
+# CONFIG_PATA_HPT37X is not set
+# CONFIG_PATA_HPT3X2N is not set
+# CONFIG_PATA_HPT3X3 is not set
+# CONFIG_PATA_IT821X is not set
+# CONFIG_PATA_JMICRON is not set
+# CONFIG_PATA_TRIFLEX is not set
+# CONFIG_PATA_MPIIX is not set
+# CONFIG_PATA_OLDPIIX is not set
+# CONFIG_PATA_NETCELL is not set
+# CONFIG_PATA_NS87410 is not set
+# CONFIG_PATA_OPTI is not set
+# CONFIG_PATA_OPTIDMA is not set
+# CONFIG_PATA_PDC_OLD is not set
+# CONFIG_PATA_RADISYS is not set
+# CONFIG_PATA_RZ1000 is not set
+# CONFIG_PATA_SC1200 is not set
+# CONFIG_PATA_SERVERWORKS is not set
+# CONFIG_PATA_PDC2027X is not set
+# CONFIG_PATA_SIL680 is not set
+# CONFIG_PATA_SIS is not set
+# CONFIG_PATA_VIA is not set
+# CONFIG_PATA_WINBOND is not set
+#
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+# CONFIG_FUSION_SPI is not set
+# CONFIG_FUSION_FC is not set
+# CONFIG_FUSION_SAS is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+# CONFIG_IEEE1394 is not set
+
+#
+# I2O device support
+#
+# CONFIG_I2O is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+CONFIG_NETIF_DMA=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+
+#
+# PHY device support
+#
+# CONFIG_PHYLIB is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+CONFIG_BCMINTEMAC_7038=y
+CONFIG_BCMINTEMAC_NETLINK=y
+CONFIG_BCMINTEMAC_7038_STREAMING=y
+# CONFIG_BCMINTEMAC_7038_EXTMII is not set
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_CASSINI is not set
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_DM9000 is not set
+
+#
+# Tulip family network device support
+#
+# CONFIG_NET_TULIP is not set
+# CONFIG_HP100 is not set
+# CONFIG_NET_PCI is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+# CONFIG_ACENIC is not set
+# CONFIG_DL2K is not set
+# CONFIG_E1000 is not set
+# CONFIG_NS83820 is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
+# CONFIG_R8169 is not set
+# CONFIG_SIS190 is not set
+# CONFIG_SKGE is not set
+# CONFIG_SKY2 is not set
+# CONFIG_SK98LIN is not set
+# CONFIG_TIGON3 is not set
+# CONFIG_BNX2 is not set
+
+#
+# Ethernet (10000 Mbit)
+#
+# CONFIG_CHELSIO_T1 is not set
+# CONFIG_IXGB is not set
+# CONFIG_S2IO is not set
+# CONFIG_MYRI10GE is not set
+
+#
+# Token Ring devices
+#
+# CONFIG_TR is not set
+
+#
+# Wireless LAN (non-hamradio)
+#
+CONFIG_NET_RADIO=y
+CONFIG_NET_WIRELESS_RTNETLINK=y
+
+#
+# Obsolete Wireless cards support (pre-802.11)
+#
+# CONFIG_STRIP is not set
+
+#
+# Wireless 802.11b ISA/PCI cards support
+#
+# CONFIG_IPW2100 is not set
+# CONFIG_IPW2200 is not set
+# CONFIG_HERMES is not set
+# CONFIG_ATMEL is not set
+
+#
+# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support
+#
+# CONFIG_PRISM54 is not set
+# CONFIG_USB_ZD1201 is not set
+# CONFIG_HOSTAP is not set
+CONFIG_NET_WIRELESS=y
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+# CONFIG_NET_FC is not set
+# CONFIG_SHAPER is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Telephony Support
+#
+# CONFIG_PHONE is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=m
+
+#
+## Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=m
+CONFIG_INPUT_MOUSEDEV_PSAUX=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+CONFIG_INPUT_EVDEV=m
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+CONFIG_KEYBOARD_ATKBD=m
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+CONFIG_INPUT_MOUSE=y
+CONFIG_MOUSE_PS2=m
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+# CONFIG_INPUT_MISC is not set
+
+
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+# CONFIG_VT is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+# CONFIG_SERIAL_8250_PCI is not set
+CONFIG_SERIAL_8250_NR_UARTS=0
+CONFIG_SERIAL_8250_RUNTIME_UARTS=0
+# CONFIG_SERIAL_8250_EXTENDED is not set
+#
+#
+#
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_SERIAL_JSM is not set
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+CONFIG_HW_RANDOM=y
+# CONFIG_RTC is not set
+# CONFIG_GEN_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_DRM is not set
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+# CONFIG_TELCLOCK is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=m
+CONFIG_I2C_CHARDEV=m
+
+#
+# I2C Algorithms
+#
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_ALI1535 is not set
+# CONFIG_I2C_ALI1563 is not set
+# CONFIG_I2C_ALI15X3 is not set
+# CONFIG_I2C_AMD756 is not set
+# CONFIG_I2C_AMD8111 is not set
+# CONFIG_I2C_I801 is not set
+# CONFIG_I2C_I810 is not set
+# CONFIG_I2C_PIIX4 is not set
+# CONFIG_I2C_NFORCE2 is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_PROSAVAGE is not set
+# CONFIG_I2C_SAVAGE4 is not set
+# CONFIG_I2C_SIS5595 is not set
+# CONFIG_I2C_SIS630 is not set
+# CONFIG_I2C_SIS96X is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_VIA is not set
+# CONFIG_I2C_VIAPRO is not set
+# CONFIG_I2C_VOODOO3 is not set
+# CONFIG_I2C_PCA_ISA is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+#
+
+
+#
+# SPI support
+#
+# CONFIG_SPI is not set
+# CONFIG_SPI_MASTER is not set
+
+#
+# Dallas's 1-wire bus
+#
+
+#
+# Hardware Monitoring support
+#
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID is not set
+# CONFIG_SENSORS_ABITUGURU is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# Misc devices
+#
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+CONFIG_FIRMWARE_EDID=y
+# CONFIG_FB is not set
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+# CONFIG_SND_VERBOSE_PROCFS is not set
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB_ARCH_HAS_EHCI=y
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_BANDWIDTH is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+CONFIG_USB_EHCI_HCD=y
+# CONFIG_USB_EHCI_SPLIT_ISO is not set
+# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
+# CONFIG_USB_EHCI_TT_NEWSCHED is not set
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+# CONFIG_USB_OHCI_BIG_ENDIAN is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_UHCI_HCD is not set
+# CONFIG_USB_SL811_HCD is not set
+CONFIG_USB_BRCM=y
+# CONFIG_USB_BRCM_PWR_CTL is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# may also be needed; see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=m
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Input Devices
+#
+# CONFIG_USB_HID is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+CONFIG_USB_PEGASUS=y
+CONFIG_USB_RTL8150=y
+CONFIG_USB_USBNET=y
+CONFIG_USB_NET_AX8817X=y
+CONFIG_USB_NET_CDCETHER=y
+# CONFIG_USB_NET_GL620A is not set
+CONFIG_USB_NET_NET1080=y
+# CONFIG_USB_NET_PLUSB is not set
+# CONFIG_USB_NET_RNDIS_HOST is not set
+# CONFIG_USB_NET_CDC_SUBSET is not set
+CONFIG_USB_NET_ZAURUS=y
+CONFIG_USB_MON=y
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+CONFIG_USB_SERIAL=m
+# CONFIG_USB_SERIAL_GENERIC is not set
+# CONFIG_USB_SERIAL_AIRPRIME is not set
+# CONFIG_USB_SERIAL_ARK3116 is not set
+CONFIG_USB_SERIAL_BELKIN=m
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_CP2101 is not set
+# CONFIG_USB_SERIAL_CYPRESS_M8 is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+# CONFIG_USB_SERIAL_FUNSOFT is not set
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IPAQ is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
+# CONFIG_USB_SERIAL_GARMIN is not set
+# CONFIG_USB_SERIAL_IPW is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KLSI is not set
+# CONFIG_USB_SERIAL_KOBIL_SCT is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_NAVMAN is not set
+CONFIG_USB_SERIAL_PL2303=m
+# CONFIG_USB_SERIAL_HP4X is not set
+# CONFIG_USB_SERIAL_SAFE is not set
+# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
+# CONFIG_USB_SERIAL_TI is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OPTION is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_AUERSWALD is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGETKIT is not set
+# CONFIG_USB_PHIDGETSERVO is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_SISUSBVGA is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+
+#
+# MMC/SD Card support
+#
+# CONFIG_MMC is not set
+
+#
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
+# InfiniBand support
+#
+# CONFIG_INFINIBAND is not set
+
+#
+# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
+#
+
+#
+# Real Time Clock
+#
+# CONFIG_RTC_CLASS is not set
+
+#
+# DMA Engine support
+#
+# CONFIG_DMA_ENGINE is not set
+
+#
+# DMA Clients
+#
+
+#
+# DMA Devices
+#
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+# CONFIG_EXT3_FS_XATTR is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+CONFIG_REISERFS_FS=m
+# CONFIG_REISERFS_CHECK is not set
+# # CONFIG_REISERFS_PROC_INFO is not set
+# # CONFIG_REISERFS_FS_XATTR is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+CONFIG_XFS_FS=m
+CONFIG_XFS_EXPORT=y
+# CONFIG_XFS_RT is not set
+# CONFIG_XFS_QUOTA is not set
+# CONFIG_XFS_SECURITY is not set
+# CONFIG_XFS_POSIX_ACL is not set
+#
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+# CONFIG_DNOTIFY is not set
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_FUSE_FS is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=m
+# CONFIG_JOLIET is not set
+# CONFIG_ZISOFS is not set
+CONFIG_UDF_FS=m
+CONFIG_UDF_NLS=y
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+CONFIG_NTFS_FS=m
+# CONFIG_NTFS_DEBUG is not set
+CONFIG_NTFS_RW=y
+#
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_KCORE=y
+CONFIG_PROC_SOFTIRQS=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+CONFIG_YAFFS_FS=y
+CONFIG_YAFFS_YAFFS1=y
+# CONFIG_YAFFS_DOES_ECC is not set
+CONFIG_YAFFS_YAFFS2=y
+CONFIG_YAFFS_AUTO_YAFFS2=y
+# CONFIG_YAFFS_DISABLE_LAZY_LOAD is not set
+CONFIG_YAFFS_CHECKPOINT_RESERVED_BLOCKS=10
+# CONFIG_YAFFS_DISABLE_WIDE_TNODES is not set
+# CONFIG_YAFFS_ALWAYS_CHECK_CHUNK_ERASED is not set
+CONFIG_YAFFS_SHORT_NAMES_IN_RAM=y
+# CONFIG_JFFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_SUMMARY=y
+# CONFIG_JFFS2_FS_XATTR is not set
+CONFIG_JFFS2_COMPRESSION_OPTIONS=y
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_JFFS2_CMODE_NONE is not set
+CONFIG_JFFS2_CMODE_PRIORITY=y
+# CONFIG_JFFS2_CMODE_SIZE is not set
+CONFIG_CRAMFS=y
+CONFIG_SQUASHFS=y
+CONFIG_SQUASHFS_EMBEDDED=y
+CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
+CONFIG_SQUASHFS_VMALLOC=y
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+CONFIG_NFSD=m
+CONFIG_NFSD_V3=y
+# CONFIG_NFSD_V3_ACL is not set
+# CONFIG_NFSD_V4 is not set
+# CONFIG_NFSD_TCP is not set
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+# CONFIG_SMB_FS is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
+# CONFIG_CIFS_WEAK_PW_HASH is not set
+# CONFIG_CIFS_DEBUG2 is not set
+#
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+# CONFIG_9P_FS is not set
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+
+#
+# Native Language Support
+#
+CONFIG_NLS=m
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=m
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=m
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+CONFIG_NLS_UTF8=m
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+# CONFIG_PRINTK_TIME is not set
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_KERNEL is not set
+CONFIG_LOG_BUF_SHIFT=14
+# CONFIG_DEBUG_FS is not set
+# CONFIG_WANT_EXTRA_DEBUG_INFORMATION is not set
+CONFIG_CROSSCOMPILE=y
+CONFIG_CMDLINE="rw console=ttyS0,115200n8"
+CONFIG_SYS_SUPPORTS_KGDB=y
+# CONFIG_MIPS_BRCM_SIM is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+# CONFIG_CRYPTO is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+# CONFIG_CRC_CCITT is not set
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
old mode 100644 (file)
new mode 100755 (executable)
index 4f1ef91..fd3ffb6
@@ -51,6 +51,10 @@ do_install_append_opendreambox() {
        rm -R ${D}/etc/profile.d
 }
 
+do_install_append_vuplus() {
+       rm -R ${D}/etc/profile.d
+}
+
 python populate_packages_prepend () {
        mcdir   = bb.data.expand('${datadir}/mc', d)
        do_split_packages(d, mcdir, '^mc\.[hm][ile][npn].*\.(.*)$',
index 813a09f..a13272a 100644 (file)
@@ -36,6 +36,7 @@ do_install () {
        done
 }
 
+
 mtd_utils = " docfdisk \
        doc_loadbios \
        flashcp \
@@ -81,6 +82,32 @@ mtd_utils = " docfdisk \
        ubi-utils/new-utils/ubirmvol \
        ubi-utils/new-utils/ubiupdatevol"
 
+mtd_utils_vuplus = " docfdisk \
+       doc_loadbios \
+       flashcp \
+       flash_erase \
+       flash_eraseall \
+       flash_info \
+       flash_lock \
+       flash_otp_dump \
+       flash_otp_info \
+       flash_unlock \
+       ftl_check \
+       ftl_format \
+       jffs2dump \
+       mkfs.jffs2 \
+       mtd_debug \
+       nanddump \
+       nandtest \
+       nandwrite \
+       nftldump \
+       nftl_format \
+       recv_image \
+       rfddump \
+       rfdformat \
+       serve_image \
+       sumtool "
+
 PACKAGES =+ "mkfs-jffs mkfs-jffs2 mkfs-ubifs"
 FILES_mkfs-jffs = "${bindir}/mkfs.jffs"
 FILES_mkfs-jffs2 = "${bindir}/mkfs.jffs2"
diff --git a/recipes/mtd/mtd-utils/vuplus/makefile.patch b/recipes/mtd/mtd-utils/vuplus/makefile.patch
new file mode 100644 (file)
index 0000000..0c0b466
--- /dev/null
@@ -0,0 +1,13 @@
+diff --git a/Makefile b/Makefile
+index bdf3e48..1c5fe0e 100644
+--- a/Makefile
++++ b/Makefile
+@@ -7,7 +7,7 @@ ifeq ($(WITHOUT_XATTR), 1)
+   CPPFLAGS += -DWITHOUT_XATTR
+ endif
+-SUBDIRS = mkfs.ubifs ubi-utils
++#SUBDIRS = mkfs.ubifs ubi-utils
+ TARGETS = ftl_format flash_erase flash_eraseall nanddump doc_loadbios \
+       ftl_check mkfs.jffs2 flash_lock flash_unlock flash_info \
index 06cbf1b..2cf3093 100644 (file)
@@ -15,6 +15,12 @@ SRC_URI = "git://git.infradead.org/mtd-utils.git;protocol=git;tag=${TAG} \
           file://fix-ignoreerrors-git.patch;patch=1 \
           file://lzo_1x-git.patch;patch=1"
 
+SRC_URI_vuplus = "git://git.infradead.org/mtd-utils.git;protocol=git;tag=${TAG} \
+          file://add-exclusion-to-mkfs-jffs2-git-2.patch;patch=1 \
+          file://fix-ignoreerrors-git.patch;patch=1 \
+          file://makefile.patch;patch=1 \
+          file://lzo_1x-git.patch;patch=1"
+
 S = "${WORKDIR}/git/"
 
 do_configure_prepend() {
diff --git a/recipes/netbase/netbase/bm750/init b/recipes/netbase/netbase/bm750/init
new file mode 100644 (file)
index 0000000..0e714c9
--- /dev/null
@@ -0,0 +1,120 @@
+#!/bin/sh
+#
+# manage network interfaces and configure some networking options
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+
+if ! [ -x /sbin/ifup ]; then
+    exit 0
+fi
+
+spoofprotect_rp_filter () {
+    # This is the best method: turn on Source Address Verification and get
+    # spoof protection on all current and future interfaces.
+    
+    if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]; then
+        for f in /proc/sys/net/ipv4/conf/*; do
+           [ -e $f/rp_filter ] && echo 1 > $f/rp_filter
+        done
+        return 0
+    else
+        return 1
+    fi
+}
+
+spoofprotect () {
+    echo -n "Setting up IP spoofing protection: "
+    if spoofprotect_rp_filter; then
+        echo "rp_filter."
+    else
+        echo "FAILED."
+    fi
+}
+
+ip_forward () {
+    if [ -e /proc/sys/net/ipv4/ip_forward ]; then
+        echo -n "Enabling packet forwarding... "
+        echo 1 > /proc/sys/net/ipv4/ip_forward
+        echo "done."
+    fi
+}
+
+syncookies () {
+    if [ -e /proc/sys/net/ipv4/tcp_syncookies ]; then
+        echo -n "Enabling TCP/IP SYN cookies... "
+        echo 1 > /proc/sys/net/ipv4/tcp_syncookies
+        echo "done."
+    fi
+}
+
+wpa_supplicantcheck () {
+    if [ -e /var/run/wpa_supplicant ]; then
+        echo -n "disabling wpa_supplicant "
+        start-stop-daemon -K -x /usr/sbin/wpa_supplicant
+        # HACK: wpa_supplicant sometimes doesn't quit properly on SIGTERM.
+        if [ -e /var/run/wpa_supplicant ]; then
+               echo -n "wpa_supplicant still running, force kill now.. "
+               killall -9 /usr/sbin/wpa_supplicant
+               rm -rf /var/run/wpa_supplicant
+               echo "done."
+               fi
+        echo "done."
+    fi
+}
+
+doopt () {
+    optname=$1
+    default=$2
+    opt=`grep "^$optname=" /etc/network/options`
+    if [ -z "$opt" ]; then
+        opt="$optname=$default"
+    fi
+    optval=${opt#$optname=}
+    if [ "$optval" = "yes" ]; then
+        eval $optname
+    fi
+}
+
+case "$1" in
+    start)
+       doopt spoofprotect yes
+        doopt syncookies no
+        doopt ip_forward no
+
+        echo -n "Configuring network interfaces... "
+                               wpa_supplicantcheck
+        ifup -a
+       echo "done."
+       ;;
+    stop)
+        if sed -n 's/^[^ ]* \([^ ]*\) \([^ ]*\) .*$/\1 \2/p' /proc/mounts | 
+          grep -q "^/ nfs$"; then
+            echo "NOT deconfiguring network interfaces: / is an NFS mount"
+        elif sed -n 's/^[^ ]* \([^ ]*\) \([^ ]*\) .*$/\1 \2/p' /proc/mounts |  
+          grep -q "^/ smbfs$"; then
+            echo "NOT deconfiguring network interfaces: / is an SMB mount"
+       elif sed -n 's/^[^ ]* \([^ ]*\) \([^ ]*\) .*$/\2/p' /proc/mounts | 
+          grep -qE '^(nfs|smbfs|ncp|coda)$'; then
+            echo "NOT deconfiguring network interfaces: network shares still mounted."
+        else
+            echo -n "Deconfiguring network interfaces... "
+            ifdown -a
+            wpa_supplicantcheck
+           echo "done."
+        fi
+       ;;
+    force-reload|restart)
+        echo -n "Reconfiguring network interfaces... "
+        ifdown -a
+        wpa_supplicantcheck
+        ifup -a
+       echo "done."
+       ;;
+    *)
+       echo "Usage: /etc/init.d/networking {start|stop|restart|force-reload}"
+       exit 1
+       ;;
+esac
+
+exit 0
+
diff --git a/recipes/netbase/netbase/bm750/interfaces b/recipes/netbase/netbase/bm750/interfaces
new file mode 100755 (executable)
index 0000000..673618f
--- /dev/null
@@ -0,0 +1,10 @@
+# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
+# The loopback interface
+auto lo
+iface lo inet loopback
+
+# Ethernet
+auto eth0
+iface eth0 inet dhcp
+
diff --git a/recipes/netbase/netbase/vusolo/init b/recipes/netbase/netbase/vusolo/init
new file mode 100644 (file)
index 0000000..0e714c9
--- /dev/null
@@ -0,0 +1,120 @@
+#!/bin/sh
+#
+# manage network interfaces and configure some networking options
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+
+if ! [ -x /sbin/ifup ]; then
+    exit 0
+fi
+
+spoofprotect_rp_filter () {
+    # This is the best method: turn on Source Address Verification and get
+    # spoof protection on all current and future interfaces.
+    
+    if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]; then
+        for f in /proc/sys/net/ipv4/conf/*; do
+           [ -e $f/rp_filter ] && echo 1 > $f/rp_filter
+        done
+        return 0
+    else
+        return 1
+    fi
+}
+
+spoofprotect () {
+    echo -n "Setting up IP spoofing protection: "
+    if spoofprotect_rp_filter; then
+        echo "rp_filter."
+    else
+        echo "FAILED."
+    fi
+}
+
+ip_forward () {
+    if [ -e /proc/sys/net/ipv4/ip_forward ]; then
+        echo -n "Enabling packet forwarding... "
+        echo 1 > /proc/sys/net/ipv4/ip_forward
+        echo "done."
+    fi
+}
+
+syncookies () {
+    if [ -e /proc/sys/net/ipv4/tcp_syncookies ]; then
+        echo -n "Enabling TCP/IP SYN cookies... "
+        echo 1 > /proc/sys/net/ipv4/tcp_syncookies
+        echo "done."
+    fi
+}
+
+wpa_supplicantcheck () {
+    if [ -e /var/run/wpa_supplicant ]; then
+        echo -n "disabling wpa_supplicant "
+        start-stop-daemon -K -x /usr/sbin/wpa_supplicant
+        # HACK: wpa_supplicant sometimes doesn't quit properly on SIGTERM.
+        if [ -e /var/run/wpa_supplicant ]; then
+               echo -n "wpa_supplicant still running, force kill now.. "
+               killall -9 /usr/sbin/wpa_supplicant
+               rm -rf /var/run/wpa_supplicant
+               echo "done."
+               fi
+        echo "done."
+    fi
+}
+
+doopt () {
+    optname=$1
+    default=$2
+    opt=`grep "^$optname=" /etc/network/options`
+    if [ -z "$opt" ]; then
+        opt="$optname=$default"
+    fi
+    optval=${opt#$optname=}
+    if [ "$optval" = "yes" ]; then
+        eval $optname
+    fi
+}
+
+case "$1" in
+    start)
+       doopt spoofprotect yes
+        doopt syncookies no
+        doopt ip_forward no
+
+        echo -n "Configuring network interfaces... "
+                               wpa_supplicantcheck
+        ifup -a
+       echo "done."
+       ;;
+    stop)
+        if sed -n 's/^[^ ]* \([^ ]*\) \([^ ]*\) .*$/\1 \2/p' /proc/mounts | 
+          grep -q "^/ nfs$"; then
+            echo "NOT deconfiguring network interfaces: / is an NFS mount"
+        elif sed -n 's/^[^ ]* \([^ ]*\) \([^ ]*\) .*$/\1 \2/p' /proc/mounts |  
+          grep -q "^/ smbfs$"; then
+            echo "NOT deconfiguring network interfaces: / is an SMB mount"
+       elif sed -n 's/^[^ ]* \([^ ]*\) \([^ ]*\) .*$/\2/p' /proc/mounts | 
+          grep -qE '^(nfs|smbfs|ncp|coda)$'; then
+            echo "NOT deconfiguring network interfaces: network shares still mounted."
+        else
+            echo -n "Deconfiguring network interfaces... "
+            ifdown -a
+            wpa_supplicantcheck
+           echo "done."
+        fi
+       ;;
+    force-reload|restart)
+        echo -n "Reconfiguring network interfaces... "
+        ifdown -a
+        wpa_supplicantcheck
+        ifup -a
+       echo "done."
+       ;;
+    *)
+       echo "Usage: /etc/init.d/networking {start|stop|restart|force-reload}"
+       exit 1
+       ;;
+esac
+
+exit 0
+
diff --git a/recipes/netbase/netbase/vusolo/interfaces b/recipes/netbase/netbase/vusolo/interfaces
new file mode 100755 (executable)
index 0000000..673618f
--- /dev/null
@@ -0,0 +1,10 @@
+# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
+# The loopback interface
+auto lo
+iface lo inet loopback
+
+# Ethernet
+auto eth0
+iface eth0 inet dhcp
+
old mode 100644 (file)
new mode 100755 (executable)
index c8b4d19..a4903df
@@ -58,6 +58,7 @@ do_install () {
        install -m 0644 ${WORKDIR}/interfaces ${D}${sysconfdir}/network/interfaces
 }
 
+
 CONFFILES_${PN} = "${sysconfdir}/network/options ${sysconfdir}/hosts \
                    ${sysconfdir}/network/interfaces ${sysconfdir}/rpc \
                    ${sysconfdir}/protocols ${sysconfdir}/services"
diff --git a/recipes/netkit-base/netkit-base-0.17/vuplus/inetd.conf b/recipes/netkit-base/netkit-base-0.17/vuplus/inetd.conf
new file mode 100755 (executable)
index 0000000..3f768c7
--- /dev/null
@@ -0,0 +1,31 @@
+# /etc/inetd.conf:  see inetd(8) for further informations.
+#
+# Internet server configuration database
+#
+# If you want to disable an entry so it isn't touched during
+# package updates just comment it out with a single '#' character.
+#
+# <service_name> <sock_type> <proto> <flags> <user> <server_path> <args>
+#
+#:INTERNAL: Internal services
+#echo          stream  tcp     nowait  root    internal
+#echo          dgram   udp     wait    root    internal
+#chargen       stream  tcp     nowait  root    internal
+#chargen       dgram   udp     wait    root    internal
+#discard               stream  tcp     nowait  root    internal
+#discard               dgram   udp     wait    root    internal
+#daytime               stream  tcp     nowait  root    internal
+#daytime       dgram   udp     wait    root    internal
+#time          stream  tcp     nowait  root    internal
+#time          dgram   udp     wait    root    internal
+ftp            stream  tcp     nowait  root    /usr/sbin/vsftpd        vsftpd
+telnet         stream  tcp     nowait  root    /usr/sbin/telnetd       telnetd
+31335          stream  tcp     nowait  root    /usr/sbin/streamsec     streamsec
+31337          stream  tcp     nowait  root    /usr/sbin/streamts      streamts -ps
+31338          stream  tcp     nowait  root    /usr/sbin/streampes     streampes
+31339          stream  tcp     nowait  root    /usr/sbin/streamts      streamts -ts
+31340          stream  tcp     nowait  root    /usr/sbin/udpstreampes  udpstreampes
+31341          stream  udp     nowait  root    /usr/sbin/udpstreampes  udpstreampes
+31342          stream  tcp     nowait  root    /usr/sbin/streamts      streamts -tsfile
+31343          stream  tcp     nowait  root    /usr/sbin/streampes     streames
+8001   stream  tcp nowait      root    /usr/bin/streamproxy streamproxy
old mode 100644 (file)
new mode 100755 (executable)
diff --git a/recipes/opkg/opkg-collateral/bm750/dest b/recipes/opkg/opkg-collateral/bm750/dest
new file mode 100644 (file)
index 0000000..e6ddfb1
--- /dev/null
@@ -0,0 +1,4 @@
+dest root /
+dest ram /media/ram/
+dest hdd /media/hdd/
+dest usb /media/usb/
diff --git a/recipes/opkg/opkg-collateral/vusolo/dest b/recipes/opkg/opkg-collateral/vusolo/dest
new file mode 100644 (file)
index 0000000..e6ddfb1
--- /dev/null
@@ -0,0 +1,4 @@
+dest root /
+dest ram /media/ram/
+dest hdd /media/hdd/
+dest usb /media/usb/
old mode 100644 (file)
new mode 100755 (executable)
index e935493..80c1146
@@ -18,6 +18,8 @@ LDFLAGS_append = " -Wl,--as-needed"
 
 PV_opendreambox = "0.1.7+svnr${SRCPV}"
 SRC_URI_append_opendreambox = " file://remove_pyc_pyo_hack.patch;patch=1;pnum=1 "
+PV_vuplus = "0.1.7+svnr${SRCPV}"
+SRC_URI_append_vuplus = " file://remove_pyc_pyo_hack.patch;patch=1;pnum=1 "
 
 # The nogpg version isn't getting much love and has an unused variable which trips up -Werror
 do_configure_prepend() {
old mode 100644 (file)
new mode 100755 (executable)
index 83fdcc4..90b5b60
@@ -3,6 +3,7 @@ DEPENDS = "python-native db gdbm openssl readline sqlite3 tcl zlib\
            ${@base_contains('DISTRO_FEATURES', 'tk', 'tk', '', d)}"
 DEPENDS_sharprom = "python-native db readline zlib gdbm openssl"
 DEPENDS_opendreambox = "python-native db gdbm openssl readline sqlite3 zlib"
+DEPENDS_vuplus = "python-native db gdbm openssl readline sqlite3 zlib"
 # set to .0 on every increase of INC_PR
 PR = "${INC_PR}.1"
 
@@ -34,6 +35,11 @@ SRC_URI_append_opendreambox = " \
   file://strict_aliasing_site.patch;patch=0;pnum=0 \
   file://fix_pthread_site.patch;patch=0;pnum=0 \
   file://forced_largefile_support.patch;patch=1;pnum=1"
+SRC_URI_append_vuplus = " \
+  file://some_configure_fixes.patch;patch=1;pnum=0 \
+  file://strict_aliasing_site.patch;patch=0;pnum=0 \
+  file://fix_pthread_site.patch;patch=0;pnum=0 \
+  file://forced_largefile_support.patch;patch=1;pnum=1"
 
 S = "${WORKDIR}/Python-${PV}"
 
diff --git a/recipes/samba/files/vuplus/01samba-kill b/recipes/samba/files/vuplus/01samba-kill
new file mode 100755 (executable)
index 0000000..41f7781
--- /dev/null
@@ -0,0 +1,5 @@
+#!/bin/sh
+killall -9 smbd
+rm -rf /var/log/log.smbd
+killall -9 nmbd
+rm -rf /var/log/log.nmbd
diff --git a/recipes/samba/files/vuplus/01samba-start b/recipes/samba/files/vuplus/01samba-start
new file mode 100755 (executable)
index 0000000..ce397ad
--- /dev/null
@@ -0,0 +1,3 @@
+#!/bin/sh
+nmbd -D
+smbd -D
diff --git a/recipes/samba/files/vuplus/smb.conf b/recipes/samba/files/vuplus/smb.conf
new file mode 100755 (executable)
index 0000000..ea08f1b
--- /dev/null
@@ -0,0 +1,28 @@
+[global]
+   load printers = no
+   guest account = root
+   log file = /tmp/smb.log
+   log level = 1
+   security = share
+   server string = Vuplus %h network services
+   workgroup = Vuplus
+   netbios name = %h
+   case sensitive=yes
+   preserve case=yes
+   short preserve case=yes
+   socket options = TCP_NODELAY
+   preferred master = no ;(These stop the machine being master browser, which means that it doesn't waste time there.)
+
+[Configuration]
+  comment = Configuration files - take care!
+  path = /var
+  read only = no
+  public = yes
+  guest ok = yes
+
+[Harddisk]
+  comment = The harddisk
+  path = /hdd
+  read only = no
+  public = yes
+  guest ok = yes
old mode 100644 (file)
new mode 100755 (executable)
index 951f719..c1effa1
@@ -13,6 +13,10 @@ SRC_URI_append_opendreambox = " \
        file://01samba-kill \
        file://01samba-start"
 
+SRC_URI_append_vuplus = " \
+       file://01samba-kill \
+       file://01samba-start"
+
 S = "${WORKDIR}/samba-${PV}/source"
 
 inherit autotools update-rc.d
@@ -41,6 +45,7 @@ EXTRA_OECONF='--disable-cups \
 
 PACKAGES =+ "libsmbclient libsmbclient-dev cifs cifs-doc smbfs smbfs-doc"
 PACKAGES =+ "${@base_conditional('DISTRO', 'opendreambox', ' sambaserver libpopt libtalloc libtdb', '', d)}"
+PACKAGES =+ "${@base_conditional('DISTRO', 'vuplus', ' sambaserver libpopt libtalloc libtdb', '', d)}"
 FILES_smbfs = "${bindir}/smbmount ${bindir}/smbumount ${bindir}/smbmnt ${base_sbindir}/mount.smbfs ${base_sbindir}/mount.smb"
 FILES_smbfs-doc = "${mandir}/man8/smbmount.8 ${mandir}/man8/smbumount.8 ${mandir}/man8/smbmnt.8"
 FILES_cifs = "${base_sbindir}/mount.cifs ${base_sbindir}/umount.cifs"
@@ -55,6 +60,7 @@ FILES_libtalloc = "${libdir}/libtalloc.so.*"
 FILES_libtdb = "${libdir}/libtdb.so.*"
 
 PROVIDES_append_opendreambox = " sambaserver libpopt libtalloc libtdb"
+PROVIDES_append_vuplus = " sambaserver libpopt libtalloc libtdb"
 
 INITSCRIPT_NAME = "samba"
 # No dependencies, goes in at level 20 (NOTE: take care with the
@@ -65,6 +71,7 @@ CONFFILES_${PN} = "${sysconfdir}/samba/smb.conf"
 
 CONFFILES_sambaserver = "${sysconfdir}/samba/smb.conf"
 CONFFILES_${PN}_opendreambox = ""
+CONFFILES_${PN}_vuplus = ""
 
 do_configure_prepend () {
        ./script/mkversion.sh
@@ -116,6 +123,18 @@ do_install_append_opendreambox() {
        install -m 0755 ${WORKDIR}/01samba-start ${D}/etc/network/if-up.d
 }
 
+do_install_prepend_vuplus() {
+       install -c -m 644 ${WORKDIR}/smb.conf ../examples/smb.conf.default
+}
+
+do_install_append_vuplus() {
+       install -d ${D}/etc/samba/private
+       install -d ${D}/etc/network/if-down.d
+       install -m 0755 ${WORKDIR}/01samba-kill ${D}/etc/network/if-down.d
+       install -d ${D}/etc/network/if-up.d
+       install -m 0755 ${WORKDIR}/01samba-start ${D}/etc/network/if-up.d
+}
+
 do_stage() {
        install -m 0644 include/libsmbclient.h ${STAGING_INCDIR}
        oe_libinstall -C bin -a -so libsmbclient ${STAGING_LIBDIR}
diff --git a/recipes/sysvinit/sysvinit/bm750/inittab b/recipes/sysvinit/sysvinit/bm750/inittab
new file mode 100755 (executable)
index 0000000..29c67a0
--- /dev/null
@@ -0,0 +1,32 @@
+# /etc/inittab: init(8) configuration.
+# $Id: inittab,v 1.91 2002/01/25 13:35:21 miquels Exp $
+
+# The default runlevel.
+id:3:initdefault:
+
+# Boot-time system configuration/initialization script.
+# This is run first except when booting in emergency (-b) mode.
+si::sysinit:/etc/init.d/rcS
+
+# What to do in single-user mode.
+~~:S:wait:/sbin/sulogin
+
+# /etc/init.d executes the S and K scripts upon change
+# of runlevel.
+#
+# Runlevel 0 is halt.
+# Runlevel 1 is single-user.
+# Runlevels 2-5 are multi-user.
+# Runlevel 6 is reboot.
+
+l0:0:wait:/etc/init.d/rc 0
+l1:1:wait:/etc/init.d/rc 1
+l2:2:wait:/etc/init.d/rc 2
+l3:3:wait:/etc/init.d/rc 3
+l4:4:wait:/etc/init.d/rc 4
+l5:5:wait:/etc/init.d/rc 5
+l6:6:wait:/etc/init.d/rc 6
+# Normally not reached, but fallthrough in case of emergency.
+z6:6:respawn:/sbin/sulogin
+
+S:5:respawn:/sbin/getty ttyS0 115200
diff --git a/recipes/sysvinit/sysvinit/vusolo/inittab b/recipes/sysvinit/sysvinit/vusolo/inittab
new file mode 100755 (executable)
index 0000000..29c67a0
--- /dev/null
@@ -0,0 +1,32 @@
+# /etc/inittab: init(8) configuration.
+# $Id: inittab,v 1.91 2002/01/25 13:35:21 miquels Exp $
+
+# The default runlevel.
+id:3:initdefault:
+
+# Boot-time system configuration/initialization script.
+# This is run first except when booting in emergency (-b) mode.
+si::sysinit:/etc/init.d/rcS
+
+# What to do in single-user mode.
+~~:S:wait:/sbin/sulogin
+
+# /etc/init.d executes the S and K scripts upon change
+# of runlevel.
+#
+# Runlevel 0 is halt.
+# Runlevel 1 is single-user.
+# Runlevels 2-5 are multi-user.
+# Runlevel 6 is reboot.
+
+l0:0:wait:/etc/init.d/rc 0
+l1:1:wait:/etc/init.d/rc 1
+l2:2:wait:/etc/init.d/rc 2
+l3:3:wait:/etc/init.d/rc 3
+l4:4:wait:/etc/init.d/rc 4
+l5:5:wait:/etc/init.d/rc 5
+l6:6:wait:/etc/init.d/rc 6
+# Normally not reached, but fallthrough in case of emergency.
+z6:6:respawn:/sbin/sulogin
+
+S:5:respawn:/sbin/getty ttyS0 115200
old mode 100644 (file)
new mode 100755 (executable)
index d996ee0..8daae0e
@@ -116,6 +116,15 @@ e2:3:respawn:/usr/bin/enigma2.sh
 EOF
 }
 
+do_install_append_vuplus () {
+       cat <<EOF >>${D}/etc/inittab
+# enigma
+gui:2:respawn:/usr/bin/enigma.sh
+# enigma2
+e2:3:respawn:/usr/bin/enigma2.sh
+EOF
+}
+
 pkg_postinst_${PN} () {
 #!/bin/sh
 update-alternatives --install ${base_sbindir}/halt halt halt.${PN} 200
diff --git a/recipes/tasks/task-vuplus-base.bb b/recipes/tasks/task-vuplus-base.bb
new file mode 100644 (file)
index 0000000..a5334e5
--- /dev/null
@@ -0,0 +1,63 @@
+DESCRIPTION = "Vuplus: Base Task for the Vuplus Distribution"
+SECTION = "vuplus/base"
+LICENSE = "MIT"
+PR = "r4"
+
+inherit task
+
+#
+# task-vuplus-base
+#
+DESCRIPTION_${PN} = "Vuplus: Basesystem utilities"
+
+#  vuplus-feed-configs \
+#  vuplus-keymaps \
+
+VUPLUS_BASE_ESSENTIAL = "\
+  autofs \
+  base-files-doc \
+  vuplus-bootlogo \
+  vuplus-compat \
+  vuplus-feed-configs \
+  dreambox-keymaps \
+  e2fsprogs-e2fsck \
+  e2fsprogs-mke2fs \
+  fakelocale \
+  netkit-base \
+  opkg-nogpg \
+  timezones-alternative \
+  tuxbox-common \
+  util-linux-sfdisk \
+  vsftpd \
+  udev-static-devices \
+  mtd-utils \
+  hdparm \  
+"
+
+VUPLUS_BASE_RECOMMENDS = "\
+  dropbear \
+  vuplus-vucamd \
+  sambaserver \
+  zeroconf \
+"
+
+VUPLUS_BASE_OPTIONAL_RECOMMENDS = "\
+  gdbserver \
+  hddtemp \
+  joe \
+  mc \
+  ncdu \
+  ppp \
+  smartmontools \
+  avahi-daemon \
+"
+
+RDEPENDS_${PN} = "\
+       ${VUPLUS_BASE_ESSENTIAL} \
+"
+
+RRECOMMENDS_${PN} = "\
+       ${VUPLUS_BASE_RECOMMENDS} \
+       ${VUPLUS_BASE_OPTIONAL_RECOMMENDS} \
+"
+
diff --git a/recipes/tasks/task-vuplus-cdplayer.bb b/recipes/tasks/task-vuplus-cdplayer.bb
new file mode 100644 (file)
index 0000000..b3e2e79
--- /dev/null
@@ -0,0 +1,19 @@
+DESCRIPTION = "Vuplus: CD-Player Task for the Vuplus Distribution"
+SECTION = "vuplus/base"
+LICENSE = "MIT"
+PR = "r1"
+
+inherit task
+
+#
+# task-vuplus-cdplayer
+#
+DESCRIPTION_${PN} = "Vuplus: CD-Player Support"
+DEPENDS_${PN} = "enigma2-plugins"
+RDEPENDS_${PN} = "\
+ kernel-module-cdfs \
+ enigma2-plugin-extensions-cdinfo \
+ libcddb \
+ libcdio \
+"
+
diff --git a/recipes/tasks/task-vuplus-dvbapi3.bb b/recipes/tasks/task-vuplus-dvbapi3.bb
new file mode 100644 (file)
index 0000000..14ac10a
--- /dev/null
@@ -0,0 +1,24 @@
+DESCRIPTION = "Vuplus: DVB API v3 Task for the Vuplus Distribution"
+SECTION = "vuplus/base"
+LICENSE = "MIT"
+PR = "r0"
+
+inherit task
+
+PROVIDES = "\
+  task-vuplus-dvbapi \
+  ${PACKAGES}\
+"
+
+#
+# task-vuplus-dvbapi3
+#
+RPROVIDES_${PN} = "task-vuplus-dvbapi"
+DESCRIPTION_${PN} = "Vuplus: DVB API v3 Dependencies"
+RDEPENDS_${PN} = "\
+  dvbsnoop \
+  vuplus-dvb-tools \
+  dvbtraffic \
+  sctzap \
+ "
+
diff --git a/recipes/tasks/task-vuplus-dvdburn.bb b/recipes/tasks/task-vuplus-dvdburn.bb
new file mode 100644 (file)
index 0000000..a143a0c
--- /dev/null
@@ -0,0 +1,22 @@
+DESCRIPTION = "Vuplus: DVD-Burn Task for the Vuplus Distribution"
+SECTION = "vuplus/base"
+LICENSE = "MIT"
+PR = "r0"
+
+inherit task
+
+#
+# task-vuplus-dvdburn
+#
+DESCRIPTION_${PN} = "Vuplus: DVD-Burning Support"
+DEPENDS_${PN} = "enigma2"
+RDEPENDS_${PN} = "\
+  cdrkit \
+  dvd+rw-tools \
+  dvdauthor \
+  enigma2-plugin-extensions-dvdburn \
+  mjpegtools \
+  projectx \
+  python-imaging \
+"
+
diff --git a/recipes/tasks/task-vuplus-dvdplayer.bb b/recipes/tasks/task-vuplus-dvdplayer.bb
new file mode 100644 (file)
index 0000000..d0d4ff8
--- /dev/null
@@ -0,0 +1,18 @@
+DESCRIPTION = "Vuplus: DVD-Player Task for the Vuplus Distribution"
+SECTION = "vuplus/base"
+LICENSE = "MIT"
+PR = "r1"
+
+inherit task
+
+#
+# task-vuplus-dvdplayer
+#
+DESCRIPTION_${PN} = "Vuplus: DVD-Player Support"
+DEPENDS_${PN} = "enigma2
+RDEPENDS_${PN} = "\
+  kernel-module-udf \
+  kernel-module-isofs \
+  enigma2-plugin-extensions-dvdplayer \
+"
+
diff --git a/recipes/tasks/task-vuplus-enigma2.bb b/recipes/tasks/task-vuplus-enigma2.bb
new file mode 100644 (file)
index 0000000..4ac356a
--- /dev/null
@@ -0,0 +1,46 @@
+DESCRIPTION = "Vuplus: Enigma2 Task for the Vuplus Distribution"
+SECTION = "vuplus/base"
+LICENSE = "MIT"
+PR = "r0"
+
+inherit task
+
+PROVIDES = "\
+  task-vuplus-ui \
+  ${PACKAGES} \
+"
+
+PACKAGES = "\
+  task-vuplus-enigma2 \
+"
+
+#
+# task-vuplus-enigma2
+#
+RPROVIDES_task-vuplus-enigma2 = "task-vuplus-ui"
+DESCRIPTION_task-vuplus-enigma2 = "Vuplus: Enigma2 Dependencies"
+RDEPENDS_task-vuplus-enigma2 = "\
+  dreambox-blindscan-utils \
+  enigma2 \
+  enigma2-defaultservices \
+  enigma2-plugin-extensions-mediascanner \
+  enigma2-plugin-systemplugins-factorytest \
+  enigma2-plugin-systemplugins-fancontrol \
+  enigma2-streamproxy \
+  tuxbox-tuxtxt-32bpp \
+"
+
+RRECOMMENDS_task-vuplus-enigma2 = "\
+  aio-grab \
+  python-crypt \
+  python-netserver \
+  python-twisted-core \
+  python-twisted-protocols \
+  python-twisted-web \
+  enigma2-plugin-extensions-mediaplayer \
+  enigma2-plugin-extensions-pictureplayer \
+  enigma2-plugin-systemplugins-skinselector \
+  ${@base_contains("MACHINE_FEATURES", "wifi", "task-vuplus-wlan", "", d)} \
+"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
diff --git a/recipes/tasks/task-vuplus-madwifi.bb b/recipes/tasks/task-vuplus-madwifi.bb
new file mode 100644 (file)
index 0000000..7833896
--- /dev/null
@@ -0,0 +1,19 @@
+DESCRIPTION = "Vuplus: madwifi Task for the Vuplus Distribution"
+SECTION = "vuplus/base"
+LICENSE = "MIT"
+PR = "r1"
+
+inherit task
+
+#
+# task-vuplus-madwifi
+#
+DESCRIPTION_${PN} = "Vuplus: madwifi Support"
+DEPENDS_${PN} = "\
+  madwifi-ng \
+"
+
+RDEPENDS_${PN} = "\
+  madwifi-ng-modules \
+"
+
diff --git a/recipes/tasks/task-vuplus-wlan.bb b/recipes/tasks/task-vuplus-wlan.bb
new file mode 100644 (file)
index 0000000..a71edef
--- /dev/null
@@ -0,0 +1,43 @@
+DESCRIPTION = "Vuplus: W-LAN Task for the Vuplus Distribution"
+SECTION = "vuplus/base"
+LICENSE = "MIT"
+PR = "r3"
+
+inherit task
+
+#
+# task-vuplus-wlan
+#
+DESCRIPTION_${PN} = "Vuplus: W-LAN Support"
+DEPENDS_${PN} = "enigma2-plugins"
+RDEPENDS_${PN} = "\
+  enigma2-plugin-systemplugins-wirelesslan \
+  wireless-tools \
+  wpa-supplicant \
+"
+
+WLAN_CRYPTO_MODULES = "\
+  kernel-module-aes-generic \
+  kernel-module-arc4 \
+  kernel-module-cryptomgr \
+  kernel-module-ecb \
+"
+
+WLAN_PCI_MODULES = "\
+  kernel-module-ath5k \
+"
+
+WLAN_USB_MODULES = "\
+  kernel-module-rt73usb \
+  kernel-module-zd1211rw \
+  rt73-firmware \
+  zd1211-firmware \
+"
+
+WLAN_USB_MODULES_2_6_18 = "\
+  zd1211b \
+  wlan-rt73 \
+"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
index 5119a34..366b51a 100644 (file)
@@ -8,7 +8,8 @@ SRCDATE = "20090305"
 PV = "0.0+cvs${SRCDATE}"
 
 SRC_URI = "cvs://anoncvs@cvs.tuxbox.org/cvs/tuxbox/;module=cdk/root/share/tuxbox;method=ext;tag=dreambox;date=${SRCDATE} \
-       http://dreamboxupdate.com/download/opendreambox/tuxbox-common-r11.tar.gz"
+       http://dreamboxupdate.com/download/opendreambox/tuxbox-common-r11.tar.gz \
+       file://satellites_20100426.patch;patch=1;pnum=0"
 
 FILES_${PN} = "/"
 
diff --git a/recipes/tuxbox/tuxbox-common/satellites_20100426.patch b/recipes/tuxbox/tuxbox-common/satellites_20100426.patch
new file mode 100755 (executable)
index 0000000..13784f6
--- /dev/null
@@ -0,0 +1,672 @@
+Index: ../tuxbox/satellites.xml
+===================================================================
+--- ../tuxbox/satellites.xml   (revision 2)
++++ ../tuxbox/satellites.xml   (working copy)
+@@ -732,6 +732,200 @@
+               <transponder fec_inner="3" frequency="12723000" modulation="1" onid="1" polarization="0" symbol_rate="27500000" system="0" tsid="2"/>
+               <transponder fec_inner="4" frequency="12735000" modulation="1" onid="4369" polarization="1" symbol_rate="8800000" system="0" tsid="1"/>
+       </sat>
++      <sat flags="1" name="Astra/Sirius (5.0E)" position="50">
++              <transponder fec_inner="1" frequency="10920750" modulation="1" polarization="0" symbol_rate="22000000" system="0"/>
++              <transponder fec_inner="1" frequency="10935500" modulation="1" polarization="1" symbol_rate="22000000" system="0"/>
++              <transponder fec_inner="1" frequency="10964250" modulation="1" polarization="0" symbol_rate="22000000" system="0"/>
++              <transponder fec_inner="1" frequency="10979000" modulation="1" polarization="1" symbol_rate="22000000" system="0"/>
++              <transponder fec_inner="0" frequency="10987000" modulation="1" polarization="0" symbol_rate="6111000" system="0"/>
++              <transponder fec_inner="1" frequency="10993750" modulation="1" polarization="0" symbol_rate="22000000" system="0"/>
++              <transponder fec_inner="1" frequency="11008500" modulation="1" polarization="1" symbol_rate="22000000" system="0"/>
++              <transponder fec_inner="1" frequency="11023250" modulation="1" polarization="0" symbol_rate="22000000" system="0"/>
++              <transponder fec_inner="1" frequency="11038000" modulation="1" polarization="1" symbol_rate="22000000" system="0"/>
++              <transponder fec_inner="1" frequency="11052750" modulation="1" polarization="0" symbol_rate="22000000" system="0"/>
++              <transponder fec_inner="1" frequency="11067500" modulation="1" polarization="1" symbol_rate="22000000" system="0"/>
++              <transponder fec_inner="1" frequency="11082250" modulation="1" polarization="0" symbol_rate="22000000" system="0"/>
++              <transponder fec_inner="1" frequency="11097000" modulation="1" polarization="1" symbol_rate="22000000" system="0"/>
++              <transponder fec_inner="1" frequency="11111750" modulation="1" polarization="0" symbol_rate="22000000" system="0"/>
++              <transponder fec_inner="1" frequency="11126500" modulation="1" polarization="1" symbol_rate="22000000" system="0"/>
++              <transponder fec_inner="1" frequency="11141250" modulation="1" polarization="0" symbol_rate="22000000" system="0"/>
++              <transponder fec_inner="1" frequency="11156000" modulation="1" polarization="1" symbol_rate="22000000" system="0"/>
++              <transponder fec_inner="0" frequency="11158000" modulation="1" polarization="0" symbol_rate="27500000" system="0"/>
++              <transponder fec_inner="1" frequency="11170750" modulation="1" polarization="0" symbol_rate="22000000" system="0"/>
++              <transponder fec_inner="1" frequency="11185500" modulation="1" polarization="1" symbol_rate="22000000" system="0"/>
++              <transponder fec_inner="1" frequency="11214250" modulation="1" polarization="0" symbol_rate="22000000" system="0"/>
++              <transponder fec_inner="1" frequency="11229000" modulation="1" polarization="1" symbol_rate="22000000" system="0"/>
++              <transponder fec_inner="1" frequency="11243750" modulation="1" polarization="0" symbol_rate="22000000" system="0"/>
++              <transponder fec_inner="1" frequency="11258500" modulation="1" polarization="1" symbol_rate="22000000" system="0"/>
++              <transponder fec_inner="1" frequency="11273250" modulation="1" polarization="0" symbol_rate="22000000" system="0"/>
++              <transponder fec_inner="1" frequency="11288000" modulation="1" polarization="1" symbol_rate="22000000" system="0"/>
++              <transponder fec_inner="1" frequency="11302750" modulation="1" polarization="0" symbol_rate="22000000" system="0"/>
++              <transponder fec_inner="1" frequency="11317500" modulation="1" polarization="1" symbol_rate="22000000" system="0"/>
++              <transponder fec_inner="1" frequency="11332250" modulation="1" polarization="0" symbol_rate="22000000" system="0"/>
++              <transponder fec_inner="1" frequency="11347000" modulation="1" polarization="1" symbol_rate="22000000" system="0"/>
++              <transponder fec_inner="1" frequency="11361750" modulation="1" polarization="0" symbol_rate="22000000" system="0"/>
++              <transponder fec_inner="1" frequency="11376500" modulation="1" polarization="1" symbol_rate="22000000" system="0"/>
++              <transponder fec_inner="1" frequency="11391250" modulation="1" polarization="0" symbol_rate="22000000" system="0"/>
++              <transponder fec_inner="1" frequency="11406000" modulation="1" polarization="1" symbol_rate="22000000" system="0"/>
++              <transponder fec_inner="1" frequency="11420750" modulation="1" polarization="0" symbol_rate="22000000" system="0"/>
++              <transponder fec_inner="1" frequency="11435500" modulation="1" polarization="1" symbol_rate="22000000" system="0"/>
++              <transponder fec_inner="3" frequency="11727480" modulation="1" polarization="0" symbol_rate="27500000" system="0"/>
++              <transponder fec_inner="3" frequency="11747000" modulation="1" onid="86" polarization="1" symbol_rate="27500000" system="0" tsid="10"/>
++              <transponder fec_inner="3" frequency="11766000" modulation="1" onid="85" polarization="0" symbol_rate="27500000" system="0" tsid="12"/>
++              <transponder fec_inner="3" frequency="11785000" modulation="1" onid="86" polarization="1" symbol_rate="27500000" system="0" tsid="11"/>
++              <transponder fec_inner="3" frequency="11804000" modulation="1" onid="86" polarization="0" symbol_rate="27500000" system="0" tsid="8"/>
++              <transponder fec_inner="3" frequency="11823000" modulation="1" onid="86" polarization="1" symbol_rate="27500000" system="0" tsid="9"/>
++              <transponder fec_inner="3" frequency="11843000" modulation="1" polarization="0" symbol_rate="27500000" system="0"/>
++              <transponder fec_inner="3" frequency="11862000" modulation="1" onid="86" polarization="1" symbol_rate="27500000" system="0" tsid="21"/>
++              <transponder fec_inner="3" frequency="11881000" modulation="1" onid="86" polarization="0" symbol_rate="27500000" system="0" tsid="7"/>
++              <transponder fec_inner="3" frequency="11900000" modulation="1" polarization="1" symbol_rate="27500000" system="0"/>
++              <transponder fec_inner="3" frequency="11919000" modulation="1" onid="86" polarization="0" symbol_rate="27500000" system="0" tsid="24"/>
++              <transponder fec_inner="3" frequency="11938000" modulation="1" onid="86" polarization="1" symbol_rate="27500000" system="0" tsid="22"/>
++              <transponder fec_inner="3" frequency="11958000" modulation="1" onid="85" polarization="0" symbol_rate="27500000" system="0" tsid="14"/>
++              <transponder fec_inner="3" frequency="11977000" modulation="1" onid="86" polarization="1" symbol_rate="27500000" system="0" tsid="4"/>
++              <transponder fec_inner="3" frequency="11996000" modulation="1" onid="86" polarization="0" symbol_rate="27500000" system="0" tsid="6"/>
++              <transponder fec_inner="4" frequency="12015000" modulation="1" onid="86" polarization="1" symbol_rate="27500000" system="0" tsid="28"/>
++              <transponder fec_inner="3" frequency="12034000" modulation="1" onid="86" polarization="0" symbol_rate="27500000" system="0" tsid="5"/>
++              <transponder fec_inner="3" frequency="12054000" modulation="1" onid="86" polarization="1" symbol_rate="27500000" system="0" tsid="3"/>
++              <transponder fec_inner="3" frequency="12073000" modulation="1" onid="85" polarization="0" symbol_rate="27500000" system="0" tsid="15"/>
++              <transponder fec_inner="3" frequency="12092000" modulation="1" onid="86" polarization="1" symbol_rate="27500000" system="0" tsid="23"/>
++              <transponder fec_inner="4" frequency="12111000" modulation="1" polarization="0" symbol_rate="27500000" system="0"/>
++              <transponder fec_inner="3" frequency="12130000" modulation="1" polarization="1" symbol_rate="27500000" system="0"/>
++              <transponder fec_inner="3" frequency="12149000" modulation="1" onid="366" polarization="0" symbol_rate="27500000" system="0" tsid="200"/>
++              <transponder fec_inner="3" frequency="12169000" modulation="2" polarization="1" symbol_rate="27500000" system="1"/>
++              <transponder fec_inner="5" frequency="12188000" modulation="1" polarization="0" symbol_rate="27500000" system="0"/>
++              <transponder fec_inner="3" frequency="12207000" modulation="2" polarization="1" symbol_rate="27500000" system="1"/>
++              <transponder fec_inner="5" frequency="12226000" modulation="1" onid="94" polarization="0" symbol_rate="25540000" system="0" tsid="1"/>
++              <transponder fec_inner="5" frequency="12245000" modulation="1" polarization="1" symbol_rate="27500000" system="0"/>
++              <transponder fec_inner="3" frequency="12265000" modulation="1" onid="366" polarization="0" symbol_rate="27500000" system="0" tsid="256"/>
++              <transponder fec_inner="3" frequency="12284000" modulation="1" onid="85" polarization="1" symbol_rate="27500000" system="0" tsid="1"/>
++              <transponder fec_inner="5" frequency="12303000" modulation="1" polarization="0" symbol_rate="25547000" system="0"/>
++              <transponder fec_inner="3" frequency="12322000" modulation="1" polarization="1" symbol_rate="27500000" system="0"/>
++              <transponder fec_inner="3" frequency="12341000" modulation="1" onid="366" polarization="0" symbol_rate="27500000" system="0" tsid="101"/>
++              <transponder fec_inner="5" frequency="12360000" modulation="1" onid="1" polarization="1" symbol_rate="27500000" system="0" tsid="8800"/>
++              <transponder fec_inner="3" frequency="12380000" modulation="1" onid="85" polarization="0" symbol_rate="27500000" system="0" tsid="2"/>
++              <transponder fec_inner="2" frequency="12399000" modulation="2" polarization="1" symbol_rate="27500000" system="1"/>
++              <transponder fec_inner="3" frequency="12418000" modulation="1" onid="1" polarization="0" symbol_rate="27500000" system="0" tsid="101"/>
++              <transponder fec_inner="2" frequency="12437000" modulation="2" onid="86" polarization="1" symbol_rate="27500000" system="1" tsid="27"/>
++              <transponder fec_inner="3" frequency="12456000" modulation="1" polarization="0" symbol_rate="27500000" system="0"/>
++              <transponder fec_inner="3" frequency="12476000" modulation="1" onid="86" polarization="1" symbol_rate="27500000" system="0" tsid="26"/>
++              <transponder fec_inner="3" frequency="12608000" modulation="1" polarization="0" symbol_rate="27500000" system="0"/>
++              <transponder fec_inner="3" frequency="12614000" modulation="1" polarization="1" symbol_rate="14685000" system="0"/>
++              <transponder fec_inner="3" frequency="12633000" modulation="1" polarization="1" symbol_rate="3720000" system="0"/>
++              <transponder fec_inner="3" frequency="12637000" modulation="1" polarization="0" symbol_rate="14465000" system="0"/>
++              <transponder fec_inner="3" frequency="12644000" modulation="1" polarization="1" symbol_rate="3200000" system="0"/>
++              <transponder fec_inner="3" frequency="12649000" modulation="1" polarization="1" symbol_rate="3977000" system="0"/>
++              <transponder fec_inner="1" frequency="12668000" modulation="1" polarization="1" symbol_rate="6666000" system="0"/>
++              <transponder fec_inner="3" frequency="12672000" modulation="1" polarization="0" symbol_rate="3300000" system="0"/>
++              <transponder fec_inner="4" frequency="12678000" modulation="1" polarization="1" symbol_rate="13333000" system="0"/>
++              <transponder fec_inner="3" frequency="12680000" modulation="1" onid="95" polarization="0" symbol_rate="9404000" system="0" tsid="1"/>
++              <transponder fec_inner="3" frequency="12690000" modulation="1" polarization="0" symbol_rate="3330000" system="0"/>
++              <transponder fec_inner="3" frequency="12690000" modulation="1" polarization="1" symbol_rate="2650000" system="0"/>
++              <transponder fec_inner="3" frequency="12697000" modulation="1" polarization="1" symbol_rate="6150000" system="1"/>
++              <transponder fec_inner="3" frequency="12701000" modulation="1" polarization="0" symbol_rate="6111000" system="0"/>
++              <transponder fec_inner="0" frequency="12701000" modulation="1" polarization="1" symbol_rate="6150000" system="0"/>
++              <transponder fec_inner="3" frequency="12715000" modulation="1" polarization="0" symbol_rate="3330000" system="0"/>
++              <transponder fec_inner="3" frequency="12724000" modulation="1" polarization="0" symbol_rate="1772000" system="0"/>
++              <transponder fec_inner="3" frequency="12736000" modulation="1" polarization="0" symbol_rate="3038000" system="0"/>
++      </sat>
++      <sat flags="1" name="Eutelsat W3 (7.0E)" position="70">
++              <transponder fec_inner="3" frequency="10762000" modulation="1" polarization="0" symbol_rate="27500000" system="0"/>
++              <transponder fec_inner="3" frequency="10880000" modulation="2" polarization="1" symbol_rate="17360000" system="1"/>
++              <transponder fec_inner="3" frequency="10899000" modulation="1" polarization="1" symbol_rate="9404000" system="0"/>
++              <transponder fec_inner="2" frequency="10928000" modulation="2" polarization="0" symbol_rate="30000000" system="1"/>
++              <transponder fec_inner="3" frequency="10928000" modulation="1" onid="126" polarization="1" symbol_rate="27500000" system="0" tsid="2578"/>
++              <transponder fec_inner="0" frequency="10960000" modulation="1" polarization="0" symbol_rate="6666000" system="0"/>
++              <transponder fec_inner="0" frequency="10960000" modulation="1" polarization="1" symbol_rate="6666000" system="0"/>
++              <transponder fec_inner="0" frequency="10968000" modulation="1" polarization="0" symbol_rate="6666000" system="0"/>
++              <transponder fec_inner="0" frequency="10968000" modulation="1" polarization="1" symbol_rate="6666000" system="0"/>
++              <transponder fec_inner="0" frequency="10977000" modulation="1" polarization="0" symbol_rate="6666000" system="0"/>
++              <transponder fec_inner="0" frequency="10978000" modulation="1" polarization="1" symbol_rate="6666000" system="0"/>
++              <transponder fec_inner="0" frequency="10982000" modulation="1" polarization="1" symbol_rate="13333000" system="0"/>
++              <transponder fec_inner="0" frequency="10986000" modulation="1" polarization="0" symbol_rate="6666000" system="0"/>
++              <transponder fec_inner="0" frequency="10986000" modulation="1" polarization="1" symbol_rate="6666000" system="0"/>
++              <transponder fec_inner="0" frequency="10994000" modulation="1" polarization="1" symbol_rate="4434000" system="0"/>
++              <transponder fec_inner="0" frequency="10996000" modulation="1" onid="235" polarization="0" symbol_rate="6666000" system="0" tsid="17185"/>
++              <transponder fec_inner="0" frequency="11000000" modulation="1" polarization="1" symbol_rate="4434000" system="0"/>
++              <transponder fec_inner="0" frequency="11004000" modulation="1" polarization="0" symbol_rate="6666000" system="0"/>
++              <transponder fec_inner="0" frequency="11014000" modulation="1" polarization="0" symbol_rate="6666000" system="0"/>
++              <transponder fec_inner="0" frequency="11014000" modulation="1" polarization="1" symbol_rate="6666000" system="0"/>
++              <transponder fec_inner="0" frequency="11023000" modulation="1" polarization="0" symbol_rate="6666000" system="0"/>
++              <transponder fec_inner="0" frequency="11043000" modulation="1" polarization="1" symbol_rate="6666000" system="0"/>
++              <transponder fec_inner="0" frequency="11052000" modulation="1" polarization="0" symbol_rate="6666000" system="0"/>
++              <transponder fec_inner="0" frequency="11052000" modulation="1" polarization="1" symbol_rate="6666000" system="0"/>
++              <transponder fec_inner="0" frequency="11061000" modulation="1" polarization="0" symbol_rate="6666000" system="0"/>
++              <transponder fec_inner="0" frequency="11061000" modulation="1" polarization="1" symbol_rate="6666000" system="0"/>
++              <transponder fec_inner="0" frequency="11066000" modulation="1" polarization="0" symbol_rate="13333000" system="0"/>
++              <transponder fec_inner="0" frequency="11070000" modulation="1" polarization="0" symbol_rate="6666000" system="0"/>
++              <transponder fec_inner="0" frequency="11071000" modulation="1" polarization="1" symbol_rate="6666000" system="0"/>
++              <transponder fec_inner="0" frequency="11078000" modulation="1" polarization="1" symbol_rate="4434000" system="0"/>
++              <transponder fec_inner="0" frequency="11079000" modulation="1" polarization="0" symbol_rate="6666000" system="0"/>
++              <transponder fec_inner="0" frequency="11084000" modulation="1" polarization="0" symbol_rate="13333000" system="0"/>
++              <transponder fec_inner="0" frequency="11084000" modulation="1" polarization="1" symbol_rate="4434000" system="0"/>
++              <transponder fec_inner="0" frequency="11088000" modulation="1" polarization="0" symbol_rate="6666000" system="0"/>
++              <transponder fec_inner="0" frequency="11097000" modulation="1" polarization="1" symbol_rate="6666000" system="0"/>
++              <transponder fec_inner="0" frequency="11102000" modulation="1" polarization="0" symbol_rate="13333000" system="0"/>
++              <transponder fec_inner="0" frequency="11106000" modulation="1" polarization="0" symbol_rate="6666000" system="0"/>
++              <transponder fec_inner="0" frequency="11106000" modulation="1" polarization="1" symbol_rate="6666000" system="0"/>
++              <transponder fec_inner="5" frequency="11125000" modulation="1" polarization="1" symbol_rate="2677000" system="0"/>
++              <transponder fec_inner="0" frequency="11126000" modulation="1" polarization="0" symbol_rate="6666000" system="0"/>
++              <transponder fec_inner="3" frequency="11126000" modulation="1" polarization="1" symbol_rate="5697000" system="0"/>
++              <transponder fec_inner="0" frequency="11142000" modulation="1" polarization="1" symbol_rate="6666000" system="0"/>
++              <transponder fec_inner="0" frequency="11152000" modulation="1" polarization="1" symbol_rate="6666000" system="0"/>
++              <transponder fec_inner="3" frequency="11175000" modulation="1" polarization="1" symbol_rate="27500000" system="0"/>
++              <transponder fec_inner="2" frequency="11262000" modulation="1" onid="126" polarization="0" symbol_rate="27500000" system="0" tsid="50500"/>
++              <transponder fec_inner="3" frequency="11283000" modulation="1" onid="126" polarization="1" symbol_rate="27500000" system="0" tsid="40400"/>
++              <transponder fec_inner="3" frequency="11298000" modulation="1" polarization="0" symbol_rate="13500000" system="0"/>
++              <transponder fec_inner="2" frequency="11324000" modulation="1" onid="16" polarization="1" symbol_rate="27500000" system="0" tsid="1"/>
++              <transponder fec_inner="2" frequency="11346000" modulation="1" polarization="0" symbol_rate="27500000" system="0"/>
++              <transponder fec_inner="3" frequency="11361000" modulation="1" polarization="1" symbol_rate="18086000" system="0"/>
++              <transponder fec_inner="4" frequency="11386000" modulation="1" polarization="0" symbol_rate="30000000" system="0"/>
++              <transponder fec_inner="3" frequency="11405000" modulation="1" polarization="1" symbol_rate="27500000" system="0"/>
++              <transponder fec_inner="0" frequency="11429000" modulation="1" polarization="0" symbol_rate="27500000" system="0"/>
++              <transponder fec_inner="2" frequency="11451000" modulation="1" polarization="1" symbol_rate="25066000" system="0"/>
++              <transponder fec_inner="3" frequency="11471000" modulation="1" polarization="0" symbol_rate="30000000" system="0"/>
++              <transponder fec_inner="3" frequency="11492000" modulation="1" polarization="1" symbol_rate="30000000" system="0"/>
++              <transponder fec_inner="3" frequency="11513000" modulation="1" onid="126" polarization="0" symbol_rate="27500000" system="0" tsid="50900"/>
++              <transponder fec_inner="3" frequency="11534000" modulation="1" polarization="1" symbol_rate="30000000" system="0"/>
++              <transponder fec_inner="3" frequency="11554000" modulation="1" polarization="0" symbol_rate="27500000" system="0"/>
++              <transponder fec_inner="3" frequency="11575000" modulation="1" onid="126" polarization="1" symbol_rate="30000000" system="0" tsid="50600"/>
++              <transponder fec_inner="3" frequency="11596000" modulation="1" polarization="0" symbol_rate="30000000" system="0"/>
++              <transponder fec_inner="3" frequency="11617000" modulation="1" polarization="1" symbol_rate="30000000" system="0"/>
++              <transponder fec_inner="3" frequency="11637000" modulation="1" polarization="0" symbol_rate="30000000" system="0"/>
++              <transponder fec_inner="3" frequency="11658000" modulation="1" polarization="1" symbol_rate="30000000" system="0"/>
++              <transponder fec_inner="3" frequency="11678000" modulation="1" polarization="0" symbol_rate="30000000" system="0"/>
++              <transponder fec_inner="4" frequency="12520000" modulation="1" polarization="1" symbol_rate="6111000" system="0"/>
++      </sat>
++      <sat name="Eurobird 9A (9.0E)" flags="0" position="90">
++              <transponder frequency="11727000" symbol_rate="27500000" polarization="1" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="11747000" symbol_rate="27500000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="11785000" symbol_rate="27500000" polarization="0" fec_inner="2" system="1" modulation="2"/>
++              <transponder frequency="11804000" symbol_rate="27500000" polarization="1" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="11823000" symbol_rate="27500000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="11843000" symbol_rate="27500000" polarization="1" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="11861000" symbol_rate="27500000" polarization="0" fec_inner="2" system="1" modulation="2"/>
++              <transponder frequency="11881000" symbol_rate="27500000" polarization="1" fec_inner="2" system="1" modulation="2"/>
++              <transponder frequency="11900000" symbol_rate="27500000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="11919000" symbol_rate="27500000" polarization="1" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="11938000" symbol_rate="27500000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="11958000" symbol_rate="27500000" polarization="1" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="11977000" symbol_rate="27500000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="11996000" symbol_rate="27500000" polarization="1" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12015000" symbol_rate="27500000" polarization="0" fec_inner="2" system="1" modulation="2"/>
++              <transponder frequency="12034000" symbol_rate="27500000" polarization="1" fec_inner="3" system="1" modulation="2"/>
++              <transponder frequency="12054000" symbol_rate="27500000" polarization="0" fec_inner="2" system="1" modulation="2"/>
++              <transponder frequency="12074000" symbol_rate="27500000" polarization="1" fec_inner="3" system="1" modulation="2"/>
++              <transponder frequency="12092000" symbol_rate="27500000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12130000" symbol_rate="27500000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12207000" symbol_rate="27500000" polarization="0" fec_inner="2" system="1" modulation="2"/>
++              <transponder frequency="12284000" symbol_rate="27500000" polarization="0" fec_inner="2" system="1" modulation="2"/>
++              <transponder frequency="12303000" symbol_rate="26400000" polarization="1" fec_inner="2" system="1" modulation="2"/>
++              <transponder frequency="12322000" symbol_rate="27500000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12360000" symbol_rate="27500000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12380000" symbol_rate="26400000" polarization="1" fec_inner="2" system="1" modulation="2"/>
++              <transponder frequency="12399000" symbol_rate="27500000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12437000" symbol_rate="27500000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++      </sat>
+       <sat flags="1" name="Eutelsat W1 (10.0E)" position="100">
+               <transponder fec_inner="0" frequency="10960000" modulation="1" polarization="1" symbol_rate="4167000" system="0"/>
+               <transponder fec_inner="0" frequency="10965000" modulation="1" onid="65535" polarization="1" symbol_rate="4167000" system="0" tsid="1"/>
+@@ -1347,73 +1541,75 @@
+               <transponder fec_inner="4" frequency="12652000" modulation="1" polarization="1" symbol_rate="28000000" system="0"/>
+               <transponder fec_inner="3" frequency="12740000" modulation="1" polarization="1" symbol_rate="14550000" system="0"/>
+       </sat>
+-      <sat flags="1" name="Eutelsat Sesat (36.0E)" position="360">
+-              <transponder fec_inner="4" frequency="10962000" modulation="1" polarization="1" symbol_rate="3254000" system="0"/>
+-              <transponder fec_inner="3" frequency="10978000" modulation="1" polarization="1" symbol_rate="3470000" system="0"/>
+-              <transponder fec_inner="2" frequency="11041000" modulation="1" polarization="1" symbol_rate="3410000" system="0"/>
+-              <transponder fec_inner="0" frequency="11043000" modulation="1" polarization="0" symbol_rate="6666000" system="0"/>
+-              <transponder fec_inner="3" frequency="11053000" modulation="1" polarization="1" symbol_rate="2892000" system="0"/>
+-              <transponder fec_inner="0" frequency="11061000" modulation="1" polarization="0" symbol_rate="6666000" system="0"/>
+-              <transponder fec_inner="4" frequency="11062000" modulation="1" polarization="1" symbol_rate="3254000" system="0"/>
+-              <transponder fec_inner="0" frequency="11070000" modulation="1" polarization="0" symbol_rate="6666000" system="0"/>
+-              <transponder fec_inner="0" frequency="11079000" modulation="1" polarization="0" symbol_rate="6111000" system="0"/>
+-              <transponder fec_inner="2" frequency="11108500" modulation="1" polarization="1" symbol_rate="3418000" system="0"/>
+-              <transponder fec_inner="2" frequency="11136000" modulation="1" polarization="1" symbol_rate="4886000" system="0"/>
+-              <transponder fec_inner="3" frequency="11633000" modulation="1" polarization="1" symbol_rate="5787000" system="0"/>
+-              <transponder fec_inner="3" frequency="11638500" modulation="1" polarization="1" symbol_rate="2170000" system="0"/>
+-              <transponder fec_inner="3" frequency="11644500" modulation="1" polarization="1" symbol_rate="2180000" system="0"/>
+-              <transponder fec_inner="3" frequency="11647500" modulation="1" polarization="1" symbol_rate="2500000" system="0"/>
+-              <transponder fec_inner="3" frequency="11651000" modulation="1" polarization="1" symbol_rate="2530000" system="0"/>
+-              <transponder fec_inner="3" frequency="11689000" modulation="1" polarization="0" symbol_rate="11571000" system="0"/>
+-              <transponder fec_inner="1" frequency="11691000" modulation="1" polarization="1" symbol_rate="4883000" system="0"/>
+-              <transponder fec_inner="3" frequency="11727000" modulation="1" polarization="L" symbol_rate="27500000" system="0"/>
+-              <transponder fec_inner="3" frequency="12073000" modulation="1" polarization="L" symbol_rate="27500000" system="0"/>
+-              <transponder fec_inner="3" frequency="12173000" modulation="1" polarization="L" symbol_rate="27500000" system="0"/>
+-              <transponder fec_inner="3" frequency="12178000" modulation="1" polarization="L" symbol_rate="4340000" system="0"/>
+-              <transponder fec_inner="3" frequency="12226000" modulation="1" polarization="L" symbol_rate="27500000" system="0"/>
+-              <transponder fec_inner="3" frequency="12245000" modulation="1" polarization="R" symbol_rate="27500000" system="0"/>
+-              <transponder fec_inner="3" frequency="12303000" modulation="1" polarization="L" symbol_rate="27500000" system="0"/>
+-              <transponder fec_inner="3" frequency="12322000" modulation="1" polarization="R" symbol_rate="27500000" system="0"/>
+-              <transponder fec_inner="3" frequency="12380000" modulation="1" polarization="L" symbol_rate="27500000" system="0"/>
+-              <transponder fec_inner="3" frequency="12399000" modulation="1" polarization="R" symbol_rate="27500000" system="0"/>
+-              <transponder fec_inner="3" frequency="12456000" modulation="1" polarization="L" symbol_rate="27500000" system="0"/>
+-              <transponder fec_inner="3" frequency="12476000" modulation="1" polarization="R" symbol_rate="27500000" system="0"/>
+-              <transponder fec_inner="4" frequency="12507000" modulation="1" polarization="1" symbol_rate="3320000" system="0"/>
+-              <transponder fec_inner="1" frequency="12512000" modulation="1" polarization="0" symbol_rate="4340000" system="0"/>
+-              <transponder fec_inner="4" frequency="12516000" modulation="1" onid="42" polarization="1" symbol_rate="10370000" system="0" tsid="21"/>
+-              <transponder fec_inner="1" frequency="12521000" modulation="1" polarization="0" symbol_rate="4340000" system="0"/>
+-              <transponder fec_inner="2" frequency="12525000" modulation="1" polarization="0" symbol_rate="1110000" system="0"/>
+-              <transponder fec_inner="2" frequency="12527500" modulation="1" polarization="0" symbol_rate="2238000" system="0"/>
+-              <transponder fec_inner="5" frequency="12531000" modulation="1" polarization="1" symbol_rate="3100000" system="0"/>
+-              <transponder fec_inner="1" frequency="12532000" modulation="1" onid="177" polarization="0" symbol_rate="4340000" system="0" tsid="176"/>
+-              <transponder fec_inner="3" frequency="12537000" modulation="1" onid="8192" polarization="0" symbol_rate="2100000" system="0" tsid="1"/>
+-              <transponder fec_inner="1" frequency="12541000" modulation="1" polarization="0" symbol_rate="4340000" system="0"/>
+-              <transponder fec_inner="4" frequency="12546500" modulation="1" polarization="0" symbol_rate="2734000" system="0"/>
+-              <transponder fec_inner="2" frequency="12558000" modulation="1" onid="878" polarization="1" symbol_rate="8138000" system="0" tsid="60200"/>
+-              <transponder fec_inner="5" frequency="12560000" modulation="1" polarization="0" symbol_rate="1302000" system="0"/>
+-              <transponder fec_inner="2" frequency="12568500" modulation="1" polarization="1" symbol_rate="2848000" system="0"/>
+-              <transponder fec_inner="3" frequency="12575500" modulation="1" polarization="0" symbol_rate="2894000" system="0"/>
+-              <transponder fec_inner="2" frequency="12596500" modulation="1" polarization="1" symbol_rate="2500000" system="0"/>
+-              <transponder fec_inner="3" frequency="12600000" modulation="1" polarization="1" symbol_rate="1447000" system="0"/>
+-              <transponder fec_inner="3" frequency="12611000" modulation="1" polarization="1" symbol_rate="5787000" system="0"/>
+-              <transponder fec_inner="2" frequency="12614000" modulation="1" polarization="0" symbol_rate="2441000" system="0"/>
+-              <transponder fec_inner="2" frequency="12616500" modulation="1" polarization="1" symbol_rate="1628000" system="0"/>
+-              <transponder fec_inner="3" frequency="12625500" modulation="1" polarization="1" symbol_rate="2668000" system="0"/>
+-              <transponder fec_inner="3" frequency="12630000" modulation="1" polarization="1" symbol_rate="1000000" system="0"/>
+-              <transponder fec_inner="5" frequency="12652000" modulation="1" onid="65535" polarization="1" symbol_rate="2480000" system="0" tsid="1"/>
+-              <transponder fec_inner="3" frequency="12656000" modulation="1" polarization="0" symbol_rate="2963000" system="0"/>
+-              <transponder fec_inner="2" frequency="12680000" modulation="1" polarization="1" symbol_rate="3002000" system="0"/>
+-              <transponder fec_inner="1" frequency="12685000" modulation="1" polarization="1" symbol_rate="4340000" system="0"/>
+-              <transponder fec_inner="2" frequency="12686000" modulation="1" polarization="0" symbol_rate="3254000" system="0"/>
+-              <transponder fec_inner="2" frequency="12689000" modulation="1" polarization="1" symbol_rate="3254000" system="0"/>
+-              <transponder fec_inner="2" frequency="12694000" modulation="1" polarization="0" symbol_rate="2498000" system="0"/>
+-              <transponder fec_inner="3" frequency="12694000" modulation="1" polarization="1" symbol_rate="3030000" system="0"/>
+-              <transponder fec_inner="1" frequency="12698000" modulation="1" polarization="0" symbol_rate="4883000" system="0"/>
+-              <transponder fec_inner="2" frequency="12702000" modulation="1" polarization="0" symbol_rate="3410000" system="0"/>
+-              <transponder fec_inner="1" frequency="12707500" modulation="1" polarization="1" symbol_rate="4340000" system="0"/>
+-              <transponder fec_inner="2" frequency="12710000" modulation="1" polarization="1" symbol_rate="3002000" system="0"/>
+-              <transponder fec_inner="1" frequency="12720000" modulation="1" polarization="1" symbol_rate="13017000" system="0"/>
+-              <transponder fec_inner="3" frequency="12739000" modulation="1" polarization="1" symbol_rate="2532000" system="0"/>
++      <sat name="Eutelsat W4/W7 (36.0E)" flags="0" position="360">
++              <transponder frequency="11057000" symbol_rate="2894000" polarization="1" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="11109000" symbol_rate="3418000" polarization="1" fec_inner="2" system="0" modulation="0"/>
++              <transponder frequency="11464000" symbol_rate="2890000" polarization="1" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="11510000" symbol_rate="27500000" polarization="1" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="11637000" symbol_rate="22000000" polarization="1" fec_inner="0" system="0" modulation="0"/>
++              <transponder frequency="11639000" symbol_rate="2200000" polarization="1" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="11643000" symbol_rate="2170000" polarization="1" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="11648000" symbol_rate="3111000" polarization="1" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="11652000" symbol_rate="3111000" polarization="1" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="11658000" symbol_rate="1800000" polarization="1" fec_inner="5" system="0" modulation="0"/>
++              <transponder frequency="11687000" symbol_rate="1800000" polarization="1" fec_inner="5" system="0" modulation="0"/>
++              <transponder frequency="11716000" symbol_rate="3141000" polarization="1" fec_inner="0" system="1" modulation="2"/>
++              <transponder frequency="11727000" symbol_rate="27500000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="11747000" symbol_rate="27500000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="11766000" symbol_rate="27500000" polarization="0" fec_inner="4" system="0" modulation="0"/>
++              <transponder frequency="11785000" symbol_rate="27500000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="11785000" symbol_rate="27500000" polarization="1" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="11804000" symbol_rate="27500000" polarization="0" fec_inner="3" system="1" modulation="0"/>
++              <transponder frequency="11823000" symbol_rate="27500000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="11862000" symbol_rate="27500000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="11881000" symbol_rate="27500000" polarization="1" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="11900000" symbol_rate="26480000" polarization="0" fec_inner="1" system="0" modulation="0"/>
++              <transponder frequency="11919000" symbol_rate="27500000" polarization="1" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="11940000" symbol_rate="27500000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="11958000" symbol_rate="27500000" polarization="1" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="11977000" symbol_rate="27500000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="11996000" symbol_rate="27500000" polarization="1" fec_inner="0" system="0" modulation="0"/>
++              <transponder frequency="12015000" symbol_rate="27500000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12034000" symbol_rate="27500000" polarization="1" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12054000" symbol_rate="27500000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12073000" symbol_rate="27500000" polarization="0" fec_inner="3" system="1" modulation="2"/>
++              <transponder frequency="12073000" symbol_rate="27500000" polarization="1" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12092000" symbol_rate="27500000" polarization="0" fec_inner="5" system="0" modulation="0"/>
++              <transponder frequency="12111000" symbol_rate="27500000" polarization="0" fec_inner="3" system="1" modulation="2"/>
++              <transponder frequency="12130000" symbol_rate="27500000" polarization="0" fec_inner="5" system="0" modulation="0"/>
++              <transponder frequency="12175000" symbol_rate="4340000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12190000" symbol_rate="20000000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12207000" symbol_rate="27500000" polarization="1" fec_inner="3" system="1" modulation="2"/>
++              <transponder frequency="12226000" symbol_rate="27500000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12245000" symbol_rate="27500000" polarization="1" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12245000" symbol_rate="27500000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12265000" symbol_rate="27500000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12284000" symbol_rate="27500000" polarization="1" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12303000" symbol_rate="27500000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12322000" symbol_rate="27500000" polarization="1" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12341000" symbol_rate="27500000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12360000" symbol_rate="27500000" polarization="1" fec_inner="3" system="1" modulation="2"/>
++              <transponder frequency="12380000" symbol_rate="27500000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12399000" symbol_rate="27500000" polarization="1" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12418000" symbol_rate="27500000" polarization="0" fec_inner="3" system="1" modulation="2"/>
++              <transponder frequency="12437000" symbol_rate="23437000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12437000" symbol_rate="27500000" polarization="1" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12456000" symbol_rate="27500000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12476000" symbol_rate="27500000" polarization="1" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12511000" symbol_rate="4340000" polarization="0" fec_inner="1" system="0" modulation="0"/>
++              <transponder frequency="12516000" symbol_rate="10370000" polarization="1" fec_inner="4" system="0" modulation="0"/>
++              <transponder frequency="12516000" symbol_rate="2170000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12520000" symbol_rate="4340000" polarization="0" fec_inner="1" system="0" modulation="0"/>
++              <transponder frequency="12532000" symbol_rate="4340000" polarization="0" fec_inner="1" system="0" modulation="0"/>
++              <transponder frequency="12545000" symbol_rate="2734000" polarization="0" fec_inner="4" system="0" modulation="0"/>
++              <transponder frequency="12555000" symbol_rate="5695000" polarization="1" fec_inner="2" system="0" modulation="0"/>
++              <transponder frequency="12563000" symbol_rate="3255000" polarization="1" fec_inner="2" system="0" modulation="0"/>
++              <transponder frequency="12568000" symbol_rate="2500000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12591000" symbol_rate="2170000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12600000" symbol_rate="1824000" polarization="1" fec_inner="4" system="0" modulation="0"/>
++              <transponder frequency="12620000" symbol_rate="2894000" polarization="1" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12630000" symbol_rate="2238000" polarization="0" fec_inner="3" system="1" modulation="2"/>
++              <transponder frequency="12634000" symbol_rate="1331000" polarization="1" fec_inner="3" system="0" modulation="0"/>
+       </sat>
+       <sat flags="1" name="Hellas Sat 2 (39.0E)" position="390">
+               <transponder fec_inner="5" frequency="10956000" modulation="1" onid="65535" polarization="1" symbol_rate="4123000" system="0" tsid="1"/>
+@@ -1679,129 +1875,46 @@
+               <transponder fec_inner="3" frequency="3982000" modulation="1" polarization="L" symbol_rate="4285000" system="0"/>
+               <transponder fec_inner="4" frequency="4066000" modulation="1" polarization="L" symbol_rate="29763000" system="0"/>
+       </sat>
+-      <sat flags="1" name="Astra/Sirius (5.0E)" position="50">
+-              <transponder fec_inner="1" frequency="10920750" modulation="1" polarization="0" symbol_rate="22000000" system="0"/>
+-              <transponder fec_inner="1" frequency="10935500" modulation="1" polarization="1" symbol_rate="22000000" system="0"/>
+-              <transponder fec_inner="1" frequency="10964250" modulation="1" polarization="0" symbol_rate="22000000" system="0"/>
+-              <transponder fec_inner="1" frequency="10979000" modulation="1" polarization="1" symbol_rate="22000000" system="0"/>
+-              <transponder fec_inner="0" frequency="10987000" modulation="1" polarization="0" symbol_rate="6111000" system="0"/>
+-              <transponder fec_inner="1" frequency="10993750" modulation="1" polarization="0" symbol_rate="22000000" system="0"/>
+-              <transponder fec_inner="1" frequency="11008500" modulation="1" polarization="1" symbol_rate="22000000" system="0"/>
+-              <transponder fec_inner="1" frequency="11023250" modulation="1" polarization="0" symbol_rate="22000000" system="0"/>
+-              <transponder fec_inner="1" frequency="11038000" modulation="1" polarization="1" symbol_rate="22000000" system="0"/>
+-              <transponder fec_inner="1" frequency="11052750" modulation="1" polarization="0" symbol_rate="22000000" system="0"/>
+-              <transponder fec_inner="1" frequency="11067500" modulation="1" polarization="1" symbol_rate="22000000" system="0"/>
+-              <transponder fec_inner="1" frequency="11082250" modulation="1" polarization="0" symbol_rate="22000000" system="0"/>
+-              <transponder fec_inner="1" frequency="11097000" modulation="1" polarization="1" symbol_rate="22000000" system="0"/>
+-              <transponder fec_inner="1" frequency="11111750" modulation="1" polarization="0" symbol_rate="22000000" system="0"/>
+-              <transponder fec_inner="1" frequency="11126500" modulation="1" polarization="1" symbol_rate="22000000" system="0"/>
+-              <transponder fec_inner="1" frequency="11141250" modulation="1" polarization="0" symbol_rate="22000000" system="0"/>
+-              <transponder fec_inner="1" frequency="11156000" modulation="1" polarization="1" symbol_rate="22000000" system="0"/>
+-              <transponder fec_inner="0" frequency="11158000" modulation="1" polarization="0" symbol_rate="27500000" system="0"/>
+-              <transponder fec_inner="1" frequency="11170750" modulation="1" polarization="0" symbol_rate="22000000" system="0"/>
+-              <transponder fec_inner="1" frequency="11185500" modulation="1" polarization="1" symbol_rate="22000000" system="0"/>
+-              <transponder fec_inner="1" frequency="11214250" modulation="1" polarization="0" symbol_rate="22000000" system="0"/>
+-              <transponder fec_inner="1" frequency="11229000" modulation="1" polarization="1" symbol_rate="22000000" system="0"/>
+-              <transponder fec_inner="1" frequency="11243750" modulation="1" polarization="0" symbol_rate="22000000" system="0"/>
+-              <transponder fec_inner="1" frequency="11258500" modulation="1" polarization="1" symbol_rate="22000000" system="0"/>
+-              <transponder fec_inner="1" frequency="11273250" modulation="1" polarization="0" symbol_rate="22000000" system="0"/>
+-              <transponder fec_inner="1" frequency="11288000" modulation="1" polarization="1" symbol_rate="22000000" system="0"/>
+-              <transponder fec_inner="1" frequency="11302750" modulation="1" polarization="0" symbol_rate="22000000" system="0"/>
+-              <transponder fec_inner="1" frequency="11317500" modulation="1" polarization="1" symbol_rate="22000000" system="0"/>
+-              <transponder fec_inner="1" frequency="11332250" modulation="1" polarization="0" symbol_rate="22000000" system="0"/>
+-              <transponder fec_inner="1" frequency="11347000" modulation="1" polarization="1" symbol_rate="22000000" system="0"/>
+-              <transponder fec_inner="1" frequency="11361750" modulation="1" polarization="0" symbol_rate="22000000" system="0"/>
+-              <transponder fec_inner="1" frequency="11376500" modulation="1" polarization="1" symbol_rate="22000000" system="0"/>
+-              <transponder fec_inner="1" frequency="11391250" modulation="1" polarization="0" symbol_rate="22000000" system="0"/>
+-              <transponder fec_inner="1" frequency="11406000" modulation="1" polarization="1" symbol_rate="22000000" system="0"/>
+-              <transponder fec_inner="1" frequency="11420750" modulation="1" polarization="0" symbol_rate="22000000" system="0"/>
+-              <transponder fec_inner="1" frequency="11435500" modulation="1" polarization="1" symbol_rate="22000000" system="0"/>
+-              <transponder fec_inner="3" frequency="11727480" modulation="1" polarization="0" symbol_rate="27500000" system="0"/>
+-              <transponder fec_inner="3" frequency="11747000" modulation="1" onid="86" polarization="1" symbol_rate="27500000" system="0" tsid="10"/>
+-              <transponder fec_inner="3" frequency="11766000" modulation="1" onid="85" polarization="0" symbol_rate="27500000" system="0" tsid="12"/>
+-              <transponder fec_inner="3" frequency="11785000" modulation="1" onid="86" polarization="1" symbol_rate="27500000" system="0" tsid="11"/>
+-              <transponder fec_inner="3" frequency="11804000" modulation="1" onid="86" polarization="0" symbol_rate="27500000" system="0" tsid="8"/>
+-              <transponder fec_inner="3" frequency="11823000" modulation="1" onid="86" polarization="1" symbol_rate="27500000" system="0" tsid="9"/>
+-              <transponder fec_inner="3" frequency="11843000" modulation="1" polarization="0" symbol_rate="27500000" system="0"/>
+-              <transponder fec_inner="3" frequency="11862000" modulation="1" onid="86" polarization="1" symbol_rate="27500000" system="0" tsid="21"/>
+-              <transponder fec_inner="3" frequency="11881000" modulation="1" onid="86" polarization="0" symbol_rate="27500000" system="0" tsid="7"/>
+-              <transponder fec_inner="3" frequency="11900000" modulation="1" polarization="1" symbol_rate="27500000" system="0"/>
+-              <transponder fec_inner="3" frequency="11919000" modulation="1" onid="86" polarization="0" symbol_rate="27500000" system="0" tsid="24"/>
+-              <transponder fec_inner="3" frequency="11938000" modulation="1" onid="86" polarization="1" symbol_rate="27500000" system="0" tsid="22"/>
+-              <transponder fec_inner="3" frequency="11958000" modulation="1" onid="85" polarization="0" symbol_rate="27500000" system="0" tsid="14"/>
+-              <transponder fec_inner="3" frequency="11977000" modulation="1" onid="86" polarization="1" symbol_rate="27500000" system="0" tsid="4"/>
+-              <transponder fec_inner="3" frequency="11996000" modulation="1" onid="86" polarization="0" symbol_rate="27500000" system="0" tsid="6"/>
+-              <transponder fec_inner="4" frequency="12015000" modulation="1" onid="86" polarization="1" symbol_rate="27500000" system="0" tsid="28"/>
+-              <transponder fec_inner="3" frequency="12034000" modulation="1" onid="86" polarization="0" symbol_rate="27500000" system="0" tsid="5"/>
+-              <transponder fec_inner="3" frequency="12054000" modulation="1" onid="86" polarization="1" symbol_rate="27500000" system="0" tsid="3"/>
+-              <transponder fec_inner="3" frequency="12073000" modulation="1" onid="85" polarization="0" symbol_rate="27500000" system="0" tsid="15"/>
+-              <transponder fec_inner="3" frequency="12092000" modulation="1" onid="86" polarization="1" symbol_rate="27500000" system="0" tsid="23"/>
+-              <transponder fec_inner="4" frequency="12111000" modulation="1" polarization="0" symbol_rate="27500000" system="0"/>
+-              <transponder fec_inner="3" frequency="12130000" modulation="1" polarization="1" symbol_rate="27500000" system="0"/>
+-              <transponder fec_inner="3" frequency="12149000" modulation="1" onid="366" polarization="0" symbol_rate="27500000" system="0" tsid="200"/>
+-              <transponder fec_inner="3" frequency="12169000" modulation="2" polarization="1" symbol_rate="27500000" system="1"/>
+-              <transponder fec_inner="5" frequency="12188000" modulation="1" polarization="0" symbol_rate="27500000" system="0"/>
+-              <transponder fec_inner="3" frequency="12207000" modulation="2" polarization="1" symbol_rate="27500000" system="1"/>
+-              <transponder fec_inner="5" frequency="12226000" modulation="1" onid="94" polarization="0" symbol_rate="25540000" system="0" tsid="1"/>
+-              <transponder fec_inner="5" frequency="12245000" modulation="1" polarization="1" symbol_rate="27500000" system="0"/>
+-              <transponder fec_inner="3" frequency="12265000" modulation="1" onid="366" polarization="0" symbol_rate="27500000" system="0" tsid="256"/>
+-              <transponder fec_inner="3" frequency="12284000" modulation="1" onid="85" polarization="1" symbol_rate="27500000" system="0" tsid="1"/>
+-              <transponder fec_inner="5" frequency="12303000" modulation="1" polarization="0" symbol_rate="25547000" system="0"/>
+-              <transponder fec_inner="3" frequency="12322000" modulation="1" polarization="1" symbol_rate="27500000" system="0"/>
+-              <transponder fec_inner="3" frequency="12341000" modulation="1" onid="366" polarization="0" symbol_rate="27500000" system="0" tsid="101"/>
+-              <transponder fec_inner="5" frequency="12360000" modulation="1" onid="1" polarization="1" symbol_rate="27500000" system="0" tsid="8800"/>
+-              <transponder fec_inner="3" frequency="12380000" modulation="1" onid="85" polarization="0" symbol_rate="27500000" system="0" tsid="2"/>
+-              <transponder fec_inner="2" frequency="12399000" modulation="2" polarization="1" symbol_rate="27500000" system="1"/>
+-              <transponder fec_inner="3" frequency="12418000" modulation="1" onid="1" polarization="0" symbol_rate="27500000" system="0" tsid="101"/>
+-              <transponder fec_inner="2" frequency="12437000" modulation="2" onid="86" polarization="1" symbol_rate="27500000" system="1" tsid="27"/>
+-              <transponder fec_inner="3" frequency="12456000" modulation="1" polarization="0" symbol_rate="27500000" system="0"/>
+-              <transponder fec_inner="3" frequency="12476000" modulation="1" onid="86" polarization="1" symbol_rate="27500000" system="0" tsid="26"/>
+-              <transponder fec_inner="3" frequency="12608000" modulation="1" polarization="0" symbol_rate="27500000" system="0"/>
+-              <transponder fec_inner="3" frequency="12614000" modulation="1" polarization="1" symbol_rate="14685000" system="0"/>
+-              <transponder fec_inner="3" frequency="12633000" modulation="1" polarization="1" symbol_rate="3720000" system="0"/>
+-              <transponder fec_inner="3" frequency="12637000" modulation="1" polarization="0" symbol_rate="14465000" system="0"/>
+-              <transponder fec_inner="3" frequency="12644000" modulation="1" polarization="1" symbol_rate="3200000" system="0"/>
+-              <transponder fec_inner="3" frequency="12649000" modulation="1" polarization="1" symbol_rate="3977000" system="0"/>
+-              <transponder fec_inner="1" frequency="12668000" modulation="1" polarization="1" symbol_rate="6666000" system="0"/>
+-              <transponder fec_inner="3" frequency="12672000" modulation="1" polarization="0" symbol_rate="3300000" system="0"/>
+-              <transponder fec_inner="4" frequency="12678000" modulation="1" polarization="1" symbol_rate="13333000" system="0"/>
+-              <transponder fec_inner="3" frequency="12680000" modulation="1" onid="95" polarization="0" symbol_rate="9404000" system="0" tsid="1"/>
+-              <transponder fec_inner="3" frequency="12690000" modulation="1" polarization="0" symbol_rate="3330000" system="0"/>
+-              <transponder fec_inner="3" frequency="12690000" modulation="1" polarization="1" symbol_rate="2650000" system="0"/>
+-              <transponder fec_inner="3" frequency="12697000" modulation="1" polarization="1" symbol_rate="6150000" system="1"/>
+-              <transponder fec_inner="3" frequency="12701000" modulation="1" polarization="0" symbol_rate="6111000" system="0"/>
+-              <transponder fec_inner="0" frequency="12701000" modulation="1" polarization="1" symbol_rate="6150000" system="0"/>
+-              <transponder fec_inner="3" frequency="12715000" modulation="1" polarization="0" symbol_rate="3330000" system="0"/>
+-              <transponder fec_inner="3" frequency="12724000" modulation="1" polarization="0" symbol_rate="1772000" system="0"/>
+-              <transponder fec_inner="3" frequency="12736000" modulation="1" polarization="0" symbol_rate="3038000" system="0"/>
++      <sat name="Express AM22 (53.0E)" flags="0" position="530">
++              <transponder frequency="10962000" symbol_rate="12000000" polarization="1" fec_inner="4" system="0" modulation="0"/>
++              <transponder frequency="10974000" symbol_rate="8150000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="10975000" symbol_rate="1800000" polarization="1" fec_inner="5" system="0" modulation="0"/>
++              <transponder frequency="10978000" symbol_rate="1800000" polarization="1" fec_inner="4" system="0" modulation="0"/>
++              <transponder frequency="10995000" symbol_rate="3255000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="11044000" symbol_rate="44950000" polarization="1" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="11096000" symbol_rate="6164000" polarization="1" fec_inner="5" system="0" modulation="0"/>
++              <transponder frequency="11098000" symbol_rate="3978000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="11124000" symbol_rate="8776000" polarization="1" fec_inner="4" system="0" modulation="0"/>
++              <transponder frequency="11161000" symbol_rate="5785000" polarization="1" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="11477000" symbol_rate="2222000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="11496000" symbol_rate="5000000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="11528000" symbol_rate="2530000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="11534000" symbol_rate="2893000" polarization="1" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="11543000" symbol_rate="2893000" polarization="1" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="11548000" symbol_rate="2893000" polarization="1" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="11612000" symbol_rate="3125000" polarization="1" fec_inner="5" system="0" modulation="0"/>
++              <transponder frequency="11616000" symbol_rate="2894000" polarization="1" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="11626000" symbol_rate="3125000" polarization="1" fec_inner="5" system="0" modulation="0"/>
++              <transponder frequency="11630000" symbol_rate="2893000" polarization="1" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="11647000" symbol_rate="2893000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="11690000" symbol_rate="3125000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12631000" symbol_rate="2532000" polarization="1" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12632000" symbol_rate="2170000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12635000" symbol_rate="2893000" polarization="1" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12637000" symbol_rate="2532000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12639000" symbol_rate="2894000" polarization="1" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12643000" symbol_rate="2170000" polarization="1" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12644000" symbol_rate="2532000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12648000" symbol_rate="2894000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12652000" symbol_rate="2532000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12656000" symbol_rate="3125000" polarization="0" fec_inner="1" system="0" modulation="0"/>
++              <transponder frequency="12661000" symbol_rate="3125000" polarization="0" fec_inner="1" system="0" modulation="0"/>
++              <transponder frequency="12664000" symbol_rate="27500000" polarization="1" fec_inner="4" system="0" modulation="0"/>
++              <transponder frequency="12716000" symbol_rate="27500000" polarization="1" fec_inner="2" system="0" modulation="0"/>
++              <transponder frequency="12721000" symbol_rate="1865000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12727000" symbol_rate="2592000" polarization="0" fec_inner="4" system="0" modulation="0"/>
++              <transponder frequency="12740000" symbol_rate="2172000" polarization="0" fec_inner="3" system="0" modulation="0"/>
+       </sat>
+-      <sat flags="1" name="Express AM22 (53.0E)" position="530">
+-              <transponder fec_inner="3" frequency="10974000" modulation="1" onid="1326" polarization="0" symbol_rate="8150000" system="0" tsid="801"/>
+-              <transponder fec_inner="5" frequency="10974000" modulation="1" polarization="1" symbol_rate="32223000" system="0"/>
+-              <transponder fec_inner="3" frequency="11031000" modulation="1" polarization="0" symbol_rate="3750000" system="0"/>
+-              <transponder fec_inner="3" frequency="11044000" modulation="1" onid="4369" polarization="1" symbol_rate="44950000" system="0" tsid="4"/>
+-              <transponder fec_inner="3" frequency="11081500" modulation="1" polarization="0" symbol_rate="1466000" system="0"/>
+-              <transponder fec_inner="3" frequency="11083000" modulation="1" polarization="1" symbol_rate="3000000" system="0"/>
+-              <transponder fec_inner="3" frequency="11096000" modulation="1" polarization="1" symbol_rate="6400000" system="0"/>
+-              <transponder fec_inner="3" frequency="11097000" modulation="1" polarization="0" symbol_rate="3979000" system="0"/>
+-              <transponder fec_inner="3" frequency="11160000" modulation="1" polarization="1" symbol_rate="5786000" system="0"/>
+-              <transponder fec_inner="3" frequency="11184000" modulation="1" polarization="1" symbol_rate="11111000" system="0"/>
+-              <transponder fec_inner="3" frequency="11481000" modulation="1" polarization="0" symbol_rate="41250000" system="0"/>
+-              <transponder fec_inner="3" frequency="11616500" modulation="1" polarization="1" symbol_rate="2894000" system="0"/>
+-              <transponder fec_inner="3" frequency="11630000" modulation="1" polarization="1" symbol_rate="2894000" system="0"/>
+-              <transponder fec_inner="3" frequency="12633000" modulation="1" polarization="0" symbol_rate="2170000" system="0"/>
+-              <transponder fec_inner="3" frequency="12637000" modulation="1" polarization="0" symbol_rate="2532000" system="0"/>
+-              <transponder fec_inner="3" frequency="12639000" modulation="1" polarization="1" symbol_rate="2893000" system="0"/>
+-              <transponder fec_inner="3" frequency="12642000" modulation="1" polarization="1" symbol_rate="2170000" system="0"/>
+-              <transponder fec_inner="3" frequency="12645000" modulation="1" polarization="0" symbol_rate="2532000" system="0"/>
+-              <transponder fec_inner="3" frequency="12648000" modulation="1" polarization="0" symbol_rate="2532000" system="0"/>
+-              <transponder fec_inner="3" frequency="12652000" modulation="1" polarization="0" symbol_rate="2532000" system="0"/>
+-              <transponder fec_inner="1" frequency="12656000" modulation="1" polarization="0" symbol_rate="3125000" system="0"/>
+-              <transponder fec_inner="1" frequency="12661000" modulation="1" polarization="0" symbol_rate="3125000" system="0"/>
+-              <transponder fec_inner="3" frequency="12664000" modulation="1" onid="3030" polarization="1" symbol_rate="30000000" system="0" tsid="60"/>
+-              <transponder fec_inner="5" frequency="12724000" modulation="1" polarization="0" symbol_rate="2480000" system="0"/>
+-              <transponder fec_inner="3" frequency="12741000" modulation="1" polarization="0" symbol_rate="7086000" system="0"/>
+-      </sat>
+       <sat flags="1" name="Intelsat 702 (55.0E)" position="550">
+               <transponder fec_inner="4" frequency="11126000" modulation="1" polarization="1" symbol_rate="3125000" system="0"/>
+               <transponder fec_inner="3" frequency="11129000" modulation="1" polarization="1" symbol_rate="3700000" system="0"/>
+@@ -1899,74 +2012,6 @@
+               <transponder fec_inner="3" frequency="4185000" modulation="1" polarization="0" symbol_rate="20000000" system="0"/>
+               <transponder fec_inner="2" frequency="4190000" modulation="1" polarization="1" symbol_rate="12207000" system="0"/>
+       </sat>
+-      <sat flags="1" name="Eutelsat W3 (7.0E)" position="70">
+-              <transponder fec_inner="3" frequency="10762000" modulation="1" polarization="0" symbol_rate="27500000" system="0"/>
+-              <transponder fec_inner="3" frequency="10880000" modulation="2" polarization="1" symbol_rate="17360000" system="1"/>
+-              <transponder fec_inner="3" frequency="10899000" modulation="1" polarization="1" symbol_rate="9404000" system="0"/>
+-              <transponder fec_inner="2" frequency="10928000" modulation="2" polarization="0" symbol_rate="30000000" system="1"/>
+-              <transponder fec_inner="3" frequency="10928000" modulation="1" onid="126" polarization="1" symbol_rate="27500000" system="0" tsid="2578"/>
+-              <transponder fec_inner="0" frequency="10960000" modulation="1" polarization="0" symbol_rate="6666000" system="0"/>
+-              <transponder fec_inner="0" frequency="10960000" modulation="1" polarization="1" symbol_rate="6666000" system="0"/>
+-              <transponder fec_inner="0" frequency="10968000" modulation="1" polarization="0" symbol_rate="6666000" system="0"/>
+-              <transponder fec_inner="0" frequency="10968000" modulation="1" polarization="1" symbol_rate="6666000" system="0"/>
+-              <transponder fec_inner="0" frequency="10977000" modulation="1" polarization="0" symbol_rate="6666000" system="0"/>
+-              <transponder fec_inner="0" frequency="10978000" modulation="1" polarization="1" symbol_rate="6666000" system="0"/>
+-              <transponder fec_inner="0" frequency="10982000" modulation="1" polarization="1" symbol_rate="13333000" system="0"/>
+-              <transponder fec_inner="0" frequency="10986000" modulation="1" polarization="0" symbol_rate="6666000" system="0"/>
+-              <transponder fec_inner="0" frequency="10986000" modulation="1" polarization="1" symbol_rate="6666000" system="0"/>
+-              <transponder fec_inner="0" frequency="10994000" modulation="1" polarization="1" symbol_rate="4434000" system="0"/>
+-              <transponder fec_inner="0" frequency="10996000" modulation="1" onid="235" polarization="0" symbol_rate="6666000" system="0" tsid="17185"/>
+-              <transponder fec_inner="0" frequency="11000000" modulation="1" polarization="1" symbol_rate="4434000" system="0"/>
+-              <transponder fec_inner="0" frequency="11004000" modulation="1" polarization="0" symbol_rate="6666000" system="0"/>
+-              <transponder fec_inner="0" frequency="11014000" modulation="1" polarization="0" symbol_rate="6666000" system="0"/>
+-              <transponder fec_inner="0" frequency="11014000" modulation="1" polarization="1" symbol_rate="6666000" system="0"/>
+-              <transponder fec_inner="0" frequency="11023000" modulation="1" polarization="0" symbol_rate="6666000" system="0"/>
+-              <transponder fec_inner="0" frequency="11043000" modulation="1" polarization="1" symbol_rate="6666000" system="0"/>
+-              <transponder fec_inner="0" frequency="11052000" modulation="1" polarization="0" symbol_rate="6666000" system="0"/>
+-              <transponder fec_inner="0" frequency="11052000" modulation="1" polarization="1" symbol_rate="6666000" system="0"/>
+-              <transponder fec_inner="0" frequency="11061000" modulation="1" polarization="0" symbol_rate="6666000" system="0"/>
+-              <transponder fec_inner="0" frequency="11061000" modulation="1" polarization="1" symbol_rate="6666000" system="0"/>
+-              <transponder fec_inner="0" frequency="11066000" modulation="1" polarization="0" symbol_rate="13333000" system="0"/>
+-              <transponder fec_inner="0" frequency="11070000" modulation="1" polarization="0" symbol_rate="6666000" system="0"/>
+-              <transponder fec_inner="0" frequency="11071000" modulation="1" polarization="1" symbol_rate="6666000" system="0"/>
+-              <transponder fec_inner="0" frequency="11078000" modulation="1" polarization="1" symbol_rate="4434000" system="0"/>
+-              <transponder fec_inner="0" frequency="11079000" modulation="1" polarization="0" symbol_rate="6666000" system="0"/>
+-              <transponder fec_inner="0" frequency="11084000" modulation="1" polarization="0" symbol_rate="13333000" system="0"/>
+-              <transponder fec_inner="0" frequency="11084000" modulation="1" polarization="1" symbol_rate="4434000" system="0"/>
+-              <transponder fec_inner="0" frequency="11088000" modulation="1" polarization="0" symbol_rate="6666000" system="0"/>
+-              <transponder fec_inner="0" frequency="11097000" modulation="1" polarization="1" symbol_rate="6666000" system="0"/>
+-              <transponder fec_inner="0" frequency="11102000" modulation="1" polarization="0" symbol_rate="13333000" system="0"/>
+-              <transponder fec_inner="0" frequency="11106000" modulation="1" polarization="0" symbol_rate="6666000" system="0"/>
+-              <transponder fec_inner="0" frequency="11106000" modulation="1" polarization="1" symbol_rate="6666000" system="0"/>
+-              <transponder fec_inner="5" frequency="11125000" modulation="1" polarization="1" symbol_rate="2677000" system="0"/>
+-              <transponder fec_inner="0" frequency="11126000" modulation="1" polarization="0" symbol_rate="6666000" system="0"/>
+-              <transponder fec_inner="3" frequency="11126000" modulation="1" polarization="1" symbol_rate="5697000" system="0"/>
+-              <transponder fec_inner="0" frequency="11142000" modulation="1" polarization="1" symbol_rate="6666000" system="0"/>
+-              <transponder fec_inner="0" frequency="11152000" modulation="1" polarization="1" symbol_rate="6666000" system="0"/>
+-              <transponder fec_inner="3" frequency="11175000" modulation="1" polarization="1" symbol_rate="27500000" system="0"/>
+-              <transponder fec_inner="2" frequency="11262000" modulation="1" onid="126" polarization="0" symbol_rate="27500000" system="0" tsid="50500"/>
+-              <transponder fec_inner="3" frequency="11283000" modulation="1" onid="126" polarization="1" symbol_rate="27500000" system="0" tsid="40400"/>
+-              <transponder fec_inner="3" frequency="11298000" modulation="1" polarization="0" symbol_rate="13500000" system="0"/>
+-              <transponder fec_inner="2" frequency="11324000" modulation="1" onid="16" polarization="1" symbol_rate="27500000" system="0" tsid="1"/>
+-              <transponder fec_inner="2" frequency="11346000" modulation="1" polarization="0" symbol_rate="27500000" system="0"/>
+-              <transponder fec_inner="3" frequency="11361000" modulation="1" polarization="1" symbol_rate="18086000" system="0"/>
+-              <transponder fec_inner="4" frequency="11386000" modulation="1" polarization="0" symbol_rate="30000000" system="0"/>
+-              <transponder fec_inner="3" frequency="11405000" modulation="1" polarization="1" symbol_rate="27500000" system="0"/>
+-              <transponder fec_inner="0" frequency="11429000" modulation="1" polarization="0" symbol_rate="27500000" system="0"/>
+-              <transponder fec_inner="2" frequency="11451000" modulation="1" polarization="1" symbol_rate="25066000" system="0"/>
+-              <transponder fec_inner="3" frequency="11471000" modulation="1" polarization="0" symbol_rate="30000000" system="0"/>
+-              <transponder fec_inner="3" frequency="11492000" modulation="1" polarization="1" symbol_rate="30000000" system="0"/>
+-              <transponder fec_inner="3" frequency="11513000" modulation="1" onid="126" polarization="0" symbol_rate="27500000" system="0" tsid="50900"/>
+-              <transponder fec_inner="3" frequency="11534000" modulation="1" polarization="1" symbol_rate="30000000" system="0"/>
+-              <transponder fec_inner="3" frequency="11554000" modulation="1" polarization="0" symbol_rate="27500000" system="0"/>
+-              <transponder fec_inner="3" frequency="11575000" modulation="1" onid="126" polarization="1" symbol_rate="30000000" system="0" tsid="50600"/>
+-              <transponder fec_inner="3" frequency="11596000" modulation="1" polarization="0" symbol_rate="30000000" system="0"/>
+-              <transponder fec_inner="3" frequency="11617000" modulation="1" polarization="1" symbol_rate="30000000" system="0"/>
+-              <transponder fec_inner="3" frequency="11637000" modulation="1" polarization="0" symbol_rate="30000000" system="0"/>
+-              <transponder fec_inner="3" frequency="11658000" modulation="1" polarization="1" symbol_rate="30000000" system="0"/>
+-              <transponder fec_inner="3" frequency="11678000" modulation="1" polarization="0" symbol_rate="30000000" system="0"/>
+-              <transponder fec_inner="4" frequency="12520000" modulation="1" polarization="1" symbol_rate="6111000" system="0"/>
+-      </sat>
+       <sat flags="1" name="Eutelsat W5 (70.5E)" position="705">
+               <transponder fec_inner="2" frequency="11214000" modulation="1" polarization="0" symbol_rate="13020000" system="0"/>
+               <transponder fec_inner="5" frequency="11377000" modulation="1" polarization="1" symbol_rate="7440000" system="0"/>
+@@ -1984,41 +2029,45 @@
+               <transponder fec_inner="3" frequency="12677000" modulation="1" polarization="1" symbol_rate="1447000" system="0"/>
+               <transponder fec_inner="1" frequency="12702000" modulation="1" polarization="0" symbol_rate="26656000" system="0"/>
+       </sat>
+-      <sat flags="1" name="LMI 1 (75.0E)" position="750">
+-              <transponder fec_inner="5" frequency="12518000" modulation="1" polarization="1" symbol_rate="22000000" system="0"/>
+-              <transponder fec_inner="3" frequency="12549000" modulation="1" polarization="1" symbol_rate="12300000" system="0"/>
+-              <transponder fec_inner="5" frequency="12579000" modulation="1" polarization="1" symbol_rate="22000000" system="0"/>
+-              <transponder fec_inner="5" frequency="12610000" modulation="1" polarization="1" symbol_rate="22000000" system="0"/>
+-              <transponder fec_inner="3" frequency="12640000" modulation="1" polarization="1" symbol_rate="22000000" system="0"/>
+-              <transponder fec_inner="5" frequency="12670000" modulation="1" polarization="1" symbol_rate="22000000" system="0"/>
+-              <transponder fec_inner="3" frequency="12693000" modulation="1" polarization="1" symbol_rate="10000000" system="0"/>
+-              <transponder fec_inner="5" frequency="12701000" modulation="1" polarization="1" symbol_rate="8290000" system="0"/>
+-              <transponder fec_inner="3" frequency="12722000" modulation="1" polarization="1" symbol_rate="3215000" system="0"/>
+-              <transponder fec_inner="3" frequency="12729000" modulation="1" polarization="1" symbol_rate="2963000" system="0"/>
+-              <transponder fec_inner="3" frequency="12732000" modulation="1" polarization="1" symbol_rate="4400000" system="0"/>
+-              <transponder fec_inner="3" frequency="12742000" modulation="1" polarization="1" symbol_rate="4400000" system="0"/>
++      <sat name="ABS 1/1A/Eutelsat W75 (75.0E)" flags="0" position="750">
++              <transponder frequency="3449000" symbol_rate="2960000" polarization="1" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="3451000" symbol_rate="1001000" polarization="1" fec_inner="3" system="1" modulation="2"/>
++              <transponder frequency="3455000" symbol_rate="3100000" polarization="1" fec_inner="5" system="0" modulation="0"/>
++              <transponder frequency="3559000" symbol_rate="28800000" polarization="1" fec_inner="4" system="0" modulation="0"/>
++              <transponder frequency="3659000" symbol_rate="27500000" polarization="0" fec_inner="5" system="0" modulation="0"/>
++              <transponder frequency="3679000" symbol_rate="30000000" polarization="1" fec_inner="4" system="1" modulation="2"/>
++              <transponder frequency="12505000" symbol_rate="2500000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12518000" symbol_rate="22000000" polarization="1" fec_inner="5" system="0" modulation="0"/>
++              <transponder frequency="12548000" symbol_rate="22000000" polarization="1" fec_inner="5" system="0" modulation="0"/>
++              <transponder frequency="12559000" symbol_rate="1851000" polarization="0" fec_inner="4" system="0" modulation="0"/>
++              <transponder frequency="12579000" symbol_rate="22000000" polarization="1" fec_inner="5" system="0" modulation="0"/>
++              <transponder frequency="12579000" symbol_rate="22000000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12601000" symbol_rate="5170000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12610000" symbol_rate="22000000" polarization="1" fec_inner="5" system="0" modulation="0"/>
++              <transponder frequency="12612000" symbol_rate="5000000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12640000" symbol_rate="22000000" polarization="1" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12670000" symbol_rate="22000000" polarization="1" fec_inner="5" system="0" modulation="0"/>
++              <transponder frequency="12694000" symbol_rate="10750000" polarization="1" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12704000" symbol_rate="3900000" polarization="1" fec_inner="5" system="0" modulation="0"/>
++              <transponder frequency="12708000" symbol_rate="3900000" polarization="1" fec_inner="5" system="0" modulation="0"/>
++              <transponder frequency="12732000" symbol_rate="22000000" polarization="1" fec_inner="5" system="0" modulation="0"/>
+       </sat>
+-      <sat flags="1" name="Eurobird 9 (9.0E)" position="90">
+-              <transponder fec_inner="4" frequency="11727000" modulation="1" polarization="1" symbol_rate="27500000" system="0"/>
+-              <transponder fec_inner="3" frequency="11747000" modulation="1" onid="157" polarization="0" symbol_rate="27500000" system="0" tsid="1"/>
+-              <transponder fec_inner="4" frequency="11766000" modulation="1" onid="110" polarization="1" symbol_rate="27500000" system="0" tsid="33"/>
+-              <transponder fec_inner="3" frequency="11785000" modulation="1" polarization="0" symbol_rate="27500000" system="0"/>
+-              <transponder fec_inner="3" frequency="11804000" modulation="1" onid="158" polarization="1" symbol_rate="27500000" system="0" tsid="158"/>
+-              <transponder fec_inner="3" frequency="11823000" modulation="1" onid="1325" polarization="0" symbol_rate="27500000" system="0" tsid="1"/>
+-              <transponder fec_inner="3" frequency="11843000" modulation="1" onid="158" polarization="1" symbol_rate="27500000" system="0" tsid="5600"/>
+-              <transponder fec_inner="3" frequency="11862000" modulation="1" polarization="0" symbol_rate="27500000" system="0"/>
+-              <transponder fec_inner="3" frequency="11881000" modulation="1" polarization="1" symbol_rate="27500000" system="0"/>
+-              <transponder fec_inner="4" frequency="11900000" modulation="1" polarization="0" symbol_rate="27500000" system="0"/>
+-              <transponder fec_inner="4" frequency="11919000" modulation="1" onid="100" polarization="1" symbol_rate="27500000" system="0" tsid="6000"/>
+-              <transponder fec_inner="3" frequency="11938000" modulation="1" onid="158" polarization="0" symbol_rate="27500000" system="0" tsid="6100"/>
+-              <transponder fec_inner="3" frequency="11958000" modulation="1" polarization="1" symbol_rate="27500000" system="0"/>
+-              <transponder fec_inner="3" frequency="11977000" modulation="1" onid="158" polarization="0" symbol_rate="27500000" system="0" tsid="6300"/>
+-              <transponder fec_inner="3" frequency="11994000" modulation="2" polarization="1" symbol_rate="19909000" system="0"/>
+-              <transponder fec_inner="3" frequency="12015000" modulation="1" polarization="0" symbol_rate="27500000" system="0"/>
+-              <transponder fec_inner="2" frequency="12034000" modulation="2" polarization="1" symbol_rate="27500000" system="1"/>
+-              <transponder fec_inner="3" frequency="12054000" modulation="1" onid="156" polarization="0" symbol_rate="27500000" system="0" tsid="6700"/>
+-              <transponder fec_inner="2" frequency="12073000" modulation="2" polarization="1" symbol_rate="27500000" system="1"/>
+-              <transponder fec_inner="3" frequency="12092000" modulation="1" onid="156" polarization="0" symbol_rate="27500000" system="0" tsid="6900"/>
++      <sat name="Express AM2/MD1 (80.0E)" flags="0" position="800">
++              <transponder frequency="3625000" symbol_rate="33483000" polarization="1" fec_inner="5" system="0" modulation="0"/>
++              <transponder frequency="3675000" symbol_rate="33483000" polarization="1" fec_inner="5" system="0" modulation="0"/>
++              <transponder frequency="3875000" symbol_rate="32000000" polarization="1" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="11044000" symbol_rate="44948000" polarization="0" fec_inner="4" system="0" modulation="0"/>
++              <transponder frequency="11101000" symbol_rate="3227000" polarization="1" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="11606000" symbol_rate="44948000" polarization="1" fec_inner="4" system="0" modulation="0"/>
+       </sat>
++      <sat name="Intelsat 15 (85.2E)" flags="0" position="852">
++              <transponder frequency="11594000" symbol_rate="2500000" polarization="0" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12504000" symbol_rate="4217000" polarization="1" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12510000" symbol_rate="3700000" polarization="1" fec_inner="5" system="0" modulation="0"/>
++              <transponder frequency="12533000" symbol_rate="6667000" polarization="1" fec_inner="3" system="0" modulation="0"/>
++              <transponder frequency="12565000" symbol_rate="6564000" polarization="1" fec_inner="4" system="0" modulation="0"/>
++              <transponder frequency="12600000" symbol_rate="30000000" polarization="1" fec_inner="2" system="1" modulation="2"/>
++              <transponder frequency="12640000" symbol_rate="30000000" polarization="1" fec_inner="4" system="0" modulation="0"/>
++      </sat>  
+ </satellites>
old mode 100644 (file)
new mode 100755 (executable)
index e31847f..81020e2
@@ -40,6 +40,16 @@ SRC_URI_append_dm8000 = " \
        file://resize_framebuffer.diff;patch=1 \
        file://allow_different_demux.diff;patch=1"
 
+SRC_URI_append_bm750 = " \
+       file://32bpp.diff;patch=1 \
+       file://resize_framebuffer.diff;patch=1 \
+       file://allow_different_demux.diff;patch=1"
+
+SRC_URI_append_vusolo = " \
+       file://32bpp.diff;patch=1 \
+       file://resize_framebuffer.diff;patch=1 \
+       file://allow_different_demux.diff;patch=1"
+
 S = "${WORKDIR}/libs"
 EXTRA_OECONF = "--with-target=native"
 
old mode 100644 (file)
new mode 100755 (executable)
index 4c96f11..823a3a1
@@ -15,6 +15,9 @@ SRC_URI = "cvs://anoncvs@cvs.tuxbox.org/cvs/tuxbox;module=apps/tuxbox/plugins/tu
        file://allow_different_demux.diff;patch=1 \
        file://plugin.py"
 
+SRC_URI_append_vuplus = " \
+       file://tuxtxt_vuplus.patch;patch=1;pnum=1"      
+
 FILES_${PN} = "/usr/bin/tuxtxt /usr/share/fonts /usr/lib/enigma2/python/Plugins/Extensions/Tuxtxt /etc/tuxtxt"
 
 S = "${WORKDIR}/tuxtxt"
diff --git a/recipes/tuxbox/tuxbox-tuxtxt-32bpp/vuplus/tuxtxt_vuplus.patch b/recipes/tuxbox/tuxbox-tuxtxt-32bpp/vuplus/tuxtxt_vuplus.patch
new file mode 100644 (file)
index 0000000..4c2a950
--- /dev/null
@@ -0,0 +1,12 @@
+--- tuxtxt_org/tuxtxt.c        2010-04-01 13:18:13.000000000 +0900
++++ tuxtxt/tuxtxt.c    2010-04-01 13:21:57.000000000 +0900
+@@ -2664,7 +2664,8 @@
+       static int init_lcd = 1, old_cached_pages = -1, old_page = -1, old_subpage = -1, old_subpage_max = -1, old_hintmode = -1;
+       int  x, y, subpage_max = 0, update_lcd = 0;
+-      if (lcd == -1) return; // for Dreamboxes without LCD-Display (5xxx)
++//    if (lcd == -1) 
++              return; // for Dreamboxes without LCD-Display (5xxx)
+       /* init or update lcd */
+       if (init_lcd)
+       {
diff --git a/recipes/udev/udev-124/vuplus/50-udev-default.rules b/recipes/udev/udev-124/vuplus/50-udev-default.rules
new file mode 100755 (executable)
index 0000000..0015368
--- /dev/null
@@ -0,0 +1,107 @@
+# do not edit this file, it will be overwritten on update
+
+KERNEL=="pty[pqrstuvwxyzabcdef][0123456789abcdef]", GROUP="tty", MODE="0660", OPTIONS="last_rule"
+KERNEL=="tty[pqrstuvwxyzabcdef][0123456789abcdef]", GROUP="tty", MODE="0660", OPTIONS="last_rule"
+KERNEL=="ptmx",                        GROUP="tty", MODE="0666", OPTIONS="last_rule"
+KERNEL=="tty",                 GROUP="tty", MODE="0666", OPTIONS="last_rule"
+KERNEL=="tty[0-9]*",           GROUP="tty", MODE="0620", OPTIONS="last_rule"
+KERNEL=="vcs|vcs[0-9]*|vcsa|vcsa[0-9]*", GROUP="tty", OPTIONS="last_rule"
+KERNEL=="console",             MODE="0600", OPTIONS="last_rule"
+
+# serial
+KERNEL=="tty[A-Z]*|pppox*|ircomm*|noz*", GROUP="uucp"
+KERNEL=="ppp",                 MODE="0600", OPTIONS+="ignore_remove"
+KERNEL=="mwave",               NAME="modems/mwave", GROUP="uucp"
+KERNEL=="hvc*|hvsi*",          GROUP="uucp"
+KERNEL=="lirc0",               SYMLINK+="lirc"
+
+# mem
+KERNEL=="null|zero|full|random|urandom", MODE="0666"
+KERNEL=="null",                        SYMLINK+="XOR"
+KERNEL=="mem|kmem|port",       GROUP="kmem", MODE="0640"
+KERNEL=="ram0",                        SYMLINK+="ramdisk"
+KERNEL=="ram1",                        SYMLINK+="ram"
+
+# input
+KERNEL=="mouse*|mice|event*",  NAME="input/%k", MODE="0640"
+KERNEL=="ts[0-9]*|uinput",     NAME="input/%k", MODE="0600"
+KERNEL=="js[0-9]*",            NAME="input/%k", MODE="0644", SYMLINK+="%k"
+
+# video4linux
+KERNEL=="vbi0",                        SYMLINK+="vbi"
+KERNEL=="radio0",              SYMLINK+="radio"
+KERNEL=="video0",              SYMLINK+="video"
+
+# graphics
+KERNEL=="agpgart",             MODE="0600"
+KERNEL=="card[0-9]*",          NAME="dri/%k", MODE="0666"
+#KERNEL=="fb0",                        SYMLINK+="fb"
+
+# DVB video
+SUBSYSTEM=="dvb", PROGRAM="/bin/sh -c 'K=%k; K=$${K#dvb}; printf dvb/adapter%%i/%%s $${K%%%%.*} $${K#*.}'", NAME="%c"
+
+# Firewire
+KERNEL=="dv1394*",             SYMLINK+="dv1394/%n"
+KERNEL=="video1394*",          NAME="video1394/%n"
+
+# firmware class requests
+SUBSYSTEM=="firmware", ACTION=="add", RUN+="firmware.sh"
+
+# libusb device nodes
+SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", NAME="bus/usb/$env{BUSNUM}/$env{DEVNUM}", MODE="0644"
+
+# printer
+KERNEL=="parport[0-9]*",       GROUP="lp"
+SUBSYSTEM=="printer",          KERNEL=="lp*", GROUP="lp"
+SUBSYSTEM=="usb",              KERNEL=="lp*", NAME="usb/%k", SYMLINK+="usb%k", GROUP="lp"
+KERNEL=="lp[0-9]*",            GROUP="lp", SYMLINK+="par%n"
+KERNEL=="irlpt[0-9]*",         GROUP="lp"
+
+# block, tapes, block-releated
+SUBSYSTEM=="block", GROUP="disk", MODE="0640"
+SUBSYSTEM=="block", KERNEL=="sr[0-9]*", SYMLINK+="scd%n"
+SUBSYSTEM=="scsi", KERNEL=="[0-9]*:[0-9]*", ACTION=="add", ATTR{type}=="0|7|14", ATTR{timeout}="60"
+SUBSYSTEM=="scsi", KERNEL=="[0-9]*:[0-9]*", ACTION=="add", ATTR{type}=="1", ATTR{timeout}="900"
+KERNEL=="hd*", SUBSYSTEMS=="ide", ATTRS{media}=="floppy", OPTIONS+="all_partitions"
+KERNEL=="fd[0-9]",             GROUP="floppy"
+KERNEL=="fd[0-9]", ACTION=="add", ATTRS{cmos}=="?*", RUN+="create_floppy_devices -c -t $attr{cmos} -m %M -M 0640 -G floppy $root/%k"
+KERNEL=="sch[0-9]*",           GROUP="disk"
+KERNEL=="sg[0-9]*",            ATTRS{type}!="3|6", GROUP="disk", MODE="0640"
+KERNEL=="ht[0-9]*|nht[0-9]*",  GROUP="disk"
+KERNEL=="pg[0-9]*",            GROUP="disk"
+KERNEL=="pt[0-9]*|npt[0-9]*",  GROUP="disk"
+KERNEL=="qft[0-9]*|nqft[0-9]*|zqft[0-9]*|nzqft[0-9]*|rawqft[0-9]*|nrawqft[0-9]*", GROUP="disk"
+KERNEL=="rawctl",              NAME="raw/%k", GROUP="disk"
+SUBSYSTEM=="raw", KERNEL=="raw[0-9]*", NAME="raw/%k", GROUP="disk"
+KERNEL=="pktcdvd[0-9]*",       NAME="pktcdvd/%k"
+KERNEL=="pktcdvd",             NAME="pktcdvd/control"
+KERNEL=="qft0",                        SYMLINK+="ftape"
+SUBSYSTEM=="bsg",              NAME="bsg/%k"
+SUBSYSTEM=="aoe",              NAME="etherd/%k", GROUP="disk"
+
+# network
+KERNEL=="tun",                 NAME="net/%k", MODE="0666", OPTIONS+="ignore_remove"
+
+# CPU
+KERNEL=="cpu[0-9]*",           NAME="cpu/%n/cpuid"
+KERNEL=="msr[0-9]*",           NAME="cpu/%n/msr"
+KERNEL=="microcode",           NAME="cpu/microcode", MODE="0600"
+
+# miscellaneous
+KERNEL=="fuse",                        MODE="0666"
+KERNEL=="rtc|rtc0",            MODE="0644"
+KERNEL=="rtc0",                        SYMLINK+="rtc"
+KERNEL=="auer[0-9]*",          NAME="usb/%k"
+KERNEL=="hw_random",           NAME="hwrng", SYMLINK+="%k"
+KERNEL=="mmtimer",             MODE="0644"
+KERNEL=="rflash[0-9]*",                MODE="0400"
+KERNEL=="rrom[0-9]*",          MODE="0400"
+KERNEL=="sbpcd0",              SYMLINK+="sbpcd"
+KERNEL=="slram[0-9]*",                 SYMLINK+="xpram%n"
+KERNEL=="sxctl",               NAME="specialix_sxctl", SYMLINK+="%k"
+KERNEL=="rioctl",              NAME="specialix_rioctl", SYMLINK+="%k"
+KERNEL=="iowarrior[0-9]*",     NAME="usb/%k"
+
+# do not delete static device nodes
+ACTION=="remove", NAME=="?*", TEST=="/lib/udev/devices/$name", OPTIONS+="ignore_remove"
+
diff --git a/recipes/udev/udev-124/vuplus/default b/recipes/udev/udev-124/vuplus/default
new file mode 100755 (executable)
index 0000000..d0050b8
--- /dev/null
@@ -0,0 +1,4 @@
+# Default for /etc/init.d/udev
+
+# Comment this out to disable device cache
+#DEVCACHE="/etc/dev.tar"
diff --git a/recipes/udev/udev-124/vuplus/init b/recipes/udev/udev-124/vuplus/init
new file mode 100755 (executable)
index 0000000..3b5fcd5
--- /dev/null
@@ -0,0 +1,181 @@
+#!/bin/sh -e
+### BEGIN INIT INFO
+# Provides:          udev
+# Required-Start:    mountkernfs
+# Required-Stop:
+# Default-Start:     S
+# Default-Stop:
+# Short-Description: Start udevd, populate /dev and load drivers.
+### END INIT INFO
+
+# This script is based on Debian's.
+
+COLDPLUG=no
+COLDPLUG_TARBALL="/lib/udev/devices.tar.gz"
+
+for x in $(cat /proc/cmdline); do
+        case $x in
+        coldplug)
+               COLDPLUG=yes
+                ;;
+        esac
+done
+
+# we need to unmount /dev/pts/ and remount it later over the tmpfs
+unmount_devpts() {
+  if mountpoint -q /dev/pts/; then
+    umount -n -l /dev/pts/
+  fi
+
+  if mountpoint -q /dev/shm/; then
+    umount -n -l /dev/shm/
+  fi
+}
+
+# mount a tmpfs over /dev, if somebody did not already do it
+mount_tmpfs() {
+  if grep -q "/dev tmpfs" /proc/mounts; then
+    return
+  fi
+
+  if ! mount -n -o size=$tmpfs_size,mode=0755 -t tmpfs udev /dev; then
+    echo "udev requires tmpfs support, not started."
+    exit 1
+  fi
+
+  return 0
+}
+
+create_dev_makedev() {
+  if [ -e /sbin/MAKEDEV ]; then
+    ln -sf /sbin/MAKEDEV /dev/MAKEDEV
+  else
+    ln -sf /bin/true /dev/MAKEDEV
+  fi
+}
+
+make_extra_nodes() {
+  ret=1
+  if [ "$(echo /lib/udev/devices/*)" != "/lib/udev/devices/*" ]; then
+    cp -a /lib/udev/devices/* /$1/
+    ret=0
+  fi
+
+  [ -e /etc/udev/links.conf ] || return $ret
+
+  grep '^[^#]' /etc/udev/links.conf | \
+  while read type name arg1; do
+    [ "$type" -a "$name" -a ! -e "/$1/$name" -a ! -L "/$1/$name" ] || continue
+    case "$type" in
+      L) ln -s $arg1 /$1/$name ;;
+      D) mkdir -p /$1/$name ;;
+      M) mknod -m 600 /$1/$name $arg1 ;;
+      *) echo "links.conf: unparseable line ($type $name $arg1)" >&2 ;;
+    esac
+  done
+
+  return $ret
+}
+
+##############################################################################
+
+[ -x /sbin/udevd ] || exit 0
+
+PATH="/sbin:/bin:/usr/bin"
+
+# defaults
+tmpfs_size="2M"
+udev_root="/dev"
+
+if [ -e /etc/udev/udev.conf ]; then
+  . /etc/udev/udev.conf
+fi
+
+
+##############################################################################
+
+# When modifying this script, do not forget that between the time that the
+# new /dev has been mounted and udevadm trigger has been run there will be
+# no /dev/null. This also means that you cannot use the "&" shell command.
+
+case "$1" in
+    start)
+    if [ -e "$udev_root/.udev/" ]; then
+       if mountpoint -q $udev_root/; then
+           TMPFS_MOUNTED=1
+       else
+           echo ".udev/ already exists on the static $udev_root!"
+       fi
+    fi
+
+    echo > /sys/kernel/uevent_helper
+
+    if [ -z "$TMPFS_MOUNTED" ]; then
+       unmount_devpts
+       mount_tmpfs
+    else
+       # and clean up the database of the initramfs udev
+       rm -rf /dev/.udev/
+    fi
+
+    # /dev/null must be created before udevd is started
+    if ! make_extra_nodes "$udev_root"; then
+       COLDPLUG=yes
+    fi
+    if [ ! -f "$COLDPLUG_TARBALL" ]; then
+       COLDPLUG=yes
+    fi
+
+    # if this directory is not present /dev will not be updated by udev
+    mkdir -p /dev/.udev/db/
+
+    echo "Startting the hotplug events dispatcher"
+    udevd --daemon
+
+    mkdir -p /dev/.udev/queue/ /dev/.udev/rules.d/
+
+    create_dev_makedev
+
+#force COLDPLUG to yes
+
+    COLDPLUG=yes;
+    if [ $COLDPLUG != "no" ]; then
+        echo "Synthesizing the initial hotplug events"
+        udevadm trigger
+
+        # wait for the udevd childs to finish
+        echo "Waiting for /dev to be fully populated"
+        if udevadm settle; then
+            echo 'done'
+        else
+            echo 'timeout'
+        fi
+    fi
+
+    ;;
+
+    stop)
+    echo "Stopping the hotplug events dispatcher"
+    start-stop-daemon --stop --name udevd --quiet --oknodo
+    ;;
+
+    restart)
+    echo "Stopping the hotplug events dispatcher"
+    start-stop-daemon --stop --name udevd --quiet --oknodo
+
+    echo "Startting the hotplug events dispatcher"
+    udevd --daemon
+    ;;
+
+    reload|force-reload)
+    udevadm control --reload_rules
+    ;;
+
+    *)
+    echo "Usage: /etc/init.d/udev {start|stop|restart|reload|force-reload}"
+    exit 1
+    ;;
+esac
+
+exit 0
+
old mode 100644 (file)
new mode 100755 (executable)
index f0aab5a..5a1f259
@@ -1,7 +1,7 @@
 DESCRIPTION = "Provide per-machine static nodes of /dev"
 RDEPENDS = "udev"
 
-PR = "r0"
+PR = "r2"
 
 SRC_URI = "file://udev_static_devices_tarball"
 
diff --git a/recipes/udev/udev-static-devices/bm750/udev_static_devices_tarball b/recipes/udev/udev-static-devices/bm750/udev_static_devices_tarball
new file mode 100644 (file)
index 0000000..3659b93
Binary files /dev/null and b/recipes/udev/udev-static-devices/bm750/udev_static_devices_tarball differ
diff --git a/recipes/udev/udev-static-devices/vusolo/udev_static_devices_tarball b/recipes/udev/udev-static-devices/vusolo/udev_static_devices_tarball
new file mode 100644 (file)
index 0000000..86f7023
Binary files /dev/null and b/recipes/udev/udev-static-devices/vusolo/udev_static_devices_tarball differ
old mode 100644 (file)
new mode 100755 (executable)
index 9b9c511..41868c4
@@ -17,6 +17,8 @@ SRC_URI = "http://kernel.org/pub/linux/utils/kernel/hotplug/udev-${PV}.tar.gz \
           file://local.rules \
           "
 
+SRC_URI_append_bm750 = " file://50-udev-default.rules "
+SRC_URI_append_vusolo = " file://50-udev-default.rules "
 SRC_URI_append_h2200 = " file://50-hostap_cs.rules "
 PACKAGE_ARCH_h2200 = "h2200"
 
@@ -78,3 +80,8 @@ do_install_append_h2200() {
 do_install_append_opendreambox() {
        install -m 0644 ${WORKDIR}/??-od-*.rules ${D}${sysconfdir}/udev/rules.d/
 }
+
+do_install_append_vuplus() {
+       install -m 0644 ${WORKDIR}/50-udev-default.rules         ${D}${sysconfdir}/udev/rules.d/50-udev-default.rules
+}
+
index e0effe6..4c38329 100644 (file)
@@ -10,4 +10,5 @@ FILESPATH = "${FILE_DIRNAME}/unionfs-${PV}:${FILE_DIRNAME}/unionfs:${FILE_DIRNAM
 
 export UCFLAGS = '${CFLAGS} -DNODEBUG -DUNIONFS_VERSION=\\"${PV}\\"'
 CFLAGS = "${BUILD_OPTIMIZATIONS}"
-CFLAGS_opendreambox = ""
\ No newline at end of file
+CFLAGS_opendreambox = ""
+CFLAGS_vuplus = ""
index c30e1d1..9d0d79e 100644 (file)
@@ -26,3 +26,4 @@ do_install() {
 # unwanted dependencies for SlugOS.
 RDEPENDS_slugos = ""
 RDEPENDS_opendreambox = ""
+RDEPENDS_vuplus = ""
diff --git a/recipes/vsftpd/files/vuplus/vsftpd.conf b/recipes/vsftpd/files/vuplus/vsftpd.conf
new file mode 100755 (executable)
index 0000000..441e196
--- /dev/null
@@ -0,0 +1,105 @@
+# Vuplus /etc/vsftpd.conf
+#
+# Please see vsftpd.conf.5 for all compiled in defaults.
+#
+# READ THIS: This example file is NOT an exhaustive list of vsftpd options.
+# Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's
+# capabilities.
+#
+# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
+anonymous_enable=NO
+#
+# Uncomment this to allow local users to log in.
+local_enable=YES
+#
+# Uncomment this to enable any form of FTP write command.
+write_enable=YES
+#
+# Default umask for local users is 077. You may wish to change this to 022,
+# if your users expect that (022 is used by most other ftpd's)
+#local_umask=022
+#
+# Uncomment this to allow the anonymous FTP user to upload files. This only
+# has an effect if the above global write enable is activated. Also, you will
+# obviously need to create a directory writable by the FTP user.
+#anon_upload_enable=YES
+#
+# Uncomment this if you want the anonymous FTP user to be able to create
+# new directories.
+#anon_mkdir_write_enable=YES
+#
+# Activate directory messages - messages given to remote users when they
+# go into a certain directory.
+dirmessage_enable=YES
+#
+# Activate logging of uploads/downloads.
+#xferlog_enable=YES
+#
+# Make sure PORT transfer connections originate from port 20 (ftp-data).
+connect_from_port_20=YES
+#
+# If you want, you can arrange for uploaded anonymous files to be owned by
+# a different user. Note! Using "root" for uploaded files is not
+# recommended!
+#chown_uploads=YES
+#chown_username=whoever
+#
+# You may override where the log file goes if you like. The default is shown
+# below.
+#xferlog_file=/var/log/vsftpd.log
+#
+# If you want, you can have your log file in standard ftpd xferlog format
+#xferlog_std_format=YES
+#
+# You may change the default value for timing out an idle session.
+#idle_session_timeout=600
+#
+# You may change the default value for timing out a data connection.
+#data_connection_timeout=120
+#
+# It is recommended that you define on your system a unique user which the
+# ftp server can use as a totally isolated and unprivileged user.
+#nopriv_user=ftpsecure
+#
+# Enable this and the server will recognise asynchronous ABOR requests. Not
+# recommended for security (the code is non-trivial). Not enabling it,
+# however, may confuse older FTP clients.
+async_abor_enable=YES
+#
+# By default the server will pretend to allow ASCII mode but in fact ignore
+# the request. Turn on the below options to have the server actually do ASCII
+# mangling on files when in ASCII mode.
+# Beware that turning on ascii_download_enable enables malicious remote parties
+# to consume your I/O resources, by issuing the command "SIZE /big/file" in
+# ASCII mode.
+# These ASCII options are split into upload and download because you may wish
+# to enable ASCII uploads (to prevent uploaded scripts etc. from breaking),
+# without the DoS risk of SIZE and ASCII downloads. ASCII mangling should be
+# on the client anyway..
+#ascii_upload_enable=YES
+#ascii_download_enable=YES
+#
+# You may fully customise the login banner string:
+ftpd_banner=Welcome to the Vuplus FTP service.
+#
+# You may specify a file of disallowed anonymous e-mail addresses. Apparently
+# useful for combatting certain DoS attacks.
+#deny_email_enable=YES
+# (default follows)
+#banned_email_file=/etc/vsftpd.banned_emails
+#
+# You may specify an explicit list of local users to chroot() to their home
+# directory. If chroot_local_user is YES, then this list becomes a list of
+# users to NOT chroot().
+#chroot_list_enable=YES
+# (default follows)
+#chroot_list_file=/etc/vsftpd.chroot_list
+#
+# You may activate the "-R" option to the builtin ls. This is disabled by
+# default to avoid remote users being able to cause excessive I/O on large
+# sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
+# the presence of the "-R" option, so there is a strong case for enabling it.
+ls_recurse_enable=YES
+#
+secure_chroot_dir=/dev/shm
+local_root=/
old mode 100644 (file)
new mode 100755 (executable)
index 8d487b3..9424644
@@ -25,6 +25,12 @@ do_configure_append_opendreambox() {
        sed -i '/libcap/ d' vsf_findlibs.sh
 }
 
+do_configure_append_vuplus() {
+       # do not link against libcap
+       sed -i '/^#define VSF_SYSDEP_HAVE_LIBCAP$/ d' sysdeputil.c
+       sed -i '/libcap/ d' vsf_findlibs.sh
+}
+
 do_compile() {
         oe_runmake "LIBS=-lcrypt -L${STAGING_LIBDIR}"
 }
diff --git a/recipes/vuplus/vuplus-bootlogo.bb b/recipes/vuplus/vuplus-bootlogo.bb
new file mode 100644 (file)
index 0000000..f12b330
--- /dev/null
@@ -0,0 +1,55 @@
+DESCRIPTION = "Bootlogo support"
+SECTION = "base"
+PRIORITY = "required"
+LICENSE = "proprietary"
+
+IMAGES_VERSION = "1"
+BINARY_VERSION = "1"
+BINARY_VERSION_bm750 = "6"
+
+PV = "${BINARY_VERSION}.${IMAGES_VERSION}"
+PR = "r3"
+
+
+SRC_URI = "file://bootlogo.mvi file://backdrop.mvi file://bootlogo_wait.mvi file://switchoff.mvi"
+
+S = "${WORKDIR}/"
+
+MVI = "bootlogo backdrop bootlogo_wait"
+
+do_install() {
+       install -d ${D}/boot
+       install -m 0755 ${S}/bootlogo-${MACHINE}-${BINARY_VERSION}.elf ${D}/boot/bootlogo.elf
+       for i in ${MVI}; do
+               install -m 0755 ${S}/$i-${MACHINE}-${IMAGES_VERSION}.mvi ${D}/boot/$i.mvi;
+       done;
+}
+
+
+do_install_vuplus() {
+       install -d ${D}/boot
+       install -d ${D}/usr/share
+       for i in ${MVI}; do
+               install -m 0755 ${S}/$i.mvi ${D}/usr/share/$i.mvi;
+               ln -sf /usr/share/$i.mvi ${D}/boot/$i.mvi;
+       done;
+}
+
+pkg_preinst() {
+       [ -d /proc/stb ] && mount -o rw,remount /boot
+}
+
+pkg_postinst() {
+       [ -d /proc/stb ] && mount -o ro,remount /boot
+}
+
+pkg_prerm() {
+       [ -d /proc/stb ] && mount -o rw,remount /boot
+}
+
+pkg_postrm() {
+       [ -d /proc/stb ] && mount -o ro,remount /boot
+}
+
+PACKAGE_ARCH := "${MACHINE_ARCH}"
+FILES_${PN} = "/boot /usr/share"
diff --git a/recipes/vuplus/vuplus-bootlogo/backdrop.mvi b/recipes/vuplus/vuplus-bootlogo/backdrop.mvi
new file mode 100644 (file)
index 0000000..91475fe
Binary files /dev/null and b/recipes/vuplus/vuplus-bootlogo/backdrop.mvi differ
diff --git a/recipes/vuplus/vuplus-bootlogo/bootlogo.mvi b/recipes/vuplus/vuplus-bootlogo/bootlogo.mvi
new file mode 100644 (file)
index 0000000..004c839
Binary files /dev/null and b/recipes/vuplus/vuplus-bootlogo/bootlogo.mvi differ
diff --git a/recipes/vuplus/vuplus-bootlogo/bootlogo_wait.mvi b/recipes/vuplus/vuplus-bootlogo/bootlogo_wait.mvi
new file mode 100644 (file)
index 0000000..004c839
Binary files /dev/null and b/recipes/vuplus/vuplus-bootlogo/bootlogo_wait.mvi differ
diff --git a/recipes/vuplus/vuplus-bootlogo/switchoff.mvi b/recipes/vuplus/vuplus-bootlogo/switchoff.mvi
new file mode 100644 (file)
index 0000000..15d50b8
Binary files /dev/null and b/recipes/vuplus/vuplus-bootlogo/switchoff.mvi differ
diff --git a/recipes/vuplus/vuplus-compat.bb b/recipes/vuplus/vuplus-compat.bb
new file mode 100755 (executable)
index 0000000..1da755c
--- /dev/null
@@ -0,0 +1,17 @@
+DESCRIPTION = "Vuplus compatibility links"
+SECTION = "base"
+PRIORITY = "required"
+PV = "1.0"
+PR = "r0"
+
+FILES = "/lib/libgcc_s_nof.so.1 /usr/lib/libcrypto.so.0.9.7 /usr/lib/libssl.so.0.9.7"
+PACKAGE_ARCH = "all"
+
+do_install() {
+       install -d ${D}/lib
+       ln -sf libgcc_s.so.1 ${D}/lib/libgcc_s_nof.so.1
+       install -d ${D}/usr/lib
+       ln -sf libcrypto.so.0.9.8 ${D}/usr/lib/libcrypto.so.0.9.7
+       ln -sf libssl.so.0.9.8 ${D}/usr/lib/libssl.so.0.9.7
+       ln -sf libpython2.6.so.1.0 ${D}/usr/lib/libpython2.5.so.1.0
+}
diff --git a/recipes/vuplus/vuplus-dvb-modules.bb b/recipes/vuplus/vuplus-dvb-modules.bb
new file mode 100755 (executable)
index 0000000..af49857
--- /dev/null
@@ -0,0 +1,41 @@
+DESCRIPTION = "Hardware drivers for VuPlus"
+SECTION = "base"
+PRIORITY = "required"
+LICENSE = "proprietary"
+
+
+def get_modules_extension(bb, d):
+       if bb.data.getVar('GLIBC_ADDONS', d, 1) in ['nptl']:
+               return "-gcc4.1"
+       return ""
+
+KV = "2.6.18-7.3"
+
+
+PV_bm750 = "${KV}"
+PV_vusolo = "${KV}"
+
+
+SRCDATE_bm750 = "20100719"
+SRCDATE_vusolo = "20100719"
+
+
+RDEPENDS = "initscripts-vuplus kernel (${KV}) kernel-module-firmware-class kernel-module-input kernel-module-evdev kernel-module-i2c-core kernel-module-snd kernel-module-snd-pcm"
+PR = "r19-${SRCDATE}"
+
+
+SRC_URI = "http://archive.vuplus.com/download/drivers/mbox-dvb-modules-${MACHINE}-${PV}-${SRCDATE}.tar.gz "
+
+S = "${WORKDIR}"
+
+do_install() {
+        install -d ${D}/lib/modules/${KV}/extra
+        for f in *.ko; do
+                install -m 0644 ${WORKDIR}/$f ${D}/lib/modules/${KV}/extra/$f;
+        done
+}
+
+
+
+PACKAGE_ARCH := "${MACHINE_ARCH}"
+FILES_${PN} = "/"
diff --git a/recipes/vuplus/vuplus-dvb-tools.bb b/recipes/vuplus/vuplus-dvb-tools.bb
new file mode 100755 (executable)
index 0000000..23f6254
--- /dev/null
@@ -0,0 +1,34 @@
+DESCRIPTION = "Small utilities specific to the Vuplus dvb receiver (for DVB v3)"
+SECTION = "base"
+PRIORITY = "optional"
+LICENSE = "GPL"
+
+PV = "1.7"
+PR = "r0"
+
+
+SRC_URI = "file://showiframe.c"
+
+SRC_URI += "file://showiframe.pro"
+
+inherit qmake
+
+UTILS = "showiframe"
+
+do_configure_prepend() {
+       cd ${S}/
+        echo "TEMPLATE=subdirs" > dmutils.pro
+        echo "CONFIG=console" >> dmutils.pro
+        echo "SUBDIRS=${UTILS}" >> dmutils.pro
+       install -d ${S}/showiframe
+       install -m 0644 ${WORKDIR}/showiframe.c ${S}/showiframe/showiframe.c
+       install -m 0644 ${WORKDIR}/showiframe.pro ${S}/showiframe/showiframe.pro
+}
+
+do_install() {
+       install -d ${D}/${bindir}/
+       for u in ${UTILS}
+       do
+               install -m 0755 ${S}/${u}/${u} ${D}/${bindir}/
+       done
+}
diff --git a/recipes/vuplus/vuplus-dvb-tools/showiframe.c b/recipes/vuplus/vuplus-dvb-tools/showiframe.c
new file mode 100644 (file)
index 0000000..3c99f73
--- /dev/null
@@ -0,0 +1,93 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <fcntl.h>
+#include <string.h>
+#include <sys/ioctl.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+
+#include <linux/dvb/video.h>
+
+void c(int a)
+{
+       if (a < 0)
+       {
+               perror("ioctl");
+               exit(6);
+       }
+}
+
+int main(int argc, char **argv)
+{
+       struct stat s;
+       if (argc != 2)
+       {
+               printf("usage: %s <iframe>\n", *argv);
+               return 3;
+       }
+
+       int f = open(argv[1], O_RDONLY);
+       if (f < 0)
+       {
+               perror(argv[1]);
+               return 4;
+       }
+       fstat(f, &s);
+
+       int fd = open("/dev/dvb/adapter0/video0", O_WRONLY|O_NONBLOCK);
+
+       if (fd <= 0)
+       {
+               perror("/dev/dvb/adapter0/video0");
+               return 2;
+       }
+       else if (fork() != 0)
+               return 0;
+       else
+       {
+               size_t pos=0;
+               int seq_end_avail = 0;
+
+               int count = 7;
+               /* 0x0 0x0 0x1 0xffffffe0 0x10 0x8 0xffffff80 0xffffff80 0x5 0x21 0x0 0x1 0x0 0x1 */
+               
+               /* unsigned char pes_header[] = { 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x80, 0x00, 0x00 }; */
+
+               unsigned char pes_header[] = {0x0, 0x0, 0x1, 0xe0, 0x00, 0x00, 0x80, 0x80, 0x5, 0x21, 0x0, 0x1, 0x0, 0x1};
+               
+               unsigned char seq_end[] = { 0x00, 0x00, 0x01, 0xB7 };
+               unsigned char iframe[s.st_size];
+               unsigned char stuffing[8192];
+               memset(stuffing, 0, 8192);
+               read(f, iframe, s.st_size);
+               ioctl(fd, VIDEO_SET_STREAMTYPE, 0); // set to mpeg2
+               c(ioctl(fd, VIDEO_SELECT_SOURCE, VIDEO_SOURCE_MEMORY));
+               c(ioctl(fd, VIDEO_PLAY));
+               c(ioctl(fd, VIDEO_CONTINUE));
+               c(ioctl(fd, VIDEO_CLEAR_BUFFER));
+               while(pos <= (s.st_size-4) && !(seq_end_avail = (!iframe[pos] && !iframe[pos+1] && iframe[pos+2] == 1 && iframe[pos+3] == 0xB7)))
+                       ++pos;
+               while(count--){
+                       if ((iframe[3] >> 4) != 0xE) // no pes header
+                       {
+                               write(fd, pes_header, sizeof(pes_header));
+                               usleep(8000);
+                       }
+                       else {
+                               iframe[4] = iframe[5] = 0x00;
+                       }
+                       write(fd, iframe, s.st_size);
+                       usleep(8000);
+               }
+               if (!seq_end_avail)
+                       write(fd, seq_end, sizeof(seq_end));
+               write(fd, stuffing, 8192);
+               usleep(150000);
+               c(ioctl(fd, VIDEO_STOP, 0));
+               c(ioctl(fd, VIDEO_SELECT_SOURCE, VIDEO_SOURCE_DEMUX));
+       }
+       return 0;
+}
+
diff --git a/recipes/vuplus/vuplus-dvb-tools/showiframe.pro b/recipes/vuplus/vuplus-dvb-tools/showiframe.pro
new file mode 100644 (file)
index 0000000..91fd1e6
--- /dev/null
@@ -0,0 +1,6 @@
+CONFIG = console
+TEMPLATE = app
+INCLUDEPATH += .
+
+SOURCES += showiframe.c
+
diff --git a/recipes/vuplus/vuplus-feed-configs.bb b/recipes/vuplus/vuplus-feed-configs.bb
new file mode 100644 (file)
index 0000000..3bf1174
--- /dev/null
@@ -0,0 +1,20 @@
+DESCRIPTION = "Configuration files for online package repositories aka feeds"
+PR = "r0"
+
+DISTRO_FEED_PREFIX ?= "official"
+DISTRO_FEED_URI ?= "http://archive.vuplus.com/openembedded/${DISTRO_VERSION}/vuplus/${MACHINE}/feeds/stable"
+
+do_compile() {
+    mkdir -p ${S}/${sysconfdir}/opkg
+    for feed in all ${TARGET_ARCH} ${MACHINE_ARCH}; do
+        echo "src/gz ${DISTRO_FEED_PREFIX}-${feed} ${DISTRO_FEED_URI}/${feed}" > ${S}/${sysconfdir}/opkg/${feed}-feed.conf
+    done
+}
+do_install () {
+        install -d ${D}${sysconfdir}/opkg
+        install -m 0644 ${S}/${sysconfdir}/opkg/* ${D}${sysconfdir}/opkg/
+}
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+CONFFILES_${PN} += '${@ " ".join( [ ( "${sysconfdir}/opkg/%s-feed.conf" % feed ) for feed in "all ${TARGET_ARCH} ${MACHINE_ARCH}".split() ] ) }'
diff --git a/recipes/vuplus/vuplus-makenfi-native.bb b/recipes/vuplus/vuplus-makenfi-native.bb
new file mode 100644 (file)
index 0000000..5e382ae
--- /dev/null
@@ -0,0 +1,20 @@
+DESCRIPTION = "create vuplus NAND images"
+SECTION = "utils"
+PV = "1.0"
+PR = "r1"
+
+SRC_URI = "file://vfi2 \
+          file://vfi3"
+
+inherit native
+
+do_compile() {
+       cp ${WORKDIR}/vfi2 .
+       cp ${WORKDIR}/vfi3 .
+}
+
+do_stage() {
+        install -m 0755 vfi2 ${STAGING_BINDIR}/
+        install -m 0755 vfi3 ${STAGING_BINDIR}/
+}
+
diff --git a/recipes/vuplus/vuplus-makenfi-native/vfi2 b/recipes/vuplus/vuplus-makenfi-native/vfi2
new file mode 100755 (executable)
index 0000000..a5a50d4
Binary files /dev/null and b/recipes/vuplus/vuplus-makenfi-native/vfi2 differ
diff --git a/recipes/vuplus/vuplus-makenfi-native/vfi3 b/recipes/vuplus/vuplus-makenfi-native/vfi3
new file mode 100755 (executable)
index 0000000..6e1bc62
Binary files /dev/null and b/recipes/vuplus/vuplus-makenfi-native/vfi3 differ
diff --git a/recipes/vuplus/vuplus-vucamd.bb b/recipes/vuplus/vuplus-vucamd.bb
new file mode 100644 (file)
index 0000000..b4a3c55
--- /dev/null
@@ -0,0 +1,23 @@
+DESCRIPTION = "Xcrypt/Cnx daemon"
+SECTION = "base"
+PRIORITY = "required"
+LICENSE = "proprietary"
+
+PV = "1.1"
+PR = "r1"
+
+SRC_URI = "file://vucamd \
+           file://vucamd.sh"
+
+S = "${WORKDIR}"
+
+INHIBIT_PACKAGE_STRIP = "1"
+
+do_install() {
+       install -d ${D}/usr/bin
+       install -d ${D}/etc/init.d
+       install -m 0755 ${WORKDIR}/vucamd ${D}/usr/bin/vucamd
+}
+
+PACKAGE_ARCH := "${MACHINE_ARCH}"
+FILES_${PN} = "/"
diff --git a/recipes/vuplus/vuplus-vucamd/vucamd b/recipes/vuplus/vuplus-vucamd/vucamd
new file mode 100755 (executable)
index 0000000..8a434b2
Binary files /dev/null and b/recipes/vuplus/vuplus-vucamd/vucamd differ
diff --git a/recipes/vuplus/vuplus-vucamd/vucamd.sh b/recipes/vuplus/vuplus-vucamd/vucamd.sh
new file mode 100644 (file)
index 0000000..1296d83
--- /dev/null
@@ -0,0 +1,38 @@
+#!/bin/sh
+
+usage()
+{
+       echo "usage: $0 {start|stop|status|restart|reload}"
+}
+
+if [ $# -lt 1 ] ; then usage ; break ; fi
+action=$1
+
+case "$action" in
+
+start)
+       echo -n "Start daemon:"
+       /usr/bin/vucamd &
+               ;;
+
+stop)
+       echo -n "Stopping daemon"
+       killall vucamd
+       echo "."
+       ;;
+
+status)
+       ;;
+
+restart|reload)
+       $0 stop
+       $0 start
+       ;;
+
+*)
+       usage
+       ;;
+
+esac
+
+exit 0
index 47c8522..4753935 100644 (file)
@@ -6,6 +6,7 @@ DEPENDS = "dbus gnutls ${@base_contains("COMBINED_FEATURES", "madwifi", "madwifi
 INC_PR = "r5"
 
 DEPENDS_opendreambox = "libnl openssl ${@base_contains("COMBINED_FEATURES", "madwifi", "madwifi-ng", "",d)}"
+DEPENDS_vuplus = "libnl openssl ${@base_contains("COMBINED_FEATURES", "madwifi", "madwifi-ng", "",d)}"
 
 #we introduce MY_ARCH to get 'armv5te' as arch instead of the misleading 'arm' on armv5te builds
 MY_ARCH := "${PACKAGE_ARCH}"