***************************************************************
* External DRAM Controller, Linux Device Driver, Release Note *
***************************************************************
[Version 6.1.0.6]
Release at 2016.01.16
1. FEATURE: support Vienna platform
2. REFINEMENT: remove the dependency of the export of dmac_map_area

[Version 6.1.0.5]
Release at 2015.09.30
1. BUGFIX: dma_sync_* cannot operate on non-direct-mapped memory

[Version 6.1.0.4]
Release at 2015.09.10
1. BUGFIX: set chachable for any memory allocation.

[Version 6.1.0.3]
Release at 2015.06.29
1. BUGFIX:  Should pass physical address to dma_sync_single_for_device().

[Version 6.1.0.2]
Release at 2015.01.15
1. REFINEMENT: include <asm/system.h> for compiling issue with older gcc on Kernel 3.x

[Version 6.1.0.1]
Release at 2014.12.26
1. BUGFIX: move common VPL_SYSC_CHIP_* definition to be platform independent.

[Version 6.1.0.0]
Release at 2014.12.17
1. FEATURE: Support for Genova Platform
2. FEATURE: Add ioctl command, VPL_EDMC_IOC_GET_CHIP_INFO to get chip vendor,
ids and version.

[Version 6.0.0.14]
Release at 2014.09.04
1. FEATURE: Support for Pesaro Platform

[Version 6.0.0.13]
Release at 2014.07.04
1. FEATURE: Support for Linux Kernel 3.10.x
2. BUGFIX: Architecture distinguish macros should use "||" not "|".

[Version 6.0.0.12]
Release at 2014.6.27
1. REFINEMENT: Refine cache flush operation. For ioctl VPL_EDMC_IOC_CACHE_FLUSH,
   flush cache by flush_cache_range() instead of original dmac_flush_range().
   The difference is that flush_cache_range() will flush the whole cache if the
   flush range is larger than the cache size.

[Version 6.0.0.11]
Release at 2014.4.24
1. BUGFIX: When doing VPL_EDMC_IOC_VIRT_TO_PHYS, take "VirtLowerAddr + RequestedBufferSize" instead of "VirtUpperAddr" as the buffer upper bound or some invalid virtual address would be incorrectly considered an existent address.

[Version 6.0.0.10]
Release at 2014.3.21
1. set chachable for any memory allocation.
2. /sys/class/vpl_edmc/footprint shows allocations of each
   DRAM separately.

[Version 6.0.0.9]
Release at 2014.2.12
1. REFINEMENT: Print more than 1 page data of mappings in
               /proc/vpl_edmc_maps

[Version 6.0.0.8]
Release at 2013.10.3
1. REFINEMENT: Allocate all DRAM memory out of control of kernel to EDMC driver.
   Since all memory out of kernel's control should be devoted to media
   usage, edmc driver parses the kernel command line 'mem=' and gets
   all the left memory.
   So the module parameter dwMediaMemSize is abandoned !

[Version 6.0.0.7]
Release at 2013.4.11
1. FIX: Fix dram number sequencing.
   Dram number depends on the order of memory base addresses,
   instead of the values of base addresses.

[Version 6.0.0.6]
Release at 2013.3.22
1. FEATURE: Add /sys/class/vpl_edmc/footprint to show run time memory total
usage.

[Version 6.0.0.5]
Release at 2012.03.30
1. REFINEMENT: EDMC bus number is decided by base address set in dram controller which should be identical with slave base address in AHB controller. Should be with Mozart v2 loader with version 12033001 or newer.

[Version 6.0.0.4]
Release at 2012.01.18
1. BUG: edmc_query_phys() uses (vma->end - vma_start) as Blk size, ignores the alignment issue which cause cache table to record wrong Blk size. - FIXED

[Version 6.0.0.3]
Release at 2011.12.30
1. FEATURE: Set Beethoven DDR banks from 2 to 4
2. BUG: DDR base address parameter fix to 1 - FIXED

[Version 6.0.0.2]
Release at 2011.08.02
1. REFINEMENT: rename DRAMInfo to MediaSize

[Version 6.0.0.1]
Release at 2011.08.01
1. FEATURE: Add sysfs to export DRAM size on MOZART platform.

[Version 6.0.0.0]
Release at 2010.12.08
1. FEATURE: Change EDMC_IOC_VIRT_TO_PHYS and EDMC_IOC_PHYS_TO_VIRT ioctl
command to return address, offset and size to user space (LibMemMgr).

[Version 5.0.0.15]
Release at 2010.03.08
1. FEATURE: Add ioctl command, VPL_EDMC_IOC_CHECK_MAPPED_REGION to map host
side memory.

[Version 5.0.0.14]
Release at 2010.02.03
1. FEATURE: Add ioctl command, VPL_EDMC_IOC_GET_CHIP_ID to get chip ID in SYSC.

[Version 5.0.0.13]
Release at 2010.01.30
1. FEATURE: Modify the way to caluate the size of DRAM.

[Version 5.0.0.12]
Release at 2010.01.29
1. FEATURE: Add Beethoven/Andes support
2. FEATURE: Add CPU type in Makefile (Andes kernel module must add "-Wa,-mno-small-text" FLAG when compiling)

[Version 5.0.0.11]
Release at 2010.01.27
1. FEATURE: Add a new function edmc_query_phys. Other drivers can query physical addresses via this interface.
2. FEATURE: Users can query mapped memory block by "cat /sys/class/vpl_edmc/maps", but the driver should be GPL'ed.
3. FEATURE: Add a new parameter, flexible. It can let the driver allocate memory to different banks automatically if the desired one is full or unavailable.
4. FEATURE: A new ioctl command, VPL_EDMC_IOC_QUERY_CHIP_SUBTYPE. Users can query the sub-type of SoC (Mozart 380 or 365).
5. REFINEMENT: Hook get_unmapped_area to get an easy-to-read virtual address
6. REFINEMENT: All the linked lists implementation are replaced by Kernel's.
7. REFINEMENT: VPL_EDMC_IOC_SHARED_MAPPING_TABLE is obsolete.
8. FEATURE: Record physical address in vma->vm_pgoff. Thus, we can see the physical/virtual mapping by "grep edmc /proc/<pid>/maps"


[Version 5.0.0.10]
Release at 2009.11.25
1. FEATURE: Use LINUX_VERSION_CODE to decide the related codes for Linux 2.6.24 and above - DONE.

[Version 5.0.0.9]
Release at 2009.09.09
1. BUG: without munmap when free a memory - FIXED

[Version 5.0.0.8]
Release at 2009.05.20
1. BUG: If one of the instances hold semaphore then another instance calls close syscall or forced to call close syscall by Ctrl-C, the close syscall would hang in down semaphore. - FIXED

[Version 5.0.0.7]
Release at 2009.03.19
1. FEATURE: Support Mozart platform - DONE.

[Version 5.0.0.6]
Release at 2008.12.31
1. BUG: non-Default dwMediaMemSize would cause EDMC driver map cachable memory
to user mode which is actually in Bus 1. - FIXED.

[Version 5.0.0.5]
Release at 2008.09.15
1. MODIFICATION: Remove static in ID string declaration to prevent ID string being removed during compilation - DONE.

[Version 5.0.0.4]
Release at 2008.01.15
1. REFINEMENT: Change all unnecessary printk() to PDEBUG() - DONE.

[Version 5.0.0.3]
Release at 2008.01.14
1. REFINEMENT: fix cache operation to dmac_cache_xxx in Linux 2.6.20.4

[Version 5.0.0.2]
Release at 2007.12.25
1. BUG: Close() procedure should be protected by critical section - FIXED.

[Version 5.0.0.1]
Release at 2007.11.09
1. REFINEMENT: Remove useless adwCurrAddr array for __ASM_ARCH_PLATFORM_BACH_H__ - DONE.

[Version 5.0.0.0]
Release at 2007.09.04
1. BUG: Incorrect size calculation for __ASM_ARCH_PLATFORM_HAYDN_H__ - FIXED.

[Version 4.2.0.0]
Release at 2007.08.16
1. FEATURE: Support Linux kernel 2.6 - DONE.

[Version 4.1.0.2]
Release at 2007.01.26
1. BUG: For multi-instace which use the same shared memory in a processes
   should cron the table and assign its private data - FIXED.
2. BUG: While free the shared memory table must check the private data - FIXED.

[Version 4.1.0.1]
Release at 2007.01.02
1. BUG: There is no mechanism to delete element of shared memory table unless closing the EDMC device - FIXED.

[Version 4.1.0.0]
Release at 2006.12.11
1. FEATURE: Support dynamic memory size configuration during module installation - DONE.

[Version 4.0.0.2]
Release at 2006.11.01
1. BUG: Incorrect boundary check - FIXED.
2. BUG: The bank enable bit should be checked first under Vivaldi configuration before reading the size information - FIXED.

[Version 4.0.0.1]
Release at 2006.10.16
1. BUG: The size of adwSize and adwBaseAddr should be one instead of three under Vivaldi configurations - FIXED.

[Version 4.0.0.0]
Release at 2006.07.10
1. FEATURE: Remove VPL_EDMC_IOC_SET_CACHABLE support, all memory region in system bus will be always cacheable and all memory region in other buses will be always noncacheable - DONE.

[Version 3.0.0.0]
Release at 2006.06.27
1. FEATURE: Use copy_from_user() in VPL_EDMC_IOC_CACHE_INVALIDATE, VPL_EDMC_IOC_CACHE_COPYBACK, and VPL_EDMC_IOC_CACHE_FLUSH IO control options to improve its performance - DONE.

[Version 2.2.0.0]
Release at 2006.06.21
1. FEATURE: Support Vivaldi platform - DONE.

[Version 2.1.0.0]
Release at 2006.06.02
1. FEATURE: Add VPL_EDMC_IOC_SHARED_MAPPING_TABLE and VPL_EDMC_IOC_GET_VERSION_NUMBER ioctl options - DONE.

[Version 2.0.0.2]
Release at 2006.05.25
1. BUG: dwAlignPadding should be calculated immediately after dwStartAddr - FIXED.

[Version 2.0.0.1]
Release at 2006.05.15
1. BUG: ptPrevBlkInfo should not be assigned if ptBlkInfo is not NULL in Mmap() - DONE.

[Version 2.0.0.0]
Release at 2006.05.11
1. FEATURE: Change VPL_EDMC_IOC_USR_TO_PHY name to VPL_EDMC_IOC_VIRT_TO_PHYS - DONE.
2. FEATURE: Change VPL_EDMC_IOC_PHY_TO_USR name to VPL_EDMC_IOC_PHYS_TO_VIRT - DONE.
3. FEATURE: Add VPL_EDMC_IOC_SET_SHARED_SIZE ioctl option - DONE.
4. FEATURE: Add VPL_EDMC_IOC_CHECK_SHARED_REGION ioctl option - DONE.
5. FEATURE: Support map-only mmap function - DONE.

[Version 1.2.0.2]
Release at 2006.04.26
1. BUG: Virtual memory space of different processes may have overlap, we have to use the process ID to distinguish the virtual address from different processes - FIXED.

[Version 1.2.0.1]
Release at 2006.04.26
1. BUG: Incorrect empty memory appending procedure - FIXED.
2. REFINEMENT: Remove useless adwCurrAddr arrag - DONE.
3. BUG: Fragmental memory space search should be moved to VPL_EDMC_IOC_SET_SIZE ioctl option - FIXED.

[Version 1.2.0.0]
Release at 2006.04.26
1. MODIFICATION: Add TVPLEDMCObjInfo structure to store private data for each device object - DONE.
2. BUG: Semaphore may be locked if process quit abnormally - FIXED.
3. MODIFICATION: Move table clear-up from Mmap() to Close() - DONE.
4. MODIFICATION: Use dynamic allocation method for TVPLEDMCBlkInfo buffer to remove the limitation of block information number - DONE.
5. FEATURE: Add VPL_EDMC_IOC_PHY_TO_USR optoin - DONE.
6. MODIFICATION: Sort all allocated memory section by physical address in Mmap() - DONE.
7. FEATURE: Add VPL_EDMC_IOC_FREE option - DONE.
8. REFINEMENT: Support dynamic memory allocation - DONE.

[Version 1.1.0.0]
Release at 2006.04.24
1. BUG: The page unit of virtual memory should be 4096 aligned - FIXED.
2. FEATURE: Add VPL_EDMC_IOC_GET_ALIGNMENT option - DONE.

[Version 1.0.0.2]
Release at 2006.04.21
1. MODIFICATION: Use system memory instead of EDMC memory for virtual to physical look up table - DONE.

[Version 1.0.0.1]
Release at 2006.04.20
1. MODIFICATION: Remove SourceSafe keyword __DATE__ - DONE.
2. BUG: Cannot return physical address directly in VPL_EDMC_IOC_USR_TO_PHY case of Ioctl() - FIXED.

[Version 1.0.0.0]
Release at 2006.04.19
