[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH v6 0/10] xen: ARM HDLCD video driver



Hi all,
this patch series introduces a very simple driver for the ARM HDLCD
Controller, that means that we can finally have something on the screen
while Xen is booting on ARM :)

The driver is capable of reading the mode property on device tree and
setting the HDLCD accordingly. It is also capable of setting the
required OSC5 timer to the right frequency for the pixel clock.

In order to reduce code duplication with x86, I tried to generalize the
existing vesa character rendering functions into a architecture agnostic
framebuffer driver that can be used by vesa and the hdlcd drivers.


Changes in v6:
- rebased on 77d3a1db3196b1b5864469f8d3f41d496800c795;
- remove useless initializations to NULL in lfb_init;
- more compact checks in lfb_init.


Changes in v5:
- move the barriers outside the loop in flush_xen_data_tlb_range_va;
- move out of "introduce early_ioremap" any changes related to
flush_xen_data_tlb_range_va and PAGE masks;
- remove lfb_alloc and the now unused __initdata variables;
- fix indentation and long lines;
- reword commit message of "move setup_mm right after setup_pagetables";
- turn printk in setup_mm into an early_printk in setup_mm;
- actually include the Makefile for xen/arch/arm/platforms.


Changes in v4:
- rename flush_xen_data_tlb_range to flush_xen_data_tlb_range_va;
- replace all the calls to flush_xen_data_tlb_va, with calls to
flush_xen_data_tlb_range_va;
- flush the entire 2MB mapping at BOOT_MISC_VIRT_START rather than just
the first 4k;
- remove flush_xen_data_tlb_va;
- fix indentation;
- rename EARLY_VMAP_START/END to EARLY_VMAP_VIRT_START/END;
- mark early_ioremap as __init;
- reduce the amount of casts in early_ioremap;
- squash the vesa.c changes into this patch;
- rename fb* to lfb*;
- pass a pointer to fb_init;
- use %u for screen dimensions;
- specify loglevel in printk;
- call fb_free on error in fb_alloc;
- no __init on declarations;
- do not break messages to fit 80 columns;
- remove "preserve DTB mappings";
- introduce a new "move setup_mm right after setup_pagetables" patch;
- stop iterating over the DT nodes in device_tree_for_each_node if
func returns a value != 0;
- return 1 from _find_compatible_node when a node is found;
- move the wait loop and the syscfg cfgctrl write into a separate
function;
- fix comments;
- define all registers in write;
- move platform_vexpress.c to platforms/vexpress.c;
- move platform_vexpress.h to arm-arm/platforms/vexpress.h;
- use a lookup table to set the color masks;
- fix indentation;
- make sure mode_string is not NULL and is not bigger than 16 chars
before continuing;
- introduce 2 separate error messages for !hdlcd_start and
!framebuffer_start at the beginning of video_init;
- mark get_color_masks and set_pixclock as __init;
- check that we are running on a vexpress machine before calling
vexpress_syscfg.


Changes in v3:
- rename fb_cr to fb_carriage_return.


Changes in v2:
- rebase on latest xen-unstable;
- add support for multiple resolutions;
- add support to dynamically change the OSC5 motherboard timer;
- add the patch "preserve DTB mappings".


Stefano Stabellini (10):
      xen/arm: add missing FIRST, SECOND and THIRD MASK and SIZE definitions
      xen/arm: introduce flush_xen_data_tlb_range_va
      xen/arm: flush the entire dest_va 2MB mapping
      xen/arm: introduce early_ioremap
      xen: infrastructure to have cross-platform video drivers
      xen: introduce a generic framebuffer driver
      xen/arm: move setup_mm right after setup_pagetables
      xen/device_tree: introduce find_compatible_node
      xen/arm: introduce vexpress_syscfg
      xen/arm: introduce a driver for the ARM HDLCD controller

 xen/arch/arm/Makefile                    |    1 +
 xen/arch/arm/Rules.mk                    |    2 +
 xen/arch/arm/arm32/mode_switch.S         |    2 +-
 xen/arch/arm/mm.c                        |   40 ++++-
 xen/arch/arm/platforms/Makefile          |    1 +
 xen/arch/arm/platforms/vexpress.c        |  100 +++++++++++
 xen/arch/arm/setup.c                     |   12 +-
 xen/arch/x86/Rules.mk                    |    1 +
 xen/common/device_tree.c                 |   56 ++++++-
 xen/drivers/Makefile                     |    2 +-
 xen/drivers/char/console.c               |   12 +-
 xen/drivers/video/Makefile               |   12 +-
 xen/drivers/video/arm_hdlcd.c            |  276 ++++++++++++++++++++++++++++++
 xen/drivers/video/lfb.c                  |  183 ++++++++++++++++++++
 xen/drivers/video/lfb.h                  |   46 +++++
 xen/drivers/video/modelines.h            |   77 +++++++++
 xen/drivers/video/vesa.c                 |  177 +++-----------------
 xen/drivers/video/vga.c                  |   12 +-
 xen/include/asm-arm/config.h             |    6 +
 xen/include/asm-arm/mm.h                 |    3 +-
 xen/include/asm-arm/page.h               |   24 ++-
 xen/include/asm-arm/platform_vexpress.h  |   17 --
 xen/include/asm-arm/platforms/vexpress.h |   40 +++++
 xen/include/asm-x86/config.h             |    1 +
 xen/include/xen/device_tree.h            |    3 +
 xen/include/xen/vga.h                    |    9 +-
 xen/include/xen/video.h                  |   24 +++
 27 files changed, 921 insertions(+), 218 deletions(-)


Cheers,

Stefano

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.