/* $Id: udelay.c,v 1.3 2001/03/01 22:33:50 reinelt Exp $ * * short delays * * Copyright 1999, 2000 by Michael Reinelt (reinelt@eunet.at) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * * $Log: udelay.c,v $ * Revision 1.3 2001/03/01 22:33:50 reinelt * * renamed Raster_flush() to PPM_flush() * * Revision 1.2 2000/07/31 10:43:44 reinelt * * some changes to support kernel-2.4 (different layout of various files in /proc) * * Revision 1.1 2000/04/15 16:56:52 reinelt * * moved delay loops to udelay.c * renamed -d (debugging) switch to -v (verbose) * new switch -d to calibrate delay loop * 'Delay' entry for HD44780 back again * delay loops will not calibrate automatically, because this will fail with hich CPU load * */ /* * * exported fuctions: * * void udelay (unsigned long usec) * delays program execution for usec microseconds * uses global variable 'loops_per_usec', which has to be set before. * This function does busy-waiting! so use only for delays smaller * than 10 msec * * void udelay_calibrate (void) * does a binary approximation for 'loops_per_usec' * should be called several times on an otherwise idle machine * the maximum value should be used * */ #include #include #include #include "udelay.h" unsigned long loops_per_usec; void udelay (unsigned long usec) { unsigned long loop=usec*loops_per_usec; __asm__ (".align 16\n" "1:\tdecl %0\n" "\tjne 1b" : /* no result */ :"a" (loop)); } /* adopted from /usr/src/linux/init/main.c */ void udelay_calibrate (void) { clock_t tick; unsigned long bit; loops_per_usec=1; while (loops_per_usec<<=1) { tick=clock(); while (clock()==tick); tick=clock(); udelay(1000000/CLK_TCK); if (clock()>tick) break; } loops_per_usec>>=1; bit=loops_per_usec; while (bit>>=1) { loops_per_usec|=bit; tick=clock(); while (clock()==tick); tick=clock(); udelay(1000000/CLK_TCK); if (clock()>tick) loops_per_usec&=~bit; } } ymedia?id=27cf54a2947ab0e676c27cefd8a97366d676ab9f'>plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# Unitymedia
# Created from http://www.unitymedia.de/service/soforthilfe/frequenzen.html
# and http://www.unitymedia.de/images/UnityDigitalTV_Lineup_01-07-2009.pdf
# freq sr fec mod
C 113000000 6900000 NONE QAM256
C 121000000 6900000 NONE QAM256
C 346000000 6900000 NONE QAM256
C 354000000 6900000 NONE QAM64
C 362000000 6900000 NONE QAM64
C 370000000 6900000 NONE QAM64
C 378000000 6900000 NONE QAM64
C 386000000 6900000 NONE QAM64
C 394000000 6900000 NONE QAM64
C 402000000 6900000 NONE QAM256
C 410000000 6900000 NONE QAM256
C 418000000 6900000 NONE QAM256
C 426000000 6900000 NONE QAM256
C 434000000 6900000 NONE QAM256
C 442000000 6900000 NONE QAM256
C 450000000 6900000 NONE QAM256
C 458000000 6900000 NONE QAM256
C 466000000 6900000 NONE QAM256
C 522000000 6900000 NONE QAM256
C 530000000 6900000 NONE QAM256
C 538000000 6900000 NONE QAM256
C 546000000 6900000 NONE QAM256
C 554000000 6900000 NONE QAM256
C 562000000 6900000 NONE QAM256
C 570000000 6900000 NONE QAM256
C 650000000 6900000 NONE QAM256
C 658000000 6900000 NONE QAM256
C 666000000 6900000 NONE QAM256
C 674000000 6900000 NONE QAM256
C 682000000 6900000 NONE QAM256
C 690000000 6900000 NONE QAM256
C 698000000 6900000 NONE QAM256