Upstream In-House Board Support Package Magnus Damm - - PowerPoint PPT Presentation

upstream in house board support package
SMART_READER_LITE
LIVE PREVIEW

Upstream In-House Board Support Package Magnus Damm - - PowerPoint PPT Presentation

Upstream In-House Board Support Package Magnus Damm damm@opensource.se Renesas Technology Japan Linux Symposium 2009 Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 1 / 58 Outline


slide-1
SLIDE 1

Upstream In-House Board Support Package

Magnus Damm damm@opensource.se

Renesas Technology

Japan Linux Symposium 2009

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 1 / 58

slide-2
SLIDE 2

Outline

Introduction Processor & Board Support Device Drivers Existing Drivers New Drivers Advanced Drivers Framework Extensions New Video Formats Zero Copy Frame Capture Upstream Patches & Internal Snapshots

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 2 / 58

slide-3
SLIDE 3

Introduction

Outline

Introduction Processor & Board Support Device Drivers Existing Drivers New Drivers Advanced Drivers Framework Extensions New Video Formats Zero Copy Frame Capture Upstream Patches & Internal Snapshots

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 3 / 58

slide-4
SLIDE 4

Introduction Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 4 / 58

slide-5
SLIDE 5

Introduction Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 5 / 58

slide-6
SLIDE 6

Introduction

linux-2.6.22.14_20071226.tar.bz2

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 6 / 58

slide-7
SLIDE 7

Introduction Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 7 / 58

slide-8
SLIDE 8

Introduction

79 files changed, 37033 insertions(+), 21 deletions(-)

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 8 / 58

slide-9
SLIDE 9

Introduction

An Out-Of-Tree Nightmare

◮ Very Experimental Code ◮ Not Performing (Well) ◮ Old Kernel Version ◮ Support Gone Elsewhere

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 9 / 58

slide-10
SLIDE 10

Introduction

What Was Needed

◮ Long Term Well-Performing Device Support ◮ Kernel Snapshots to BSP Team (ASAP!)

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 10 / 58

slide-11
SLIDE 11

Introduction

A Successful Recipe

◮ Study Hardware & Software ◮ Check Dependencies, Prioritize ◮ Decide Order, Assign Tasks ◮ Write and Submit Upstream ◮ Backport to Internal BSP Snapshots

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 11 / 58

slide-12
SLIDE 12

Processor & Board Support

Outline

Introduction Processor & Board Support Device Drivers Existing Drivers New Drivers Advanced Drivers Framework Extensions New Video Formats Zero Copy Frame Capture Upstream Patches & Internal Snapshots

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 12 / 58

slide-13
SLIDE 13

Processor & Board Support

Processor Support

arch/sh/kernel/cpu/...

◮ Processor type probe support ◮ On-chip device support (timers, serial ports) ◮ Interrupt controller support ◮ GPIO & Pinmux code ◮ Clocks & Power Management ◮ MMU & Caches ◮ DMA controllers & PCI bridges ◮ On-chip memory ◮ KConfig entries

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 13 / 58

slide-14
SLIDE 14

Processor & Board Support

Processor Support - Boot-up Processor Probing

  • - linux-2.6.22.14/arch/sh/kernel/cpu/sh4/probe.c

+++ linux-2.6.22.14-x/arch/sh/kernel/cpu/sh4/probe.c @@ -134,7 +134,7 @@ CPU_HAS_LLSC; break; case 0x3008:

  • if (prr == 0xa0) {

+ if (prr == 0xa0 || prr == 0xa1) { current_cpu_data.type = CPU_SH7722; current_cpu_data.icache.ways = 4; current_cpu_data.dcache.ways = 4;

◮ High Priority

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 14 / 58

slide-15
SLIDE 15

Processor & Board Support

Board Support

arch/sh/board/...

◮ Pinmux configuration ◮ On-board devices ◮ On-chip devices with board-specific configuration ◮ I2C and SPI bus configuration ◮ Clock configuration ◮ Kconfig bits ◮ Mach-type entry ◮ Defconfig

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 15 / 58

slide-16
SLIDE 16

Processor & Board Support

Processor & Board Support

Useful Debugging Techniques:

◮ Hardware debugger ◮ Serial port printouts (early printk) ◮ LED toggling ◮ Infinite loop vs forced reboot

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 16 / 58

slide-17
SLIDE 17

Device Drivers

Outline

Introduction Processor & Board Support Device Drivers Existing Drivers New Drivers Advanced Drivers Framework Extensions New Video Formats Zero Copy Frame Capture Upstream Patches & Internal Snapshots

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 17 / 58

slide-18
SLIDE 18

Device Drivers Existing Drivers

Outline

Introduction Processor & Board Support Device Drivers Existing Drivers New Drivers Advanced Drivers Framework Extensions New Video Formats Zero Copy Frame Capture Upstream Patches & Internal Snapshots

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 18 / 58

slide-19
SLIDE 19

Device Drivers Existing Drivers

Ethernet - SMC91C111

Original Patch:

  • - linux-2.6.22.14/drivers/net/smc91x.h

+++ linux-2.6.22.14-x/drivers/net/smc91x.h @@ -295,6 +294,18 @@ #define SMC_insw(a, r, p, l) insw((a) + (r), p, l) #define SMC_outsw(a, r, p, l) outsw((a) + (r), p, l) +#elif CONFIG_SH_7722_MIGO_R +#define SMC_CAN_USE_8BIT 0 +#define SMC_CAN_USE_16BIT 1 +#define SMC_CAN_USE_32BIT 0 +#define SMC_IO_SHIFT 0 +#define SMC_NOWAIT 1

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 19 / 58

slide-20
SLIDE 20

Device Drivers Existing Drivers

Ethernet - SMC91C111

Improved Driver: [PATCH] smc91x: pass along private data [PATCH] smc91x: introduce platform data flags [PATCH] smc91x: make superh use default config [PATCH] smc91x: add insw/outsw to default config Nicolas Pitre: “Thank you for doing this work. I really meant to do it, and commit 09779c6df2dbe95483269d194b327d41fe2cc57e was the first step towards that goal... I have a few comments though.”

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 20 / 58

slide-21
SLIDE 21

Device Drivers Existing Drivers

Ethernet - SMC91C111

Improved Driver V2: [PATCH] smc91x: pass along private data V2 [PATCH] smc91x: introduce platform data flags V2 [PATCH] smc91x: add insw/outsw to default config V2 [PATCH] smc91x: make superh use default config V2 drivers/net/smc91x.c | 335 +++++++++++++++------- drivers/net/smc91x.h | 343 +++++++++++++---------- include/linux/smc91x.h | 13 + 3 files changed, 359 insertions(+), 332 deletions(-) Nicolas Pitre: Acked-by: Nicolas Pitre <nico...>

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 21 / 58

slide-22
SLIDE 22

Device Drivers Existing Drivers

NOR Flash - SP29PL256N

Original Diffstat: drivers/mtd/maps/Kconfig | 6 drivers/mtd/maps/Makefile | 2 drivers/mtd/maps/migo-r.c | 79 New Patch: Add NOR flash support to the MigoR board by giving board specific data to the physmap-flash platform driver. Signed-off-by: Magnus Damm <damm...>

  • arch/sh/boards/renesas/migor/setup.c | 46

++++++++++++++ 1 file changed, 46 insertions(+)

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 22 / 58

slide-23
SLIDE 23

Device Drivers Existing Drivers

Existing Drivers - Lessons Learned

◮ Take Time To Study And Improve Existing Code ◮ Build Your Position In The Community ◮ Remove Redundant Code ◮ Scratch Your Itch

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 23 / 58

slide-24
SLIDE 24

Device Drivers New Drivers

Outline

Introduction Processor & Board Support Device Drivers Existing Drivers New Drivers Advanced Drivers Framework Extensions New Video Formats Zero Copy Frame Capture Upstream Patches & Internal Snapshots

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 24 / 58

slide-25
SLIDE 25

Device Drivers New Drivers

I2C

Original Driver: /* This is a wrapper for kernel modules that need to call the transfer function directly. It can be called in atomic context since it polls the hardware until the transfer completes. */ int i2c_sh7343_xfer_mod_poll(int ch, struct i2c_msg *msgs, int num) Original Diffstat: drivers/i2c/busses/Kconfig | 10 drivers/i2c/busses/Makefile | 1 drivers/i2c/busses/i2c-sh7343.c | 908 ++++++ drivers/i2c/busses/i2c-sh7343.h | 105

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 25 / 58

slide-26
SLIDE 26

Device Drivers New Drivers

I2C

New Driver: This is V5 of the SuperH Mobile I2C Controller Driver. A simple Master

  • nly driver for the I2C block included in processors such as sh7343,

sh7722 and sh7723. Tested on a sh7722 MigoR using a rs5c732b rtc. Signed-off-by: Magnus Damm <damm...> Signed-off-by: Paul Mundt <lethal...>

  • drivers/i2c/busses/Kconfig | 10

drivers/i2c/busses/Makefile | 1 drivers/i2c/busses/i2c-sh_mobile.c | 500 ++++++++ 3 files changed, 511 insertions(+)

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 26 / 58

slide-27
SLIDE 27

Device Drivers New Drivers

I2C - Lessons Learned

◮ Export Standard Software Interfaces ◮ Make Use Of Architecture Independent Functions ◮ Support Multiple Device Instances

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 27 / 58

slide-28
SLIDE 28

Device Drivers New Drivers

Touch Screen

Original Diffstat: drivers/input/touchscreen/Kconfig | 12 drivers/input/touchscreen/Makefile | 1 drivers/input/touchscreen/migor_ts.c | 218 + New Driver V2: drivers/input/touchscreen/Kconfig | 12 drivers/input/touchscreen/Makefile | 1 drivers/input/touchscreen/migor_ts.c | 213 + 3 files changed, 226 insertions(+)

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 28 / 58

slide-29
SLIDE 29

Device Drivers New Drivers

Keypad

Original Diffstat: drivers/input/keyboard/Kconfig | 16 drivers/input/keyboard/Makefile | 1 drivers/input/keyboard/sh7343keysc.c | 507 +++ Shortcomings:

◮ Driver supporting multiple boards with #ifdef ◮ Supports multi-key event per physical key ◮ Platform device and driver in the same file

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 29 / 58

slide-30
SLIDE 30

Device Drivers New Drivers

Keypad

Diffstat for new driver: drivers/input/keyboard/Kconfig | 9 + drivers/input/keyboard/Makefile | 1 drivers/input/keyboard/sh_keysc.c | 281 +++++++++ include/asm-sh/sh_keysc.h | 13 + 4 files changed, 304 insertions(+) New driver:

◮ Simple reusable platform driver ◮ Keypad layout as platform data

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 30 / 58

slide-31
SLIDE 31

Device Drivers New Drivers

LCD Controller

Original Diffstat: drivers/video/Kconfig | 54 drivers/video/Makefile | 3 drivers/video/lcd_powertip.c | 312 ++ drivers/video/lcd_powertip.h | 17 drivers/video/ms7343cp01fb.c | 1460 +++++++++ drivers/video/sh7343lcdc.c | 1498 +++++++++ drivers/video/sh7343lcdc.h | 520 +++ Shortcomings:

◮ Mix of board specific and processor specific code ◮ Cannot be used as console ◮ Only non-standard YUV modes supported

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 31 / 58

slide-32
SLIDE 32

Device Drivers New Drivers

LCD Controller

Diffstat for new driver: drivers/video/Kconfig | 10 drivers/video/Makefile | 2 drivers/video/sh_mobile_lcdcfb.c | 742 +++++++ include/asm-sh/sh_mobile_lcdc.h | 66 + 4 files changed, 820 insertions(+) Diffstat for new board specific code: arch/sh/Kconfig | 1 arch/sh/boards/renesas/migor/Kconfig | 15 + arch/sh/boards/renesas/migor/Makefile | 1 arch/sh/boards/renesas/migor/lcd_qvga.c | 165 +++++ arch/sh/boards/renesas/migor/setup.c | 96 ++ include/asm-sh/migor.h | 6 6 files changed, 284 insertions(+)

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 32 / 58

slide-33
SLIDE 33

Device Drivers New Drivers

New Drivers - Lessons Learned

◮ Model Software After Hardware Abstraction ◮ Use Standard User Space Test Programs ◮ Keep It Simple

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 33 / 58

slide-34
SLIDE 34

Device Drivers Advanced Drivers

Outline

Introduction Processor & Board Support Device Drivers Existing Drivers New Drivers Advanced Drivers Framework Extensions New Video Formats Zero Copy Frame Capture Upstream Patches & Internal Snapshots

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 34 / 58

slide-35
SLIDE 35

Device Drivers Advanced Drivers

Multimedia!

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 35 / 58

slide-36
SLIDE 36

Device Drivers Advanced Drivers

Advanced Drivers - Multimedia

Original Diffstat: drivers/media/video/Kconfig | 46 drivers/media/video/Makefile | 3 drivers/media/video/sh7343-vio/... drivers/media/video/videodev.c | 10 include/linux/videodev2.h | 222 42 files changed, 29372 insertions(+)

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 36 / 58

slide-37
SLIDE 37

Device Drivers Advanced Drivers

~30 000 Lines Of Code

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 37 / 58

slide-38
SLIDE 38

Device Drivers Advanced Drivers

/* TODO: semaphore */

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 38 / 58

slide-39
SLIDE 39

Device Drivers Advanced Drivers

Video Capture

New Video Capture Implementation: soc_camera: Remove default spinlock operations soc_camera: Let the host select videobuf_queue type soc_camera: Remove vbq_ops and msize soc_camera: Remove unused file lock pointer soc_camera: Add 16-bit bus width support videobuf: Add physically contiguous queue code sh_mobile_ceu_camera: Add SuperH Mobile CEU driver

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 39 / 58

slide-40
SLIDE 40

Device Drivers Advanced Drivers

Video Capture

New Video Capture Implementation Diffstat: drivers/media/video/Kconfig | 16 drivers/media/video/Makefile | 2 drivers/media/video/pxa_camera.c | 21 drivers/media/video/sh_mobile_ceu_camera.c | 622 ++ drivers/media/video/soc_camera.c | 52 - drivers/media/video/videobuf-dma-contig.c | 413 ++ include/asm-sh/sh_mobile_ceu.h | 10 include/media/soc_camera.h | 16 include/media/videobuf-dma-contig.h | 39 + 9 files changed, 1129 insertions(+), 62 deletions(-)

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 40 / 58

slide-41
SLIDE 41

Device Drivers Advanced Drivers

Multimedia Accelerators

Reusable UIO Driver V3 Diffstat: drivers/uio/Kconfig | 13 ++ drivers/uio/Makefile | 1 drivers/uio/uio_pdrv_genirq.c | 188 ++++++++++++++ 3 files changed, 202 insertions(+)

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 41 / 58

slide-42
SLIDE 42

Device Drivers Advanced Drivers

Advanced Drivers - Lessons Learned

◮ Plan Ahead - Do Not Over Engineer ◮ Simple First - Extend After ◮ Test User Space Against Virtual Driver

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 42 / 58

slide-43
SLIDE 43

Framework Extensions

Outline

Introduction Processor & Board Support Device Drivers Existing Drivers New Drivers Advanced Drivers Framework Extensions New Video Formats Zero Copy Frame Capture Upstream Patches & Internal Snapshots

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 43 / 58

slide-44
SLIDE 44

Framework Extensions New Video Formats

Outline

Introduction Processor & Board Support Device Drivers Existing Drivers New Drivers Advanced Drivers Framework Extensions New Video Formats Zero Copy Frame Capture Upstream Patches & Internal Snapshots

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 44 / 58

slide-45
SLIDE 45

Framework Extensions New Video Formats

New Video Formats

Needed to add pixel formats to V4L2:

◮ V4L2_PIX_FMT_NV12 ◮ V4L2_PIX_FMT_NV21 ◮ V4L2_PIX_FMT_NV16 ◮ V4L2_PIX_FMT_NV61

API Extension Diffstat: include/linux/videodev2.h | 2 ++ 1 file changed, 2 insertions(+) Video Capture Driver Diffstat: drivers/media/video/sh_mobile_ceu_camera.c | 22 ++ 1 file changed, 20 insertions(+), 2 deletions(-)

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 45 / 58

slide-46
SLIDE 46

Framework Extensions Zero Copy Frame Capture

Outline

Introduction Processor & Board Support Device Drivers Existing Drivers New Drivers Advanced Drivers Framework Extensions New Video Formats Zero Copy Frame Capture Upstream Patches & Internal Snapshots

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 46 / 58

slide-47
SLIDE 47

Framework Extensions Zero Copy Frame Capture

Zero Copy Frame Capture

Reuse Existing V4L2 API:

◮ V4L2_MEMORY_USERPTR

V4L2 videobuf-dma-contig USERPTR V3 Diffstat: drivers/media/video/videobuf-dma-contig.c | 78 +++ 1 file changed, 73 insertions(+), 5 deletions(-)

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 47 / 58

slide-48
SLIDE 48

Upstream Patches & Internal Snapshots

Outline

Introduction Processor & Board Support Device Drivers Existing Drivers New Drivers Advanced Drivers Framework Extensions New Video Formats Zero Copy Frame Capture Upstream Patches & Internal Snapshots

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 48 / 58

slide-49
SLIDE 49

Upstream Patches & Internal Snapshots

Code Flow Overview

2008 February -> August v2.6.24 -> v2.6.27

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 49 / 58

slide-50
SLIDE 50

Upstream Patches & Internal Snapshots

Code Flow - February 2008

Upstream work:

◮ Initial Board Support (Serial Console) ◮ SMC91C111 Patches ◮ Keypad Patches

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 50 / 58

slide-51
SLIDE 51

Upstream Patches & Internal Snapshots

Code Flow - March 2008

Upstream work:

◮ NOR and NAND Flash Support ◮ I2C Driver ◮ Touch Screen Driver ◮ RTC Driver

Internal Snapshots:

◮ migor-20080305 ◮ migor-20080306 ◮ migor-20080311 ◮ migor-20080312 ◮ migor-20080313 ◮ migor-20080318 ◮ migor-20080324

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 51 / 58

slide-52
SLIDE 52

Upstream Patches & Internal Snapshots

Code Flow - April 2008

Upstream work:

◮ Rewrote and Resent patches

Prototype work:

◮ LCD Controller hacking

Internal Snapshots:

◮ migor-20080423

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 52 / 58

slide-53
SLIDE 53

Upstream Patches & Internal Snapshots

Code Flow - May 2008

Upstream work:

◮ LCD Controller patches ◮ UIO patches

Prototype work:

◮ User Space UIO hacking

Internal Snapshots:

◮ migor-20080507 ◮ migor-20080515 ◮ migor-20080520 ◮ migor-20080526

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 53 / 58

slide-54
SLIDE 54

Upstream Patches & Internal Snapshots

Code Flow - June 2008

Upstream work:

◮ Rewrote and resent patches

Prototype work:

◮ Video Capture hacking

Internal Snapshots:

◮ migor-20080605

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 54 / 58

slide-55
SLIDE 55

Upstream Patches & Internal Snapshots

Code Flow - July 2008

Upstream work:

◮ Video Capture patches

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 55 / 58

slide-56
SLIDE 56

Upstream Patches & Internal Snapshots

Code Flow - August 2008

Upstream work:

◮ Rewrote I2C Driver ◮ Resubmitted UIO Driver ◮ Submitted Mplayer Vidix Driver Using UIO

Internal Snapshots:

◮ migor-20080804 ◮ migor-20080828

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 56 / 58

slide-57
SLIDE 57

Upstream Patches & Internal Snapshots Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 57 / 58

slide-58
SLIDE 58

Summary

Summary

◮ Always develop and submit code upstream ◮ Involve community early, build reputation ◮ Write simple code ◮ Backport if needed

Magnus Damm (damm@opensource.se) Upstream In-House Board Support Package Japan Linux Symposium 2009 58 / 58