171d7fec4Smrg/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nsc/gfx/gfx_tv.c,v 1.1 2002/12/10 15:12:25 alanh Exp $ */
271d7fec4Smrg/*
371d7fec4Smrg * $Workfile: gfx_tv.c $
471d7fec4Smrg *
571d7fec4Smrg * This file contains routines to program TVOUT and TV encoder.
671d7fec4Smrg *
771d7fec4Smrg * Routines:
871d7fec4Smrg *
971d7fec4Smrg *    gfx_set_tv_format
1071d7fec4Smrg *    gfx_set_tv_output
1171d7fec4Smrg *    gfx_set_tv_enable
1271d7fec4Smrg *    gfx_set_tv_flicker_filter
1371d7fec4Smrg *    gfx_set_tv_sub_carrier_reset
1471d7fec4Smrg *    gfx_set_tv_vphase
1571d7fec4Smrg *    gfx_set_tv_YC_delay
1671d7fec4Smrg *    gfx_set_tvenc_reset_interval
1771d7fec4Smrg *    gfx_set_tv_cc_enable
1871d7fec4Smrg *    gfx_set_tv_cc_data
1971d7fec4Smrg *    gfx_test_tvout_odd_field
2071d7fec4Smrg *    gfx_test_tvenc_odd_field
2171d7fec4Smrg *    gfx_set_tv_field_status_invert
2271d7fec4Smrg *    gfx_get_tv_vphase
2371d7fec4Smrg *
2471d7fec4Smrg * NSC_LIC_ALTERNATIVE_PREAMBLE
2571d7fec4Smrg *
2671d7fec4Smrg * Revision 1.0
2771d7fec4Smrg *
2871d7fec4Smrg * National Semiconductor Alternative GPL-BSD License
2971d7fec4Smrg *
3071d7fec4Smrg * National Semiconductor Corporation licenses this software
3171d7fec4Smrg * ("Software"):
3271d7fec4Smrg *
3371d7fec4Smrg *      Durango
3471d7fec4Smrg *
3571d7fec4Smrg * under one of the two following licenses, depending on how the
3671d7fec4Smrg * Software is received by the Licensee.
3771d7fec4Smrg *
3871d7fec4Smrg * If this Software is received as part of the Linux Framebuffer or
3971d7fec4Smrg * other GPL licensed software, then the GPL license designated
4071d7fec4Smrg * NSC_LIC_GPL applies to this Software; in all other circumstances
4171d7fec4Smrg * then the BSD-style license designated NSC_LIC_BSD shall apply.
4271d7fec4Smrg *
4371d7fec4Smrg * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
4471d7fec4Smrg
4571d7fec4Smrg/* NSC_LIC_BSD
4671d7fec4Smrg *
4771d7fec4Smrg * National Semiconductor Corporation Open Source License for Durango
4871d7fec4Smrg *
4971d7fec4Smrg * (BSD License with Export Notice)
5071d7fec4Smrg *
5171d7fec4Smrg * Copyright (c) 1999-2001
5271d7fec4Smrg * National Semiconductor Corporation.
5371d7fec4Smrg * All rights reserved.
5471d7fec4Smrg *
5571d7fec4Smrg * Redistribution and use in source and binary forms, with or without
5671d7fec4Smrg * modification, are permitted provided that the following conditions
5771d7fec4Smrg * are met:
5871d7fec4Smrg *
5971d7fec4Smrg *   * Redistributions of source code must retain the above copyright
6071d7fec4Smrg *     notice, this list of conditions and the following disclaimer.
6171d7fec4Smrg *
6271d7fec4Smrg *   * Redistributions in binary form must reproduce the above
6371d7fec4Smrg *     copyright notice, this list of conditions and the following
6471d7fec4Smrg *     disclaimer in the documentation and/or other materials provided
6571d7fec4Smrg *     with the distribution.
6671d7fec4Smrg *
6771d7fec4Smrg *   * Neither the name of the National Semiconductor Corporation nor
6871d7fec4Smrg *     the names of its contributors may be used to endorse or promote
6971d7fec4Smrg *     products derived from this software without specific prior
7071d7fec4Smrg *     written permission.
7171d7fec4Smrg *
7271d7fec4Smrg * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
7371d7fec4Smrg * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
7471d7fec4Smrg * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
7571d7fec4Smrg * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
7671d7fec4Smrg * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
7771d7fec4Smrg * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
7871d7fec4Smrg * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
7971d7fec4Smrg * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
8071d7fec4Smrg * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
8171d7fec4Smrg * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
8271d7fec4Smrg * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
8371d7fec4Smrg * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
8471d7fec4Smrg * OF SUCH DAMAGE.
8571d7fec4Smrg *
8671d7fec4Smrg * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
8771d7fec4Smrg * YOUR JURISDICTION. It is licensee's responsibility to comply with
8871d7fec4Smrg * any export regulations applicable in licensee's jurisdiction. Under
8971d7fec4Smrg * CURRENT (2001) U.S. export regulations this software
9071d7fec4Smrg * is eligible for export from the U.S. and can be downloaded by or
9171d7fec4Smrg * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
9271d7fec4Smrg * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
9371d7fec4Smrg * Syria, Sudan, Afghanistan and any other country to which the U.S.
9471d7fec4Smrg * has embargoed goods and services.
9571d7fec4Smrg *
9671d7fec4Smrg * END_NSC_LIC_BSD */
9771d7fec4Smrg
9871d7fec4Smrg/* NSC_LIC_GPL
9971d7fec4Smrg *
10071d7fec4Smrg * National Semiconductor Corporation Gnu General Public License for Durango
10171d7fec4Smrg *
10271d7fec4Smrg * (GPL License with Export Notice)
10371d7fec4Smrg *
10471d7fec4Smrg * Copyright (c) 1999-2001
10571d7fec4Smrg * National Semiconductor Corporation.
10671d7fec4Smrg * All rights reserved.
10771d7fec4Smrg *
10871d7fec4Smrg * Redistribution and use in source and binary forms, with or without
10971d7fec4Smrg * modification, are permitted under the terms of the GNU General
11071d7fec4Smrg * Public License as published by the Free Software Foundation; either
11171d7fec4Smrg * version 2 of the License, or (at your option) any later version
11271d7fec4Smrg *
11371d7fec4Smrg * In addition to the terms of the GNU General Public License, neither
11471d7fec4Smrg * the name of the National Semiconductor Corporation nor the names of
11571d7fec4Smrg * its contributors may be used to endorse or promote products derived
11671d7fec4Smrg * from this software without specific prior written permission.
11771d7fec4Smrg *
11871d7fec4Smrg * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
11971d7fec4Smrg * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
12071d7fec4Smrg * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
12171d7fec4Smrg * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
12271d7fec4Smrg * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
12371d7fec4Smrg * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
12471d7fec4Smrg * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
12571d7fec4Smrg * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
12671d7fec4Smrg * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
12771d7fec4Smrg * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
12871d7fec4Smrg * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
12971d7fec4Smrg * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
13071d7fec4Smrg * OF SUCH DAMAGE. See the GNU General Public License for more details.
13171d7fec4Smrg *
13271d7fec4Smrg * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
13371d7fec4Smrg * YOUR JURISDICTION. It is licensee's responsibility to comply with
13471d7fec4Smrg * any export regulations applicable in licensee's jurisdiction. Under
13571d7fec4Smrg * CURRENT (2001) U.S. export regulations this software
13671d7fec4Smrg * is eligible for export from the U.S. and can be downloaded by or
13771d7fec4Smrg * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
13871d7fec4Smrg * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
13971d7fec4Smrg * Syria, Sudan, Afghanistan and any other country to which the U.S.
14071d7fec4Smrg * has embargoed goods and services.
14171d7fec4Smrg *
14271d7fec4Smrg * You should have received a copy of the GNU General Public License
14371d7fec4Smrg * along with this file; if not, write to the Free Software Foundation,
14471d7fec4Smrg * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
14571d7fec4Smrg *
14671d7fec4Smrg * END_NSC_LIC_GPL */
14771d7fec4Smrg
14871d7fec4Smrg/* TV TIMINGS */
14971d7fec4Smrg
15071d7fec4SmrgDISPLAYMODE TVTimings[] = {
15171d7fec4Smrg
15271d7fec4Smrg/* NTSC resolution */
15371d7fec4Smrg
15471d7fec4Smrg   {0x3 |				/* negative syncs       */
15571d7fec4Smrg    GFX_MODE_TV_NTSC,			/* NTSC format          */
15671d7fec4Smrg    640, 640, 656, 744, 792, 792,	/* horizontal timings   */
15771d7fec4Smrg    480, 480, 490, 492, 517, 525,	/* vertical timings     */
15871d7fec4Smrg    0x0018EC4D,				/* freq = 24.923052 MHz */
15971d7fec4Smrg    }
16071d7fec4Smrg   ,
16171d7fec4Smrg
16271d7fec4Smrg/* PAL resolution */
16371d7fec4Smrg
16471d7fec4Smrg   {0x3 |				/* negative syncs       */
16571d7fec4Smrg    GFX_MODE_TV_PAL,			/* PAL format           */
16671d7fec4Smrg    768, 768, 800, 848, 864, 864,	/* horizontal timings   */
16771d7fec4Smrg    576, 576, 586, 588, 625, 625,	/* vertical timings     */
16871d7fec4Smrg    0x001B0000,				/* freq = 27.00 MHz     */
16971d7fec4Smrg    }
17071d7fec4Smrg   ,
17171d7fec4Smrg
17271d7fec4Smrg/* NTSC resolution non-square pixels */
17371d7fec4Smrg
17471d7fec4Smrg   {0x3 |				/* negative syncs       */
17571d7fec4Smrg    GFX_MODE_TV_NTSC,			/* NTSC format          */
17671d7fec4Smrg    720, 720, 736, 752, 792, 792,	/* horizontal timings   */
17771d7fec4Smrg    480, 480, 490, 492, 517, 525,	/* vertical timings     */
17871d7fec4Smrg    0x0018EC4D,				/* freq = 24.923052 MHz */
17971d7fec4Smrg    }
18071d7fec4Smrg   ,
18171d7fec4Smrg
18271d7fec4Smrg/* PAL resolution non-square pixels */
18371d7fec4Smrg
18471d7fec4Smrg   {0x3 |				/* negative syncs       */
18571d7fec4Smrg    GFX_MODE_TV_PAL,			/* PAL format           */
18671d7fec4Smrg    720, 720, 752, 816, 864, 864,	/* horizontal timings   */
18771d7fec4Smrg    576, 576, 586, 588, 625, 625,	/* vertical timings     */
18871d7fec4Smrg    0x001B0000,				/* freq = 27.00 MHz     */
18971d7fec4Smrg    }
19071d7fec4Smrg};
19171d7fec4Smrg
19271d7fec4Smrg#define NUM_TV_MODES sizeof(TVTimings)/sizeof(DISPLAYMODE)
19371d7fec4Smrg
19471d7fec4Smrg/* INCLUDE SUPPORT FOR SC1200 TV ENCODER, IF SPECIFIED */
19571d7fec4Smrg
19671d7fec4Smrg#if GFX_TV_SC1200
19771d7fec4Smrg#include "tv_1200.c"
19871d7fec4Smrg#endif
19971d7fec4Smrg
20071d7fec4Smrg/* INCLUDE SUPPORT FOR FS450 TV ENCODER, IF SPECIFIED */
20171d7fec4Smrg
20271d7fec4Smrg#if GFX_TV_FS451
20371d7fec4Smrg#include "tv_fs450.c"
20471d7fec4Smrg#endif
20571d7fec4Smrg
20671d7fec4Smrg/* WRAPPERS IF DYNAMIC SELECTION */
20771d7fec4Smrg/* Extra layer to call either SC1200 or FS450 TV encoder routines. */
20871d7fec4Smrg
20971d7fec4Smrg#if GFX_TV_DYNAMIC
21071d7fec4Smrg
21171d7fec4Smrg/*-----------------------------------------------------------------------------
21271d7fec4Smrg * gfx_set_tv_format
21371d7fec4Smrg *-----------------------------------------------------------------------------
21471d7fec4Smrg */
21571d7fec4Smrgint
21671d7fec4Smrggfx_set_tv_format(TVStandardType format, GfxOnTVType resolution)
21771d7fec4Smrg{
21871d7fec4Smrg   int retval = GFX_STATUS_UNSUPPORTED;
21971d7fec4Smrg
22071d7fec4Smrg#if GFX_TV_SC1200
22171d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_SC1200)
22271d7fec4Smrg      retval = sc1200_set_tv_format(format, resolution);
22371d7fec4Smrg#endif
22471d7fec4Smrg#if GFX_TV_FS451
22571d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_FS451)
22671d7fec4Smrg      retval = fs450_set_tv_format(format, resolution);
22771d7fec4Smrg#endif
22871d7fec4Smrg   return (retval);
22971d7fec4Smrg}
23071d7fec4Smrg
23171d7fec4Smrg/*-----------------------------------------------------------------------------
23271d7fec4Smrg * gfx_set_tv_output
23371d7fec4Smrg *-----------------------------------------------------------------------------
23471d7fec4Smrg */
23571d7fec4Smrgint
23671d7fec4Smrggfx_set_tv_output(int output)
23771d7fec4Smrg{
23871d7fec4Smrg   int retval = GFX_STATUS_UNSUPPORTED;
23971d7fec4Smrg
24071d7fec4Smrg#if GFX_TV_SC1200
24171d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_SC1200)
24271d7fec4Smrg      retval = sc1200_set_tv_output(output);
24371d7fec4Smrg#endif
24471d7fec4Smrg#if GFX_TV_FS451
24571d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_FS451)
24671d7fec4Smrg      retval = fs450_set_tv_output(output);
24771d7fec4Smrg#endif
24871d7fec4Smrg   return (retval);
24971d7fec4Smrg}
25071d7fec4Smrg
25171d7fec4Smrg/*-----------------------------------------------------------------------------
25271d7fec4Smrg * gfx_set_tv_enable
25371d7fec4Smrg *-----------------------------------------------------------------------------
25471d7fec4Smrg */
25571d7fec4Smrgint
25671d7fec4Smrggfx_set_tv_enable(int enable)
25771d7fec4Smrg{
25871d7fec4Smrg   int retval = GFX_STATUS_UNSUPPORTED;
25971d7fec4Smrg
26071d7fec4Smrg#if GFX_TV_SC1200
26171d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_SC1200)
26271d7fec4Smrg      retval = sc1200_set_tv_enable(enable);
26371d7fec4Smrg#endif
26471d7fec4Smrg#if GFX_TV_FS451
26571d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_FS451)
26671d7fec4Smrg      retval = fs450_set_tv_enable(enable);
26771d7fec4Smrg#endif
26871d7fec4Smrg   return (retval);
26971d7fec4Smrg}
27071d7fec4Smrg
27171d7fec4Smrg/*-----------------------------------------------------------------------------
27271d7fec4Smrg * gfx_set_tv_flicker_filter
27371d7fec4Smrg *-----------------------------------------------------------------------------
27471d7fec4Smrg */
27571d7fec4Smrgint
27671d7fec4Smrggfx_set_tv_flicker_filter(int ff)
27771d7fec4Smrg{
27871d7fec4Smrg   int retval = GFX_STATUS_UNSUPPORTED;
27971d7fec4Smrg
28071d7fec4Smrg#if GFX_TV_SC1200
28171d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_SC1200)
28271d7fec4Smrg      retval = sc1200_set_tv_flicker_filter(ff);
28371d7fec4Smrg#endif
28471d7fec4Smrg   return (retval);
28571d7fec4Smrg}
28671d7fec4Smrg
28771d7fec4Smrg/*-----------------------------------------------------------------------------
28871d7fec4Smrg * gfx_set_tv_sub_carrier_reset
28971d7fec4Smrg *-----------------------------------------------------------------------------
29071d7fec4Smrg */
29171d7fec4Smrgint
29271d7fec4Smrggfx_set_tv_sub_carrier_reset(int screset)
29371d7fec4Smrg{
29471d7fec4Smrg   int retval = GFX_STATUS_UNSUPPORTED;
29571d7fec4Smrg
29671d7fec4Smrg#if GFX_TV_SC1200
29771d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_SC1200)
29871d7fec4Smrg      retval = sc1200_set_tv_sub_carrier_reset(screset);
29971d7fec4Smrg#endif
30071d7fec4Smrg   return (retval);
30171d7fec4Smrg}
30271d7fec4Smrg
30371d7fec4Smrg/*-----------------------------------------------------------------------------
30471d7fec4Smrg * gfx_set_tv_vphase
30571d7fec4Smrg *-----------------------------------------------------------------------------
30671d7fec4Smrg */
30771d7fec4Smrgint
30871d7fec4Smrggfx_set_tv_vphase(int vphase)
30971d7fec4Smrg{
31071d7fec4Smrg   int retval = GFX_STATUS_UNSUPPORTED;
31171d7fec4Smrg
31271d7fec4Smrg#if GFX_TV_SC1200
31371d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_SC1200)
31471d7fec4Smrg      retval = sc1200_set_tv_vphase(vphase);
31571d7fec4Smrg#endif
31671d7fec4Smrg   return (retval);
31771d7fec4Smrg}
31871d7fec4Smrg
31971d7fec4Smrg/*-----------------------------------------------------------------------------
32071d7fec4Smrg * gfx_set_tv_YC_delay
32171d7fec4Smrg *-----------------------------------------------------------------------------
32271d7fec4Smrg */
32371d7fec4Smrgint
32471d7fec4Smrggfx_set_tv_YC_delay(int delay)
32571d7fec4Smrg{
32671d7fec4Smrg   int retval = GFX_STATUS_UNSUPPORTED;
32771d7fec4Smrg
32871d7fec4Smrg#if GFX_TV_SC1200
32971d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_SC1200)
33071d7fec4Smrg      retval = sc1200_set_tv_YC_delay(delay);
33171d7fec4Smrg#endif
33271d7fec4Smrg   return (retval);
33371d7fec4Smrg}
33471d7fec4Smrg
33571d7fec4Smrg/*-----------------------------------------------------------------------------
33671d7fec4Smrg * gfx_set_tvenc_reset_interval
33771d7fec4Smrg *-----------------------------------------------------------------------------
33871d7fec4Smrg */
33971d7fec4Smrgint
34071d7fec4Smrggfx_set_tvenc_reset_interval(int interval)
34171d7fec4Smrg{
34271d7fec4Smrg   int retval = GFX_STATUS_UNSUPPORTED;
34371d7fec4Smrg
34471d7fec4Smrg#if GFX_TV_SC1200
34571d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_SC1200)
34671d7fec4Smrg      retval = sc1200_set_tvenc_reset_interval(interval);
34771d7fec4Smrg#endif
34871d7fec4Smrg   return (retval);
34971d7fec4Smrg}
35071d7fec4Smrg
35171d7fec4Smrg/*-----------------------------------------------------------------------------
35271d7fec4Smrg * gfx_set_tv_cc_enable
35371d7fec4Smrg *-----------------------------------------------------------------------------
35471d7fec4Smrg */
35571d7fec4Smrgint
35671d7fec4Smrggfx_set_tv_cc_enable(int enable)
35771d7fec4Smrg{
35871d7fec4Smrg   int retval = GFX_STATUS_UNSUPPORTED;
35971d7fec4Smrg
36071d7fec4Smrg#if GFX_TV_SC1200
36171d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_SC1200)
36271d7fec4Smrg      retval = sc1200_set_tv_cc_enable(enable);
36371d7fec4Smrg#endif
36471d7fec4Smrg   return (retval);
36571d7fec4Smrg}
36671d7fec4Smrg
36771d7fec4Smrg/*-----------------------------------------------------------------------------
36871d7fec4Smrg * gfx_set_tv_cc_data
36971d7fec4Smrg *
37071d7fec4Smrg * This routine writes the two specified characters to the CC data register
37171d7fec4Smrg * of the TV encoder.
37271d7fec4Smrg *-----------------------------------------------------------------------------
37371d7fec4Smrg */
37471d7fec4Smrgint
37571d7fec4Smrggfx_set_tv_cc_data(unsigned char data1, unsigned char data2)
37671d7fec4Smrg{
37771d7fec4Smrg   int retval = GFX_STATUS_UNSUPPORTED;
37871d7fec4Smrg
37971d7fec4Smrg#if GFX_TV_SC1200
38071d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_SC1200)
38171d7fec4Smrg      retval = sc1200_set_tv_cc_data(data1, data2);
38271d7fec4Smrg#endif
38371d7fec4Smrg   return (retval);
38471d7fec4Smrg}
38571d7fec4Smrg
38671d7fec4Smrg/*---------------------------------------------------------------------------
38771d7fec4Smrg * gfx_set_tv_display
38871d7fec4Smrg *
38971d7fec4Smrg * Set the timings in the display controller to support a TV resolution.
39071d7fec4Smrg *---------------------------------------------------------------------------
39171d7fec4Smrg */
39271d7fec4Smrgint
39371d7fec4Smrggfx_set_tv_display(int width, int height)
39471d7fec4Smrg{
39571d7fec4Smrg   int status = GFX_STATUS_UNSUPPORTED;
39671d7fec4Smrg
39771d7fec4Smrg#	if GFX_TV_SC1200
39871d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_SC1200)
39971d7fec4Smrg      status = sc1200_set_tv_display(width, height);
40071d7fec4Smrg#	endif
40171d7fec4Smrg   return (status);
40271d7fec4Smrg}
40371d7fec4Smrg
40471d7fec4Smrg/*---------------------------------------------------------------------------
40571d7fec4Smrg * gfx_test_tvout_odd_field
40671d7fec4Smrg *---------------------------------------------------------------------------
40771d7fec4Smrg */
40871d7fec4Smrgint
40971d7fec4Smrggfx_test_tvout_odd_field(void)
41071d7fec4Smrg{
41171d7fec4Smrg   int status = GFX_STATUS_UNSUPPORTED;
41271d7fec4Smrg
41371d7fec4Smrg#	if GFX_TV_SC1200
41471d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_SC1200)
41571d7fec4Smrg      status = sc1200_test_tvout_odd_field();
41671d7fec4Smrg#	endif
41771d7fec4Smrg   return (status);
41871d7fec4Smrg}
41971d7fec4Smrg
42071d7fec4Smrg/*---------------------------------------------------------------------------
42171d7fec4Smrg * gfx_test_tvenc_odd_field
42271d7fec4Smrg *---------------------------------------------------------------------------
42371d7fec4Smrg */
42471d7fec4Smrgint
42571d7fec4Smrggfx_test_tvenc_odd_field(void)
42671d7fec4Smrg{
42771d7fec4Smrg   int status = GFX_STATUS_UNSUPPORTED;
42871d7fec4Smrg
42971d7fec4Smrg#	if GFX_TV_SC1200
43071d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_SC1200)
43171d7fec4Smrg      status = sc1200_test_tvenc_odd_field();
43271d7fec4Smrg#	endif
43371d7fec4Smrg   return (status);
43471d7fec4Smrg}
43571d7fec4Smrg
43671d7fec4Smrg/*-----------------------------------------------------------------------------
43771d7fec4Smrg * gfx_set_tv_field_status_invert
43871d7fec4Smrg *-----------------------------------------------------------------------------
43971d7fec4Smrg */
44071d7fec4Smrgint
44171d7fec4Smrggfx_set_tv_field_status_invert(int enable)
44271d7fec4Smrg{
44371d7fec4Smrg   int retval = GFX_STATUS_UNSUPPORTED;
44471d7fec4Smrg
44571d7fec4Smrg#if GFX_TV_SC1200
44671d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_SC1200)
44771d7fec4Smrg      retval = sc1200_set_tv_field_status_invert(enable);
44871d7fec4Smrg#endif
44971d7fec4Smrg   return (retval);
45071d7fec4Smrg}
45171d7fec4Smrg
45271d7fec4Smrg/*---------------------------------------------------------------------------
45371d7fec4Smrg * gfx_get_tv_vphase
45471d7fec4Smrg *---------------------------------------------------------------------------
45571d7fec4Smrg */
45671d7fec4Smrgint
45771d7fec4Smrggfx_get_tv_vphase(void)
45871d7fec4Smrg{
45971d7fec4Smrg   int status = GFX_STATUS_UNSUPPORTED;
46071d7fec4Smrg
46171d7fec4Smrg#	if GFX_TV_SC1200
46271d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_SC1200)
46371d7fec4Smrg      status = sc1200_get_tv_vphase();
46471d7fec4Smrg#	endif
46571d7fec4Smrg   return (status);
46671d7fec4Smrg}
46771d7fec4Smrg
46871d7fec4Smrg/*---------------------------------------------------------------------------
46971d7fec4Smrg * gfx_get_tv_enable
47071d7fec4Smrg *---------------------------------------------------------------------------
47171d7fec4Smrg */
47271d7fec4Smrgint
47371d7fec4Smrggfx_get_tv_enable(unsigned int *p_on)
47471d7fec4Smrg{
47571d7fec4Smrg   int retval = -1;
47671d7fec4Smrg
47771d7fec4Smrg#	if GFX_TV_FS451
47871d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_FS451)
47971d7fec4Smrg      retval = fs450_get_tv_enable(p_on);
48071d7fec4Smrg#	endif
48171d7fec4Smrg#	if GFX_TV_SC1200
48271d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_SC1200)
48371d7fec4Smrg      retval = sc1200_get_tv_enable(p_on);
48471d7fec4Smrg#	endif
48571d7fec4Smrg   return (retval);
48671d7fec4Smrg}
48771d7fec4Smrg
48871d7fec4Smrg/*---------------------------------------------------------------------------
48971d7fec4Smrg * gfx_get_tv_output
49071d7fec4Smrg *---------------------------------------------------------------------------
49171d7fec4Smrg */
49271d7fec4Smrgint
49371d7fec4Smrggfx_get_tv_output()
49471d7fec4Smrg{
49571d7fec4Smrg   int retval = -1;
49671d7fec4Smrg
49771d7fec4Smrg#	if GFX_TV_SC1200
49871d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_SC1200)
49971d7fec4Smrg      retval = sc1200_get_tv_output();
50071d7fec4Smrg#	endif
50171d7fec4Smrg   return (retval);
50271d7fec4Smrg}
50371d7fec4Smrg
50471d7fec4Smrg/*---------------------------------------------------------------------------
50571d7fec4Smrg * gfx_get_tv_mode_count
50671d7fec4Smrg *---------------------------------------------------------------------------
50771d7fec4Smrg */
50871d7fec4Smrgint
50971d7fec4Smrggfx_get_tv_mode_count(TVStandardType format)
51071d7fec4Smrg{
51171d7fec4Smrg   int retval = -1;
51271d7fec4Smrg
51371d7fec4Smrg#	if GFX_TV_SC1200
51471d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_SC1200)
51571d7fec4Smrg      retval = sc1200_get_tv_mode_count(format);
51671d7fec4Smrg#	endif
51771d7fec4Smrg   return (retval);
51871d7fec4Smrg}
51971d7fec4Smrg
52071d7fec4Smrg/*---------------------------------------------------------------------------
52171d7fec4Smrg * gfx_get_tv_display_mode
52271d7fec4Smrg *---------------------------------------------------------------------------
52371d7fec4Smrg */
52471d7fec4Smrgint
52571d7fec4Smrggfx_get_tv_display_mode(int *width, int *height, int *bpp, int *hz)
52671d7fec4Smrg{
52771d7fec4Smrg   int retval = -1;
52871d7fec4Smrg
52971d7fec4Smrg#	if GFX_TV_SC1200
53071d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_SC1200)
53171d7fec4Smrg      retval = sc1200_get_tv_display_mode(width, height, bpp, hz);
53271d7fec4Smrg#	endif
53371d7fec4Smrg   return (retval);
53471d7fec4Smrg}
53571d7fec4Smrg
53671d7fec4Smrg/*---------------------------------------------------------------------------
53771d7fec4Smrg * gfx_get_tv_display_mode_frequency
53871d7fec4Smrg *---------------------------------------------------------------------------
53971d7fec4Smrg */
54071d7fec4Smrgint
54171d7fec4Smrggfx_get_tv_display_mode_frequency(unsigned short width, unsigned short height,
54271d7fec4Smrg				  TVStandardType format, int *frequency)
54371d7fec4Smrg{
54471d7fec4Smrg   int retval = -1;
54571d7fec4Smrg
54671d7fec4Smrg#	if GFX_TV_SC1200
54771d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_SC1200)
54871d7fec4Smrg      retval =
54971d7fec4Smrg	    sc1200_get_tv_display_mode_frequency(width, height, format,
55071d7fec4Smrg						 frequency);
55171d7fec4Smrg#	endif
55271d7fec4Smrg   return (retval);
55371d7fec4Smrg}
55471d7fec4Smrg
55571d7fec4Smrg/*---------------------------------------------------------------------------
55671d7fec4Smrg * gfx_is_tv_display_mode_supported
55771d7fec4Smrg *---------------------------------------------------------------------------
55871d7fec4Smrg */
55971d7fec4Smrgint
56071d7fec4Smrggfx_is_tv_display_mode_supported(unsigned short width, unsigned short height,
56171d7fec4Smrg				 TVStandardType format)
56271d7fec4Smrg{
56371d7fec4Smrg   int retval = -1;
56471d7fec4Smrg
56571d7fec4Smrg#	if GFX_TV_SC1200
56671d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_SC1200)
56771d7fec4Smrg      retval = sc1200_is_tv_display_mode_supported(width, height, format);
56871d7fec4Smrg#	endif
56971d7fec4Smrg   return (retval);
57071d7fec4Smrg}
57171d7fec4Smrg
57271d7fec4Smrg/*------------------------------------------
57371d7fec4Smrg * The following functions were added to support
57471d7fec4Smrg * the FS450 and will eventually be removed.  There
57571d7fec4Smrg * is no equivalent support in the SC1200.
57671d7fec4Smrg *----------------------------------------------*/
57771d7fec4Smrg
57871d7fec4Smrg/*
57971d7fec4Smrg// ==========================================================================
58071d7fec4Smrg//
58171d7fec4Smrg//	TV standard
58271d7fec4Smrg*/
58371d7fec4Smrg
58471d7fec4Smrgint
58571d7fec4Smrggfx_get_tv_standard(unsigned long *p_standard)
58671d7fec4Smrg{
58771d7fec4Smrg   int retval = -1;
58871d7fec4Smrg
58971d7fec4Smrg#if GFX_TV_FS451
59071d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_FS451)
59171d7fec4Smrg      retval = fs450_get_tv_standard(p_standard);
59271d7fec4Smrg#endif
59371d7fec4Smrg   return (retval);
59471d7fec4Smrg}
59571d7fec4Smrg
59671d7fec4Smrgint
59771d7fec4Smrggfx_get_available_tv_standards(unsigned long *p_standards)
59871d7fec4Smrg{
59971d7fec4Smrg   int retval = -1;
60071d7fec4Smrg
60171d7fec4Smrg#if GFX_TV_FS451
60271d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_FS451)
60371d7fec4Smrg      retval = fs450_get_available_tv_standards(p_standards);
60471d7fec4Smrg#endif
60571d7fec4Smrg   return (retval);
60671d7fec4Smrg}
60771d7fec4Smrg
60871d7fec4Smrgint
60971d7fec4Smrggfx_set_tv_standard(unsigned long standard)
61071d7fec4Smrg{
61171d7fec4Smrg   int retval = -1;
61271d7fec4Smrg
61371d7fec4Smrg#if GFX_TV_FS451
61471d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_FS451)
61571d7fec4Smrg      retval = fs450_set_tv_standard(standard);
61671d7fec4Smrg#endif
61771d7fec4Smrg   return (retval);
61871d7fec4Smrg}
61971d7fec4Smrg
62071d7fec4Smrg/*
62171d7fec4Smrg// ==========================================================================
62271d7fec4Smrg//
62371d7fec4Smrg//	vga mode as known by the driver
62471d7fec4Smrg*/
62571d7fec4Smrg
62671d7fec4Smrgint
62771d7fec4Smrggfx_get_tv_vga_mode(unsigned long *p_vga_mode)
62871d7fec4Smrg{
62971d7fec4Smrg   int retval = -1;
63071d7fec4Smrg
63171d7fec4Smrg#if GFX_TV_FS451
63271d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_FS451)
63371d7fec4Smrg      retval = fs450_get_tv_vga_mode(p_vga_mode);
63471d7fec4Smrg#endif
63571d7fec4Smrg   return (retval);
63671d7fec4Smrg}
63771d7fec4Smrg
63871d7fec4Smrgint
63971d7fec4Smrggfx_get_available_tv_vga_modes(unsigned long *p_vga_modes)
64071d7fec4Smrg{
64171d7fec4Smrg   int retval = -1;
64271d7fec4Smrg
64371d7fec4Smrg#if GFX_TV_FS451
64471d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_FS451)
64571d7fec4Smrg      retval = fs450_get_available_tv_vga_modes(p_vga_modes);
64671d7fec4Smrg#endif
64771d7fec4Smrg   return (retval);
64871d7fec4Smrg}
64971d7fec4Smrg
65071d7fec4Smrgint
65171d7fec4Smrggfx_set_tv_vga_mode(unsigned long vga_mode)
65271d7fec4Smrg{
65371d7fec4Smrg   int retval = -1;
65471d7fec4Smrg
65571d7fec4Smrg#if GFX_TV_FS451
65671d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_FS451)
65771d7fec4Smrg      retval = fs450_set_tv_vga_mode(vga_mode);
65871d7fec4Smrg#endif
65971d7fec4Smrg   return (retval);
66071d7fec4Smrg}
66171d7fec4Smrg
66271d7fec4Smrg/*
66371d7fec4Smrg// ==========================================================================
66471d7fec4Smrg//
66571d7fec4Smrg//	tvout mode
66671d7fec4Smrg*/
66771d7fec4Smrg
66871d7fec4Smrgint
66971d7fec4Smrggfx_get_tvout_mode(unsigned long *p_tvout_mode)
67071d7fec4Smrg{
67171d7fec4Smrg   int retval = -1;
67271d7fec4Smrg
67371d7fec4Smrg#if GFX_TV_FS451
67471d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_FS451)
67571d7fec4Smrg      retval = fs450_get_tvout_mode(p_tvout_mode);
67671d7fec4Smrg#endif
67771d7fec4Smrg   return (retval);
67871d7fec4Smrg}
67971d7fec4Smrg
68071d7fec4Smrgint
68171d7fec4Smrggfx_set_tvout_mode(unsigned long tvout_mode)
68271d7fec4Smrg{
68371d7fec4Smrg   int retval = -1;
68471d7fec4Smrg
68571d7fec4Smrg#if GFX_TV_FS451
68671d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_FS451)
68771d7fec4Smrg      retval = fs450_set_tvout_mode(tvout_mode);
68871d7fec4Smrg#endif
68971d7fec4Smrg   return (retval);
69071d7fec4Smrg}
69171d7fec4Smrg
69271d7fec4Smrg/*
69371d7fec4Smrg// ==========================================================================
69471d7fec4Smrg//
69571d7fec4Smrg//	Sharpness
69671d7fec4Smrg*/
69771d7fec4Smrgint
69871d7fec4Smrggfx_get_sharpness(int *p_sharpness)
69971d7fec4Smrg{
70071d7fec4Smrg   int retval = -1;
70171d7fec4Smrg
70271d7fec4Smrg#if GFX_TV_FS451
70371d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_FS451)
70471d7fec4Smrg      retval = fs450_get_sharpness(p_sharpness);
70571d7fec4Smrg#endif
70671d7fec4Smrg   return (retval);
70771d7fec4Smrg}
70871d7fec4Smrg
70971d7fec4Smrgint
71071d7fec4Smrggfx_set_sharpness(int sharpness)
71171d7fec4Smrg{
71271d7fec4Smrg   int retval = -1;
71371d7fec4Smrg
71471d7fec4Smrg#if GFX_TV_FS451
71571d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_FS451)
71671d7fec4Smrg      retval = fs450_set_sharpness(sharpness);
71771d7fec4Smrg#endif
71871d7fec4Smrg   return (retval);
71971d7fec4Smrg}
72071d7fec4Smrg
72171d7fec4Smrg/*
72271d7fec4Smrg// ==========================================================================
72371d7fec4Smrg//
72471d7fec4Smrg// flicker filter control.
72571d7fec4Smrg*/
72671d7fec4Smrg
72771d7fec4Smrgint
72871d7fec4Smrggfx_get_flicker_filter(int *p_flicker)
72971d7fec4Smrg{
73071d7fec4Smrg   int retval = -1;
73171d7fec4Smrg
73271d7fec4Smrg#if GFX_TV_FS451
73371d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_FS451)
73471d7fec4Smrg      retval = fs450_get_flicker_filter(p_flicker);
73571d7fec4Smrg#endif
73671d7fec4Smrg   return (retval);
73771d7fec4Smrg}
73871d7fec4Smrg
73971d7fec4Smrgint
74071d7fec4Smrggfx_set_flicker_filter(int flicker)
74171d7fec4Smrg{
74271d7fec4Smrg   int retval = -1;
74371d7fec4Smrg
74471d7fec4Smrg#if GFX_TV_FS451
74571d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_FS451)
74671d7fec4Smrg      retval = fs450_set_flicker_filter(flicker);
74771d7fec4Smrg#endif
74871d7fec4Smrg   return (retval);
74971d7fec4Smrg}
75071d7fec4Smrg
75171d7fec4Smrg/*
75271d7fec4Smrg// ==========================================================================
75371d7fec4Smrg//
75471d7fec4Smrg//	Overscan and Position
75571d7fec4Smrg*/
75671d7fec4Smrg
75771d7fec4Smrgint
75871d7fec4Smrggfx_get_overscan(int *p_x, int *p_y)
75971d7fec4Smrg{
76071d7fec4Smrg   int retval = -1;
76171d7fec4Smrg
76271d7fec4Smrg#if GFX_TV_FS451
76371d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_FS451)
76471d7fec4Smrg      retval = fs450_get_overscan(p_x, p_y);
76571d7fec4Smrg#endif
76671d7fec4Smrg   return (retval);
76771d7fec4Smrg
76871d7fec4Smrg}
76971d7fec4Smrg
77071d7fec4Smrgint
77171d7fec4Smrggfx_set_overscan(int x, int y)
77271d7fec4Smrg{
77371d7fec4Smrg   int retval = -1;
77471d7fec4Smrg
77571d7fec4Smrg#if GFX_TV_FS451
77671d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_FS451)
77771d7fec4Smrg      retval = fs450_set_overscan(x, y);
77871d7fec4Smrg#endif
77971d7fec4Smrg   return (retval);
78071d7fec4Smrg}
78171d7fec4Smrg
78271d7fec4Smrgint
78371d7fec4Smrggfx_get_position(int *p_x, int *p_y)
78471d7fec4Smrg{
78571d7fec4Smrg   int retval = -1;
78671d7fec4Smrg
78771d7fec4Smrg#if GFX_TV_FS451
78871d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_FS451)
78971d7fec4Smrg      retval = fs450_get_position(p_x, p_y);
79071d7fec4Smrg#endif
79171d7fec4Smrg   return (retval);
79271d7fec4Smrg}
79371d7fec4Smrg
79471d7fec4Smrgint
79571d7fec4Smrggfx_set_position(int x, int y)
79671d7fec4Smrg{
79771d7fec4Smrg   int retval = -1;
79871d7fec4Smrg
79971d7fec4Smrg#if GFX_TV_FS451
80071d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_FS451)
80171d7fec4Smrg      retval = fs450_set_position(x, y);
80271d7fec4Smrg#endif
80371d7fec4Smrg   return (retval);
80471d7fec4Smrg}
80571d7fec4Smrg
80671d7fec4Smrg/*
80771d7fec4Smrg// ==========================================================================
80871d7fec4Smrg//
80971d7fec4Smrg//	Color, Brightness, and Contrast
81071d7fec4Smrg*/
81171d7fec4Smrg
81271d7fec4Smrgint
81371d7fec4Smrggfx_get_color(int *p_color)
81471d7fec4Smrg{
81571d7fec4Smrg   int retval = -1;
81671d7fec4Smrg
81771d7fec4Smrg#if GFX_TV_FS451
81871d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_FS451)
81971d7fec4Smrg      retval = fs450_get_color(p_color);
82071d7fec4Smrg#endif
82171d7fec4Smrg   return (retval);
82271d7fec4Smrg}
82371d7fec4Smrg
82471d7fec4Smrgint
82571d7fec4Smrggfx_set_color(int color)
82671d7fec4Smrg{
82771d7fec4Smrg   int retval = -1;
82871d7fec4Smrg
82971d7fec4Smrg#if GFX_TV_FS451
83071d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_FS451)
83171d7fec4Smrg      retval = fs450_set_color(color);
83271d7fec4Smrg#endif
83371d7fec4Smrg   return (retval);
83471d7fec4Smrg}
83571d7fec4Smrg
83671d7fec4Smrgint
83771d7fec4Smrggfx_get_brightness(int *p_brightness)
83871d7fec4Smrg{
83971d7fec4Smrg   int retval = -1;
84071d7fec4Smrg
84171d7fec4Smrg#if GFX_TV_FS451
84271d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_FS451)
84371d7fec4Smrg      retval = fs450_get_brightness(p_brightness);
84471d7fec4Smrg#endif
84571d7fec4Smrg   return (retval);
84671d7fec4Smrg}
84771d7fec4Smrg
84871d7fec4Smrgint
84971d7fec4Smrggfx_set_brightness(int brightness)
85071d7fec4Smrg{
85171d7fec4Smrg   int retval = -1;
85271d7fec4Smrg
85371d7fec4Smrg#if GFX_TV_FS451
85471d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_FS451)
85571d7fec4Smrg      retval = fs450_set_brightness(brightness);
85671d7fec4Smrg#endif
85771d7fec4Smrg   return (retval);
85871d7fec4Smrg}
85971d7fec4Smrg
86071d7fec4Smrgint
86171d7fec4Smrggfx_get_contrast(int *p_contrast)
86271d7fec4Smrg{
86371d7fec4Smrg   int retval = -1;
86471d7fec4Smrg
86571d7fec4Smrg#if GFX_TV_FS451
86671d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_FS451)
86771d7fec4Smrg      retval = fs450_get_contrast(p_contrast);
86871d7fec4Smrg#endif
86971d7fec4Smrg   return (retval);
87071d7fec4Smrg}
87171d7fec4Smrg
87271d7fec4Smrgint
87371d7fec4Smrggfx_set_contrast(int contrast)
87471d7fec4Smrg{
87571d7fec4Smrg   int retval = -1;
87671d7fec4Smrg
87771d7fec4Smrg#if GFX_TV_FS451
87871d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_FS451)
87971d7fec4Smrg      retval = fs450_set_contrast(contrast);
88071d7fec4Smrg#endif
88171d7fec4Smrg   return (retval);
88271d7fec4Smrg}
88371d7fec4Smrg
88471d7fec4Smrg/*
88571d7fec4Smrg// ==========================================================================
88671d7fec4Smrg//
88771d7fec4Smrg//	YC filters
88871d7fec4Smrg*/
88971d7fec4Smrg
89071d7fec4Smrgint
89171d7fec4Smrggfx_get_yc_filter(unsigned int *p_yc_filter)
89271d7fec4Smrg{
89371d7fec4Smrg   int retval = -1;
89471d7fec4Smrg
89571d7fec4Smrg#if GFX_TV_FS451
89671d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_FS451)
89771d7fec4Smrg      retval = fs450_get_yc_filter(p_yc_filter);
89871d7fec4Smrg#endif
89971d7fec4Smrg   return (retval);
90071d7fec4Smrg}
90171d7fec4Smrg
90271d7fec4Smrgint
90371d7fec4Smrggfx_set_yc_filter(unsigned int yc_filter)
90471d7fec4Smrg{
90571d7fec4Smrg   int retval = -1;
90671d7fec4Smrg
90771d7fec4Smrg#if GFX_TV_FS451
90871d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_FS451)
90971d7fec4Smrg      retval = fs450_set_yc_filter(yc_filter);
91071d7fec4Smrg#endif
91171d7fec4Smrg   return (retval);
91271d7fec4Smrg}
91371d7fec4Smrg
91471d7fec4Smrgint
91571d7fec4Smrggfx_get_aps_trigger_bits(unsigned int *p_trigger_bits)
91671d7fec4Smrg{
91771d7fec4Smrg   int retval = -1;
91871d7fec4Smrg
91971d7fec4Smrg#if GFX_TV_FS451
92071d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_FS451)
92171d7fec4Smrg      retval = fs450_get_aps_trigger_bits(p_trigger_bits);
92271d7fec4Smrg#endif
92371d7fec4Smrg   return (retval);
92471d7fec4Smrg}
92571d7fec4Smrg
92671d7fec4Smrgint
92771d7fec4Smrggfx_set_aps_trigger_bits(unsigned int trigger_bits)
92871d7fec4Smrg{
92971d7fec4Smrg   int retval = -1;
93071d7fec4Smrg
93171d7fec4Smrg#if GFX_TV_FS451
93271d7fec4Smrg   if (gfx_tv_type & GFX_TV_TYPE_FS451)
93371d7fec4Smrg      retval = fs450_set_aps_trigger_bits(trigger_bits);
93471d7fec4Smrg#endif
93571d7fec4Smrg   return (retval);
93671d7fec4Smrg}
93771d7fec4Smrg
93871d7fec4Smrg#endif /* GFX_TV_DYNAMIC */
93971d7fec4Smrg
94071d7fec4Smrg/* END OF FILE */
941