blob: f005dca501f16e3dff821d96f1376d8d30faf672 [file] [log] [blame]
Ben Collinsfaa4fd22010-06-17 13:27:26 -04001/*
Hans Verkuildcae5da2013-03-25 05:35:17 -03002 * Copyright (C) 2010-2013 Bluecherry, LLC <http://www.bluecherrydvr.com>
3 *
4 * Original author:
5 * Ben Collins <bcollins@ubuntu.com>
6 *
7 * Additional work by:
8 * John Brooks <john.brooks@bluecherry.net>
Ben Collinsfaa4fd22010-06-17 13:27:26 -04009 *
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 2 of the License, or
13 * (at your option) any later version.
14 *
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
19 *
20 * You should have received a copy of the GNU General Public License
21 * along with this program; if not, write to the Free Software
22 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
23 */
24
Krzysztof Hałasadecebab2011-02-11 13:38:20 +010025#ifndef __SOLO6X10_OFFSETS_H
26#define __SOLO6X10_OFFSETS_H
Ben Collinsfaa4fd22010-06-17 13:27:26 -040027
Krzysztof Hałasa43d11362011-02-11 13:33:26 +010028#define SOLO_DISP_EXT_ADDR 0x00000000
Ben Collinsfaa4fd22010-06-17 13:27:26 -040029#define SOLO_DISP_EXT_SIZE 0x00480000
30
Hans Verkuildcae5da2013-03-25 05:35:17 -030031#define SOLO_EOSD_EXT_ADDR \
32 (SOLO_DISP_EXT_ADDR + SOLO_DISP_EXT_SIZE)
33#define SOLO_EOSD_EXT_SIZE(__solo) \
34 (__solo->type == SOLO_DEV_6010 ? 0x10000 : 0x20000)
35#define SOLO_EOSD_EXT_SIZE_MAX 0x20000
36#define SOLO_EOSD_EXT_AREA(__solo) \
37 (SOLO_EOSD_EXT_SIZE(__solo) * 32)
Ben Collinsfaa4fd22010-06-17 13:27:26 -040038
Hans Verkuildcae5da2013-03-25 05:35:17 -030039#define SOLO_MOTION_EXT_ADDR(__solo) \
40 (SOLO_EOSD_EXT_ADDR + SOLO_EOSD_EXT_AREA(__solo))
Ben Collinsfaa4fd22010-06-17 13:27:26 -040041#define SOLO_MOTION_EXT_SIZE 0x00080000
42
43#define SOLO_G723_EXT_ADDR(__solo) \
Hans Verkuildcae5da2013-03-25 05:35:17 -030044 (SOLO_MOTION_EXT_ADDR(__solo) + SOLO_MOTION_EXT_SIZE)
Ben Collinsfaa4fd22010-06-17 13:27:26 -040045#define SOLO_G723_EXT_SIZE 0x00010000
46
47#define SOLO_CAP_EXT_ADDR(__solo) \
Hans Verkuildcae5da2013-03-25 05:35:17 -030048 (SOLO_G723_EXT_ADDR(__solo) + SOLO_G723_EXT_SIZE)
Ben Collinsfaa4fd22010-06-17 13:27:26 -040049
Hans Verkuildcae5da2013-03-25 05:35:17 -030050/* 18 is the maximum number of pages required for PAL@D1, the largest frame
51 * possible */
52#define SOLO_CAP_PAGE_SIZE (18 << 16)
53
54/* Always allow the encoder enough for 16 channels, even if we have less. The
55 * exception is if we have card with only 32Megs of memory. */
56#define SOLO_CAP_EXT_SIZE(__solo) \
57 ((((__solo->sdram_size <= (32 << 20)) ? 4 : 16) + 1) \
58 * SOLO_CAP_PAGE_SIZE)
59
Ben Collinsfaa4fd22010-06-17 13:27:26 -040060#define SOLO_EREF_EXT_ADDR(__solo) \
Hans Verkuildcae5da2013-03-25 05:35:17 -030061 (SOLO_CAP_EXT_ADDR(__solo) + SOLO_CAP_EXT_SIZE(__solo))
Ben Collinsfaa4fd22010-06-17 13:27:26 -040062#define SOLO_EREF_EXT_SIZE 0x00140000
Hans Verkuildcae5da2013-03-25 05:35:17 -030063#define SOLO_EREF_EXT_AREA(__solo) \
64 (SOLO_EREF_EXT_SIZE * __solo->nr_chans * 2)
65
66#define __SOLO_JPEG_MIN_SIZE(__solo) (__solo->nr_chans * 0x00080000)
Ben Collinsfaa4fd22010-06-17 13:27:26 -040067
68#define SOLO_MP4E_EXT_ADDR(__solo) \
Hans Verkuildcae5da2013-03-25 05:35:17 -030069 (SOLO_EREF_EXT_ADDR(__solo) + SOLO_EREF_EXT_AREA(__solo))
70#define SOLO_MP4E_EXT_SIZE(__solo) \
71 max((__solo->nr_chans * 0x00080000), \
72 min(((__solo->sdram_size - SOLO_MP4E_EXT_ADDR(__solo)) - \
73 __SOLO_JPEG_MIN_SIZE(__solo)), 0x00ff0000))
Ben Collinsfaa4fd22010-06-17 13:27:26 -040074
Hans Verkuildcae5da2013-03-25 05:35:17 -030075#define __SOLO_JPEG_MIN_SIZE(__solo) (__solo->nr_chans * 0x00080000)
Ben Collinsfaa4fd22010-06-17 13:27:26 -040076#define SOLO_JPEG_EXT_ADDR(__solo) \
Hans Verkuildcae5da2013-03-25 05:35:17 -030077 (SOLO_MP4E_EXT_ADDR(__solo) + SOLO_MP4E_EXT_SIZE(__solo))
78#define SOLO_JPEG_EXT_SIZE(__solo) \
79 max(__SOLO_JPEG_MIN_SIZE(__solo), \
80 min((__solo->sdram_size - SOLO_JPEG_EXT_ADDR(__solo)), 0x00ff0000))
81
82#define SOLO_SDRAM_END(__solo) \
83 (SOLO_JPEG_EXT_ADDR(__solo) + SOLO_JPEG_EXT_SIZE(__solo))
Ben Collinsfaa4fd22010-06-17 13:27:26 -040084
Krzysztof Hałasadecebab2011-02-11 13:38:20 +010085#endif /* __SOLO6X10_OFFSETS_H */