2019-05-27 08:55:06 +02:00
/* SPDX-License-Identifier: GPL-2.0-or-later */
2010-06-17 13:27:26 -04:00
/*
2013-03-25 05:35:17 -03:00
* Copyright ( C ) 2010 - 2013 Bluecherry , LLC < http : //www.bluecherrydvr.com>
*
* Original author :
* Ben Collins < bcollins @ ubuntu . com >
*
* Additional work by :
* John Brooks < john . brooks @ bluecherry . net >
2010-06-17 13:27:26 -04:00
*/
2011-02-11 13:38:20 +01:00
# ifndef __SOLO6X10_OFFSETS_H
# define __SOLO6X10_OFFSETS_H
2010-06-17 13:27:26 -04:00
2011-02-11 13:33:26 +01:00
# define SOLO_DISP_EXT_ADDR 0x00000000
2010-06-17 13:27:26 -04:00
# define SOLO_DISP_EXT_SIZE 0x00480000
2013-03-25 05:35:17 -03:00
# define SOLO_EOSD_EXT_ADDR \
( SOLO_DISP_EXT_ADDR + SOLO_DISP_EXT_SIZE )
# define SOLO_EOSD_EXT_SIZE(__solo) \
( __solo - > type = = SOLO_DEV_6010 ? 0x10000 : 0x20000 )
# define SOLO_EOSD_EXT_SIZE_MAX 0x20000
# define SOLO_EOSD_EXT_AREA(__solo) \
( SOLO_EOSD_EXT_SIZE ( __solo ) * 32 )
2014-05-18 16:44:11 -03:00
# define SOLO_EOSD_EXT_ADDR_CHAN(__solo, ch) \
( SOLO_EOSD_EXT_ADDR + SOLO_EOSD_EXT_SIZE ( __solo ) * ( ch ) )
2010-06-17 13:27:26 -04:00
2013-03-25 05:35:17 -03:00
# define SOLO_MOTION_EXT_ADDR(__solo) \
( SOLO_EOSD_EXT_ADDR + SOLO_EOSD_EXT_AREA ( __solo ) )
2010-06-17 13:27:26 -04:00
# define SOLO_MOTION_EXT_SIZE 0x00080000
# define SOLO_G723_EXT_ADDR(__solo) \
2013-03-25 05:35:17 -03:00
( SOLO_MOTION_EXT_ADDR ( __solo ) + SOLO_MOTION_EXT_SIZE )
2010-06-17 13:27:26 -04:00
# define SOLO_G723_EXT_SIZE 0x00010000
# define SOLO_CAP_EXT_ADDR(__solo) \
2013-03-25 05:35:17 -03:00
( SOLO_G723_EXT_ADDR ( __solo ) + SOLO_G723_EXT_SIZE )
/* 18 is the maximum number of pages required for PAL@D1, the largest frame
* possible */
# define SOLO_CAP_PAGE_SIZE (18 << 16)
/* Always allow the encoder enough for 16 channels, even if we have less. The
* exception is if we have card with only 32 Megs of memory . */
# define SOLO_CAP_EXT_SIZE(__solo) \
( ( ( ( __solo - > sdram_size < = ( 32 < < 20 ) ) ? 4 : 16 ) + 1 ) \
* SOLO_CAP_PAGE_SIZE )
2010-06-17 13:27:26 -04:00
# define SOLO_EREF_EXT_ADDR(__solo) \
2013-03-25 05:35:17 -03:00
( SOLO_CAP_EXT_ADDR ( __solo ) + SOLO_CAP_EXT_SIZE ( __solo ) )
2010-06-17 13:27:26 -04:00
# define SOLO_EREF_EXT_SIZE 0x00140000
2013-03-25 05:35:17 -03:00
# define SOLO_EREF_EXT_AREA(__solo) \
( SOLO_EREF_EXT_SIZE * __solo - > nr_chans * 2 )
# define __SOLO_JPEG_MIN_SIZE(__solo) (__solo->nr_chans * 0x00080000)
2010-06-17 13:27:26 -04:00
# define SOLO_MP4E_EXT_ADDR(__solo) \
2013-03-25 05:35:17 -03:00
( SOLO_EREF_EXT_ADDR ( __solo ) + SOLO_EREF_EXT_AREA ( __solo ) )
# define SOLO_MP4E_EXT_SIZE(__solo) \
max ( ( __solo - > nr_chans * 0x00080000 ) , \
min ( ( ( __solo - > sdram_size - SOLO_MP4E_EXT_ADDR ( __solo ) ) - \
__SOLO_JPEG_MIN_SIZE ( __solo ) ) , 0x00ff0000 ) )
2010-06-17 13:27:26 -04:00
2013-03-25 05:35:17 -03:00
# define __SOLO_JPEG_MIN_SIZE(__solo) (__solo->nr_chans * 0x00080000)
# define SOLO_JPEG_EXT_ADDR(__solo) \
2010-06-17 13:27:26 -04:00
( SOLO_MP4E_EXT_ADDR ( __solo ) + SOLO_MP4E_EXT_SIZE ( __solo ) )
2013-03-25 05:35:17 -03:00
# define SOLO_JPEG_EXT_SIZE(__solo) \
max ( __SOLO_JPEG_MIN_SIZE ( __solo ) , \
min ( ( __solo - > sdram_size - SOLO_JPEG_EXT_ADDR ( __solo ) ) , 0x00ff0000 ) )
2010-06-17 13:27:26 -04:00
2013-03-25 05:35:17 -03:00
# define SOLO_SDRAM_END(__solo) \
( SOLO_JPEG_EXT_ADDR ( __solo ) + SOLO_JPEG_EXT_SIZE ( __solo ) )
2010-06-17 13:27:26 -04:00
2011-02-11 13:38:20 +01:00
# endif /* __SOLO6X10_OFFSETS_H */