2 * Copyright © 1999 Keith Packard
4 * Permission to use, copy, modify, distribute, and sell this software and its
5 * documentation for any purpose is hereby granted without fee, provided that
6 * the above copyright notice appear in all copies and that both that
7 * copyright notice and this permission notice appear in supporting
8 * documentation, and that the name of Keith Packard not be used in
9 * advertising or publicity pertaining to distribution of the software without
10 * specific, written prior permission. Keith Packard makes no
11 * representations about the suitability of this software for any purpose. It
12 * is provided "as is" without express or implied warranty.
14 * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
15 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
16 * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
17 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
18 * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
19 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
20 * PERFORMANCE OF THIS SOFTWARE.
24 #include <kdrive-config.h>
29 static CARD8 memoryPatterns
[] = { 0xff, 0x00, 0x5a, 0xa5, 0xaa, 0x55 };
31 #define NUM_PATTERNS (sizeof (memoryPatterns) / sizeof (memoryPatterns[0]))
34 KdFrameBufferValid (CARD8
*base
, int size
)
36 volatile CARD8
*b
= (volatile CARD8
*) base
;
37 CARD8 save
, test
, compare
;
40 b
= base
+ (size
- 1);
43 for (i
= 0; i
< NUM_PATTERNS
; i
++)
45 test
= memoryPatterns
[i
];
47 for (j
= 0; j
< 1000; j
++)
59 KdFrameBufferSize (CARD8
*base
, int max
)
66 cur
= (max
+ min
) / 2;
67 if (KdFrameBufferValid (base
, cur
))
72 if (KdFrameBufferValid (base
, max
))