171d7fec4Smrg/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nsc/nsc_galfns.c,v 1.2 2003/01/14 09:34:30 alanh Exp $ */
271d7fec4Smrg/*
371d7fec4Smrg * $Workfile: nsc_galfns.c $
471d7fec4Smrg * $Revision: 1.1.1.1 $
571d7fec4Smrg * $Author: mrg $
671d7fec4Smrg *
771d7fec4Smrg * File Contents: This file contains the main functions of the Geode
871d7fec4Smrg *                frame buffer device drivers GAL function definitions.
971d7fec4Smrg *
1071d7fec4Smrg * Project:       Geode Frame buffer device driver
1171d7fec4Smrg *
1271d7fec4Smrg */
1371d7fec4Smrg
1471d7fec4Smrg/*
1571d7fec4Smrg * NSC_LIC_ALTERNATIVE_PREAMBLE
1671d7fec4Smrg *
1771d7fec4Smrg * Revision 1.0
1871d7fec4Smrg *
1971d7fec4Smrg * National Semiconductor Alternative GPL-BSD License
2071d7fec4Smrg *
2171d7fec4Smrg * National Semiconductor Corporation licenses this software
2271d7fec4Smrg * ("Software"):
2371d7fec4Smrg *
2471d7fec4Smrg * Geode frame buffer driver
2571d7fec4Smrg *
2671d7fec4Smrg * under one of the two following licenses, depending on how the
2771d7fec4Smrg * Software is received by the Licensee.
2871d7fec4Smrg *
2971d7fec4Smrg * If this Software is received as part of the Linux Framebuffer or
3071d7fec4Smrg * other GPL licensed software, then the GPL license designated
3171d7fec4Smrg * NSC_LIC_GPL applies to this Software; in all other circumstances
3271d7fec4Smrg * then the BSD-style license designated NSC_LIC_BSD shall apply.
3371d7fec4Smrg *
3471d7fec4Smrg * END_NSC_LIC_ALTERNATIVE_PREAMBLE */
3571d7fec4Smrg
3671d7fec4Smrg/* NSC_LIC_BSD
3771d7fec4Smrg *
3871d7fec4Smrg * National Semiconductor Corporation Open Source License for
3971d7fec4Smrg *
4071d7fec4Smrg * Geode frame buffer driver
4171d7fec4Smrg *
4271d7fec4Smrg * (BSD License with Export Notice)
4371d7fec4Smrg *
4471d7fec4Smrg * Copyright (c) 1999-2001
4571d7fec4Smrg * National Semiconductor Corporation.
4671d7fec4Smrg * All rights reserved.
4771d7fec4Smrg *
4871d7fec4Smrg * Redistribution and use in source and binary forms, with or without
4971d7fec4Smrg * modification, are permitted provided that the following conditions
5071d7fec4Smrg * are met:
5171d7fec4Smrg *
5271d7fec4Smrg *   * Redistributions of source code must retain the above copyright
5371d7fec4Smrg *     notice, this list of conditions and the following disclaimer.
5471d7fec4Smrg *
5571d7fec4Smrg *   * Redistributions in binary form must reproduce the above
5671d7fec4Smrg *     copyright notice, this list of conditions and the following
5771d7fec4Smrg *     disclaimer in the documentation and/or other materials provided
5871d7fec4Smrg *     with the distribution.
5971d7fec4Smrg *
6071d7fec4Smrg *   * Neither the name of the National Semiconductor Corporation nor
6171d7fec4Smrg *     the names of its contributors may be used to endorse or promote
6271d7fec4Smrg *     products derived from this software without specific prior
6371d7fec4Smrg *     written permission.
6471d7fec4Smrg *
6571d7fec4Smrg * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
6671d7fec4Smrg * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
6771d7fec4Smrg * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
6871d7fec4Smrg * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
6971d7fec4Smrg * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
7071d7fec4Smrg * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
7171d7fec4Smrg * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
7271d7fec4Smrg * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
7371d7fec4Smrg * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
7471d7fec4Smrg * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
7571d7fec4Smrg * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
7671d7fec4Smrg * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
7771d7fec4Smrg * OF SUCH DAMAGE.
7871d7fec4Smrg *
7971d7fec4Smrg * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
8071d7fec4Smrg * YOUR JURISDICTION. It is licensee's responsibility to comply with
8171d7fec4Smrg * any export regulations applicable in licensee's jurisdiction. Under
8271d7fec4Smrg * CURRENT (2001) U.S. export regulations this software
8371d7fec4Smrg * is eligible for export from the U.S. and can be downloaded by or
8471d7fec4Smrg * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
8571d7fec4Smrg * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
8671d7fec4Smrg * Syria, Sudan, Afghanistan and any other country to which the U.S.
8771d7fec4Smrg * has embargoed goods and services.
8871d7fec4Smrg *
8971d7fec4Smrg * END_NSC_LIC_BSD */
9071d7fec4Smrg
9171d7fec4Smrg/* NSC_LIC_GPL
9271d7fec4Smrg *
9371d7fec4Smrg * National Semiconductor Corporation Gnu General Public License for
9471d7fec4Smrg *
9571d7fec4Smrg * Geode frame buffer driver
9671d7fec4Smrg *
9771d7fec4Smrg * (GPL License with Export Notice)
9871d7fec4Smrg *
9971d7fec4Smrg * Copyright (c) 1999-2001
10071d7fec4Smrg * National Semiconductor Corporation.
10171d7fec4Smrg * All rights reserved.
10271d7fec4Smrg *
10371d7fec4Smrg * Redistribution and use in source and binary forms, with or without
10471d7fec4Smrg * modification, are permitted under the terms of the GNU General
10571d7fec4Smrg * Public License as published by the Free Software Foundation; either
10671d7fec4Smrg * version 2 of the License, or (at your option) any later version
10771d7fec4Smrg *
10871d7fec4Smrg * In addition to the terms of the GNU General Public License, neither
10971d7fec4Smrg * the name of the National Semiconductor Corporation nor the names of
11071d7fec4Smrg * its contributors may be used to endorse or promote products derived
11171d7fec4Smrg * from this software without specific prior written permission.
11271d7fec4Smrg *
11371d7fec4Smrg * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
11471d7fec4Smrg * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
11571d7fec4Smrg * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
11671d7fec4Smrg * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
11771d7fec4Smrg * NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
11871d7fec4Smrg * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
11971d7fec4Smrg * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
12071d7fec4Smrg * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
12171d7fec4Smrg * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
12271d7fec4Smrg * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
12371d7fec4Smrg * INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
12471d7fec4Smrg * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
12571d7fec4Smrg * OF SUCH DAMAGE. See the GNU General Public License for more details.
12671d7fec4Smrg *
12771d7fec4Smrg * EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
12871d7fec4Smrg * YOUR JURISDICTION. It is licensee's responsibility to comply with
12971d7fec4Smrg * any export regulations applicable in licensee's jurisdiction. Under
13071d7fec4Smrg * CURRENT (2001) U.S. export regulations this software
13171d7fec4Smrg * is eligible for export from the U.S. and can be downloaded by or
13271d7fec4Smrg * otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
13371d7fec4Smrg * destinations which include Cuba, Iraq, Libya, North Korea, Iran,
13471d7fec4Smrg * Syria, Sudan, Afghanistan and any other country to which the U.S.
13571d7fec4Smrg * has embargoed goods and services.
13671d7fec4Smrg *
13771d7fec4Smrg * You should have received a copy of the GNU General Public License
13871d7fec4Smrg * along with this file; if not, write to the Free Software Foundation,
13971d7fec4Smrg * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
14071d7fec4Smrg *
14171d7fec4Smrg * END_NSC_LIC_GPL */
14271d7fec4Smrg
14371d7fec4Smrg#ifdef HAVE_CONFIG_H
14471d7fec4Smrg#include "config.h"
14571d7fec4Smrg#endif
14671d7fec4Smrg
14771d7fec4Smrg#ifndef XFree86LOADER
14871d7fec4Smrg#include <stdio.h>
14971d7fec4Smrg#include <stdarg.h>
15071d7fec4Smrg#include <stdlib.h>
15171d7fec4Smrg#include <unistd.h>
15271d7fec4Smrg#include <string.h>
15371d7fec4Smrg#include <sys/stat.h>
15471d7fec4Smrg#include <sys/sysmacros.h>
15571d7fec4Smrg#include <fcntl.h>
15671d7fec4Smrg#include <errno.h>
15771d7fec4Smrg#include <sys/ioctl.h>
15871d7fec4Smrg#endif
15971d7fec4Smrg
16071d7fec4Smrg#include "nsc_galproto.h"
16171d7fec4Smrg
16271d7fec4Smrg/*
16371d7fec4Smrg * Compile time constants
16471d7fec4Smrg */
16571d7fec4Smrg#define FBDEV_NAME  "/dev/nscgal"
16671d7fec4Smrg
16771d7fec4Smrg/*
16871d7fec4Smrg * Cool Macros to access the structures
16971d7fec4Smrg */
17071d7fec4Smrg#define INIT_GAL(x) \
17171d7fec4Smrg		((GAL_BASE *)(x))->dwSignature = FBGAL_SIGNATURE;\
17271d7fec4Smrg		((GAL_BASE *)(x))->dwSize = sizeof(x);\
17371d7fec4Smrg		((GAL_BASE *)(x))->dwVersion = FBGAL_VERSION;
17471d7fec4Smrg/*
17571d7fec4Smrg * Variables public for this file
17671d7fec4Smrg */
17771d7fec4Smrgstatic int ifbdev_handle;
17871d7fec4Smrg
17971d7fec4Smrg/*------------------------------------------------------------------------
18071d7fec4Smrg * create_devicenode
18171d7fec4Smrg *
18271d7fec4Smrg * Description:	This function creates nscgal device node in the device
18371d7fec4Smrg *					directory.
18471d7fec4Smrg * parameters :	none
18571d7fec4Smrg *
18671d7fec4Smrg *	return:	'0' was return on creating the galdevice node.
18771d7fec4Smrg *----------------------------------------------------------------------*/
18871d7fec4Smrgint
18971d7fec4Smrgcreate_devicenode()
19071d7fec4Smrg{
19171d7fec4Smrg
19271d7fec4Smrg#if 1
19371d7fec4Smrg   FILE *pfdevices;
19471d7fec4Smrg   char line[200], devname[200];
19571d7fec4Smrg   int majdev;
19671d7fec4Smrg
19771d7fec4Smrg   /* remove fails if device is open */
19871d7fec4Smrg   remove("/dev/nscgal");
19971d7fec4Smrg
20071d7fec4Smrg   if ((pfdevices = fopen("/proc/devices", "r"))) {
20171d7fec4Smrg      while (fgets(line, sizeof(line), pfdevices)) {
20271d7fec4Smrg	 if (sscanf(line, "%d%*[ \t]%s", &majdev, devname) == 2) {
20371d7fec4Smrg	    if (strstr(devname, "nscgal"))
20471d7fec4Smrg	       mknod("/dev/nscgal", S_IFCHR | S_IRUSR | S_IWUSR,
20571d7fec4Smrg		     makedev(majdev, 0));
20671d7fec4Smrg	 }
20771d7fec4Smrg      }
20871d7fec4Smrg      fclose(pfdevices);
20971d7fec4Smrg   }
21071d7fec4Smrg   return 1;
21171d7fec4Smrg#endif
21271d7fec4Smrg
21371d7fec4Smrg}
21471d7fec4Smrg
21571d7fec4Smrg/*------------------------------------------------------------------------
21671d7fec4Smrg * Gal_initialize_interface
21771d7fec4Smrg *
21871d7fec4Smrg * Description:	This function intializes the  nscgal device .
21971d7fec4Smrg * parameters :	none
22071d7fec4Smrg *
22171d7fec4Smrg *	return:	 '1' was returned on intialization of the galdevice
22271d7fec4Smrg *					otherwise '0' was returned on failure.
22371d7fec4Smrg *----------------------------------------------------------------------*/
22471d7fec4SmrgBOOLEAN
22571d7fec4SmrgGal_initialize_interface()
22671d7fec4Smrg{
22771d7fec4Smrg/*	create_devicenode();  */
22871d7fec4Smrg
22971d7fec4Smrg   if ((ifbdev_handle = open("/dev/fb0", O_RDONLY)) == -1)
23071d7fec4Smrg/*	if ((ifbdev_handle = open("FBDEV_NAME", O_RDONLY)) == -1) */
23171d7fec4Smrg      return 0;
23271d7fec4Smrg   return 1;
23371d7fec4Smrg}
23471d7fec4Smrg
23571d7fec4Smrg/*------------------------------------------------------------------------
23671d7fec4Smrg * Gal_cleanup_interface
23771d7fec4Smrg *
23871d7fec4Smrg * Description:	This function closes the  nscgal device .
23971d7fec4Smrg * parameters :	none
24071d7fec4Smrg *
24171d7fec4Smrg *	return:	 '1' was returned on closing the galdevice.
24271d7fec4Smrg *----------------------------------------------------------------------*/
24371d7fec4SmrgBOOLEAN
24471d7fec4SmrgGal_cleanup_interface()
24571d7fec4Smrg{
24671d7fec4Smrg   if (ifbdev_handle != -1)
24771d7fec4Smrg      close(ifbdev_handle);
24871d7fec4Smrg   return 1;
24971d7fec4Smrg}
25071d7fec4Smrg
25171d7fec4Smrg/*---------------------------------------------------------------------------
25271d7fec4Smrg * Gal_write_register
25371d7fec4Smrg *
25471d7fec4Smrg * Description:	This function writes the data to the hardware register
25571d7fec4Smrg *					of the nscgal device .
25671d7fec4Smrg *  parameters:
25771d7fec4Smrg *        type:	It specifies the hardware access type.
25871d7fec4Smrg *      offset: It specifies the offset address the register to be accessed.
25971d7fec4Smrg *       value:	It specifies the data value to be written into the register.
26071d7fec4Smrg *        size: It specifies the size of the data to be written.
26171d7fec4Smrg *
26271d7fec4Smrg *	return:	'1' was returned on success otherwise '0' was returned.
26371d7fec4Smrg *-------------------------------------------------------------------------*/
26471d7fec4SmrgBOOLEAN
26571d7fec4SmrgGal_write_register(int type, unsigned long offset, unsigned long value,
26671d7fec4Smrg		   int size)
26771d7fec4Smrg{
26871d7fec4Smrg   GAL_HWACCESS hwAccess;
26971d7fec4Smrg
27071d7fec4Smrg   INIT_GAL(&hwAccess);
27171d7fec4Smrg   hwAccess.dwSubfunction = GALFN_WRITEREG;
27271d7fec4Smrg   hwAccess.dwType = type;
27371d7fec4Smrg   hwAccess.dwOffset = offset;
27471d7fec4Smrg   hwAccess.dwValue = value;
27571d7fec4Smrg   hwAccess.dwByteCount = size;
27671d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &hwAccess))
27771d7fec4Smrg      return 0;
27871d7fec4Smrg   else {
27971d7fec4Smrg      return 1;
28071d7fec4Smrg   }
28171d7fec4Smrg}
28271d7fec4Smrg
28371d7fec4Smrg/*---------------------------------------------------------------------------
28471d7fec4Smrg * Gal_read_register
28571d7fec4Smrg *
28671d7fec4Smrg * Description:	This function reads the data from the hardware register
28771d7fec4Smrg *					of the nscgal device .
28871d7fec4Smrg *  parameters:
28971d7fec4Smrg *        type:	It specifies the hardware access type.
29071d7fec4Smrg *      offset: It specifies the offset address of the register to be accessed.
29171d7fec4Smrg *       value:	It specifies the pointer to hold the data  to be read from
29271d7fec4Smrg *					the gal hardware register.
29371d7fec4Smrg *        size: It specifies the size of the data to be read
29471d7fec4Smrg *
29571d7fec4Smrg *	return:	'1' was returned on success otherwise '0' was returned.
29671d7fec4Smrg *-------------------------------------------------------------------------*/
29771d7fec4SmrgBOOLEAN
29871d7fec4SmrgGal_read_register(int type, unsigned long offset, unsigned long *value,
29971d7fec4Smrg		  int size)
30071d7fec4Smrg{
30171d7fec4Smrg   GAL_HWACCESS hwAccess;
30271d7fec4Smrg
30371d7fec4Smrg   INIT_GAL(&hwAccess);
30471d7fec4Smrg   hwAccess.dwSubfunction = GALFN_READREG;
30571d7fec4Smrg   hwAccess.dwType = type;
30671d7fec4Smrg   hwAccess.dwOffset = offset;
30771d7fec4Smrg   hwAccess.dwByteCount = size;
30871d7fec4Smrg
30971d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &hwAccess))
31071d7fec4Smrg      return 0;
31171d7fec4Smrg   else {
31271d7fec4Smrg      *value = hwAccess.dwValue;
31371d7fec4Smrg      return 1;
31471d7fec4Smrg   }
31571d7fec4Smrg}
31671d7fec4Smrg
31771d7fec4Smrg/*---------------------------------------------------------------------------
31871d7fec4Smrg * Gal_get_adapter_info
31971d7fec4Smrg *
32071d7fec4Smrg * Description:	This function gets the adapter information of the
32171d7fec4Smrg *					nscgal device .
32271d7fec4Smrg *  parameters:
32371d7fec4Smrg *pAdapterInfo: It specifies the adapter information structure.
32471d7fec4Smrg *
32571d7fec4Smrg *	return:	'1' was returned on success otherwise '0' was returned.
32671d7fec4Smrg *-------------------------------------------------------------------------*/
32771d7fec4SmrgBOOLEAN
32871d7fec4SmrgGal_get_adapter_info(PGAL_ADAPTERINFO pAdapterInfo)
32971d7fec4Smrg{
33071d7fec4Smrg   INIT_GAL(pAdapterInfo);
33171d7fec4Smrg
33271d7fec4Smrg   pAdapterInfo->dwSubfunction = GALFN_GETADAPTERINFO;
33371d7fec4Smrg
33471d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, pAdapterInfo))
33571d7fec4Smrg      return 0;
33671d7fec4Smrg   else {
33771d7fec4Smrg      return 1;
33871d7fec4Smrg   }
33971d7fec4Smrg}
34071d7fec4Smrg
34171d7fec4Smrg/*---------------------------------------------------------------------------
34271d7fec4Smrg * Gal_set_softvga_state
34371d7fec4Smrg *
34471d7fec4Smrg * Description:	This function sets the softvga state of the platform device .
34571d7fec4Smrg *  parameters:
34671d7fec4Smrg *     bEnable:	It specifies the softvga state enable state.
34771d7fec4Smrg *	return:	'1' was returned on success otherwise '0' was returned.
34871d7fec4Smrg *-------------------------------------------------------------------------*/
34971d7fec4SmrgBOOLEAN
35071d7fec4SmrgGal_set_softvga_state(BOOLEAN bEnable)
35171d7fec4Smrg{
35271d7fec4Smrg   GAL_SOFTVGASTATE sSoftVgaState;
35371d7fec4Smrg
35471d7fec4Smrg   INIT_GAL(&sSoftVgaState);
35571d7fec4Smrg   sSoftVgaState.dwSubfunction = GALFN_SETSOFTVGASTATE;
35671d7fec4Smrg   sSoftVgaState.bSoftVgaEnable = bEnable;
35771d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSoftVgaState))
35871d7fec4Smrg      return 0;
35971d7fec4Smrg   else
36071d7fec4Smrg      return 1;
36171d7fec4Smrg}
36271d7fec4Smrg
36371d7fec4Smrg/*---------------------------------------------------------------------------
36471d7fec4Smrg * Gal_get_softvga_state
36571d7fec4Smrg *
36671d7fec4Smrg * Description:	This function gets the softvga state of the platform device .
36771d7fec4Smrg *  parameters:
36871d7fec4Smrg *     bEnable:	get the softvga state.
36971d7fec4Smrg *	return:	'1' was returned on success otherwise '0' was returned.
37071d7fec4Smrg *-------------------------------------------------------------------------*/
37171d7fec4SmrgBOOLEAN
37271d7fec4SmrgGal_get_softvga_state(int *bState)
37371d7fec4Smrg{
37471d7fec4Smrg   GAL_SOFTVGASTATE sSoftVgaState;
37571d7fec4Smrg
37671d7fec4Smrg   INIT_GAL(&sSoftVgaState);
37771d7fec4Smrg   sSoftVgaState.dwSubfunction = GALFN_GETSOFTVGASTATE;
37871d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSoftVgaState))
37971d7fec4Smrg      return 0;
38071d7fec4Smrg   else {
38171d7fec4Smrg      *bState = sSoftVgaState.bSoftVgaEnable;
38271d7fec4Smrg      return 1;
38371d7fec4Smrg   }
38471d7fec4Smrg}
38571d7fec4Smrg
38671d7fec4Smrg/*---------------------------------------------------------------------------
38771d7fec4Smrg * Gal_vga_test_pci
38871d7fec4Smrg *
38971d7fec4Smrg * Description:	This function tests the vga pci.
39071d7fec4Smrg *  parameters:
39171d7fec4Smrg *     softvga:	It is pointer to the softvga state.
39271d7fec4Smrg *	return:	'1' was returned on success otherwise '0' was returned.
39371d7fec4Smrg *-------------------------------------------------------------------------*/
39471d7fec4SmrgBOOLEAN
39571d7fec4SmrgGal_vga_test_pci(int *softvga)
39671d7fec4Smrg{
39771d7fec4Smrg   GAL_VGATESTPCI sVgatestpci;
39871d7fec4Smrg
39971d7fec4Smrg   INIT_GAL(&sVgatestpci);
40071d7fec4Smrg   sVgatestpci.dwSubfunction = GALFN_GETSOFTVGASTATE;
40171d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sVgatestpci))
40271d7fec4Smrg      return 0;
40371d7fec4Smrg   else {
40471d7fec4Smrg      *softvga = sVgatestpci.softvga;
40571d7fec4Smrg      return 1;
40671d7fec4Smrg   }
40771d7fec4Smrg}
40871d7fec4Smrg
40971d7fec4Smrg/*---------------------------------------------------------------------------
41071d7fec4Smrg * Gal_vga_get_pci_command
41171d7fec4Smrg *
41271d7fec4Smrg * Description:	This function gets the vga pci command.
41371d7fec4Smrg *  parameters:
41471d7fec4Smrg *       value:	It is pointer to pci command value.
41571d7fec4Smrg *	return:	'1' was returned on success otherwise '0' was returned.
41671d7fec4Smrg *-------------------------------------------------------------------------*/
41771d7fec4SmrgBOOLEAN
41871d7fec4SmrgGal_vga_get_pci_command(unsigned char *value)
41971d7fec4Smrg{
42071d7fec4Smrg   GAL_VGAGETPCICOMMAND sVgagetpcicommand;
42171d7fec4Smrg
42271d7fec4Smrg   INIT_GAL(&sVgagetpcicommand);
42371d7fec4Smrg   sVgagetpcicommand.dwSubfunction = GALFN_VGAGETPCICOMMAND;
42471d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sVgagetpcicommand))
42571d7fec4Smrg      return 0;
42671d7fec4Smrg   else {
42771d7fec4Smrg      *value = sVgagetpcicommand.value;
42871d7fec4Smrg      return 1;
42971d7fec4Smrg   }
43071d7fec4Smrg}
43171d7fec4Smrg
43271d7fec4Smrg/*---------------------------------------------------------------------------
43371d7fec4Smrg * Gal_vga_seq_reset
43471d7fec4Smrg *
43571d7fec4Smrg * Description:	This function resets the vga seq.
43671d7fec4Smrg *  parameters:
43771d7fec4Smrg *       reset:	It gives the reset value.
43871d7fec4Smrg *	return:	'1' was returned on success otherwise '0' was returned.
43971d7fec4Smrg *-------------------------------------------------------------------------*/
44071d7fec4SmrgBOOLEAN
44171d7fec4SmrgGal_vga_seq_reset(int reset)
44271d7fec4Smrg{
44371d7fec4Smrg   GAL_VGASEQRESET sVgaseqreset;
44471d7fec4Smrg
44571d7fec4Smrg   INIT_GAL(&sVgaseqreset);
44671d7fec4Smrg   sVgaseqreset.dwSubfunction = GALFN_VGASEQRESET;
44771d7fec4Smrg   sVgaseqreset.reset = reset;
44871d7fec4Smrg
44971d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sVgaseqreset))
45071d7fec4Smrg      return 0;
45171d7fec4Smrg   else {
45271d7fec4Smrg      return 1;
45371d7fec4Smrg   }
45471d7fec4Smrg}
45571d7fec4Smrg
45671d7fec4Smrg/*---------------------------------------------------------------------------
45771d7fec4Smrg * Gal_vga_set_graphics_bits
45871d7fec4Smrg *
45971d7fec4Smrg * Description:	This function resets the vga seq.
46071d7fec4Smrg *  parameters:	None.
46171d7fec4Smrg *
46271d7fec4Smrg *	return:	'1' was returned on success otherwise '0' was returned.
46371d7fec4Smrg *-------------------------------------------------------------------------*/
46471d7fec4SmrgBOOLEAN
46571d7fec4SmrgGal_vga_set_graphics_bits(void)
46671d7fec4Smrg{
46771d7fec4Smrg   GAL_VGASETGRAPHICSBITS sVgasetgraphics;
46871d7fec4Smrg
46971d7fec4Smrg   INIT_GAL(&sVgasetgraphics);
47071d7fec4Smrg   sVgasetgraphics.dwSubfunction = GALFN_VGASETGRAPHICSBITS;
47171d7fec4Smrg
47271d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sVgasetgraphics))
47371d7fec4Smrg      return 0;
47471d7fec4Smrg   else {
47571d7fec4Smrg      return 1;
47671d7fec4Smrg   }
47771d7fec4Smrg}
47871d7fec4Smrg
47971d7fec4Smrg/*---------------------------------------------------------------------------
48071d7fec4Smrg * Gal_set_crt_enable
48171d7fec4Smrg *
48271d7fec4Smrg * Description:	This function sets the crt state of the device .
48371d7fec4Smrg *  parameters:
48471d7fec4Smrg *    crtState:	It specifies the crt state of the galdevice.
48571d7fec4Smrg *	return:	'1' was returned on success otherwise '0' was returned.
48671d7fec4Smrg *-------------------------------------------------------------------------*/
48771d7fec4SmrgBOOLEAN
48871d7fec4SmrgGal_set_crt_enable(int crtEnable)
48971d7fec4Smrg{
49071d7fec4Smrg   GAL_CRTENABLE sCrtEnable;
49171d7fec4Smrg
49271d7fec4Smrg   INIT_GAL(&sCrtEnable);
49371d7fec4Smrg   sCrtEnable.dwSubfunction = GALFN_SETCRTENABLE;
49471d7fec4Smrg   sCrtEnable.wCrtEnable = crtEnable;
49571d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sCrtEnable))
49671d7fec4Smrg      return 0;
49771d7fec4Smrg   else
49871d7fec4Smrg      return 1;
49971d7fec4Smrg}
50071d7fec4Smrg
50171d7fec4Smrg/*---------------------------------------------------------------------------
50271d7fec4Smrg * Gal_is_display_mode_supported
50371d7fec4Smrg *
50471d7fec4Smrg * Description:	This function checks the display mode is supported or not.
50571d7fec4Smrg *  parameters:
50671d7fec4Smrg *        xres:	It specifies x co-ordinate resolution.
50771d7fec4Smrg *        Yres:	It specifies y co-ordinate resolution.
50871d7fec4Smrg *	   bpp:	It specifies the bits per pixel (8/16 bits).
50971d7fec4Smrg *	    hz:	It specifies the frequency of the display mode.
51071d7fec4Smrg *	return:	'1' was returned on success otherwise '0' was returned.
51171d7fec4Smrg *-------------------------------------------------------------------------*/
51271d7fec4SmrgBOOLEAN
51371d7fec4SmrgGal_is_display_mode_supported(int xres, int yres, int bpp, int hz,
51471d7fec4Smrg			      int *supported)
51571d7fec4Smrg{
51671d7fec4Smrg   GAL_DISPLAYMODE sDisplayMode;
51771d7fec4Smrg
51871d7fec4Smrg   *supported = 0;
51971d7fec4Smrg   INIT_GAL(&sDisplayMode);
52071d7fec4Smrg   sDisplayMode.dwSubfunction = GALFN_ISDISPLAYMODESUPPORTED;
52171d7fec4Smrg   sDisplayMode.wXres = xres;
52271d7fec4Smrg   sDisplayMode.wYres = yres;
52371d7fec4Smrg   sDisplayMode.wBpp = bpp;
52471d7fec4Smrg   sDisplayMode.wRefresh = hz;
52571d7fec4Smrg
52671d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sDisplayMode))
52771d7fec4Smrg      return 0;
52871d7fec4Smrg   else {
52971d7fec4Smrg      *supported = sDisplayMode.dwSupported;
53071d7fec4Smrg      return 1;
53171d7fec4Smrg   }
53271d7fec4Smrg}
53371d7fec4Smrg
53471d7fec4Smrg/*---------------------------------------------------------------------------
53571d7fec4Smrg * Gal_set_display_mode
53671d7fec4Smrg *
53771d7fec4Smrg * Description:	This function sets the display mode of the galdevice.
53871d7fec4Smrg *  parameters:
53971d7fec4Smrg *        xres:	It specifies x co-ordinate resolution.
54071d7fec4Smrg *        Yres:	It specifies y co-ordinate resolution.
54171d7fec4Smrg *	   bpp:	It specifies the bits per pixel (8/16 bits).
54271d7fec4Smrg *	    hz:	It specifies the frequency of the display mode.
54371d7fec4Smrg *	return:	'1' was returned on success otherwise '0' was returned.
54471d7fec4Smrg *-------------------------------------------------------------------------*/
54571d7fec4SmrgBOOLEAN
54671d7fec4SmrgGal_set_display_mode(int xres, int yres, int bpp, int hz)
54771d7fec4Smrg{
54871d7fec4Smrg   GAL_DISPLAYMODE sDisplayMode;
54971d7fec4Smrg
55071d7fec4Smrg   INIT_GAL(&sDisplayMode);
55171d7fec4Smrg   sDisplayMode.dwSubfunction = GALFN_SETDISPLAYMODE;
55271d7fec4Smrg   sDisplayMode.wXres = xres;
55371d7fec4Smrg   sDisplayMode.wYres = yres;
55471d7fec4Smrg   sDisplayMode.wBpp = bpp;
55571d7fec4Smrg   sDisplayMode.wRefresh = hz;
55671d7fec4Smrg
55771d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sDisplayMode))
55871d7fec4Smrg      return 0;
55971d7fec4Smrg   else
56071d7fec4Smrg      return 1;
56171d7fec4Smrg}
56271d7fec4Smrg
56371d7fec4Smrg/*---------------------------------------------------------------------------
56471d7fec4Smrg * Gal_get_display_mode
56571d7fec4Smrg *
56671d7fec4Smrg * Description:	This function gets the display mode of the galdevice.
56771d7fec4Smrg *  parameters:
56871d7fec4Smrg *        xres:	It specifies x co-ordinate resolution.
56971d7fec4Smrg *        Yres:	It specifies y co-ordinate resolution.
57071d7fec4Smrg *	   bpp:	It specifies the bits per pixel (8/16 bits).
57171d7fec4Smrg *	    hz:	It specifies the frequency of the display mode.
57271d7fec4Smrg *	return:	'1' was returned on success otherwise '0' was returned.
57371d7fec4Smrg *-------------------------------------------------------------------------*/
57471d7fec4SmrgBOOLEAN
57571d7fec4SmrgGal_get_display_mode(int *xres, int *yres, int *bpp, int *hz)
57671d7fec4Smrg{
57771d7fec4Smrg   GAL_DISPLAYMODE sDisplayMode;
57871d7fec4Smrg
57971d7fec4Smrg   INIT_GAL(&sDisplayMode);
58071d7fec4Smrg   sDisplayMode.dwSubfunction = GALFN_GETDISPLAYMODE;
58171d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sDisplayMode))
58271d7fec4Smrg      return 0;
58371d7fec4Smrg   else {
58471d7fec4Smrg      *xres = sDisplayMode.wXres;
58571d7fec4Smrg      *yres = sDisplayMode.wYres;
58671d7fec4Smrg      *bpp = sDisplayMode.wBpp;
58771d7fec4Smrg      *hz = sDisplayMode.wRefresh;
58871d7fec4Smrg      return 1;
58971d7fec4Smrg   }
59071d7fec4Smrg}
59171d7fec4Smrg
59271d7fec4Smrg/*---------------------------------------------------------------------------
59371d7fec4Smrg * Gal_set_display_bpp
59471d7fec4Smrg *
59571d7fec4Smrg * Description:	This function sets the number bits per pixel in the display
59671d7fec4Smrg *					mode of the galdevice.
59771d7fec4Smrg *  parameters:
59871d7fec4Smrg *	   bpp:	It specifies the bits per pixel (8/16 bits).
59971d7fec4Smrg *	return:	'1' was returned on success otherwise '0' was returned.
60071d7fec4Smrg *-------------------------------------------------------------------------*/
60171d7fec4SmrgBOOLEAN
60271d7fec4SmrgGal_set_display_bpp(unsigned short bpp)
60371d7fec4Smrg{
60471d7fec4Smrg   GAL_DISPLAYPARAMS sDisplayParams;
60571d7fec4Smrg
60671d7fec4Smrg   INIT_GAL(&sDisplayParams);
60771d7fec4Smrg   sDisplayParams.dwSubfunction = GALFN_SETDISPLAYBPP;
60871d7fec4Smrg   sDisplayParams.wBpp = bpp;
60971d7fec4Smrg
61071d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sDisplayParams))
61171d7fec4Smrg      return 0;
61271d7fec4Smrg   else
61371d7fec4Smrg      return 1;
61471d7fec4Smrg}
61571d7fec4Smrg
61671d7fec4Smrg/*---------------------------------------------------------------------------
61771d7fec4Smrg * Gal_set_bpp
61871d7fec4Smrg *
61971d7fec4Smrg * Description:	This function sets the number bits per pixel in the display
62071d7fec4Smrg *					mode of the galdevice.
62171d7fec4Smrg *  parameters:
62271d7fec4Smrg *	   bpp:	It specifies the bits per pixel (8/16 bits).
62371d7fec4Smrg *	return:	'1' was returned on success otherwise '0' was returned.
62471d7fec4Smrg *-------------------------------------------------------------------------*/
62571d7fec4SmrgBOOLEAN
62671d7fec4SmrgGal_set_bpp(unsigned short bpp)
62771d7fec4Smrg{
62871d7fec4Smrg   GAL_DISPLAYPARAMS sDisplayParams;
62971d7fec4Smrg
63071d7fec4Smrg   INIT_GAL(&sDisplayParams);
63171d7fec4Smrg   sDisplayParams.dwSubfunction = GALFN_SETBPP;
63271d7fec4Smrg   sDisplayParams.wBpp = bpp;
63371d7fec4Smrg
63471d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sDisplayParams))
63571d7fec4Smrg      return 0;
63671d7fec4Smrg   else
63771d7fec4Smrg      return 1;
63871d7fec4Smrg}
63971d7fec4Smrg
64071d7fec4Smrg/*---------------------------------------------------------------------------
64171d7fec4Smrg * Gal_get_display_bpp
64271d7fec4Smrg *
64371d7fec4Smrg * Description:	This function gets the number bits per pixel in the display
64471d7fec4Smrg *					mode of the galdevice.
64571d7fec4Smrg *  parameters:
64671d7fec4Smrg *	   bpp:	It specifies the bits per pixel (8/16 bits).
64771d7fec4Smrg *	return:	'1' was returned on success otherwise '0' was returned.
64871d7fec4Smrg *-------------------------------------------------------------------------*/
64971d7fec4SmrgBOOLEAN
65071d7fec4SmrgGal_get_display_bpp(unsigned short *bpp)
65171d7fec4Smrg{
65271d7fec4Smrg   GAL_DISPLAYPARAMS sDisplayParams;
65371d7fec4Smrg
65471d7fec4Smrg   INIT_GAL(&sDisplayParams);
65571d7fec4Smrg   sDisplayParams.dwSubfunction = GALFN_GETDISPLAYBPP;
65671d7fec4Smrg
65771d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sDisplayParams))
65871d7fec4Smrg      return 0;
65971d7fec4Smrg   else {
66071d7fec4Smrg      *bpp = sDisplayParams.wBpp;
66171d7fec4Smrg      return 1;
66271d7fec4Smrg   }
66371d7fec4Smrg}
66471d7fec4Smrg
66571d7fec4Smrg/*---------------------------------------------------------------------------
66671d7fec4Smrg * Gal_set_display_pitch
66771d7fec4Smrg *
66871d7fec4Smrg * Description:	This function sets the display pitch of the galdevice.
66971d7fec4Smrg *  parameters:
67071d7fec4Smrg *       pitch:	It specifies pitch of the display mode.
67171d7fec4Smrg *	return:	'1' was returned on success otherwise '0' was returned.
67271d7fec4Smrg *-------------------------------------------------------------------------*/
67371d7fec4SmrgBOOLEAN
67471d7fec4SmrgGal_set_display_pitch(unsigned short pitch)
67571d7fec4Smrg{
67671d7fec4Smrg   GAL_DISPLAYPARAMS sDisplayParams;
67771d7fec4Smrg
67871d7fec4Smrg   INIT_GAL(&sDisplayParams);
67971d7fec4Smrg   sDisplayParams.dwSubfunction = GALFN_SETDISPLAYPITCH;
68071d7fec4Smrg   sDisplayParams.wPitch = pitch;
68171d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sDisplayParams))
68271d7fec4Smrg      return 0;
68371d7fec4Smrg   else
68471d7fec4Smrg      return 1;
68571d7fec4Smrg}
68671d7fec4Smrg
68771d7fec4Smrg/*---------------------------------------------------------------------------
68871d7fec4Smrg * Gal_get_display_pitch
68971d7fec4Smrg *
69071d7fec4Smrg * Description:	This function gets the display pitch of the galdevice.
69171d7fec4Smrg *  parameters:
69271d7fec4Smrg *       pitch:	It specifies pitch of the display mode.
69371d7fec4Smrg *	return:	'1' was returned on success otherwise '0' was returned.
69471d7fec4Smrg *-------------------------------------------------------------------------*/
69571d7fec4SmrgBOOLEAN
69671d7fec4SmrgGal_get_display_pitch(unsigned short *pitch)
69771d7fec4Smrg{
69871d7fec4Smrg   GAL_DISPLAYPARAMS sDisplayParams;
69971d7fec4Smrg
70071d7fec4Smrg   INIT_GAL(&sDisplayParams);
70171d7fec4Smrg   sDisplayParams.dwSubfunction = GALFN_GETDISPLAYPITCH;
70271d7fec4Smrg
70371d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sDisplayParams))
70471d7fec4Smrg      return 0;
70571d7fec4Smrg   else {
70671d7fec4Smrg      *pitch = sDisplayParams.wPitch;
70771d7fec4Smrg      return 1;
70871d7fec4Smrg   }
70971d7fec4Smrg}
71071d7fec4Smrg
71171d7fec4Smrg/*---------------------------------------------------------------------------
71271d7fec4Smrg * Gal_set_display_offset
71371d7fec4Smrg *
71471d7fec4Smrg * Description:	This function sets the offset of display parameters.
71571d7fec4Smrg *  parameters:
71671d7fec4Smrg *      offset:	It specifies the offset address of display parameters.
71771d7fec4Smrg *	return:	'1' was returned on success otherwise '0' was returned.
71871d7fec4Smrg *-------------------------------------------------------------------------*/
71971d7fec4SmrgBOOLEAN
72071d7fec4SmrgGal_set_display_offset(unsigned long offset)
72171d7fec4Smrg{
72271d7fec4Smrg   GAL_DISPLAYPARAMS sDisplayParams;
72371d7fec4Smrg
72471d7fec4Smrg   INIT_GAL(&sDisplayParams);
72571d7fec4Smrg   sDisplayParams.dwSubfunction = GALFN_SETDISPLAYOFFSET;
72671d7fec4Smrg   sDisplayParams.dwOffset = offset;
72771d7fec4Smrg
72871d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sDisplayParams))
72971d7fec4Smrg      return 0;
73071d7fec4Smrg   else
73171d7fec4Smrg      return 1;
73271d7fec4Smrg}
73371d7fec4Smrg
73471d7fec4Smrg/*---------------------------------------------------------------------------
73571d7fec4Smrg * Gal_get_display_offset
73671d7fec4Smrg *
73771d7fec4Smrg * Description:	This function gets the offset of display parameters.
73871d7fec4Smrg *  parameters:
73971d7fec4Smrg *      offset:	It specifies the offset address of display parameters.
74071d7fec4Smrg *	return:	'1' was returned on success otherwise '0' was returned.
74171d7fec4Smrg *-------------------------------------------------------------------------*/
74271d7fec4SmrgBOOLEAN
74371d7fec4SmrgGal_get_display_offset(unsigned long *offset)
74471d7fec4Smrg{
74571d7fec4Smrg   GAL_DISPLAYPARAMS sDisplayParams;
74671d7fec4Smrg
74771d7fec4Smrg   INIT_GAL(&sDisplayParams);
74871d7fec4Smrg   sDisplayParams.dwSubfunction = GALFN_GETDISPLAYOFFSET;
74971d7fec4Smrg
75071d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sDisplayParams))
75171d7fec4Smrg      return 0;
75271d7fec4Smrg   else {
75371d7fec4Smrg      *offset = sDisplayParams.dwOffset;
75471d7fec4Smrg      return 1;
75571d7fec4Smrg   }
75671d7fec4Smrg}
75771d7fec4Smrg
75871d7fec4Smrg/*---------------------------------------------------------------------------
75971d7fec4Smrg * Gal_get_refreshrate_from_dotclock
76071d7fec4Smrg *
76171d7fec4Smrg * Description:	This function gets the refreshrate from dotclock.
76271d7fec4Smrg *  parameters:
76371d7fec4Smrg *        xres:	It specifies x co-ordinate resolution.
76471d7fec4Smrg *        Yres:	It specifies y co-ordinate resolution.
76571d7fec4Smrg *	   bpp:	It specifies the bits per pixel (8/16 bits).
76671d7fec4Smrg *	    hz:	It is a pointer which holds the refresh rate of the display.
76771d7fec4Smrg *   frequency:	It spcifies the frequency of the dotclock.
76871d7fec4Smrg *	return:	'1' was returned on success otherwise '0' was returned.
76971d7fec4Smrg *-------------------------------------------------------------------------*/
77071d7fec4SmrgBOOLEAN
77171d7fec4SmrgGal_get_refreshrate_from_dotclock(int xres, int yres, int bpp, int *hz,
77271d7fec4Smrg				  unsigned long frequency)
77371d7fec4Smrg{
77471d7fec4Smrg   GAL_DOTCLKTOREFRESH sDclkToRefresh;
77571d7fec4Smrg
77671d7fec4Smrg   INIT_GAL(&sDclkToRefresh);
77771d7fec4Smrg   sDclkToRefresh.dwSubfunction = GALFN_DOTCLKTOREFRESH;
77871d7fec4Smrg   sDclkToRefresh.wXres = xres;
77971d7fec4Smrg   sDclkToRefresh.wYres = yres;
78071d7fec4Smrg   sDclkToRefresh.wBpp = bpp;
78171d7fec4Smrg   sDclkToRefresh.dwDotClock = frequency;
78271d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sDclkToRefresh))
78371d7fec4Smrg      return 0;
78471d7fec4Smrg   else {
78571d7fec4Smrg      *hz = sDclkToRefresh.wRefreshRate;
78671d7fec4Smrg      return 1;
78771d7fec4Smrg   }
78871d7fec4Smrg}
78971d7fec4Smrg
79071d7fec4Smrg/*---------------------------------------------------------------------------
79171d7fec4Smrg * Gal_get_display_timing
79271d7fec4Smrg *
79371d7fec4Smrg *    Description:	This function gets the display timing from galdevice.
79471d7fec4Smrg *     parameters:
79571d7fec4Smrg * pDisplayTiming:	It specifies the display timing of the galdevice.
79671d7fec4Smrg *	   return:	'1' was returned on success otherwise '0' was returned.
79771d7fec4Smrg *-------------------------------------------------------------------------*/
79871d7fec4SmrgBOOLEAN
79971d7fec4SmrgGal_get_display_timing(PGAL_DISPLAYTIMING pDisplayTiming)
80071d7fec4Smrg{
80171d7fec4Smrg   INIT_GAL(pDisplayTiming);
80271d7fec4Smrg   pDisplayTiming->dwSubfunction = GALFN_GETDISPLAYTIMINGS;
80371d7fec4Smrg
80471d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, pDisplayTiming))
80571d7fec4Smrg      return 0;
80671d7fec4Smrg   else {
80771d7fec4Smrg      return 1;
80871d7fec4Smrg   }
80971d7fec4Smrg}
81071d7fec4Smrg
81171d7fec4Smrg/*---------------------------------------------------------------------------
81271d7fec4Smrg * Gal_set_display_timing
81371d7fec4Smrg *
81471d7fec4Smrg *    Description:	This function sets the display timing of the galdevice.
81571d7fec4Smrg *     parameters:
81671d7fec4Smrg * pDisplayTiming:	It specifies the display timing of the galdevice.
81771d7fec4Smrg *	   return:	'1' was returned on success otherwise '0' was returned.
81871d7fec4Smrg *-------------------------------------------------------------------------*/
81971d7fec4SmrgBOOLEAN
82071d7fec4SmrgGal_set_display_timing(PGAL_DISPLAYTIMING pDisplayTiming)
82171d7fec4Smrg{
82271d7fec4Smrg   INIT_GAL(pDisplayTiming);
82371d7fec4Smrg   pDisplayTiming->dwSubfunction = GALFN_SETDISPLAYTIMINGS;
82471d7fec4Smrg
82571d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, pDisplayTiming))
82671d7fec4Smrg      return 0;
82771d7fec4Smrg   else
82871d7fec4Smrg      return 1;
82971d7fec4Smrg}
83071d7fec4Smrg
83171d7fec4Smrg/*---------------------------------------------------------------------------
83271d7fec4Smrg * Gal_set_fixed_timings
83371d7fec4Smrg *
83471d7fec4Smrg *    Description:	This function sets the fixed display timings of the
83571d7fec4Smrg *						galdevice.
83671d7fec4Smrg *     parameters:
83771d7fec4Smrg *	  pnlXres:	It specifies the panel X resolution.
83871d7fec4Smrg *	  pnlYres:	It specifies the panel Y resolution.
83971d7fec4Smrg *        totXres:  It specifies the total X resolution.
84071d7fec4Smrg *        totYres:  It specifies the total Y resolution.
84171d7fec4Smrg *	      bpp:	It specifies the bits per pixel (8/16 bits).
84271d7fec4Smrg *	   return:	'1' was returned on success otherwise '0' was returned.
84371d7fec4Smrg *-------------------------------------------------------------------------*/
84471d7fec4SmrgBOOLEAN
84571d7fec4SmrgGal_set_fixed_timings(int pnlXres, int pnlYres, int totXres,
84671d7fec4Smrg		      int totYres, int bpp)
84771d7fec4Smrg{
84871d7fec4Smrg   GAL_DISPLAYTIMING DisplayTiming;
84971d7fec4Smrg
85071d7fec4Smrg   INIT_GAL(&DisplayTiming);
85171d7fec4Smrg   DisplayTiming.dwSubfunction = GALFN_SETFIXEDTIMINGS;
85271d7fec4Smrg   DisplayTiming.wHActive = pnlXres;	/* panel Xres */
85371d7fec4Smrg   DisplayTiming.wVActive = pnlYres;	/* panel Yres */
85471d7fec4Smrg   DisplayTiming.wHTotal = totXres;	/* Total Xres */
85571d7fec4Smrg   DisplayTiming.wVTotal = totYres;	/* Total Yres */
85671d7fec4Smrg   DisplayTiming.wBpp = bpp;
85771d7fec4Smrg
85871d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &DisplayTiming))
85971d7fec4Smrg      return 0;
86071d7fec4Smrg   else
86171d7fec4Smrg      return 1;
86271d7fec4Smrg}
86371d7fec4Smrg
86471d7fec4Smrg/*---------------------------------------------------------------------------
86571d7fec4Smrg * Gal_set_display_palette_entry
86671d7fec4Smrg *
86771d7fec4Smrg *    Description:	This function sets the display palette entry of the
86871d7fec4Smrg *						galdevice.
86971d7fec4Smrg *     parameters:
87071d7fec4Smrg *	    index:	It specifies the palette index,
87171d7fec4Smrg *        palette:	It specifies the palette of the galdevice.
87271d7fec4Smrg *	   return:	'1' was returned on success otherwise '0' was returned.
87371d7fec4Smrg *-------------------------------------------------------------------------*/
87471d7fec4SmrgBOOLEAN
87571d7fec4SmrgGal_set_display_palette_entry(unsigned long index, unsigned long palette)
87671d7fec4Smrg{
87771d7fec4Smrg   GAL_PALETTE_ENTRY sPalette;
87871d7fec4Smrg
87971d7fec4Smrg   INIT_GAL(&sPalette);
88071d7fec4Smrg   sPalette.dwSubfunction = GALFN_SETPALETTE_ENTRY;
88171d7fec4Smrg   sPalette.dwIndex = index;
88271d7fec4Smrg   sPalette.dwPalette = palette;
88371d7fec4Smrg
88471d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sPalette))
88571d7fec4Smrg      return 0;
88671d7fec4Smrg   else
88771d7fec4Smrg      return 1;
88871d7fec4Smrg}
88971d7fec4Smrg
89071d7fec4Smrg/*---------------------------------------------------------------------------
89171d7fec4Smrg * Gal_get_display_palette_entry
89271d7fec4Smrg *
89371d7fec4Smrg *    Description:	This function gets the display palette entry of the
89471d7fec4Smrg *						galdevice.
89571d7fec4Smrg *     parameters:
89671d7fec4Smrg *          index:	It specifies the palette index,
89771d7fec4Smrg *        palette:	It is a pointer to the palette of the galdevice.
89871d7fec4Smrg *	   return:	'1' was returned on success otherwise '0' was returned.
89971d7fec4Smrg *-------------------------------------------------------------------------*/
90071d7fec4SmrgBOOLEAN
90171d7fec4SmrgGal_get_display_palette_entry(unsigned long index, unsigned long *palette)
90271d7fec4Smrg{
90371d7fec4Smrg   GAL_PALETTE_ENTRY sPalette;
90471d7fec4Smrg
90571d7fec4Smrg   INIT_GAL(&sPalette);
90671d7fec4Smrg   sPalette.dwSubfunction = GALFN_GETPALETTE_ENTRY;
90771d7fec4Smrg   sPalette.dwIndex = index;
90871d7fec4Smrg
90971d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sPalette))
91071d7fec4Smrg      return 0;
91171d7fec4Smrg   else {
91271d7fec4Smrg      *palette = sPalette.dwPalette;
91371d7fec4Smrg      return 1;
91471d7fec4Smrg   }
91571d7fec4Smrg}
91671d7fec4Smrg
91771d7fec4Smrg/*---------------------------------------------------------------------------
91871d7fec4Smrg * Gal_set_display_palette_entry
91971d7fec4Smrg *
92071d7fec4Smrg *    Description:	This function sets the display palette entry of the
92171d7fec4Smrg *						galdevice.
92271d7fec4Smrg *     parameters:
92371d7fec4Smrg *       pPalette:	It specifies the palette structure of the galdevice.
92471d7fec4Smrg *	   return:	'1' was returned on success otherwise '0' was returned.
92571d7fec4Smrg *-------------------------------------------------------------------------*/
92671d7fec4SmrgBOOLEAN
92771d7fec4SmrgGal_set_display_palette(PGAL_PALETTE pPalette)
92871d7fec4Smrg{
92971d7fec4Smrg   INIT_GAL(pPalette);
93071d7fec4Smrg   pPalette->dwSubfunction = GALFN_SETPALETTE;
93171d7fec4Smrg
93271d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, pPalette))
93371d7fec4Smrg      return 0;
93471d7fec4Smrg   else
93571d7fec4Smrg      return 1;
93671d7fec4Smrg}
93771d7fec4Smrg
93871d7fec4Smrg/*---------------------------------------------------------------------------
93971d7fec4Smrg * Gal_get_display_palette_entry
94071d7fec4Smrg *
94171d7fec4Smrg *    Description:	This function gets the display palette entry of the
94271d7fec4Smrg *						galdevice.
94371d7fec4Smrg *     parameters:
94471d7fec4Smrg *       pPalette:	It specifies the palette structure of the galdevice.
94571d7fec4Smrg *	   return:	'1' was returned on success otherwise '0' was returned.
94671d7fec4Smrg *-------------------------------------------------------------------------*/
94771d7fec4SmrgBOOLEAN
94871d7fec4SmrgGal_get_display_palette(PGAL_PALETTE pPalette)
94971d7fec4Smrg{
95071d7fec4Smrg   INIT_GAL(pPalette);
95171d7fec4Smrg   pPalette->dwSubfunction = GALFN_GETPALETTE;
95271d7fec4Smrg
95371d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, pPalette))
95471d7fec4Smrg      return 0;
95571d7fec4Smrg   else {
95671d7fec4Smrg      return 1;
95771d7fec4Smrg   }
95871d7fec4Smrg}
95971d7fec4Smrg
96071d7fec4Smrg/*---------------------------------------------------------------------------
96171d7fec4Smrg * Gal_wait_until_idle
96271d7fec4Smrg *
96371d7fec4Smrg *    Description:	This function waits until the graphics engine is idle.
96471d7fec4Smrg *     parameters:	none.
96571d7fec4Smrg *	   return:	'1' was returned on success otherwise '0' was returned.
96671d7fec4Smrg *-------------------------------------------------------------------------*/
96771d7fec4SmrgBOOLEAN
96871d7fec4SmrgGal_wait_until_idle(void)
96971d7fec4Smrg{
97071d7fec4Smrg   GAL_WAITUNTILIDLE sWaitIdle;
97171d7fec4Smrg
97271d7fec4Smrg   INIT_GAL(&sWaitIdle);
97371d7fec4Smrg   sWaitIdle.dwSubfunction = GALFN_WAITUNTILIDLE;
97471d7fec4Smrg
97571d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sWaitIdle))
97671d7fec4Smrg      return 0;
97771d7fec4Smrg   else
97871d7fec4Smrg      return 1;
97971d7fec4Smrg}
98071d7fec4Smrg
98171d7fec4Smrg/*---------------------------------------------------------------------------
98271d7fec4Smrg * Gal_wait_vertical_blank
98371d7fec4Smrg *
98471d7fec4Smrg *    Description:	This function wait until start of vertical blank.
98571d7fec4Smrg *     parameters:	none.
98671d7fec4Smrg *	   return:	'1' was returned on success otherwise '0' was returned.
98771d7fec4Smrg *-------------------------------------------------------------------------*/
98871d7fec4SmrgBOOLEAN
98971d7fec4SmrgGal_wait_vertical_blank(void)
99071d7fec4Smrg{
99171d7fec4Smrg   GAL_WAITVERTICALBLANK sWaitVerticalBlank;
99271d7fec4Smrg
99371d7fec4Smrg   INIT_GAL(&sWaitVerticalBlank);
99471d7fec4Smrg   sWaitVerticalBlank.dwSubfunction = GALFN_WAITVERTICALBLANK;
99571d7fec4Smrg
99671d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sWaitVerticalBlank))
99771d7fec4Smrg      return 0;
99871d7fec4Smrg   else
99971d7fec4Smrg      return 1;
100071d7fec4Smrg}
100171d7fec4Smrg
100271d7fec4Smrg/*--------------------------------------------------------------------------
100371d7fec4Smrg * Gal_set_cursor_enable
100471d7fec4Smrg *
100571d7fec4Smrg * Description:	This function enable or disable the hardware cursor.
100671d7fec4Smrg *  parameters:
100771d7fec4Smrg *      enable:	This specifies the enable value of the cursor.
100871d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
100971d7fec4Smrg *-------------------------------------------------------------------------*/
101071d7fec4SmrgBOOLEAN
101171d7fec4SmrgGal_set_cursor_enable(int enable)
101271d7fec4Smrg{
101371d7fec4Smrg   GAL_CURSORENABLE sCursorEnable;
101471d7fec4Smrg
101571d7fec4Smrg   INIT_GAL(&sCursorEnable);
101671d7fec4Smrg   sCursorEnable.dwSubfunction = GALFN_SETCURSORENABLE;
101771d7fec4Smrg   sCursorEnable.bCursorEnable = enable ? 1 : 0;
101871d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sCursorEnable))
101971d7fec4Smrg      return 0;
102071d7fec4Smrg   else
102171d7fec4Smrg      return 1;
102271d7fec4Smrg}
102371d7fec4Smrg
102471d7fec4Smrg/*--------------------------------------------------------------------------
102571d7fec4Smrg * Gal_set_cursor_position
102671d7fec4Smrg *
102771d7fec4Smrg * Description:	This function sets the position of the cursor.
102871d7fec4Smrg *  parameters:
102971d7fec4Smrg *   memoffset:	It specifies the memory offset of the cursor position.
103071d7fec4Smrg *        xpos: It specifies the X co-ordinate position of the cursor.
103171d7fec4Smrg *        ypos: It specifies the Y co-ordinate position of the cursor.
103271d7fec4Smrg *    xhotspot: It specifies the X hotspot location for current cursor shape.
103371d7fec4Smrg *    yhotspot: It specifies the Y hotspot location for current cursor shape.
103471d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
103571d7fec4Smrg *-------------------------------------------------------------------------*/
103671d7fec4SmrgBOOLEAN
103771d7fec4SmrgGal_set_cursor_position(unsigned long memoffset,
103871d7fec4Smrg			unsigned short xpos, unsigned short ypos,
103971d7fec4Smrg			unsigned short xhotspot, unsigned short yhotspot)
104071d7fec4Smrg{
104171d7fec4Smrg   GAL_CURSORPOSITION sCursorPos;
104271d7fec4Smrg
104371d7fec4Smrg   INIT_GAL(&sCursorPos);
104471d7fec4Smrg   sCursorPos.dwSubfunction = GALFN_SETCURSORPOSITION;
104571d7fec4Smrg   sCursorPos.dwMemOffset = memoffset;
104671d7fec4Smrg   sCursorPos.wXPos = xpos;
104771d7fec4Smrg   sCursorPos.wYPos = ypos;
104871d7fec4Smrg   sCursorPos.wXHot = xhotspot;
104971d7fec4Smrg   sCursorPos.wYHot = yhotspot;
105071d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sCursorPos))
105171d7fec4Smrg      return 0;
105271d7fec4Smrg   else
105371d7fec4Smrg      return 1;
105471d7fec4Smrg}
105571d7fec4Smrg
105671d7fec4Smrg/*--------------------------------------------------------------------------
105771d7fec4Smrg * Gal_get_cursor_position
105871d7fec4Smrg *
105971d7fec4Smrg * Description:	This function gets the cursor position.
106071d7fec4Smrg *  parameters:
106171d7fec4Smrg *   memoffset:	It points the memory offset of the cursor position.
106271d7fec4Smrg *        xpos: It points the X co-ordinate position of the cursor.
106371d7fec4Smrg *        ypos: It points  the Y co-ordinate position of the cursor.
106471d7fec4Smrg *    xhotspot: It points the X hotspot location for current cursor shape.
106571d7fec4Smrg *    yhotspot: It points  the Y hotspot location for current cursor shape.
106671d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
106771d7fec4Smrg *-------------------------------------------------------------------------*/
106871d7fec4SmrgBOOLEAN
106971d7fec4SmrgGal_get_cursor_position(unsigned long *memoffset,
107071d7fec4Smrg			unsigned short *xpos, unsigned short *ypos,
107171d7fec4Smrg			unsigned short *xhotspot, unsigned short *yhotspot)
107271d7fec4Smrg{
107371d7fec4Smrg   GAL_CURSORPOSITION sCursorPos;
107471d7fec4Smrg
107571d7fec4Smrg   INIT_GAL(&sCursorPos);
107671d7fec4Smrg   sCursorPos.dwSubfunction = GALFN_GETCURSORPOSITION;
107771d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sCursorPos))
107871d7fec4Smrg      return 0;
107971d7fec4Smrg   else {
108071d7fec4Smrg      *memoffset = sCursorPos.dwMemOffset;
108171d7fec4Smrg      *xpos = sCursorPos.wXPos;
108271d7fec4Smrg      *ypos = sCursorPos.wYPos;
108371d7fec4Smrg      *xhotspot = sCursorPos.wXHot;
108471d7fec4Smrg      *yhotspot = sCursorPos.wYHot;
108571d7fec4Smrg      return 1;
108671d7fec4Smrg   }
108771d7fec4Smrg}
108871d7fec4Smrg
108971d7fec4Smrg/*--------------------------------------------------------------------------
109071d7fec4Smrg * Gal_set_cursor_shape32
109171d7fec4Smrg *
109271d7fec4Smrg * Description:	This function loads 32x32 cursor pattern.
109371d7fec4Smrg *  parameters:
109471d7fec4Smrg *   memoffset:	It specifies the graphics memory offset for cursor shape.
109571d7fec4Smrg *     andmask:	It is a pointer to 32 DWORD of AND data.
109671d7fec4Smrg *     xormask:	It is a pointer to 32 DWORD of XOR data.
109771d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
109871d7fec4Smrg *-------------------------------------------------------------------------*/
109971d7fec4SmrgBOOLEAN
110071d7fec4SmrgGal_set_cursor_shape32(unsigned long memoffset,
110171d7fec4Smrg		       unsigned long *andmask, unsigned long *xormask)
110271d7fec4Smrg{
110371d7fec4Smrg   GAL_SETCURSORSHAPE sCursorShape;
110471d7fec4Smrg
110571d7fec4Smrg   INIT_GAL(&sCursorShape);
110671d7fec4Smrg   sCursorShape.dwSubfunction = GALFN_SETCURSORSHAPE;
110771d7fec4Smrg   sCursorShape.dwMemOffset = memoffset;
110871d7fec4Smrg
110971d7fec4Smrg   memcpy(sCursorShape.dwAndMask, andmask, sizeof(sCursorShape.dwAndMask));
111071d7fec4Smrg
111171d7fec4Smrg   memcpy(sCursorShape.dwXorMask, xormask, sizeof(sCursorShape.dwXorMask));
111271d7fec4Smrg
111371d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sCursorShape))
111471d7fec4Smrg      return 0;
111571d7fec4Smrg   else
111671d7fec4Smrg      return 1;
111771d7fec4Smrg}
111871d7fec4Smrg
111971d7fec4Smrg/*--------------------------------------------------------------------------
112071d7fec4Smrg * Gal_set_cursor_shape64
112171d7fec4Smrg *
112271d7fec4Smrg * Description:	This function loads 64x64 cursor pattern.
112371d7fec4Smrg *  parameters:
112471d7fec4Smrg *   memoffset:	It specifies the graphics memory offset for cursor shape.
112571d7fec4Smrg *     andmask:	It is a pointer to 64 DWORD of AND data.
112671d7fec4Smrg *     xormask:	It is a pointer to 64 DWORD of XOR data.
112771d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
112871d7fec4Smrg *-------------------------------------------------------------------------*/ BOOLEAN
112971d7fec4SmrgGal_set_cursor_shape64(unsigned long memoffset,
113071d7fec4Smrg		       unsigned long *andmask, unsigned long *xormask)
113171d7fec4Smrg{
113271d7fec4Smrg   GAL_SETCURSORSHAPE sCursorShape;
113371d7fec4Smrg
113471d7fec4Smrg   INIT_GAL(&sCursorShape);
113571d7fec4Smrg   sCursorShape.dwSubfunction = GALFN_SETCURSORSHAPE_RCLD;
113671d7fec4Smrg   sCursorShape.dwMemOffset = memoffset;
113771d7fec4Smrg
113871d7fec4Smrg   memcpy(sCursorShape.dwAndMask, andmask, sizeof(sCursorShape.dwAndMask));
113971d7fec4Smrg
114071d7fec4Smrg   memcpy(sCursorShape.dwXorMask, xormask, sizeof(sCursorShape.dwXorMask));
114171d7fec4Smrg
114271d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sCursorShape))
114371d7fec4Smrg      return 0;
114471d7fec4Smrg   else
114571d7fec4Smrg      return 1;
114671d7fec4Smrg}
114771d7fec4Smrg
114871d7fec4Smrg/*--------------------------------------------------------------------------
114971d7fec4Smrg * Gal_set_cursor_colors
115071d7fec4Smrg *
115171d7fec4Smrg * Description:	This function sets the colors of the hardware cursor.
115271d7fec4Smrg *  parameters:
115371d7fec4Smrg *     bkcolor:It specifies the RGB value for the background color.
115471d7fec4Smrg *     fgcolor:It specifies the RGB value for the foreground color.
115571d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
115671d7fec4Smrg *-------------------------------------------------------------------------*/
115771d7fec4SmrgBOOLEAN
115871d7fec4SmrgGal_set_cursor_colors(unsigned long bkcolor, unsigned long fgcolor)
115971d7fec4Smrg{
116071d7fec4Smrg   GAL_CURSORCOLORS sCursorColor;
116171d7fec4Smrg
116271d7fec4Smrg   INIT_GAL(&sCursorColor);
116371d7fec4Smrg   sCursorColor.dwSubfunction = GALFN_SETCURSORCOLORS;
116471d7fec4Smrg   sCursorColor.dwBgColor = bkcolor;
116571d7fec4Smrg   sCursorColor.dwFgColor = fgcolor;
116671d7fec4Smrg
116771d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sCursorColor))
116871d7fec4Smrg      return 0;
116971d7fec4Smrg   else
117071d7fec4Smrg      return 1;
117171d7fec4Smrg}
117271d7fec4Smrg
117371d7fec4Smrg/*--------------------------------------------------------------------------
117471d7fec4Smrg * Gal_get_cursor_colors
117571d7fec4Smrg *
117671d7fec4Smrg * Description:	This function gets the colors of the hardware cursor.
117771d7fec4Smrg *  parameters:
117871d7fec4Smrg *     bkcolor:It points the RGB value for the background color.
117971d7fec4Smrg *     fgcolor:It points the RGB value for the foreground color.
118071d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
118171d7fec4Smrg *-------------------------------------------------------------------------*/
118271d7fec4SmrgBOOLEAN
118371d7fec4SmrgGal_get_cursor_colors(unsigned long *bkcolor, unsigned long *fgcolor)
118471d7fec4Smrg{
118571d7fec4Smrg   GAL_CURSORCOLORS sCursorColor;
118671d7fec4Smrg
118771d7fec4Smrg   INIT_GAL(&sCursorColor);
118871d7fec4Smrg   sCursorColor.dwSubfunction = GALFN_GETCURSORCOLORS;
118971d7fec4Smrg
119071d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sCursorColor))
119171d7fec4Smrg      return 0;
119271d7fec4Smrg   else {
119371d7fec4Smrg      *bkcolor = sCursorColor.dwBgColor;
119471d7fec4Smrg      *fgcolor = sCursorColor.dwFgColor;
119571d7fec4Smrg      return 1;
119671d7fec4Smrg   }
119771d7fec4Smrg}
119871d7fec4Smrg
119971d7fec4Smrg/*--------------------------------------------------------------------------
120071d7fec4Smrg * Gal_set_solid_pattern
120171d7fec4Smrg *
120271d7fec4Smrg * Description:	This function sets a solid pattern color for future rendering.
120371d7fec4Smrg *  parameters:
120471d7fec4Smrg *       color:	It specifies the pattern color in proper format for current
120571d7fec4Smrg *					display mode.
120671d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
120771d7fec4Smrg *-------------------------------------------------------------------------*/
120871d7fec4SmrgBOOLEAN
120971d7fec4SmrgGal_set_solid_pattern(unsigned long color)
121071d7fec4Smrg{
121171d7fec4Smrg   GAL_SETSOLIDPATTERN sSetSoildPat;
121271d7fec4Smrg
121371d7fec4Smrg   INIT_GAL(&sSetSoildPat);
121471d7fec4Smrg   sSetSoildPat.dwSubfunction = GALFN_SETSOLIDPATTERN;
121571d7fec4Smrg   sSetSoildPat.dwColor = color;
121671d7fec4Smrg
121771d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetSoildPat))
121871d7fec4Smrg      return 0;
121971d7fec4Smrg   else
122071d7fec4Smrg      return 1;
122171d7fec4Smrg}
122271d7fec4Smrg
122371d7fec4Smrg/*--------------------------------------------------------------------------
122471d7fec4Smrg * Gal_set_solid_source
122571d7fec4Smrg *
122671d7fec4Smrg * Description:	This function specifies a constant source data value for
122771d7fec4Smrg *				raster operations that use both pattern
122871d7fec4Smrg *				and source data.
122971d7fec4Smrg *  parameters:
123071d7fec4Smrg *       color:	It specifies the source color.
123171d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
123271d7fec4Smrg *-------------------------------------------------------------------------*/
123371d7fec4SmrgBOOLEAN
123471d7fec4SmrgGal_set_solid_source(unsigned long color)
123571d7fec4Smrg{
123671d7fec4Smrg   GAL_SETSOLIDSOURCE sSetSolidSrc;
123771d7fec4Smrg
123871d7fec4Smrg   INIT_GAL(&sSetSolidSrc);
123971d7fec4Smrg   sSetSolidSrc.dwSubfunction = GALFN_SETSOLIDSOURCE;
124071d7fec4Smrg   sSetSolidSrc.dwColor = color;
124171d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetSolidSrc))
124271d7fec4Smrg      return 0;
124371d7fec4Smrg   else
124471d7fec4Smrg      return 1;
124571d7fec4Smrg}
124671d7fec4Smrg
124771d7fec4Smrg/*--------------------------------------------------------------------------
124871d7fec4Smrg * Gal_set_mono_source
124971d7fec4Smrg *
125071d7fec4Smrg * Description:
125171d7fec4Smrg *  parameters:
125271d7fec4Smrg *     bkcolor: It specifies the background color.
125371d7fec4Smrg *     fgcolor: It specifies the foreground color.
125471d7fec4Smrg *transparency:	It specifies the transparency flag.
125571d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
125671d7fec4Smrg *------------------------------------------------------------------------*/
125771d7fec4SmrgBOOLEAN
125871d7fec4SmrgGal_set_mono_source(unsigned long bgcolor, unsigned long fgcolor,
125971d7fec4Smrg		    unsigned char transparency)
126071d7fec4Smrg{
126171d7fec4Smrg   GAL_SETMONOSOURCE sSetMonoSrc;
126271d7fec4Smrg
126371d7fec4Smrg   INIT_GAL(&sSetMonoSrc);
126471d7fec4Smrg   sSetMonoSrc.dwSubfunction = GALFN_SETMONOSOURCE;
126571d7fec4Smrg   sSetMonoSrc.dwFgColor = fgcolor;
126671d7fec4Smrg   sSetMonoSrc.dwBgColor = bgcolor;
126771d7fec4Smrg   sSetMonoSrc.cTransparency = transparency;
126871d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetMonoSrc))
126971d7fec4Smrg      return 0;
127071d7fec4Smrg   else
127171d7fec4Smrg      return 1;
127271d7fec4Smrg}
127371d7fec4Smrg
127471d7fec4Smrg/*--------------------------------------------------------------------------
127571d7fec4Smrg * Gal_set_mono_pattern
127671d7fec4Smrg *
127771d7fec4Smrg * Description:	This function specifies an 8x8 monochrome pattern
127871d7fec4Smrg *				used in future rendering operations.
127971d7fec4Smrg *  parameters:
128071d7fec4Smrg *     bkcolor: It specifies the background color.
128171d7fec4Smrg *     fgcolor: It specifies the foreground color.
128271d7fec4Smrg *		 data0: It specifies the bits of 8x8 monochrome pattern.
128371d7fec4Smrg *       data1: It specifies the bits of 8x8 monochrome pattern.
128471d7fec4Smrg *transparency:	It specifies the transparency flag.
128571d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
128671d7fec4Smrg *------------------------------------------------------------------------*/
128771d7fec4SmrgBOOLEAN
128871d7fec4SmrgGal_set_mono_pattern(unsigned long bgcolor, unsigned long fgcolor,
128971d7fec4Smrg		     unsigned long data0, unsigned long data1,
129071d7fec4Smrg		     unsigned char transparency)
129171d7fec4Smrg{
129271d7fec4Smrg   GAL_SETMONOPATTERN sSetMonoPat;
129371d7fec4Smrg
129471d7fec4Smrg   INIT_GAL(&sSetMonoPat);
129571d7fec4Smrg   sSetMonoPat.dwSubfunction = GALFN_SETMONOPATTERN;
129671d7fec4Smrg   sSetMonoPat.dwFgColor = fgcolor;
129771d7fec4Smrg   sSetMonoPat.dwBgColor = bgcolor;
129871d7fec4Smrg   sSetMonoPat.dwData0 = data0;
129971d7fec4Smrg   sSetMonoPat.dwData1 = data1;
130071d7fec4Smrg   sSetMonoPat.cTransparency = transparency;
130171d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetMonoPat))
130271d7fec4Smrg      return 0;
130371d7fec4Smrg   else
130471d7fec4Smrg      return 1;
130571d7fec4Smrg}
130671d7fec4Smrg
130771d7fec4Smrg/*--------------------------------------------------------------------------
130871d7fec4Smrg * Gal_set_raster_operation
130971d7fec4Smrg *
131071d7fec4Smrg * Description:	This function specifies the raster operation for
131171d7fec4Smrg *					future rendering.
131271d7fec4Smrg *  parameters:
131371d7fec4Smrg *         rop: It specifies the ternary raster operation
131471d7fec4Smrg *					(pattern/source/destination).
131571d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
131671d7fec4Smrg *------------------------------------------------------------------------*/
131771d7fec4SmrgBOOLEAN
131871d7fec4SmrgGal_set_raster_operation(unsigned char rop)
131971d7fec4Smrg{
132071d7fec4Smrg   GAL_RASTEROPERATION sSetRop;
132171d7fec4Smrg
132271d7fec4Smrg   INIT_GAL(&sSetRop);
132371d7fec4Smrg   sSetRop.dwSubfunction = GALFN_SETRASTEROPERATION;
132471d7fec4Smrg   sSetRop.cRop = rop;
132571d7fec4Smrg
132671d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetRop))
132771d7fec4Smrg      return 0;
132871d7fec4Smrg   else
132971d7fec4Smrg      return 1;
133071d7fec4Smrg}
133171d7fec4Smrg
133271d7fec4Smrg/*--------------------------------------------------------------------------
133371d7fec4Smrg * Gal_pattern_fill
133471d7fec4Smrg *
133571d7fec4Smrg * Description:	This function renders pattern data to a rectangular
133671d7fec4Smrg *					region.
133771d7fec4Smrg *  parameters:
133871d7fec4Smrg *           x:	It specifies the screen X position, in pixels.
133971d7fec4Smrg *           y:	It specifies the screen Y position, in pixels.
134071d7fec4Smrg *       width:	It specifies the width of rectangle, in pixels.
134171d7fec4Smrg *      height:	It specifies the height of rectangle, in pixels.
134271d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
134371d7fec4Smrg *------------------------------------------------------------------------*/
134471d7fec4SmrgBOOLEAN
134571d7fec4SmrgGal_pattern_fill(unsigned short x, unsigned short y,
134671d7fec4Smrg		 unsigned short width, unsigned short height)
134771d7fec4Smrg{
134871d7fec4Smrg   GAL_PATTERNFILL sPatternFill;
134971d7fec4Smrg
135071d7fec4Smrg   INIT_GAL(&sPatternFill);
135171d7fec4Smrg   sPatternFill.dwSubfunction = GALFN_PATTERNFILL;
135271d7fec4Smrg   sPatternFill.wXPos = x;
135371d7fec4Smrg   sPatternFill.wYPos = y;
135471d7fec4Smrg   sPatternFill.wWidth = width;
135571d7fec4Smrg   sPatternFill.wHeight = height;
135671d7fec4Smrg
135771d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sPatternFill))
135871d7fec4Smrg      return 0;
135971d7fec4Smrg   else
136071d7fec4Smrg      return 1;
136171d7fec4Smrg}
136271d7fec4Smrg
136371d7fec4Smrg/*--------------------------------------------------------------------------
136471d7fec4Smrg * Gal_screen_to_screen_blt
136571d7fec4Smrg *
136671d7fec4Smrg * Description:	This function is used to perform a screen to screen
136771d7fec4Smrg *				BLT operation.
136871d7fec4Smrg *  parameters:
136971d7fec4Smrg *        srcx:	It specifies the source X position.
137071d7fec4Smrg *        srcy:	It specifies the source Y position.
137171d7fec4Smrg *        dstx:	It specifies the destination X position.
137271d7fec4Smrg *        dsty:	It specifies the destination Y position.
137371d7fec4Smrg *       width: It specifies the width of BLT, in pixels.
137471d7fec4Smrg *      height: It specifies the height of BLT, in pixels.
137571d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
137671d7fec4Smrg *------------------------------------------------------------------------*/
137771d7fec4SmrgBOOLEAN
137871d7fec4SmrgGal_screen_to_screen_blt(unsigned short srcx, unsigned short srcy,
137971d7fec4Smrg			 unsigned short dstx, unsigned short dsty,
138071d7fec4Smrg			 unsigned short width, unsigned short height)
138171d7fec4Smrg{
138271d7fec4Smrg   GAL_SCREENTOSCREENBLT sScreenBlt;
138371d7fec4Smrg
138471d7fec4Smrg   INIT_GAL(&sScreenBlt);
138571d7fec4Smrg   sScreenBlt.dwSubfunction = GALFN_SCREENTOSCREENBLT;
138671d7fec4Smrg   sScreenBlt.wXStart = srcx;
138771d7fec4Smrg   sScreenBlt.wYStart = srcy;
138871d7fec4Smrg   sScreenBlt.wXEnd = dstx;
138971d7fec4Smrg   sScreenBlt.wYEnd = dsty;
139071d7fec4Smrg   sScreenBlt.wWidth = width;
139171d7fec4Smrg   sScreenBlt.wHeight = height;
139271d7fec4Smrg
139371d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sScreenBlt))
139471d7fec4Smrg      return 0;
139571d7fec4Smrg   else
139671d7fec4Smrg      return 1;
139771d7fec4Smrg}
139871d7fec4Smrg
139971d7fec4Smrg/*--------------------------------------------------------------------------
140071d7fec4Smrg * Gal_screen_to_screen_xblt
140171d7fec4Smrg *
140271d7fec4Smrg * Description:	This function is used to perform a screen to screen
140371d7fec4Smrg *				BLT operation using a transparency color.
140471d7fec4Smrg *  parameters:
140571d7fec4Smrg *        srcx:	It specifies the source X position.
140671d7fec4Smrg *        srcy:	It specifies the source Y position.
140771d7fec4Smrg *        dstx:	It specifies the destination X position.
140871d7fec4Smrg *        dsty:	It specifies the destination Y position.
140971d7fec4Smrg *       width: It specifies the width of BLT, in pixels.
141071d7fec4Smrg *      height: It specifies the height of BLT, in pixels.
141171d7fec4Smrg *       color: It specifies the transparency color.
141271d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
141371d7fec4Smrg *------------------------------------------------------------------------*/
141471d7fec4SmrgBOOLEAN
141571d7fec4SmrgGal_screen_to_screen_xblt(unsigned short srcx, unsigned short srcy,
141671d7fec4Smrg			  unsigned short dstx, unsigned short dsty,
141771d7fec4Smrg			  unsigned short width, unsigned short height,
141871d7fec4Smrg			  unsigned long color)
141971d7fec4Smrg{
142071d7fec4Smrg   GAL_SCREENTOSCREENXBLT sScreenXBlt;
142171d7fec4Smrg
142271d7fec4Smrg   INIT_GAL(&sScreenXBlt);
142371d7fec4Smrg   sScreenXBlt.dwSubfunction = GALFN_SCREENTOSCREENXBLT;
142471d7fec4Smrg   sScreenXBlt.wXStart = srcx;
142571d7fec4Smrg   sScreenXBlt.wYStart = srcy;
142671d7fec4Smrg   sScreenXBlt.wXEnd = dstx;
142771d7fec4Smrg   sScreenXBlt.wYEnd = dsty;
142871d7fec4Smrg   sScreenXBlt.wWidth = width;
142971d7fec4Smrg   sScreenXBlt.wHeight = height;
143071d7fec4Smrg   sScreenXBlt.dwColor = color;
143171d7fec4Smrg
143271d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sScreenXBlt))
143371d7fec4Smrg      return 0;
143471d7fec4Smrg   else
143571d7fec4Smrg      return 1;
143671d7fec4Smrg}
143771d7fec4Smrg
143871d7fec4Smrg/*--------------------------------------------------------------------------
143971d7fec4Smrg * Gal_bresenham_line
144071d7fec4Smrg *
144171d7fec4Smrg * Description:	This function is used to draw a single pixel line
144271d7fec4Smrg *					using the specified Bresenham parameters.
144371d7fec4Smrg *  parameters:
144471d7fec4Smrg *           x:	It specifies the starting X position.
144571d7fec4Smrg *           y:	It specifies the starting Y position.
144671d7fec4Smrg *      length:	It specifies the length of the vector, in pixels.
144771d7fec4Smrg *     initerr:	It specifies the Bresenham initial error term.
144871d7fec4Smrg *    axialerr:	It specifies the Bresenham axial error term
144971d7fec4Smrg *					(moving in major direction only).
145071d7fec4Smrg *     diagerr: It specifies Bresenham diagonal error term
145171d7fec4Smrg *					(moving in major and minor direction.
145271d7fec4Smrg *       flags: It specifies the flag.
145371d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
145471d7fec4Smrg *------------------------------------------------------------------------*/
145571d7fec4SmrgBOOLEAN
145671d7fec4SmrgGal_bresenham_line(unsigned short x, unsigned short y,
145771d7fec4Smrg		   unsigned short length, unsigned short initerr,
145871d7fec4Smrg		   unsigned short axialerr, unsigned short diagerr,
145971d7fec4Smrg		   unsigned short flags)
146071d7fec4Smrg{
146171d7fec4Smrg   GAL_BRESENHAMLINE sBresenhamLine;
146271d7fec4Smrg
146371d7fec4Smrg   INIT_GAL(&sBresenhamLine);
146471d7fec4Smrg   sBresenhamLine.dwSubfunction = GALFN_BRESENHAMLINE;
146571d7fec4Smrg   sBresenhamLine.wX1 = x;
146671d7fec4Smrg   sBresenhamLine.wY1 = y;
146771d7fec4Smrg   sBresenhamLine.wLength = length;
146871d7fec4Smrg   sBresenhamLine.wErr = initerr;
146971d7fec4Smrg   sBresenhamLine.wE1 = axialerr;
147071d7fec4Smrg   sBresenhamLine.wE2 = diagerr;
147171d7fec4Smrg   sBresenhamLine.wFlags = flags;
147271d7fec4Smrg
147371d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sBresenhamLine))
147471d7fec4Smrg      return 0;
147571d7fec4Smrg   else
147671d7fec4Smrg      return 1;
147771d7fec4Smrg}
147871d7fec4Smrg
147971d7fec4SmrgBOOLEAN
148071d7fec4SmrgGal_color_pattern_fill(unsigned short x, unsigned short y,
148171d7fec4Smrg		       unsigned short width, unsigned short height,
148271d7fec4Smrg		       unsigned long pattern)
148371d7fec4Smrg{
148471d7fec4Smrg   GAL_COLOR_PATTERNFILL sColorPat;
148571d7fec4Smrg
148671d7fec4Smrg   INIT_GAL(&sColorPat);
148771d7fec4Smrg   sColorPat.dwSubfunction = GALFN_COLOR_PATTERNFILL;
148871d7fec4Smrg   sColorPat.wDstx = x;
148971d7fec4Smrg   sColorPat.wDsty = y;
149071d7fec4Smrg   sColorPat.wWidth = width;
149171d7fec4Smrg   sColorPat.wHeight = height;
149271d7fec4Smrg   sColorPat.dwPattern = pattern;
149371d7fec4Smrg
149471d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sColorPat))
149571d7fec4Smrg      return 0;
149671d7fec4Smrg   else
149771d7fec4Smrg      return 1;
149871d7fec4Smrg}
149971d7fec4Smrg
150071d7fec4SmrgBOOLEAN
150171d7fec4SmrgGal_color_bitmap_to_screen_blt(unsigned short srcx, unsigned short srcy,
150271d7fec4Smrg			       unsigned short dstx, unsigned short dsty,
150371d7fec4Smrg			       unsigned short width, unsigned short height,
150471d7fec4Smrg			       unsigned long data, long pitch)
150571d7fec4Smrg{
150671d7fec4Smrg   GAL_COLOR_BITMAP_TO_SCREEN_BLT sBmp2Scr;
150771d7fec4Smrg
150871d7fec4Smrg   INIT_GAL(&sBmp2Scr);
150971d7fec4Smrg   sBmp2Scr.dwSubfunction = GALFN_COLOR_BITMAP_TO_SCREEN_BLT;
151071d7fec4Smrg   sBmp2Scr.wSrcx = srcx;
151171d7fec4Smrg   sBmp2Scr.wSrcy = srcy;
151271d7fec4Smrg   sBmp2Scr.wDstx = dstx;
151371d7fec4Smrg   sBmp2Scr.wDsty = dsty;
151471d7fec4Smrg   sBmp2Scr.wWidth = width;
151571d7fec4Smrg   sBmp2Scr.wHeight = height;
151671d7fec4Smrg   sBmp2Scr.dwData = data;
151771d7fec4Smrg   sBmp2Scr.wPitch = pitch;
151871d7fec4Smrg
151971d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sBmp2Scr))
152071d7fec4Smrg      return 0;
152171d7fec4Smrg   else
152271d7fec4Smrg      return 1;
152371d7fec4Smrg}
152471d7fec4Smrg
152571d7fec4SmrgBOOLEAN
152671d7fec4SmrgGal_color_bitmap_to_screen_xblt(unsigned short srcx, unsigned short srcy,
152771d7fec4Smrg				unsigned short dstx, unsigned short dsty,
152871d7fec4Smrg				unsigned short width, unsigned short height,
152971d7fec4Smrg				unsigned long data, long pitch,
153071d7fec4Smrg				unsigned long color)
153171d7fec4Smrg{
153271d7fec4Smrg   GAL_COLOR_BITMAP_TO_SCREEN_XBLT sBmp2Scr;
153371d7fec4Smrg
153471d7fec4Smrg   INIT_GAL(&sBmp2Scr);
153571d7fec4Smrg   sBmp2Scr.dwSubfunction = GALFN_COLOR_BITMAP_TO_SCREEN_XBLT;
153671d7fec4Smrg   sBmp2Scr.wSrcx = srcx;
153771d7fec4Smrg   sBmp2Scr.wSrcy = srcy;
153871d7fec4Smrg   sBmp2Scr.wDstx = dstx;
153971d7fec4Smrg   sBmp2Scr.wDsty = dsty;
154071d7fec4Smrg   sBmp2Scr.wWidth = width;
154171d7fec4Smrg   sBmp2Scr.wHeight = height;
154271d7fec4Smrg   sBmp2Scr.dwData = data;
154371d7fec4Smrg   sBmp2Scr.wPitch = pitch;
154471d7fec4Smrg   sBmp2Scr.dwColor = color;
154571d7fec4Smrg
154671d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sBmp2Scr))
154771d7fec4Smrg      return 0;
154871d7fec4Smrg   else
154971d7fec4Smrg      return 1;
155071d7fec4Smrg}
155171d7fec4Smrg
155271d7fec4SmrgBOOLEAN
155371d7fec4SmrgGal_mono_bitmap_to_screen_blt(unsigned short srcx, unsigned short srcy,
155471d7fec4Smrg			      unsigned short dstx, unsigned short dsty,
155571d7fec4Smrg			      unsigned short width, unsigned short height,
155671d7fec4Smrg			      unsigned long data, short pitch)
155771d7fec4Smrg{
155871d7fec4Smrg   GAL_MONO_BITMAP_TO_SCREEN_BLT sBmp2Scr;
155971d7fec4Smrg
156071d7fec4Smrg   INIT_GAL(&sBmp2Scr);
156171d7fec4Smrg   sBmp2Scr.dwSubfunction = GALFN_MONO_BITMAP_TO_SCREEN_BLT;
156271d7fec4Smrg   sBmp2Scr.wSrcx = srcx;
156371d7fec4Smrg   sBmp2Scr.wSrcy = srcy;
156471d7fec4Smrg   sBmp2Scr.wDstx = dstx;
156571d7fec4Smrg   sBmp2Scr.wDsty = dsty;
156671d7fec4Smrg   sBmp2Scr.wWidth = width;
156771d7fec4Smrg   sBmp2Scr.wHeight = height;
156871d7fec4Smrg   sBmp2Scr.dwData = data;
156971d7fec4Smrg   sBmp2Scr.wPitch = pitch;
157071d7fec4Smrg
157171d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sBmp2Scr))
157271d7fec4Smrg      return 0;
157371d7fec4Smrg   else
157471d7fec4Smrg      return 1;
157571d7fec4Smrg}
157671d7fec4Smrg
157771d7fec4SmrgBOOLEAN
157871d7fec4SmrgGal_text_blt(unsigned short dstx, unsigned short dsty, unsigned short width,
157971d7fec4Smrg	     unsigned short height, unsigned long data)
158071d7fec4Smrg{
158171d7fec4Smrg   GAL_TEXT_BLT sTextBlt;
158271d7fec4Smrg
158371d7fec4Smrg   INIT_GAL(&sTextBlt);
158471d7fec4Smrg   sTextBlt.dwSubfunction = GALFN_TEXT_BLT;
158571d7fec4Smrg   sTextBlt.wDstx = dstx;
158671d7fec4Smrg   sTextBlt.wDsty = dsty;
158771d7fec4Smrg   sTextBlt.wWidth = width;
158871d7fec4Smrg   sTextBlt.wHeight = height;
158971d7fec4Smrg   sTextBlt.dwData = data;
159071d7fec4Smrg
159171d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sTextBlt))
159271d7fec4Smrg      return 0;
159371d7fec4Smrg   else
159471d7fec4Smrg      return 1;
159571d7fec4Smrg}
159671d7fec4Smrg
159771d7fec4Smrg/*------------------------------------------------------------------------
159871d7fec4Smrg * Gal_set_compression_enable
159971d7fec4Smrg *
160071d7fec4Smrg *       Description:	This function enables or disables display
160171d7fec4Smrg * 			compression.
160271d7fec4Smrg *	  parameters:
160371d7fec4Smrg * bCompressionState:	It specifies the display compression state.
160471d7fec4Smrg *  	      return:	'1' was returned on success otherwise
160571d7fec4Smrg *			'0' was returned.
160671d7fec4Smrg *----------------------------------------------------------------------*/
160771d7fec4SmrgBOOLEAN
160871d7fec4SmrgGal_set_compression_enable(BOOLEAN bCompressionState)
160971d7fec4Smrg{
161071d7fec4Smrg   GAL_COMPRESSIONSTATE sCompState;
161171d7fec4Smrg
161271d7fec4Smrg   INIT_GAL(&sCompState);
161371d7fec4Smrg   sCompState.dwSubfunction = GALFN_SETCOMPRESSIONSTATE;
161471d7fec4Smrg   sCompState.bCompressionState = bCompressionState;
161571d7fec4Smrg
161671d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sCompState))
161771d7fec4Smrg      return 0;
161871d7fec4Smrg   else
161971d7fec4Smrg      return 1;
162071d7fec4Smrg}
162171d7fec4Smrg
162271d7fec4Smrg/*------------------------------------------------------------------------
162371d7fec4Smrg * Gal_get_compression_enable
162471d7fec4Smrg *
162571d7fec4Smrg * 	Description:	This function gets the compression state.
162671d7fec4Smrg *
162771d7fec4Smrg *	  parameters:
162871d7fec4Smrg * bCompressionState:	gets the display compression state.
162971d7fec4Smrg *	      return:	'1' was returned on success otherwise
163071d7fec4Smrg *			'0' was returned.
163171d7fec4Smrg *----------------------------------------------------------------------*/
163271d7fec4SmrgBOOLEAN
163371d7fec4SmrgGal_get_compression_enable(int *bCompressionState)
163471d7fec4Smrg{
163571d7fec4Smrg   GAL_COMPRESSIONSTATE sCompState;
163671d7fec4Smrg
163771d7fec4Smrg   INIT_GAL(&sCompState);
163871d7fec4Smrg   sCompState.dwSubfunction = GALFN_GETCOMPRESSIONSTATE;
163971d7fec4Smrg
164071d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sCompState))
164171d7fec4Smrg      return 0;
164271d7fec4Smrg   else {
164371d7fec4Smrg      *bCompressionState = sCompState.bCompressionState;
164471d7fec4Smrg      return 1;
164571d7fec4Smrg   }
164671d7fec4Smrg}
164771d7fec4Smrg
164871d7fec4Smrg/*--------------------------------------------------------------------------
164971d7fec4Smrg * Gal_set_compression_parameters
165071d7fec4Smrg *
165171d7fec4Smrg * Description:	This function sets the compression parameters of the
165271d7fec4Smrg * 			frame buffer device.
165371d7fec4Smrg *  parameters:
165471d7fec4Smrg *       flags:	It specifies the flag.
165571d7fec4Smrg *      offset:	It specifies the base offset in graphics memory for the
165671d7fec4Smrg *			compression buffer.
165771d7fec4Smrg *	 pitch:	It specifies the pitch of compression buffer, in bytes.
165871d7fec4Smrg *        size:	It specifies the maximum line size of the compression buffer
165971d7fec4Smrg *			in bytes.
166071d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
166171d7fec4Smrg *------------------------------------------------------------------------*/
166271d7fec4SmrgBOOLEAN
166371d7fec4SmrgGal_set_compression_parameters(unsigned long flags,
166471d7fec4Smrg			       unsigned long offset, unsigned short pitch,
166571d7fec4Smrg			       unsigned short size)
166671d7fec4Smrg{
166771d7fec4Smrg   GAL_COMPRESSIONPARAMS sCompParams;
166871d7fec4Smrg
166971d7fec4Smrg   INIT_GAL(&sCompParams);
167071d7fec4Smrg   sCompParams.dwSubfunction = GALFN_SETCOMPRESSIONPARAMS;
167171d7fec4Smrg   sCompParams.dwFlags = flags;
167271d7fec4Smrg   sCompParams.dwCompOffset = offset;
167371d7fec4Smrg   sCompParams.dwCompPitch = pitch;
167471d7fec4Smrg   sCompParams.dwCompSize = size;
167571d7fec4Smrg
167671d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sCompParams))
167771d7fec4Smrg      return 0;
167871d7fec4Smrg   else
167971d7fec4Smrg      return 1;
168071d7fec4Smrg}
168171d7fec4Smrg
168271d7fec4Smrg/*--------------------------------------------------------------------------
168371d7fec4Smrg * Gal_get_compression_parameters
168471d7fec4Smrg *
168571d7fec4Smrg * Description:	This function gets the compression parameters of the
168671d7fec4Smrg *				frame buffer device.
168771d7fec4Smrg *  parameters:
168871d7fec4Smrg *       flags:	It specifies the flag.
168971d7fec4Smrg *      offset:	gets the base offset in graphics memory for the
169071d7fec4Smrg *					compression buffer.
169171d7fec4Smrg *		 pitch:	gets the pitch of compression buffer, in bytes.
169271d7fec4Smrg *        size:	gets the maximum line size of the compression buffer
169371d7fec4Smrg *					in bytes.
169471d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
169571d7fec4Smrg *------------------------------------------------------------------------*/
169671d7fec4SmrgBOOLEAN
169771d7fec4SmrgGal_get_compression_parameters(unsigned long flags,
169871d7fec4Smrg			       unsigned long *offset,
169971d7fec4Smrg			       unsigned short *pitch, unsigned short *size)
170071d7fec4Smrg{
170171d7fec4Smrg   GAL_COMPRESSIONPARAMS sCompParams;
170271d7fec4Smrg
170371d7fec4Smrg   INIT_GAL(&sCompParams);
170471d7fec4Smrg   sCompParams.dwSubfunction = GALFN_GETCOMPRESSIONPARAMS;
170571d7fec4Smrg   sCompParams.dwFlags = flags;
170671d7fec4Smrg
170771d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sCompParams))
170871d7fec4Smrg      return 0;
170971d7fec4Smrg   else {
171071d7fec4Smrg      *offset = sCompParams.dwCompOffset;
171171d7fec4Smrg      *pitch = sCompParams.dwCompPitch;
171271d7fec4Smrg      *size = sCompParams.dwCompSize;
171371d7fec4Smrg      return 1;
171471d7fec4Smrg   }
171571d7fec4Smrg}
171671d7fec4Smrg
171771d7fec4Smrg/*--------------------------------------------------------------------------
171871d7fec4Smrg * Gal_vga_mode_switch
171971d7fec4Smrg *
172071d7fec4Smrg * Description:This function signals the beginning or end of a
172171d7fec4Smrg *				mode switch.
172271d7fec4Smrg *  parameters:
172371d7fec4Smrg *      active:	It specifies the mode switch.
172471d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
172571d7fec4Smrg *------------------------------------------------------------------------*/
172671d7fec4SmrgBOOLEAN
172771d7fec4SmrgGal_vga_mode_switch(int active)
172871d7fec4Smrg{
172971d7fec4Smrg   GAL_VGAMODEDATA sVgaData;
173071d7fec4Smrg
173171d7fec4Smrg   INIT_GAL(&sVgaData);
173271d7fec4Smrg   sVgaData.dwSubfunction = GALFN_VGAMODESWITCH;
173371d7fec4Smrg   sVgaData.dwFlags = active;
173471d7fec4Smrg
173571d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sVgaData))
173671d7fec4Smrg      return 0;
173771d7fec4Smrg   else
173871d7fec4Smrg      return 1;
173971d7fec4Smrg}
174071d7fec4Smrg
174171d7fec4Smrg/*--------------------------------------------------------------------------
174271d7fec4Smrg * Gal_vga_clear_extended
174371d7fec4Smrg *
174471d7fec4Smrg * Description:	This will clear the Svga data.
174571d7fec4Smrg *  parameters:	none.
174671d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
174771d7fec4Smrg *------------------------------------------------------------------------*/
174871d7fec4SmrgBOOLEAN
174971d7fec4SmrgGal_vga_clear_extended(void)
175071d7fec4Smrg{
175171d7fec4Smrg   GAL_VGAMODEDATA sVgaData;
175271d7fec4Smrg
175371d7fec4Smrg   INIT_GAL(&sVgaData);
175471d7fec4Smrg   sVgaData.dwSubfunction = GALFN_VGACLEARCRTEXT;
175571d7fec4Smrg
175671d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sVgaData))
175771d7fec4Smrg      return 0;
175871d7fec4Smrg   else
175971d7fec4Smrg      return 1;
176071d7fec4Smrg}
176171d7fec4Smrg
176271d7fec4Smrg/*--------------------------------------------------------------------------
176371d7fec4Smrg * Gal_vga_pitch
176471d7fec4Smrg *
176571d7fec4Smrg * Description:	This function sets VGA register values in VGA
176671d7fec4Smrg *					structure for specified pitch.
176771d7fec4Smrg *  parameters:
176871d7fec4Smrg *    pVgaData: It specifies the vga structure.
176971d7fec4Smrg *		 pitch:	It specifies the number of bytes between scanlines.
177071d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
177171d7fec4Smrg *------------------------------------------------------------------------*/
177271d7fec4SmrgBOOLEAN
177371d7fec4SmrgGal_vga_pitch(PGAL_VGAMODEDATA pVgaData, unsigned short pitch)
177471d7fec4Smrg{
177571d7fec4Smrg   INIT_GAL(pVgaData);
177671d7fec4Smrg   pVgaData->dwSubfunction = GALFN_VGASETPITCH;
177771d7fec4Smrg   pVgaData->dwFlags = pitch;
177871d7fec4Smrg
177971d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, pVgaData))
178071d7fec4Smrg      return 0;
178171d7fec4Smrg   else {
178271d7fec4Smrg      return 1;
178371d7fec4Smrg   }
178471d7fec4Smrg}
178571d7fec4Smrg
178671d7fec4Smrg/*--------------------------------------------------------------------------
178771d7fec4Smrg * Gal_vga_restore
178871d7fec4Smrg *
178971d7fec4Smrg * Description:	This function sets the VGA state to the values in the
179071d7fec4Smrg *				VGA structure.
179171d7fec4Smrg *  parameters:
179271d7fec4Smrg *    pVgaData: It specifies the vga structure.
179371d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
179471d7fec4Smrg *------------------------------------------------------------------------*/
179571d7fec4SmrgBOOLEAN
179671d7fec4SmrgGal_vga_restore(PGAL_VGAMODEDATA pVgaData)
179771d7fec4Smrg{
179871d7fec4Smrg   INIT_GAL(pVgaData);
179971d7fec4Smrg   pVgaData->dwSubfunction = GALFN_VGARESTORE;
180071d7fec4Smrg
180171d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, pVgaData))
180271d7fec4Smrg      return 0;
180371d7fec4Smrg   else
180471d7fec4Smrg      return 1;
180571d7fec4Smrg}
180671d7fec4Smrg
180771d7fec4Smrg/*--------------------------------------------------------------------------
180871d7fec4Smrg * Gal_vga_save
180971d7fec4Smrg *
181071d7fec4Smrg * Description:	This function saves the current VGA state in the
181171d7fec4Smrg *					VGA structure.
181271d7fec4Smrg *  parameters:
181371d7fec4Smrg *    pVgaData: It specifies the vga structure.
181471d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
181571d7fec4Smrg *------------------------------------------------------------------------*/
181671d7fec4SmrgBOOLEAN
181771d7fec4SmrgGal_vga_save(PGAL_VGAMODEDATA pVgaData)
181871d7fec4Smrg{
181971d7fec4Smrg   INIT_GAL(pVgaData);
182071d7fec4Smrg   pVgaData->dwSubfunction = GALFN_VGASAVE;
182171d7fec4Smrg
182271d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, pVgaData))
182371d7fec4Smrg      return 0;
182471d7fec4Smrg   else {
182571d7fec4Smrg      return 1;
182671d7fec4Smrg   }
182771d7fec4Smrg}
182871d7fec4Smrg
182971d7fec4Smrg/*--------------------------------------------------------------------------
183071d7fec4Smrg * Gal_vga_mode
183171d7fec4Smrg *
183271d7fec4Smrg * Description:	This function sets VGA register values in VGA
183371d7fec4Smrg *					structure for specified mode.
183471d7fec4Smrg *  parameters:
183571d7fec4Smrg *    pVgaData: It specifies the vga structure.
183671d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
183771d7fec4Smrg *------------------------------------------------------------------------*/
183871d7fec4SmrgBOOLEAN
183971d7fec4SmrgGal_vga_mode(PGAL_VGAMODEDATA pVgaData)
184071d7fec4Smrg{
184171d7fec4Smrg   INIT_GAL(pVgaData);
184271d7fec4Smrg   pVgaData->dwSubfunction = GALFN_VGASETMODE;
184371d7fec4Smrg
184471d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, pVgaData))
184571d7fec4Smrg      return 0;
184671d7fec4Smrg   else {
184771d7fec4Smrg      return 1;
184871d7fec4Smrg   }
184971d7fec4Smrg}
185071d7fec4Smrg
185171d7fec4Smrg/*--------------------------------------------------------------------------
185271d7fec4Smrg * Gal_pnl_enabled_in_bios
185371d7fec4Smrg *
185471d7fec4Smrg * Description:	This function gets the status of the FP in BIOS.
185571d7fec4Smrg *  parameters:
185671d7fec4Smrg *       status: returns the state of FP in Bios.
185771d7fec4Smrg *	pParam:	It specifies the panel parameters structure.
185871d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
185971d7fec4Smrg *------------------------------------------------------------------------*/
186071d7fec4SmrgBOOLEAN
186171d7fec4SmrgGal_pnl_enabled_in_bios(int *state)
186271d7fec4Smrg{
186371d7fec4Smrg   GAL_PNLBIOS pStat;
186471d7fec4Smrg
186571d7fec4Smrg   INIT_GAL(&pStat);
186671d7fec4Smrg   pStat.dwSubfunction = GALFN_PNLBIOSENABLE;
186771d7fec4Smrg
186871d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &pStat))
186971d7fec4Smrg      return 0;
187071d7fec4Smrg   else {
187171d7fec4Smrg      *state = pStat.state;
187271d7fec4Smrg      return 1;
187371d7fec4Smrg   }
187471d7fec4Smrg}
187571d7fec4Smrg
187671d7fec4Smrg/*--------------------------------------------------------------------------
187771d7fec4Smrg * Gal_pnl_info_from_bios
187871d7fec4Smrg *
187971d7fec4Smrg * Description:	This function gets the parameters of the FP in BIOS.
188071d7fec4Smrg *  parameters:
188171d7fec4Smrg *       status: returns the state of FP in Bios.
188271d7fec4Smrg *	pParam:	It specifies the panel parameters structure.
188371d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
188471d7fec4Smrg *------------------------------------------------------------------------*/
188571d7fec4SmrgBOOLEAN
188671d7fec4SmrgGal_pnl_info_from_bios(int *xres, int *yres, int *bpp, int *hz)
188771d7fec4Smrg{
188871d7fec4Smrg   GAL_PNLBIOS pStat;
188971d7fec4Smrg
189071d7fec4Smrg   INIT_GAL(&pStat);
189171d7fec4Smrg   pStat.dwSubfunction = GALFN_PNLBIOSINFO;
189271d7fec4Smrg
189371d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &pStat))
189471d7fec4Smrg      return 0;
189571d7fec4Smrg   else {
189671d7fec4Smrg      *xres = pStat.XRes;
189771d7fec4Smrg      *yres = pStat.YRes;
189871d7fec4Smrg      *bpp = pStat.Bpp;
189971d7fec4Smrg      *hz = pStat.Freq;
190071d7fec4Smrg      return 1;
190171d7fec4Smrg   }
190271d7fec4Smrg}
190371d7fec4Smrg
190471d7fec4Smrg/*--------------------------------------------------------------------------
190571d7fec4Smrg * Gal_pnl_set_params
190671d7fec4Smrg *
190771d7fec4Smrg * Description:	This function sets the panel parameters.
190871d7fec4Smrg *  parameters:
190971d7fec4Smrg *       flags:
191071d7fec4Smrg *	pParam:	It specifies the panel parameters structure.
191171d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
191271d7fec4Smrg *------------------------------------------------------------------------*/
191371d7fec4SmrgBOOLEAN
191471d7fec4SmrgGal_pnl_set_params(unsigned long flags, PPnl_PanelParams pParam)
191571d7fec4Smrg{
191671d7fec4Smrg   GAL_PNLPARAMS pStat;
191771d7fec4Smrg
191871d7fec4Smrg   INIT_GAL(&pStat);
191971d7fec4Smrg   pStat.dwSubfunction = GALFN_PNLSETPARAMS;
192071d7fec4Smrg   pParam->Flags = flags;
192171d7fec4Smrg   memcpy(&(pStat.PanelParams), pParam, sizeof(Pnl_PanelParams));
192271d7fec4Smrg
192371d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &pStat))
192471d7fec4Smrg      return 0;
192571d7fec4Smrg   else {
192671d7fec4Smrg      return 1;
192771d7fec4Smrg   }
192871d7fec4Smrg}
192971d7fec4Smrg
193071d7fec4Smrg/*--------------------------------------------------------------------------
193171d7fec4Smrg * Gal_pnl_get_params
193271d7fec4Smrg *
193371d7fec4Smrg * Description:	This function gets the panel parameters.
193471d7fec4Smrg *  parameters:
193571d7fec4Smrg *       flags:
193671d7fec4Smrg *	pParam:	It specifies the panel parameters structure.
193771d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
193871d7fec4Smrg *------------------------------------------------------------------------*/
193971d7fec4SmrgBOOLEAN
194071d7fec4SmrgGal_pnl_get_params(unsigned long flags, PPnl_PanelParams pParam)
194171d7fec4Smrg{
194271d7fec4Smrg   GAL_PNLPARAMS pStat;
194371d7fec4Smrg
194471d7fec4Smrg   INIT_GAL(&pStat);
194571d7fec4Smrg   pStat.dwSubfunction = GALFN_PNLGETPARAMS;
194671d7fec4Smrg   memcpy(&(pStat.PanelParams), pParam, sizeof(Pnl_PanelParams));
194771d7fec4Smrg   pStat.PanelParams.Flags = flags;
194871d7fec4Smrg
194971d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &pStat))
195071d7fec4Smrg      return 0;
195171d7fec4Smrg   else {
195271d7fec4Smrg      memcpy(pParam, &(pStat.PanelParams), sizeof(Pnl_PanelParams));
195371d7fec4Smrg      return 1;
195471d7fec4Smrg   }
195571d7fec4Smrg}
195671d7fec4Smrg
195771d7fec4Smrg/*--------------------------------------------------------------------------
195871d7fec4Smrg * Gal_pnl_init
195971d7fec4Smrg *
196071d7fec4Smrg * Description:	This function initializes the panel parameters.
196171d7fec4Smrg *  parameters:
196271d7fec4Smrg *	pParam:	It specifies the panel parameters structure.
196371d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
196471d7fec4Smrg *------------------------------------------------------------------------*/
196571d7fec4SmrgBOOLEAN
196671d7fec4SmrgGal_pnl_init(PPnl_PanelParams pParam)
196771d7fec4Smrg{
196871d7fec4Smrg   GAL_PNLPARAMS pStat;
196971d7fec4Smrg
197071d7fec4Smrg   INIT_GAL(&pStat);
197171d7fec4Smrg   pStat.dwSubfunction = GALFN_PNLINITPANEL;
197271d7fec4Smrg   memcpy(&(pStat.PanelParams), pParam, sizeof(Pnl_PanelParams));
197371d7fec4Smrg
197471d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &pStat))
197571d7fec4Smrg      return 0;
197671d7fec4Smrg   else
197771d7fec4Smrg      return 1;
197871d7fec4Smrg
197971d7fec4Smrg}
198071d7fec4Smrg
198171d7fec4Smrg/*--------------------------------------------------------------------------
198271d7fec4Smrg * Gal_pnl_save
198371d7fec4Smrg *
198471d7fec4Smrg * Description:	This function saves the current panel parameters.
198571d7fec4Smrg *  parameters:	none.
198671d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
198771d7fec4Smrg *------------------------------------------------------------------------*/
198871d7fec4SmrgBOOLEAN
198971d7fec4SmrgGal_pnl_save(void)
199071d7fec4Smrg{
199171d7fec4Smrg   GAL_PNLPARAMS pStat;
199271d7fec4Smrg
199371d7fec4Smrg   INIT_GAL(&pStat);
199471d7fec4Smrg   pStat.dwSubfunction = GALFN_PNLSAVESTATE;
199571d7fec4Smrg
199671d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &pStat))
199771d7fec4Smrg      return 0;
199871d7fec4Smrg   else {
199971d7fec4Smrg      return 1;
200071d7fec4Smrg   }
200171d7fec4Smrg}
200271d7fec4Smrg
200371d7fec4Smrg/*--------------------------------------------------------------------------
200471d7fec4Smrg * Gal_pnl_restore
200571d7fec4Smrg *
200671d7fec4Smrg * Description:	This function restores the current panel parameters.
200771d7fec4Smrg *  parameters:	none.
200871d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
200971d7fec4Smrg *------------------------------------------------------------------------*/
201071d7fec4SmrgBOOLEAN
201171d7fec4SmrgGal_pnl_restore(void)
201271d7fec4Smrg{
201371d7fec4Smrg   GAL_PNLPARAMS pStat;
201471d7fec4Smrg
201571d7fec4Smrg   INIT_GAL(&pStat);
201671d7fec4Smrg   pStat.dwSubfunction = GALFN_PNLRESTORESTATE;
201771d7fec4Smrg
201871d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &pStat))
201971d7fec4Smrg      return 0;
202071d7fec4Smrg   else {
202171d7fec4Smrg      return 1;
202271d7fec4Smrg   }
202371d7fec4Smrg}
202471d7fec4Smrg
202571d7fec4Smrg/*--------------------------------------------------------------------------
202671d7fec4Smrg * Gal_pnl_powerup
202771d7fec4Smrg *
202871d7fec4Smrg * Description:	This function powers up the panel.
202971d7fec4Smrg *  parameters:	none.
203071d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
203171d7fec4Smrg *------------------------------------------------------------------------*/
203271d7fec4SmrgBOOLEAN
203371d7fec4SmrgGal_pnl_powerup(void)
203471d7fec4Smrg{
203571d7fec4Smrg   GAL_BASE pStat;
203671d7fec4Smrg
203771d7fec4Smrg   INIT_GAL(&pStat);
203871d7fec4Smrg   pStat.dwSubfunction = GALFN_PNLPOWERUP;
203971d7fec4Smrg
204071d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &pStat))
204171d7fec4Smrg      return 0;
204271d7fec4Smrg   else {
204371d7fec4Smrg      return 1;
204471d7fec4Smrg   }
204571d7fec4Smrg}
204671d7fec4Smrg
204771d7fec4Smrg/*--------------------------------------------------------------------------
204871d7fec4Smrg * Gal_pnl_powerdown
204971d7fec4Smrg *
205071d7fec4Smrg * Description:	This function powers down the panel.
205171d7fec4Smrg *  parameters:	none.
205271d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
205371d7fec4Smrg *------------------------------------------------------------------------*/
205471d7fec4SmrgBOOLEAN
205571d7fec4SmrgGal_pnl_powerdown(void)
205671d7fec4Smrg{
205771d7fec4Smrg   GAL_BASE pStat;
205871d7fec4Smrg
205971d7fec4Smrg   INIT_GAL(&pStat);
206071d7fec4Smrg   pStat.dwSubfunction = GALFN_PNLPOWERDOWN;
206171d7fec4Smrg
206271d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &pStat))
206371d7fec4Smrg      return 0;
206471d7fec4Smrg   else {
206571d7fec4Smrg      return 1;
206671d7fec4Smrg   }
206771d7fec4Smrg}
206871d7fec4Smrg
206971d7fec4Smrg/*--------------------------------------------------------------------------
207071d7fec4Smrg * Gal_tv_set_params
207171d7fec4Smrg *
207271d7fec4Smrg * Description:	This function sets the tv parameters of
207371d7fec4Smrg *					tvparameters structure.
207471d7fec4Smrg *  parameters:
207571d7fec4Smrg *       flags:
207671d7fec4Smrg *	   pTV:	It specifies the tv parameters structure.
207771d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
207871d7fec4Smrg *------------------------------------------------------------------------*/
207971d7fec4SmrgBOOLEAN
208071d7fec4SmrgGal_tv_set_params(unsigned long flags, PGAL_TVPARAMS pTV)
208171d7fec4Smrg{
208271d7fec4Smrg   INIT_GAL(pTV);
208371d7fec4Smrg   pTV->dwSubfunction = GALFN_SETTVPARAMS;
208471d7fec4Smrg   pTV->dwFlags = flags;
208571d7fec4Smrg
208671d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, pTV))
208771d7fec4Smrg      return 0;
208871d7fec4Smrg   else {
208971d7fec4Smrg      return 1;
209071d7fec4Smrg   }
209171d7fec4Smrg}
209271d7fec4Smrg
209371d7fec4Smrg/*--------------------------------------------------------------------------
209471d7fec4Smrg * Gal_tv_get_params
209571d7fec4Smrg *
209671d7fec4Smrg * Description:	This function gets the tv parameters of
209771d7fec4Smrg *					tvparameters structure.
209871d7fec4Smrg *  parameters:
209971d7fec4Smrg *       flags: Dummy flag
210071d7fec4Smrg *	   pTV:	It specifies the tv parameters structure.
210171d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
210271d7fec4Smrg *------------------------------------------------------------------------*/
210371d7fec4SmrgBOOLEAN
210471d7fec4SmrgGal_tv_get_params(unsigned long flags, PGAL_TVPARAMS pTV)
210571d7fec4Smrg{
210671d7fec4Smrg   INIT_GAL(pTV);
210771d7fec4Smrg   pTV->dwSubfunction = GALFN_GETTVPARAMS;
210871d7fec4Smrg   pTV->dwFlags = flags;
210971d7fec4Smrg
211071d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, pTV))
211171d7fec4Smrg      return 0;
211271d7fec4Smrg   else
211371d7fec4Smrg      return 1;
211471d7fec4Smrg
211571d7fec4Smrg}
211671d7fec4Smrg
211771d7fec4Smrg/*--------------------------------------------------------------------------
211871d7fec4Smrg * Gal_tv_set_timings
211971d7fec4Smrg *
212071d7fec4Smrg * Description:	This function sets the tv timing registers.
212171d7fec4Smrg *  parameters:
212271d7fec4Smrg *       flags:	Dummy flag.
212371d7fec4Smrg *	   pTV:	It specifies the tv parameters structure.
212471d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
212571d7fec4Smrg *------------------------------------------------------------------------*/
212671d7fec4SmrgBOOLEAN
212771d7fec4SmrgGal_tv_set_timings(unsigned long flags, PGAL_TVTIMING pTV)
212871d7fec4Smrg{
212971d7fec4Smrg   INIT_GAL(pTV);
213071d7fec4Smrg   pTV->dwSubfunction = GALFN_SETTVTIMING;
213171d7fec4Smrg   pTV->dwFlags = flags;
213271d7fec4Smrg
213371d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, pTV))
213471d7fec4Smrg      return 0;
213571d7fec4Smrg   else {
213671d7fec4Smrg      return 1;
213771d7fec4Smrg   }
213871d7fec4Smrg}
213971d7fec4Smrg
214071d7fec4Smrg/*--------------------------------------------------------------------------
214171d7fec4Smrg * Gal_tv_get_timings
214271d7fec4Smrg *
214371d7fec4Smrg * Description:	This function gets the tv timing registers.
214471d7fec4Smrg *  parameters:
214571d7fec4Smrg *       flags:	Dummy flag.
214671d7fec4Smrg *	   pTV:	It specifies the tv parameters structure.
214771d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
214871d7fec4Smrg *------------------------------------------------------------------------*/
214971d7fec4SmrgBOOLEAN
215071d7fec4SmrgGal_tv_get_timings(unsigned long flags, PGAL_TVTIMING pTV)
215171d7fec4Smrg{
215271d7fec4Smrg   INIT_GAL(pTV);
215371d7fec4Smrg   pTV->dwSubfunction = GALFN_GETTVTIMING;
215471d7fec4Smrg   pTV->dwFlags = flags;
215571d7fec4Smrg
215671d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, pTV))
215771d7fec4Smrg      return 0;
215871d7fec4Smrg   else {
215971d7fec4Smrg      return 1;
216071d7fec4Smrg   }
216171d7fec4Smrg}
216271d7fec4Smrg
216371d7fec4Smrg/*--------------------------------------------------------------------------
216471d7fec4Smrg * Gal_set_tv_enable
216571d7fec4Smrg *
216671d7fec4Smrg * Description:	This function sets the tv state of the device .
216771d7fec4Smrg *  parameters:
216871d7fec4Smrg *     bState : set the tv state.
216971d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
217071d7fec4Smrg *------------------------------------------------------------------------*/
217171d7fec4SmrgBOOLEAN
217271d7fec4SmrgGal_set_tv_enable(int bState)
217371d7fec4Smrg{
217471d7fec4Smrg   GAL_TVPARAMS pTV;
217571d7fec4Smrg
217671d7fec4Smrg   INIT_GAL(&pTV);
217771d7fec4Smrg   pTV.dwSubfunction = GALFN_SETENABLE;
217871d7fec4Smrg   pTV.bState = bState;
217971d7fec4Smrg
218071d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &pTV))
218171d7fec4Smrg      return 0;
218271d7fec4Smrg   else {
218371d7fec4Smrg      return 1;
218471d7fec4Smrg   }
218571d7fec4Smrg}
218671d7fec4Smrg
218771d7fec4Smrg/*--------------------------------------------------------------------------
218871d7fec4Smrg * Gal_get_tv_enable
218971d7fec4Smrg *
219071d7fec4Smrg * Description:	This function gets the tv state of the device .
219171d7fec4Smrg *  parameters:
219271d7fec4Smrg *     bState : get the tv state.
219371d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
219471d7fec4Smrg *------------------------------------------------------------------------*/
219571d7fec4SmrgBOOLEAN
219671d7fec4SmrgGal_get_tv_enable(unsigned int *bState)
219771d7fec4Smrg{
219871d7fec4Smrg   GAL_TVPARAMS pTV;
219971d7fec4Smrg
220071d7fec4Smrg   INIT_GAL(&pTV);
220171d7fec4Smrg   pTV.dwSubfunction = GALFN_GETENABLE;
220271d7fec4Smrg
220371d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &pTV)) {
220471d7fec4Smrg      *bState = 0;
220571d7fec4Smrg      return 0;
220671d7fec4Smrg   } else {
220771d7fec4Smrg      *bState = pTV.bState;
220871d7fec4Smrg      return 1;
220971d7fec4Smrg   }
221071d7fec4Smrg}
221171d7fec4Smrg
221271d7fec4Smrg/*--------------------------------------------------------------------------
221371d7fec4Smrg * Gal_is_tv_mode_supported
221471d7fec4Smrg *
221571d7fec4Smrg * Description:	This function checks the tv mode is supported or not.
221671d7fec4Smrg *  parameters:
221771d7fec4Smrg *       flags: Dummy flag
221871d7fec4Smrg *	   pTV:	It specifies the tv parameters structure.
221971d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
222071d7fec4Smrg *------------------------------------------------------------------------*/
222171d7fec4SmrgBOOLEAN
222271d7fec4SmrgGal_is_tv_mode_supported(unsigned long flags, PGAL_TVPARAMS pTV, int *bState)
222371d7fec4Smrg{
222471d7fec4Smrg   INIT_GAL(pTV);
222571d7fec4Smrg   pTV->dwSubfunction = GALFN_ISTVMODESUPPORTED;
222671d7fec4Smrg   pTV->dwFlags = flags;
222771d7fec4Smrg
222871d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, pTV)) {
222971d7fec4Smrg      return 0;
223071d7fec4Smrg   } else {
223171d7fec4Smrg      *bState = pTV->bState;
223271d7fec4Smrg      return 1;
223371d7fec4Smrg   }
223471d7fec4Smrg}
223571d7fec4Smrg
223671d7fec4Smrg/** Video **********************************************************/
223771d7fec4Smrg
223871d7fec4Smrg/*--------------------------------------------------------------------------
223971d7fec4Smrg * Gal_set_video_enable
224071d7fec4Smrg *
224171d7fec4Smrg * Description:	This function sets the video enable state.
224271d7fec4Smrg *  parameters:
224371d7fec4Smrg *      enable: Its value is '1' to enable video and '0' to disable video.
224471d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
224571d7fec4Smrg *------------------------------------------------------------------------*/
224671d7fec4SmrgBOOLEAN
224771d7fec4SmrgGal_set_video_enable(int enable)
224871d7fec4Smrg{
224971d7fec4Smrg   GAL_VIDEOENABLE sSetVideo;
225071d7fec4Smrg
225171d7fec4Smrg   INIT_GAL(&sSetVideo);
225271d7fec4Smrg   sSetVideo.dwSubfunction = GALFN_SETVIDEOENABLE;
225371d7fec4Smrg   sSetVideo.enable = enable;
225471d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetVideo))
225571d7fec4Smrg      return 0;
225671d7fec4Smrg   else
225771d7fec4Smrg      return 1;
225871d7fec4Smrg}
225971d7fec4Smrg
226071d7fec4Smrg/*--------------------------------------------------------------------------
226171d7fec4Smrg * Gal_set_video_format
226271d7fec4Smrg *
226371d7fec4Smrg * Description:	This function sets the video format.
226471d7fec4Smrg *  parameters:
226571d7fec4Smrg *      format: Its video format value.
226671d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
226771d7fec4Smrg *------------------------------------------------------------------------*/
226871d7fec4SmrgBOOLEAN
226971d7fec4SmrgGal_set_video_format(int format)
227071d7fec4Smrg{
227171d7fec4Smrg   GAL_VIDEOFORMAT sSetVideo;
227271d7fec4Smrg
227371d7fec4Smrg   INIT_GAL(&sSetVideo);
227471d7fec4Smrg   sSetVideo.dwSubfunction = GALFN_SETVIDEOFORMAT;
227571d7fec4Smrg   sSetVideo.format = format;
227671d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetVideo))
227771d7fec4Smrg      return 0;
227871d7fec4Smrg   else
227971d7fec4Smrg      return 1;
228071d7fec4Smrg}
228171d7fec4Smrg
228271d7fec4Smrg/*--------------------------------------------------------------------------
228371d7fec4Smrg * Gal_set_video_size
228471d7fec4Smrg *
228571d7fec4Smrg * Description:	This function sets the video size.
228671d7fec4Smrg *  parameters:
228771d7fec4Smrg *       width: Width of the video.
228871d7fec4Smrg *      height: Height of the video.
228971d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
229071d7fec4Smrg *------------------------------------------------------------------------*/
229171d7fec4SmrgBOOLEAN
229271d7fec4SmrgGal_set_video_size(unsigned short width, unsigned short height)
229371d7fec4Smrg{
229471d7fec4Smrg   GAL_VIDEOSIZE sSetVideo;
229571d7fec4Smrg
229671d7fec4Smrg   INIT_GAL(&sSetVideo);
229771d7fec4Smrg   sSetVideo.dwSubfunction = GALFN_SETVIDEOSIZE;
229871d7fec4Smrg   sSetVideo.width = width;
229971d7fec4Smrg   sSetVideo.height = height;
230071d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetVideo))
230171d7fec4Smrg      return 0;
230271d7fec4Smrg   else
230371d7fec4Smrg      return 1;
230471d7fec4Smrg}
230571d7fec4Smrg
230671d7fec4Smrg/*--------------------------------------------------------------------------
230771d7fec4Smrg * Gal_set_video_offset
230871d7fec4Smrg *
230971d7fec4Smrg * Description:	This function sets the video size.
231071d7fec4Smrg *  parameters:
231171d7fec4Smrg *      offset: Offset of the video.
231271d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
231371d7fec4Smrg *------------------------------------------------------------------------*/
231471d7fec4SmrgBOOLEAN
231571d7fec4SmrgGal_set_video_offset(unsigned long offset)
231671d7fec4Smrg{
231771d7fec4Smrg   GAL_VIDEOOFFSET sSetVideo;
231871d7fec4Smrg
231971d7fec4Smrg   INIT_GAL(&sSetVideo);
232071d7fec4Smrg   sSetVideo.dwSubfunction = GALFN_SETVIDEOOFFSET;
232171d7fec4Smrg   sSetVideo.offset = offset;
232271d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetVideo))
232371d7fec4Smrg      return 0;
232471d7fec4Smrg   else
232571d7fec4Smrg      return 1;
232671d7fec4Smrg}
232771d7fec4Smrg
232871d7fec4Smrg/*--------------------------------------------------------------------------
232971d7fec4Smrg * Gal_set_video_window
233071d7fec4Smrg *
233171d7fec4Smrg * Description:	This function sets the video window.
233271d7fec4Smrg *  parameters:
233371d7fec4Smrg *			 x: X co-ordinate of the Video screen.
233471d7fec4Smrg *			 y: Y co-ordinate of the Video screen.
233571d7fec4Smrg *			 w: Width of the Video screen.
233671d7fec4Smrg *           h: Height of the Video screen.
233771d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
233871d7fec4Smrg *------------------------------------------------------------------------*/
233971d7fec4SmrgBOOLEAN
234071d7fec4SmrgGal_set_video_window(short x, short y, short w, short h)
234171d7fec4Smrg{
234271d7fec4Smrg   GAL_VIDEOWINDOW sSetVideo;
234371d7fec4Smrg
234471d7fec4Smrg   INIT_GAL(&sSetVideo);
234571d7fec4Smrg   sSetVideo.dwSubfunction = GALFN_SETVIDEOWINDOW;
234671d7fec4Smrg   sSetVideo.x = x;
234771d7fec4Smrg   sSetVideo.y = y;
234871d7fec4Smrg   sSetVideo.w = w;
234971d7fec4Smrg   sSetVideo.h = h;
235071d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetVideo))
235171d7fec4Smrg      return 0;
235271d7fec4Smrg   else
235371d7fec4Smrg      return 1;
235471d7fec4Smrg}
235571d7fec4Smrg
235671d7fec4Smrg/*--------------------------------------------------------------------------
235771d7fec4Smrg * Gal_set_video_scale
235871d7fec4Smrg *
235971d7fec4Smrg * Description:	This function sets the video scale.
236071d7fec4Smrg *  parameters:
236171d7fec4Smrg *		  srcw: Source width.
236271d7fec4Smrg *		  srch: Source height.
236371d7fec4Smrg *		  dstw: Destination width.
236471d7fec4Smrg *        dsth: Destination height.
236571d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
236671d7fec4Smrg *------------------------------------------------------------------------*/
236771d7fec4SmrgBOOLEAN
236871d7fec4SmrgGal_set_video_scale(unsigned short srcw, unsigned short srch,
236971d7fec4Smrg		    unsigned short dstw, unsigned short dsth)
237071d7fec4Smrg{
237171d7fec4Smrg   GAL_VIDEOSCALE sSetVideo;
237271d7fec4Smrg
237371d7fec4Smrg   INIT_GAL(&sSetVideo);
237471d7fec4Smrg   sSetVideo.dwSubfunction = GALFN_SETVIDEOSCALE;
237571d7fec4Smrg   sSetVideo.srcw = srcw;
237671d7fec4Smrg   sSetVideo.srch = srch;
237771d7fec4Smrg   sSetVideo.dstw = dstw;
237871d7fec4Smrg   sSetVideo.dsth = dsth;
237971d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetVideo))
238071d7fec4Smrg      return 0;
238171d7fec4Smrg   else
238271d7fec4Smrg      return 1;
238371d7fec4Smrg}
238471d7fec4Smrg
238571d7fec4Smrg/*--------------------------------------------------------------------------
238671d7fec4Smrg * Gal_set_video_filter.
238771d7fec4Smrg *
238871d7fec4Smrg * Description:	This function sets the video filter.
238971d7fec4Smrg *  parameters:
239071d7fec4Smrg *	   xfilter: X-co-ordinate filter.
239171d7fec4Smrg *	   yfilter: Y-co-ordinate filter.
239271d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
239371d7fec4Smrg *------------------------------------------------------------------------*/
239471d7fec4SmrgBOOLEAN
239571d7fec4SmrgGal_set_video_filter(int xfilter, int yfilter)
239671d7fec4Smrg{
239771d7fec4Smrg   GAL_VIDEOFILTER sSetVideo;
239871d7fec4Smrg
239971d7fec4Smrg   INIT_GAL(&sSetVideo);
240071d7fec4Smrg   sSetVideo.dwSubfunction = GALFN_SETVIDEOFILTER;
240171d7fec4Smrg   sSetVideo.xfilter = xfilter;
240271d7fec4Smrg   sSetVideo.yfilter = yfilter;
240371d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetVideo))
240471d7fec4Smrg      return 0;
240571d7fec4Smrg   else
240671d7fec4Smrg      return 1;
240771d7fec4Smrg}
240871d7fec4Smrg
240971d7fec4Smrg/*--------------------------------------------------------------------------
241071d7fec4Smrg * Gal_set_video_color_key.
241171d7fec4Smrg *
241271d7fec4Smrg * Description:	This function sets the video color key.
241371d7fec4Smrg *  parameters:
241471d7fec4Smrg *	       key: Color key.
241571d7fec4Smrg *	      mask: Color mask.
241671d7fec4Smrg *  bluescreen: Value for bluescreen.
241771d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
241871d7fec4Smrg *------------------------------------------------------------------------*/
241971d7fec4SmrgBOOLEAN
242071d7fec4SmrgGal_set_video_color_key(unsigned long key, unsigned long mask, int bluescreen)
242171d7fec4Smrg{
242271d7fec4Smrg   GAL_VIDEOCOLORKEY sSetVideo;
242371d7fec4Smrg
242471d7fec4Smrg   INIT_GAL(&sSetVideo);
242571d7fec4Smrg   sSetVideo.dwSubfunction = GALFN_SETVIDEOCOLORKEY;
242671d7fec4Smrg   sSetVideo.key = key;
242771d7fec4Smrg   sSetVideo.mask = mask;
242871d7fec4Smrg   sSetVideo.bluescreen = bluescreen;
242971d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetVideo))
243071d7fec4Smrg      return 0;
243171d7fec4Smrg   else
243271d7fec4Smrg      return 1;
243371d7fec4Smrg}
243471d7fec4Smrg
243571d7fec4Smrg/*--------------------------------------------------------------------------
243671d7fec4Smrg * Gal_set_video_downscale_enable.
243771d7fec4Smrg *
243871d7fec4Smrg * Description:	This function sets the video downscale enable state.
243971d7fec4Smrg *  parameters:
244071d7fec4Smrg *	    enable: Value for enable or disable the video downscale.
244171d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
244271d7fec4Smrg *------------------------------------------------------------------------*/
244371d7fec4SmrgBOOLEAN
244471d7fec4SmrgGal_set_video_downscale_enable(int enable)
244571d7fec4Smrg{
244671d7fec4Smrg   GAL_VIDEODOWNSCALEENABLE sSetVideo;
244771d7fec4Smrg
244871d7fec4Smrg   INIT_GAL(&sSetVideo);
244971d7fec4Smrg   sSetVideo.dwSubfunction = GALFN_SETVIDEODOWNSCALEENABLE;
245071d7fec4Smrg   sSetVideo.enable = enable;
245171d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetVideo))
245271d7fec4Smrg      return 0;
245371d7fec4Smrg   else
245471d7fec4Smrg      return 1;
245571d7fec4Smrg}
245671d7fec4Smrg
245771d7fec4Smrg/*--------------------------------------------------------------------------
245871d7fec4Smrg * Gal_set_video_downscale_config.
245971d7fec4Smrg *
246071d7fec4Smrg * Description:	This function sets the video downscale configuration.
246171d7fec4Smrg *  parameters:
246271d7fec4Smrg *	      type: Video down scale type.
246371d7fec4Smrg *			 m: Factor for the Video overlay window.
246471d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
246571d7fec4Smrg *------------------------------------------------------------------------*/
246671d7fec4SmrgBOOLEAN
246771d7fec4SmrgGal_set_video_downscale_config(unsigned short type, unsigned short m)
246871d7fec4Smrg{
246971d7fec4Smrg   GAL_VIDEODOWNSCALECONFIG sSetVideo;
247071d7fec4Smrg
247171d7fec4Smrg   INIT_GAL(&sSetVideo);
247271d7fec4Smrg   sSetVideo.dwSubfunction = GALFN_SETVIDEODOWNSCALECONFIG;
247371d7fec4Smrg   sSetVideo.type = type;
247471d7fec4Smrg   sSetVideo.m = m;
247571d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetVideo))
247671d7fec4Smrg      return 0;
247771d7fec4Smrg   else
247871d7fec4Smrg      return 1;
247971d7fec4Smrg}
248071d7fec4Smrg
248171d7fec4Smrg/*--------------------------------------------------------------------------
248271d7fec4Smrg * Gal_set_video_downscale_coefficients.
248371d7fec4Smrg *
248471d7fec4Smrg * Description:	This function sets the video downscale coefficients.
248571d7fec4Smrg *  parameters:
248671d7fec4Smrg *	     coef1: Video downscale filter coefficient.
248771d7fec4Smrg *	     coef2: Video downscale filter coefficient.
248871d7fec4Smrg *	     coef3: Video downscale filter coefficient.
248971d7fec4Smrg *	     coef4: Video downscale filter coefficient.
249071d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
249171d7fec4Smrg *------------------------------------------------------------------------*/
249271d7fec4SmrgBOOLEAN
249371d7fec4SmrgGal_set_video_downscale_coefficients(unsigned short coef1,
249471d7fec4Smrg				     unsigned short coef2,
249571d7fec4Smrg				     unsigned short coef3,
249671d7fec4Smrg				     unsigned short coef4)
249771d7fec4Smrg{
249871d7fec4Smrg   GAL_VIDEODOWNSCALECOEFF sSetVideo;
249971d7fec4Smrg
250071d7fec4Smrg   INIT_GAL(&sSetVideo);
250171d7fec4Smrg   sSetVideo.dwSubfunction = GALFN_SETVIDEODOWNSCALECOEFF;
250271d7fec4Smrg   sSetVideo.coef1 = coef1;
250371d7fec4Smrg   sSetVideo.coef2 = coef2;
250471d7fec4Smrg   sSetVideo.coef3 = coef3;
250571d7fec4Smrg   sSetVideo.coef4 = coef4;
250671d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetVideo))
250771d7fec4Smrg      return 0;
250871d7fec4Smrg   else
250971d7fec4Smrg      return 1;
251071d7fec4Smrg}
251171d7fec4Smrg
251271d7fec4Smrg/*--------------------------------------------------------------------------
251371d7fec4Smrg * Gal_set_video_source.
251471d7fec4Smrg *
251571d7fec4Smrg * Description:	This function sets the video source to either memory or Direct
251671d7fec4Smrg *				VIP
251771d7fec4Smrg *  parameters:
251871d7fec4Smrg *	    source: Video source.
251971d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
252071d7fec4Smrg *------------------------------------------------------------------------*/
252171d7fec4SmrgBOOLEAN
252271d7fec4SmrgGal_set_video_source(int source)
252371d7fec4Smrg{
252471d7fec4Smrg   GAL_VIDEOSOURCE sSetVideo;
252571d7fec4Smrg
252671d7fec4Smrg   INIT_GAL(&sSetVideo);
252771d7fec4Smrg   sSetVideo.dwSubfunction = GALFN_SETVIDEOSOURCE;
252871d7fec4Smrg   sSetVideo.source = source;
252971d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetVideo))
253071d7fec4Smrg      return 0;
253171d7fec4Smrg   else
253271d7fec4Smrg      return 1;
253371d7fec4Smrg}
253471d7fec4Smrg
253571d7fec4Smrg/*--------------------------------------------------------------------------
253671d7fec4Smrg * Gal_set_video_interlaced
253771d7fec4Smrg *
253871d7fec4Smrg * Description:	This function configures the Video processor video overlay mode
253971d7fec4Smrg *				to be interlaced YUV.
254071d7fec4Smrg *  parameters:
254171d7fec4Smrg *	    enable: Value used to enable or disalbe the Video interlaced.
254271d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
254371d7fec4Smrg *------------------------------------------------------------------------*/
254471d7fec4Smrg
254571d7fec4SmrgBOOLEAN
254671d7fec4SmrgGal_set_video_interlaced(int enable)
254771d7fec4Smrg{
254871d7fec4Smrg   GAL_SETVIDEOINTERLACED sSetVideo;
254971d7fec4Smrg
255071d7fec4Smrg   INIT_GAL(&sSetVideo);
255171d7fec4Smrg   sSetVideo.dwSubfunction = GALFN_SETVIDEOINTERLACED;
255271d7fec4Smrg   sSetVideo.enable = enable;
255371d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetVideo))
255471d7fec4Smrg      return 0;
255571d7fec4Smrg   else
255671d7fec4Smrg      return 1;
255771d7fec4Smrg}
255871d7fec4Smrg
255971d7fec4Smrg/*--------------------------------------------------------------------------
256071d7fec4Smrg * Gal_set_video_color_space
256171d7fec4Smrg *
256271d7fec4Smrg * Description:	This function configures the Video processor to prcoess
256371d7fec4Smrg *				graphics and video in either YUV or RGB color space.
256471d7fec4Smrg *
256571d7fec4Smrg *  parameters:
256671d7fec4Smrg *	    enable: Value used to enable or disalbe the Video color space.
256771d7fec4Smrg *      return:	'1' was returned on success otherwise '0' was returned.
256871d7fec4Smrg *------------------------------------------------------------------------*/
256971d7fec4SmrgBOOLEAN
257071d7fec4SmrgGal_set_color_space_YUV(int colorspace)
257171d7fec4Smrg{
257271d7fec4Smrg   GAL_COLORSPACEYUV sSetVideo;
257371d7fec4Smrg
257471d7fec4Smrg   INIT_GAL(&sSetVideo);
257571d7fec4Smrg   sSetVideo.dwSubfunction = GALFN_SETVIDEOCOLORSPACE;
257671d7fec4Smrg   sSetVideo.colorspace = colorspace;
257771d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetVideo))
257871d7fec4Smrg      return 0;
257971d7fec4Smrg   else
258071d7fec4Smrg      return 1;
258171d7fec4Smrg}
258271d7fec4Smrg
258371d7fec4Smrg/*--------------------------------------------------------------------------
258471d7fec4Smrg * Gal_set_video_cursor.
258571d7fec4Smrg *
258671d7fec4Smrg *  Description: This function configures the Video Hardware cursor.
258771d7fec4Smrg *
258871d7fec4Smrg *
258971d7fec4Smrg *   parameters:
259071d7fec4Smrg *          key: color key.
259171d7fec4Smrg *		   mask: color mask.
259271d7fec4Smrg *select_color2: selected for color2.
259371d7fec4Smrg *		 color1: color1 value.
259471d7fec4Smrg *		 color2: color2 value.
259571d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
259671d7fec4Smrg *------------------------------------------------------------------------*/
259771d7fec4SmrgBOOLEAN
259871d7fec4SmrgGal_set_video_cursor(unsigned long key,
259971d7fec4Smrg		     unsigned long mask,
260071d7fec4Smrg		     unsigned short select_color2,
260171d7fec4Smrg		     unsigned long color1, unsigned long color2)
260271d7fec4Smrg{
260371d7fec4Smrg   GAL_VIDEOCURSOR sSetVideo;
260471d7fec4Smrg
260571d7fec4Smrg   INIT_GAL(&sSetVideo);
260671d7fec4Smrg   sSetVideo.dwSubfunction = GALFN_SETVIDEOCURSOR;
260771d7fec4Smrg   sSetVideo.key = key;
260871d7fec4Smrg   sSetVideo.mask = mask;
260971d7fec4Smrg   sSetVideo.select_color2 = select_color2;
261071d7fec4Smrg   sSetVideo.color1 = color1;
261171d7fec4Smrg   sSetVideo.color2 = color2;
261271d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetVideo))
261371d7fec4Smrg      return 0;
261471d7fec4Smrg   else
261571d7fec4Smrg      return 1;
261671d7fec4Smrg}
261771d7fec4Smrg
261871d7fec4Smrg/*--------------------------------------------------------------------------
261971d7fec4Smrg * Gal_set_video_request.
262071d7fec4Smrg *
262171d7fec4Smrg *  Description: This function sets the horizontal(pixel) and vertical(line)
262271d7fec4Smrg *				 video request values.
262371d7fec4Smrg *
262471d7fec4Smrg *   parameters:
262571d7fec4Smrg *            x: X video request value.
262671d7fec4Smrg *		      y: Y video request value.
262771d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
262871d7fec4Smrg *------------------------------------------------------------------------*/
262971d7fec4SmrgBOOLEAN
263071d7fec4SmrgGal_set_video_request(short x, short y)
263171d7fec4Smrg{
263271d7fec4Smrg   GAL_VIDEOREQUEST sSetVideo;
263371d7fec4Smrg
263471d7fec4Smrg   INIT_GAL(&sSetVideo);
263571d7fec4Smrg   sSetVideo.dwSubfunction = GALFN_SETVIDEOREQUEST;
263671d7fec4Smrg   sSetVideo.x = x;
263771d7fec4Smrg   sSetVideo.y = y;
263871d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetVideo))
263971d7fec4Smrg      return 0;
264071d7fec4Smrg   else
264171d7fec4Smrg      return 1;
264271d7fec4Smrg}
264371d7fec4Smrg
264471d7fec4Smrg/*--------------------------------------------------------------------------
264571d7fec4Smrg * Gal_set_alpha_enable.
264671d7fec4Smrg *
264771d7fec4Smrg *  Description: This function enables or disables the currently selected
264871d7fec4Smrg *				 alpha region.
264971d7fec4Smrg *
265071d7fec4Smrg *   parameters:
265171d7fec4Smrg *       enable: Value to enalbe or disable alha region.
265271d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
265371d7fec4Smrg *------------------------------------------------------------------------*/
265471d7fec4SmrgBOOLEAN
265571d7fec4SmrgGal_set_alpha_enable(int enable)
265671d7fec4Smrg{
265771d7fec4Smrg   GAL_ALPHAENABLE sSetVideo;
265871d7fec4Smrg
265971d7fec4Smrg   INIT_GAL(&sSetVideo);
266071d7fec4Smrg   sSetVideo.dwSubfunction = GALFN_SETALPHAENABLE;
266171d7fec4Smrg   sSetVideo.enable = enable;
266271d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetVideo))
266371d7fec4Smrg      return 0;
266471d7fec4Smrg   else
266571d7fec4Smrg      return 1;
266671d7fec4Smrg}
266771d7fec4Smrg
266871d7fec4Smrg/*--------------------------------------------------------------------------
266971d7fec4Smrg * Gal_get_alpha_enable.
267071d7fec4Smrg *
267171d7fec4Smrg *  Description: This function gets the alpha enable state.
267271d7fec4Smrg *
267371d7fec4Smrg *   parameters:
267471d7fec4Smrg *       enable: Pointer to get the enable state.
267571d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
267671d7fec4Smrg *------------------------------------------------------------------------*/
267771d7fec4SmrgBOOLEAN
267871d7fec4SmrgGal_get_alpha_enable(int *enable)
267971d7fec4Smrg{
268071d7fec4Smrg   GAL_ALPHAENABLE sGetalphaenable;
268171d7fec4Smrg
268271d7fec4Smrg   INIT_GAL(&sGetalphaenable);
268371d7fec4Smrg   sGetalphaenable.dwSubfunction = GALFN_GETALPHAENABLE;
268471d7fec4Smrg
268571d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sGetalphaenable))
268671d7fec4Smrg      return 0;
268771d7fec4Smrg   else
268871d7fec4Smrg
268971d7fec4Smrg      *enable = sGetalphaenable.enable;
269071d7fec4Smrg   return 1;
269171d7fec4Smrg}
269271d7fec4Smrg
269371d7fec4Smrg/*--------------------------------------------------------------------------
269471d7fec4Smrg * Gal_set_alpha_window
269571d7fec4Smrg *
269671d7fec4Smrg *  Description: This function sets the size of the currently selected
269771d7fec4Smrg *				 alpha region.
269871d7fec4Smrg *   parameters:
269971d7fec4Smrg *			  x: X co-ordinate of the alpha region.
270071d7fec4Smrg *			  y: Y co-ordinate of the alpha region.
270171d7fec4Smrg *	      width: Width of the alpha region.
270271d7fec4Smrg *		 height: Height of the alpha region.
270371d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
270471d7fec4Smrg *------------------------------------------------------------------------*/
270571d7fec4SmrgBOOLEAN
270671d7fec4SmrgGal_set_alpha_window(short x, short y,
270771d7fec4Smrg		     unsigned short width, unsigned short height)
270871d7fec4Smrg{
270971d7fec4Smrg   GAL_ALPHAWINDOW sSetVideo;
271071d7fec4Smrg
271171d7fec4Smrg   INIT_GAL(&sSetVideo);
271271d7fec4Smrg   sSetVideo.dwSubfunction = GALFN_SETALPHAWINDOW;
271371d7fec4Smrg   sSetVideo.x = x;
271471d7fec4Smrg   sSetVideo.y = y;
271571d7fec4Smrg   sSetVideo.width = width;
271671d7fec4Smrg   sSetVideo.height = height;
271771d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetVideo))
271871d7fec4Smrg      return 0;
271971d7fec4Smrg   else
272071d7fec4Smrg      return 1;
272171d7fec4Smrg}
272271d7fec4Smrg
272371d7fec4Smrg/*--------------------------------------------------------------------------
272471d7fec4Smrg * Gal_get_alpha_size
272571d7fec4Smrg *
272671d7fec4Smrg *  Description: This function gets the size of the currently selected
272771d7fec4Smrg *				 alpha region.
272871d7fec4Smrg *   parameters:
272971d7fec4Smrg *			  x: X co-ordinate of the alpha region.
273071d7fec4Smrg *			  y: Y co-ordinate of the alpha region.
273171d7fec4Smrg *	      width: Width of the alpha region.
273271d7fec4Smrg *		 height: Height of the alpha region.
273371d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
273471d7fec4Smrg *------------------------------------------------------------------------*/
273571d7fec4SmrgBOOLEAN
273671d7fec4SmrgGal_get_alpha_size(unsigned short *x, unsigned short *y,
273771d7fec4Smrg		   unsigned short *width, unsigned short *height)
273871d7fec4Smrg{
273971d7fec4Smrg   GAL_ALPHASIZE sGetalphasize;
274071d7fec4Smrg
274171d7fec4Smrg   INIT_GAL(&sGetalphasize);
274271d7fec4Smrg   sGetalphasize.dwSubfunction = GALFN_GETALPHASIZE;
274371d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sGetalphasize))
274471d7fec4Smrg      return 0;
274571d7fec4Smrg   else {
274671d7fec4Smrg      *x = *(sGetalphasize.x);
274771d7fec4Smrg      *y = *(sGetalphasize.y);
274871d7fec4Smrg      *width = *(sGetalphasize.width);
274971d7fec4Smrg      *height = *(sGetalphasize.height);
275071d7fec4Smrg      return 1;
275171d7fec4Smrg   }
275271d7fec4Smrg}
275371d7fec4Smrg
275471d7fec4Smrg/*--------------------------------------------------------------------------
275571d7fec4Smrg * Gal_set_alpha_value
275671d7fec4Smrg *
275771d7fec4Smrg *  Description: This function sets the alpha value for the selected alpha
275871d7fec4Smrg *				 region. It also specifies an increment/decrement value for
275971d7fec4Smrg *				 fading.
276071d7fec4Smrg *   parameters:
276171d7fec4Smrg *		  alpha: Alpha value for the currently selected alpha region.
276271d7fec4Smrg *		  delta: Gives the increment/decrement fading value.
276371d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
276471d7fec4Smrg *------------------------------------------------------------------------*/
276571d7fec4SmrgBOOLEAN
276671d7fec4SmrgGal_set_alpha_value(unsigned char alpha, char delta)
276771d7fec4Smrg{
276871d7fec4Smrg   GAL_ALPHAVALUE sSetVideo;
276971d7fec4Smrg
277071d7fec4Smrg   INIT_GAL(&sSetVideo);
277171d7fec4Smrg   sSetVideo.dwSubfunction = GALFN_SETALPHAVALUE;
277271d7fec4Smrg   sSetVideo.alpha = alpha;
277371d7fec4Smrg   sSetVideo.delta = delta;
277471d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetVideo))
277571d7fec4Smrg      return 0;
277671d7fec4Smrg   else
277771d7fec4Smrg      return 1;
277871d7fec4Smrg}
277971d7fec4Smrg
278071d7fec4Smrg/*--------------------------------------------------------------------------
278171d7fec4Smrg * Gal_get_alpha_value
278271d7fec4Smrg *
278371d7fec4Smrg *  Description: This function gets the alpha value for the selected alpha
278471d7fec4Smrg *				 region. It also gets increment/decrement value for
278571d7fec4Smrg *				 fading.
278671d7fec4Smrg *   parameters:
278771d7fec4Smrg *		  alpha: Alpha value for the currently selected alpha region.
278871d7fec4Smrg *		  delta: Gives the increment/decrement fading value.
278971d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
279071d7fec4Smrg *------------------------------------------------------------------------*/
279171d7fec4SmrgBOOLEAN
279271d7fec4SmrgGal_get_alpha_value(unsigned char *alpha, char *delta)
279371d7fec4Smrg{
279471d7fec4Smrg   GAL_ALPHAVALUE sGetalphavalue;
279571d7fec4Smrg
279671d7fec4Smrg   INIT_GAL(&sGetalphavalue);
279771d7fec4Smrg   sGetalphavalue.dwSubfunction = GALFN_GETALPHAVALUE;
279871d7fec4Smrg
279971d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sGetalphavalue))
280071d7fec4Smrg      return 0;
280171d7fec4Smrg   else {
280271d7fec4Smrg      *alpha = sGetalphavalue.alpha;
280371d7fec4Smrg      *delta = sGetalphavalue.delta;
280471d7fec4Smrg      return 1;
280571d7fec4Smrg   }
280671d7fec4Smrg}
280771d7fec4Smrg
280871d7fec4Smrg/*--------------------------------------------------------------------------
280971d7fec4Smrg * Gal_set_alpha_priority
281071d7fec4Smrg *
281171d7fec4Smrg *  Description: This function sets the priority of the selected alpha
281271d7fec4Smrg *				 region.
281371d7fec4Smrg *   parameters:
281471d7fec4Smrg *	   priority: Gives the priority value.
281571d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
281671d7fec4Smrg *------------------------------------------------------------------------*/
281771d7fec4SmrgBOOLEAN
281871d7fec4SmrgGal_set_alpha_priority(int priority)
281971d7fec4Smrg{
282071d7fec4Smrg   GAL_ALPHAPRIORITY sSetVideo;
282171d7fec4Smrg
282271d7fec4Smrg   INIT_GAL(&sSetVideo);
282371d7fec4Smrg   sSetVideo.dwSubfunction = GALFN_SETALPHAPRIORITY;
282471d7fec4Smrg   sSetVideo.priority = priority;
282571d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetVideo))
282671d7fec4Smrg      return 0;
282771d7fec4Smrg   else
282871d7fec4Smrg      return 1;
282971d7fec4Smrg}
283071d7fec4Smrg
283171d7fec4Smrg/*--------------------------------------------------------------------------
283271d7fec4Smrg * Gal_get_alpha_priority
283371d7fec4Smrg *
283471d7fec4Smrg *  Description: This function gets the priority of the selected alpha
283571d7fec4Smrg *				 region.
283671d7fec4Smrg *   parameters:
283771d7fec4Smrg *	   priority: Gives the priority value.
283871d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
283971d7fec4Smrg *------------------------------------------------------------------------*/
284071d7fec4SmrgBOOLEAN
284171d7fec4SmrgGal_get_alpha_priority(int *priority)
284271d7fec4Smrg{
284371d7fec4Smrg   GAL_ALPHAPRIORITY sGetalphapriority;
284471d7fec4Smrg
284571d7fec4Smrg   INIT_GAL(&sGetalphapriority);
284671d7fec4Smrg   sGetalphapriority.dwSubfunction = GALFN_GETALPHAPRIORITY;
284771d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sGetalphapriority))
284871d7fec4Smrg      return 0;
284971d7fec4Smrg   else {
285071d7fec4Smrg      *priority = sGetalphapriority.priority;
285171d7fec4Smrg      return 1;
285271d7fec4Smrg   }
285371d7fec4Smrg}
285471d7fec4Smrg
285571d7fec4Smrg/*--------------------------------------------------------------------------
285671d7fec4Smrg * Gal_set_alpha_color
285771d7fec4Smrg *
285871d7fec4Smrg *  Description: This function sets the color to be displayed inside the
285971d7fec4Smrg *				 currently of the selected alpha window.
286071d7fec4Smrg *   parameters:
286171d7fec4Smrg *	      color: Gives the color value to be displayed.
286271d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
286371d7fec4Smrg *------------------------------------------------------------------------*/
286471d7fec4SmrgBOOLEAN
286571d7fec4SmrgGal_set_alpha_color(unsigned long color)
286671d7fec4Smrg{
286771d7fec4Smrg   GAL_ALPHACOLOR sSetVideo;
286871d7fec4Smrg
286971d7fec4Smrg   INIT_GAL(&sSetVideo);
287071d7fec4Smrg   sSetVideo.dwSubfunction = GALFN_SETALPHACOLOR;
287171d7fec4Smrg   sSetVideo.color = color;
287271d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetVideo))
287371d7fec4Smrg      return 0;
287471d7fec4Smrg   else
287571d7fec4Smrg      return 1;
287671d7fec4Smrg}
287771d7fec4Smrg
287871d7fec4Smrg/*--------------------------------------------------------------------------
287971d7fec4Smrg * Gal_get_alpha_color
288071d7fec4Smrg *
288171d7fec4Smrg *  Description: This function gets the color to be displayed inside the
288271d7fec4Smrg *				 currently of the selected alpha window.
288371d7fec4Smrg *   parameters:
288471d7fec4Smrg *	      color: Gives the color value to be displayed.
288571d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
288671d7fec4Smrg *------------------------------------------------------------------------*/
288771d7fec4SmrgBOOLEAN
288871d7fec4SmrgGal_get_alpha_color(unsigned long *color)
288971d7fec4Smrg{
289071d7fec4Smrg   GAL_ALPHACOLOR sGetalphacolor;
289171d7fec4Smrg
289271d7fec4Smrg   INIT_GAL(&sGetalphacolor);
289371d7fec4Smrg   sGetalphacolor.dwSubfunction = GALFN_GETALPHACOLOR;
289471d7fec4Smrg
289571d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sGetalphacolor))
289671d7fec4Smrg      return 0;
289771d7fec4Smrg   else {
289871d7fec4Smrg      *color = sGetalphacolor.color;
289971d7fec4Smrg      return 1;
290071d7fec4Smrg   }
290171d7fec4Smrg}
290271d7fec4Smrg
290371d7fec4Smrg/*--------------------------------------------------------------------------
290471d7fec4Smrg * Gal_select_alpha_region
290571d7fec4Smrg *
290671d7fec4Smrg *  Description: This function selects the alpha region should be used for
290771d7fec4Smrg *				 future updates.
290871d7fec4Smrg *   parameters:
290971d7fec4Smrg *	     region: Gives the alpha window number.
291071d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
291171d7fec4Smrg *------------------------------------------------------------------------*/
291271d7fec4SmrgBOOLEAN
291371d7fec4SmrgGal_select_alpha_region(int region)
291471d7fec4Smrg{
291571d7fec4Smrg   GAL_ALPHAREGION sSetVideo;
291671d7fec4Smrg
291771d7fec4Smrg   INIT_GAL(&sSetVideo);
291871d7fec4Smrg   sSetVideo.dwSubfunction = GALFN_SETALPHAREGION;
291971d7fec4Smrg   sSetVideo.region = region;
292071d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetVideo))
292171d7fec4Smrg      return 0;
292271d7fec4Smrg   else
292371d7fec4Smrg      return 1;
292471d7fec4Smrg}
292571d7fec4Smrg
292671d7fec4Smrg/*--------------------------------------------------------------------------
292771d7fec4Smrg * Gal_set_video_outside_alpha
292871d7fec4Smrg *
292971d7fec4Smrg *  Description: This function enable/disable the video outside alpha region.
293071d7fec4Smrg *   parameters:
293171d7fec4Smrg *	     enable: Gives the value for enable/disable.
293271d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
293371d7fec4Smrg *------------------------------------------------------------------------*/
293471d7fec4SmrgBOOLEAN
293571d7fec4SmrgGal_set_video_outside_alpha(int enable)
293671d7fec4Smrg{
293771d7fec4Smrg   GAL_VIDEOOUTSIDEALPHA sSetVideo;
293871d7fec4Smrg
293971d7fec4Smrg   INIT_GAL(&sSetVideo);
294071d7fec4Smrg   sSetVideo.dwSubfunction = GALFN_SETVIDEOOUTSIDEALPHA;
294171d7fec4Smrg   sSetVideo.enable = enable;
294271d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetVideo))
294371d7fec4Smrg      return 0;
294471d7fec4Smrg   else
294571d7fec4Smrg      return 1;
294671d7fec4Smrg}
294771d7fec4Smrg
294871d7fec4Smrg/*--------------------------------------------------------------------------
294971d7fec4Smrg * Gal_set_video_palette
295071d7fec4Smrg *
295171d7fec4Smrg *  Description: This function loads the video hardware palette.
295271d7fec4Smrg *   parameters:
295371d7fec4Smrg *	     palette: Gives value for hardware palette.
295471d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
295571d7fec4Smrg *------------------------------------------------------------------------*/
295671d7fec4SmrgBOOLEAN
295771d7fec4SmrgGal_set_video_palette(unsigned long *palette)
295871d7fec4Smrg{
295971d7fec4Smrg   GAL_VIDEOPALETTE sSetVideo;
296071d7fec4Smrg
296171d7fec4Smrg   INIT_GAL(&sSetVideo);
296271d7fec4Smrg   sSetVideo.dwSubfunction = GALFN_SETVIDEOPALETTE;
296371d7fec4Smrg
296471d7fec4Smrg   if (palette == NULL) {
296571d7fec4Smrg      sSetVideo.identity = 1;
296671d7fec4Smrg   } else {
296771d7fec4Smrg      sSetVideo.identity = 0;
296871d7fec4Smrg      memcpy(sSetVideo.palette, palette, 256 * sizeof(*palette));
296971d7fec4Smrg   }
297071d7fec4Smrg
297171d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetVideo))
297271d7fec4Smrg      return 0;
297371d7fec4Smrg   else
297471d7fec4Smrg      return 1;
297571d7fec4Smrg}
297671d7fec4Smrg
297771d7fec4Smrg/** Video **********************************************************/
297871d7fec4Smrg
297971d7fec4Smrg/*--------------------------------------------------------------------------
298071d7fec4Smrg * Gal_set_icon_enable
298171d7fec4Smrg *
298271d7fec4Smrg *  Description: This function enable/disables the hardware icon. The icon
298371d7fec4Smrg *				 position and colors should be programmed prior to calling
298471d7fec4Smrg *				 this routine.
298571d7fec4Smrg *   parameters:
298671d7fec4Smrg *	     enable: Gives value for enable state.
298771d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
298871d7fec4Smrg *------------------------------------------------------------------------*/
298971d7fec4SmrgBOOLEAN
299071d7fec4SmrgGal_set_icon_enable(int enable)
299171d7fec4Smrg{
299271d7fec4Smrg   GAL_ICONENABLE sSetIconenable;
299371d7fec4Smrg
299471d7fec4Smrg   INIT_GAL(&sSetIconenable);
299571d7fec4Smrg   sSetIconenable.dwSubfunction = GALFN_SETICONENABLE;
299671d7fec4Smrg   sSetIconenable.enable = enable;
299771d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetIconenable)) {
299871d7fec4Smrg      return 0;
299971d7fec4Smrg   } else {
300071d7fec4Smrg      return 1;
300171d7fec4Smrg   }
300271d7fec4Smrg}
300371d7fec4Smrg
300471d7fec4Smrg/*--------------------------------------------------------------------------
300571d7fec4Smrg * Gal_set_icon_colors
300671d7fec4Smrg *
300771d7fec4Smrg *  Description: This function sets the three hardware icon colors.
300871d7fec4Smrg *   parameters:
300971d7fec4Smrg *	     color0: Gives first color value.
301071d7fec4Smrg *	     color1: Gives second color value.
301171d7fec4Smrg *	     color2: Gives third color value.
301271d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
301371d7fec4Smrg *------------------------------------------------------------------------*/
301471d7fec4SmrgBOOLEAN
301571d7fec4SmrgGal_set_icon_colors(unsigned long color0, unsigned long color1,
301671d7fec4Smrg		    unsigned long color2)
301771d7fec4Smrg{
301871d7fec4Smrg   GAL_ICONCOLORS sSetIconcolors;
301971d7fec4Smrg
302071d7fec4Smrg   INIT_GAL(&sSetIconcolors);
302171d7fec4Smrg   sSetIconcolors.dwSubfunction = GALFN_SETICONCOLORS;
302271d7fec4Smrg   sSetIconcolors.color0 = color0;
302371d7fec4Smrg   sSetIconcolors.color1 = color1;
302471d7fec4Smrg   sSetIconcolors.color2 = color2;
302571d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetIconcolors)) {
302671d7fec4Smrg      return 0;
302771d7fec4Smrg   } else {
302871d7fec4Smrg      return 1;
302971d7fec4Smrg   }
303071d7fec4Smrg}
303171d7fec4Smrg
303271d7fec4Smrg/*--------------------------------------------------------------------------
303371d7fec4Smrg * Gal_set_icon_position.
303471d7fec4Smrg *
303571d7fec4Smrg *  Description: This function sets the hardware icon position.
303671d7fec4Smrg *   parameters:
303771d7fec4Smrg *	  memoffset: Memory offset of the icon buffer.
303871d7fec4Smrg *	       xpos: Starting X co-ordinate for the hardware icon.
303971d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
304071d7fec4Smrg *------------------------------------------------------------------------*/
304171d7fec4SmrgBOOLEAN
304271d7fec4SmrgGal_set_icon_position(unsigned long memoffset, unsigned short xpos)
304371d7fec4Smrg{
304471d7fec4Smrg   GAL_ICONPOSITION sSetIconposi;
304571d7fec4Smrg
304671d7fec4Smrg   INIT_GAL(&sSetIconposi);
304771d7fec4Smrg   sSetIconposi.dwSubfunction = GALFN_SETICONPOSITION;
304871d7fec4Smrg   sSetIconposi.memoffset = memoffset;
304971d7fec4Smrg   sSetIconposi.xpos = xpos;
305071d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetIconposi)) {
305171d7fec4Smrg      return 0;
305271d7fec4Smrg   } else {
305371d7fec4Smrg      return 1;
305471d7fec4Smrg   }
305571d7fec4Smrg}
305671d7fec4Smrg
305771d7fec4Smrg/*--------------------------------------------------------------------------
305871d7fec4Smrg * Gal_set_icon_shape64.
305971d7fec4Smrg *
306071d7fec4Smrg *  Description: This function initializes the icon buffer according to
306171d7fec4Smrg *				  the current mode.
306271d7fec4Smrg *	 parameters:
306371d7fec4Smrg *	  memoffset: Memory offset of the icon buffer.
306471d7fec4Smrg *	    andmask: Andmask of the icon buffer.
306571d7fec4Smrg *	    xormask: Xormask of the icon buffer.
306671d7fec4Smrg *		  lines: Lines of the icon buffer.
306771d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
306871d7fec4Smrg *------------------------------------------------------------------------*/
306971d7fec4SmrgBOOLEAN
307071d7fec4SmrgGal_set_icon_shape64(unsigned long memoffset, unsigned long *andmask,
307171d7fec4Smrg		     unsigned long *xormask, unsigned int lines)
307271d7fec4Smrg{
307371d7fec4Smrg   GAL_ICONSHAPE64 sSetIconshape64;
307471d7fec4Smrg
307571d7fec4Smrg   INIT_GAL(&sSetIconshape64);
307671d7fec4Smrg   sSetIconshape64.dwSubfunction = GALFN_SETICONSHAPE64;
307771d7fec4Smrg   sSetIconshape64.memoffset = memoffset;
307871d7fec4Smrg   *(sSetIconshape64.andmask) = *andmask;
307971d7fec4Smrg   *(sSetIconshape64.xormask) = *xormask;
308071d7fec4Smrg   sSetIconshape64.lines = lines;
308171d7fec4Smrg
308271d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetIconshape64)) {
308371d7fec4Smrg      return 0;
308471d7fec4Smrg   } else {
308571d7fec4Smrg      return 1;
308671d7fec4Smrg   }
308771d7fec4Smrg}
308871d7fec4Smrg
308971d7fec4Smrg/*  VIP Functions */
309071d7fec4Smrg
309171d7fec4Smrg/*--------------------------------------------------------------------------
309271d7fec4Smrg * Gal_set_vip_enable
309371d7fec4Smrg *
309471d7fec4Smrg *  Description: This function enable/disables the writes to memory from the
309571d7fec4Smrg *				 video port.
309671d7fec4Smrg *				 position and colors should be programmed prior to calling
309771d7fec4Smrg *				 this routine.
309871d7fec4Smrg *   parameters:
309971d7fec4Smrg *	     enable: Gives value for enable state.
310071d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
310171d7fec4Smrg *------------------------------------------------------------------------*/
310271d7fec4SmrgBOOLEAN
310371d7fec4SmrgGal_set_vip_enable(int enable)
310471d7fec4Smrg{
310571d7fec4Smrg   GAL_VIPENABLE sSetVipenable;
310671d7fec4Smrg
310771d7fec4Smrg   INIT_GAL(&sSetVipenable);
310871d7fec4Smrg   sSetVipenable.dwSubfunction = GALFN_SETVIPENABLE;
310971d7fec4Smrg   sSetVipenable.enable = enable;
311071d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetVipenable)) {
311171d7fec4Smrg      return 0;
311271d7fec4Smrg   } else {
311371d7fec4Smrg      return 1;
311471d7fec4Smrg   }
311571d7fec4Smrg}
311671d7fec4Smrg
311771d7fec4Smrg/*--------------------------------------------------------------------------
311871d7fec4Smrg * Gal_get_vip_enable
311971d7fec4Smrg *
312071d7fec4Smrg *  Description: This function gets the enable state of the
312171d7fec4Smrg *				 video port.
312271d7fec4Smrg *   parameters:
312371d7fec4Smrg *	     enable: Gives value for enable state.
312471d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
312571d7fec4Smrg *------------------------------------------------------------------------*/
312671d7fec4SmrgBOOLEAN
312771d7fec4SmrgGal_get_vip_enable(int *enable)
312871d7fec4Smrg{
312971d7fec4Smrg   GAL_VIPENABLE sGetVipenable;
313071d7fec4Smrg
313171d7fec4Smrg   INIT_GAL(&sGetVipenable);
313271d7fec4Smrg   sGetVipenable.dwSubfunction = GALFN_GETVIPENABLE;
313371d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sGetVipenable)) {
313471d7fec4Smrg      return 0;
313571d7fec4Smrg   } else {
313671d7fec4Smrg
313771d7fec4Smrg      *enable = sGetVipenable.enable;
313871d7fec4Smrg      return 1;
313971d7fec4Smrg   }
314071d7fec4Smrg}
314171d7fec4Smrg
314271d7fec4Smrg/*--------------------------------------------------------------------------
314371d7fec4Smrg * Gal_set_vip_capture_run_mode
314471d7fec4Smrg *
314571d7fec4Smrg *  Description: This function selects the VIP capture run mode.
314671d7fec4Smrg *
314771d7fec4Smrg *   parameters:
314871d7fec4Smrg *	       mode: VIP capture run mode.
314971d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
315071d7fec4Smrg *------------------------------------------------------------------------*/
315171d7fec4SmrgBOOLEAN
315271d7fec4SmrgGal_set_vip_capture_run_mode(int mode)
315371d7fec4Smrg{
315471d7fec4Smrg   GAL_VIPCAPTURERUNMODE sSetVipcapturerunmode;
315571d7fec4Smrg
315671d7fec4Smrg   INIT_GAL(&sSetVipcapturerunmode);
315771d7fec4Smrg   sSetVipcapturerunmode.dwSubfunction = GALFN_SETVIPCAPTURERUNMODE;
315871d7fec4Smrg   sSetVipcapturerunmode.mode = mode;
315971d7fec4Smrg
316071d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetVipcapturerunmode)) {
316171d7fec4Smrg      return 0;
316271d7fec4Smrg   } else {
316371d7fec4Smrg      return 1;
316471d7fec4Smrg   }
316571d7fec4Smrg}
316671d7fec4Smrg
316771d7fec4Smrg/*--------------------------------------------------------------------------
316871d7fec4Smrg * Gal_set_vip_base
316971d7fec4Smrg *
317071d7fec4Smrg *  Description: This routine sets the odd and even base address values for
317171d7fec4Smrg *				 the VIP memory buffer.
317271d7fec4Smrg *   parameters:
317371d7fec4Smrg *	       even: Even base address.
317471d7fec4Smrg *	        odd: odd base address.
317571d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
317671d7fec4Smrg *------------------------------------------------------------------------*/
317771d7fec4SmrgBOOLEAN
317871d7fec4SmrgGal_set_vip_base(unsigned long even, unsigned long odd)
317971d7fec4Smrg{
318071d7fec4Smrg   GAL_VIPBASE sSetVipBase;
318171d7fec4Smrg
318271d7fec4Smrg   INIT_GAL(&sSetVipBase);
318371d7fec4Smrg   sSetVipBase.dwSubfunction = GALFN_SETVIPBASE;
318471d7fec4Smrg   sSetVipBase.even = even;
318571d7fec4Smrg   sSetVipBase.odd = odd;
318671d7fec4Smrg
318771d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetVipBase)) {
318871d7fec4Smrg      return 0;
318971d7fec4Smrg   } else {
319071d7fec4Smrg      return 1;
319171d7fec4Smrg   }
319271d7fec4Smrg}
319371d7fec4Smrg
319471d7fec4Smrg/*--------------------------------------------------------------------------
319571d7fec4Smrg * Gal_get_vip_base
319671d7fec4Smrg *
319771d7fec4Smrg *  Description: This routine gets the  base address value for
319871d7fec4Smrg *				 the VIP memory buffer.
319971d7fec4Smrg *   parameters:
320071d7fec4Smrg *	    address: VIP base address.
320171d7fec4Smrg *	        odd: odd base address.
320271d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
320371d7fec4Smrg *------------------------------------------------------------------------*/
320471d7fec4SmrgBOOLEAN
320571d7fec4SmrgGal_get_vip_base(unsigned long *address, int odd)
320671d7fec4Smrg{
320771d7fec4Smrg   GAL_VIPBASE sGetVipBase;
320871d7fec4Smrg
320971d7fec4Smrg   INIT_GAL(&sGetVipBase);
321071d7fec4Smrg   sGetVipBase.dwSubfunction = GALFN_GETVIPBASE;
321171d7fec4Smrg   sGetVipBase.odd = odd;
321271d7fec4Smrg
321371d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sGetVipBase)) {
321471d7fec4Smrg      return 0;
321571d7fec4Smrg   } else {
321671d7fec4Smrg      *address = sGetVipBase.address;
321771d7fec4Smrg      return 1;
321871d7fec4Smrg   }
321971d7fec4Smrg}
322071d7fec4Smrg
322171d7fec4Smrg/*--------------------------------------------------------------------------
322271d7fec4Smrg * Gal_set_vip_pitch
322371d7fec4Smrg *
322471d7fec4Smrg *  Description: This routine sets the  number of bytes between scanlines
322571d7fec4Smrg *				 for the VIP data.
322671d7fec4Smrg *   parameters:
322771d7fec4Smrg *	      pitch: VIP pitch.
322871d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
322971d7fec4Smrg *------------------------------------------------------------------------*/
323071d7fec4SmrgBOOLEAN
323171d7fec4SmrgGal_set_vip_pitch(unsigned long pitch)
323271d7fec4Smrg{
323371d7fec4Smrg   GAL_VIPPITCH sSetVipPitch;
323471d7fec4Smrg
323571d7fec4Smrg   INIT_GAL(&sSetVipPitch);
323671d7fec4Smrg   sSetVipPitch.dwSubfunction = GALFN_SETVIPPITCH;
323771d7fec4Smrg   sSetVipPitch.pitch = pitch;
323871d7fec4Smrg
323971d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetVipPitch)) {
324071d7fec4Smrg      return 0;
324171d7fec4Smrg   } else {
324271d7fec4Smrg      return 1;
324371d7fec4Smrg   }
324471d7fec4Smrg}
324571d7fec4Smrg
324671d7fec4Smrg/*--------------------------------------------------------------------------
324771d7fec4Smrg * Gal_get_vip_pitch
324871d7fec4Smrg *
324971d7fec4Smrg *  Description: This routine gets the  number of bytes between scanlines
325071d7fec4Smrg *				 for the VIP data.
325171d7fec4Smrg *   parameters:
325271d7fec4Smrg *	      pitch: VIP pitch.
325371d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
325471d7fec4Smrg *------------------------------------------------------------------------*/
325571d7fec4SmrgBOOLEAN
325671d7fec4SmrgGal_get_vip_pitch(unsigned long *pitch)
325771d7fec4Smrg{
325871d7fec4Smrg   GAL_VIPPITCH sGetVipPitch;
325971d7fec4Smrg
326071d7fec4Smrg   INIT_GAL(&sGetVipPitch);
326171d7fec4Smrg   sGetVipPitch.dwSubfunction = GALFN_GETVIPPITCH;
326271d7fec4Smrg
326371d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sGetVipPitch)) {
326471d7fec4Smrg      return 0;
326571d7fec4Smrg   } else {
326671d7fec4Smrg      *pitch = sGetVipPitch.pitch;
326771d7fec4Smrg      return 1;
326871d7fec4Smrg
326971d7fec4Smrg   }
327071d7fec4Smrg}
327171d7fec4Smrg
327271d7fec4Smrg/*--------------------------------------------------------------------------
327371d7fec4Smrg * Gal_set_vip_mode
327471d7fec4Smrg *
327571d7fec4Smrg *  Description: This routine sets the  VIP operating mode.
327671d7fec4Smrg *   parameters:
327771d7fec4Smrg *	       mode: VIP operating mode.
327871d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
327971d7fec4Smrg *------------------------------------------------------------------------*/
328071d7fec4SmrgBOOLEAN
328171d7fec4SmrgGal_set_vip_mode(int mode)
328271d7fec4Smrg{
328371d7fec4Smrg   GAL_VIPMODE sSetVipMode;
328471d7fec4Smrg
328571d7fec4Smrg   INIT_GAL(&sSetVipMode);
328671d7fec4Smrg   sSetVipMode.dwSubfunction = GALFN_SETVIPMODE;
328771d7fec4Smrg   sSetVipMode.mode = mode;
328871d7fec4Smrg
328971d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetVipMode)) {
329071d7fec4Smrg      return 0;
329171d7fec4Smrg   } else {
329271d7fec4Smrg      return 1;
329371d7fec4Smrg   }
329471d7fec4Smrg}
329571d7fec4Smrg
329671d7fec4Smrg/*--------------------------------------------------------------------------
329771d7fec4Smrg * Gal_get_vip_mode
329871d7fec4Smrg *
329971d7fec4Smrg *  Description: This routine gets the  VIP operating mode.
330071d7fec4Smrg *   parameters:
330171d7fec4Smrg *	       mode: VIP operating mode.
330271d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
330371d7fec4Smrg *------------------------------------------------------------------------*/
330471d7fec4SmrgBOOLEAN
330571d7fec4SmrgGal_get_vip_mode(int *mode)
330671d7fec4Smrg{
330771d7fec4Smrg   GAL_VIPMODE sGetVipMode;
330871d7fec4Smrg
330971d7fec4Smrg   INIT_GAL(&sGetVipMode);
331071d7fec4Smrg   sGetVipMode.dwSubfunction = GALFN_GETVIPMODE;
331171d7fec4Smrg
331271d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sGetVipMode)) {
331371d7fec4Smrg      return 0;
331471d7fec4Smrg   } else {
331571d7fec4Smrg
331671d7fec4Smrg      *mode = sGetVipMode.mode;
331771d7fec4Smrg      return 1;
331871d7fec4Smrg   }
331971d7fec4Smrg}
332071d7fec4Smrg
332171d7fec4Smrg/*--------------------------------------------------------------------------
332271d7fec4Smrg * Gal_set_vip_bus_request_threshold_high
332371d7fec4Smrg *
332471d7fec4Smrg *  Description: This function sets the VIP FIFO bus request threshold.
332571d7fec4Smrg *
332671d7fec4Smrg *   parameters:
332771d7fec4Smrg *       enable: Enable state.
332871d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
332971d7fec4Smrg *------------------------------------------------------------------------*/
333071d7fec4SmrgBOOLEAN
333171d7fec4SmrgGal_set_vip_bus_request_threshold_high(int enable)
333271d7fec4Smrg{
333371d7fec4Smrg   GAL_VIPBUS_RTH sSetVipBRTH;
333471d7fec4Smrg
333571d7fec4Smrg   INIT_GAL(&sSetVipBRTH);
333671d7fec4Smrg   sSetVipBRTH.dwSubfunction = GALFN_SETVIPBRTH;
333771d7fec4Smrg   sSetVipBRTH.enable = enable;
333871d7fec4Smrg
333971d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetVipBRTH)) {
334071d7fec4Smrg      return 0;
334171d7fec4Smrg   } else {
334271d7fec4Smrg      return 1;
334371d7fec4Smrg   }
334471d7fec4Smrg}
334571d7fec4Smrg
334671d7fec4Smrg/*--------------------------------------------------------------------------
334771d7fec4Smrg * Gal_get_vip_bus_request_threshold_high
334871d7fec4Smrg *
334971d7fec4Smrg *  Description: This function gets the VIP FIFO bus request threshold.
335071d7fec4Smrg *
335171d7fec4Smrg *   parameters:
335271d7fec4Smrg *       enable: Enable state.
335371d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
335471d7fec4Smrg *------------------------------------------------------------------------*/
335571d7fec4SmrgBOOLEAN
335671d7fec4SmrgGal_get_vip_bus_request_threshold_high(int *enable)
335771d7fec4Smrg{
335871d7fec4Smrg   GAL_VIPBUS_RTH sGetVipBRTH;
335971d7fec4Smrg
336071d7fec4Smrg   INIT_GAL(&sGetVipBRTH);
336171d7fec4Smrg   sGetVipBRTH.dwSubfunction = GALFN_GETVIPBRTH;
336271d7fec4Smrg
336371d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sGetVipBRTH)) {
336471d7fec4Smrg      return 0;
336571d7fec4Smrg   } else {
336671d7fec4Smrg
336771d7fec4Smrg      *enable = sGetVipBRTH.enable;
336871d7fec4Smrg      return 1;
336971d7fec4Smrg   }
337071d7fec4Smrg}
337171d7fec4Smrg
337271d7fec4Smrg/*--------------------------------------------------------------------------
337371d7fec4Smrg * Gal_set_vip_last_line
337471d7fec4Smrg *
337571d7fec4Smrg *  Description: This function sets the maximum number of lines captured
337671d7fec4Smrg *				 in each field.
337771d7fec4Smrg *
337871d7fec4Smrg *   parameters:
337971d7fec4Smrg *    last_line: Maximum number of lines captured in each field.
338071d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
338171d7fec4Smrg *------------------------------------------------------------------------*/
338271d7fec4SmrgBOOLEAN
338371d7fec4SmrgGal_set_vip_last_line(int last_line)
338471d7fec4Smrg{
338571d7fec4Smrg   GAL_VIPLASTLINE sSetViplastline;
338671d7fec4Smrg
338771d7fec4Smrg   INIT_GAL(&sSetViplastline);
338871d7fec4Smrg   sSetViplastline.dwSubfunction = GALFN_SETVIPLASTLINE;
338971d7fec4Smrg   sSetViplastline.last_line = last_line;
339071d7fec4Smrg
339171d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetViplastline)) {
339271d7fec4Smrg      return 0;
339371d7fec4Smrg   } else {
339471d7fec4Smrg      return 1;
339571d7fec4Smrg   }
339671d7fec4Smrg}
339771d7fec4Smrg
339871d7fec4Smrg/*--------------------------------------------------------------------------
339971d7fec4Smrg * Gal_get_vip_line
340071d7fec4Smrg *
340171d7fec4Smrg *  Description: This function gets the number of the current video line being
340271d7fec4Smrg *				 recieved by the VIP interface.
340371d7fec4Smrg *
340471d7fec4Smrg *   parameters:
340571d7fec4Smrg *     vip_line: Number of the current video line.
340671d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
340771d7fec4Smrg *------------------------------------------------------------------------*/
340871d7fec4SmrgBOOLEAN
340971d7fec4SmrgGal_get_vip_line(int *vip_line)
341071d7fec4Smrg{
341171d7fec4Smrg   GAL_VIPLINE sGetVipline;
341271d7fec4Smrg
341371d7fec4Smrg   INIT_GAL(&sGetVipline);
341471d7fec4Smrg   sGetVipline.dwSubfunction = GALFN_GETVIPLINE;
341571d7fec4Smrg
341671d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sGetVipline)) {
341771d7fec4Smrg      return 0;
341871d7fec4Smrg   } else {
341971d7fec4Smrg      *vip_line = sGetVipline.status;
342071d7fec4Smrg      return 1;
342171d7fec4Smrg   }
342271d7fec4Smrg}
342371d7fec4Smrg
342471d7fec4Smrg/*--------------------------------------------------------------------------
342571d7fec4Smrg * Gal_test_vip_odd_field
342671d7fec4Smrg *
342771d7fec4Smrg *  Description: This function tests the VIP odd field.
342871d7fec4Smrg *
342971d7fec4Smrg *   parameters:
343071d7fec4Smrg *       status: Status of the odd field.
343171d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
343271d7fec4Smrg *------------------------------------------------------------------------*/
343371d7fec4SmrgBOOLEAN
343471d7fec4SmrgGal_test_vip_odd_field(int *status)
343571d7fec4Smrg{
343671d7fec4Smrg   GAL_TESTVIPODDFIELD sTestVipoddfield;
343771d7fec4Smrg
343871d7fec4Smrg   INIT_GAL(&sTestVipoddfield);
343971d7fec4Smrg   sTestVipoddfield.dwSubfunction = GALFN_TESTVIPODDFIELD;
344071d7fec4Smrg
344171d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sTestVipoddfield)) {
344271d7fec4Smrg      return 0;
344371d7fec4Smrg   } else {
344471d7fec4Smrg      *status = sTestVipoddfield.status;
344571d7fec4Smrg      return 1;
344671d7fec4Smrg   }
344771d7fec4Smrg}
344871d7fec4Smrg
344971d7fec4Smrg/*--------------------------------------------------------------------------
345071d7fec4Smrg * Gal_test_vip_bases_updated
345171d7fec4Smrg *
345271d7fec4Smrg *  Description: This function tests the VIP bases updated.
345371d7fec4Smrg *
345471d7fec4Smrg *   parameters:
345571d7fec4Smrg *       status: Status of the VIP bases updated.
345671d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
345771d7fec4Smrg *------------------------------------------------------------------------*/
345871d7fec4SmrgBOOLEAN
345971d7fec4SmrgGal_test_vip_bases_updated(int *status)
346071d7fec4Smrg{
346171d7fec4Smrg   GAL_TESTVIPBASESUPDATED sTestVipbasesupdated;
346271d7fec4Smrg
346371d7fec4Smrg   INIT_GAL(&sTestVipbasesupdated);
346471d7fec4Smrg   sTestVipbasesupdated.dwSubfunction = GALFN_TESTVIPBASESUPDATED;
346571d7fec4Smrg
346671d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sTestVipbasesupdated)) {
346771d7fec4Smrg      return 0;
346871d7fec4Smrg   } else {
346971d7fec4Smrg      *status = sTestVipbasesupdated.status;
347071d7fec4Smrg      return 1;
347171d7fec4Smrg   }
347271d7fec4Smrg}
347371d7fec4Smrg
347471d7fec4Smrg/*--------------------------------------------------------------------------
347571d7fec4Smrg * Gal_test_vip_fifo_overflow
347671d7fec4Smrg *
347771d7fec4Smrg *  Description: This function tests the VIP FIFO overflow.
347871d7fec4Smrg *
347971d7fec4Smrg *   parameters:
348071d7fec4Smrg *       status: Status of the VIP FIFO overflow.
348171d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
348271d7fec4Smrg *------------------------------------------------------------------------*/
348371d7fec4SmrgBOOLEAN
348471d7fec4SmrgGal_test_vip_fifo_overflow(int *status)
348571d7fec4Smrg{
348671d7fec4Smrg   GAL_TESTVIPOVERFLOW sTestVipoverflow;
348771d7fec4Smrg
348871d7fec4Smrg   INIT_GAL(&sTestVipoverflow);
348971d7fec4Smrg   sTestVipoverflow.dwSubfunction = GALFN_TESTVIPFIFOOVERFLOW;
349071d7fec4Smrg
349171d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sTestVipoverflow)) {
349271d7fec4Smrg      return 0;
349371d7fec4Smrg   } else {
349471d7fec4Smrg      *status = sTestVipoverflow.status;
349571d7fec4Smrg      return 1;
349671d7fec4Smrg   }
349771d7fec4Smrg}
349871d7fec4Smrg
349971d7fec4Smrg/*--------------------------------------------------------------------------
350071d7fec4Smrg * Gal_set_vbi_enable
350171d7fec4Smrg *
350271d7fec4Smrg *  Description: This function enable/disables the VBI data capture.
350371d7fec4Smrg *
350471d7fec4Smrg *   parameters:
350571d7fec4Smrg *       enable: VBI enable state.
350671d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
350771d7fec4Smrg *------------------------------------------------------------------------*/
350871d7fec4SmrgBOOLEAN
350971d7fec4SmrgGal_set_vbi_enable(int enable)
351071d7fec4Smrg{
351171d7fec4Smrg   GAL_VBIENABLE sSetVbienable;
351271d7fec4Smrg
351371d7fec4Smrg   INIT_GAL(&sSetVbienable);
351471d7fec4Smrg   sSetVbienable.dwSubfunction = GALFN_SETVBIENABLE;
351571d7fec4Smrg   sSetVbienable.enable = enable;
351671d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetVbienable)) {
351771d7fec4Smrg      return 0;
351871d7fec4Smrg   } else {
351971d7fec4Smrg      return 1;
352071d7fec4Smrg   }
352171d7fec4Smrg}
352271d7fec4Smrg
352371d7fec4Smrg/*--------------------------------------------------------------------------
352471d7fec4Smrg * Gal_get_vbi_enable
352571d7fec4Smrg *
352671d7fec4Smrg *  Description: This function gets the enable state of the VBI data capture.
352771d7fec4Smrg *
352871d7fec4Smrg *   parameters:
352971d7fec4Smrg *       enable: VBI enable state.
353071d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
353171d7fec4Smrg *------------------------------------------------------------------------*/
353271d7fec4SmrgBOOLEAN
353371d7fec4SmrgGal_get_vbi_enable(int *enable)
353471d7fec4Smrg{
353571d7fec4Smrg   GAL_VBIENABLE sGetVbienable;
353671d7fec4Smrg
353771d7fec4Smrg   INIT_GAL(&sGetVbienable);
353871d7fec4Smrg   sGetVbienable.dwSubfunction = GALFN_GETVBIENABLE;
353971d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sGetVbienable)) {
354071d7fec4Smrg      return 0;
354171d7fec4Smrg   } else {
354271d7fec4Smrg
354371d7fec4Smrg      *enable = sGetVbienable.enable;
354471d7fec4Smrg      return 1;
354571d7fec4Smrg   }
354671d7fec4Smrg}
354771d7fec4Smrg
354871d7fec4Smrg/*--------------------------------------------------------------------------
354971d7fec4Smrg * Gal_set_vbi_base
355071d7fec4Smrg *
355171d7fec4Smrg *  Description: This function sets the VBI base addresses.
355271d7fec4Smrg *
355371d7fec4Smrg *   parameters:
355471d7fec4Smrg *         even: Even base address.
355571d7fec4Smrg *          odd: Odd base address.
355671d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
355771d7fec4Smrg *------------------------------------------------------------------------*/
355871d7fec4SmrgBOOLEAN
355971d7fec4SmrgGal_set_vbi_base(unsigned long even, unsigned long odd)
356071d7fec4Smrg{
356171d7fec4Smrg   GAL_VBIBASE sSetVbiBase;
356271d7fec4Smrg
356371d7fec4Smrg   INIT_GAL(&sSetVbiBase);
356471d7fec4Smrg   sSetVbiBase.dwSubfunction = GALFN_SETVBIBASE;
356571d7fec4Smrg   sSetVbiBase.even = even;
356671d7fec4Smrg   sSetVbiBase.odd = odd;
356771d7fec4Smrg
356871d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetVbiBase)) {
356971d7fec4Smrg      return 0;
357071d7fec4Smrg   } else {
357171d7fec4Smrg      return 1;
357271d7fec4Smrg   }
357371d7fec4Smrg}
357471d7fec4Smrg
357571d7fec4Smrg/*--------------------------------------------------------------------------
357671d7fec4Smrg * Gal_get_vbi_base
357771d7fec4Smrg *
357871d7fec4Smrg *  Description: This function gets the VBI base address.
357971d7fec4Smrg *
358071d7fec4Smrg *   parameters:
358171d7fec4Smrg *      address: VBI base address.
358271d7fec4Smrg *          odd: Odd base address.
358371d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
358471d7fec4Smrg *------------------------------------------------------------------------*/
358571d7fec4SmrgBOOLEAN
358671d7fec4SmrgGal_get_vbi_base(unsigned long *address, int odd)
358771d7fec4Smrg{
358871d7fec4Smrg   GAL_VBIBASE sGetVbiBase;
358971d7fec4Smrg
359071d7fec4Smrg   INIT_GAL(&sGetVbiBase);
359171d7fec4Smrg   sGetVbiBase.dwSubfunction = GALFN_GETVBIBASE;
359271d7fec4Smrg   sGetVbiBase.odd = odd;
359371d7fec4Smrg
359471d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sGetVbiBase)) {
359571d7fec4Smrg      return 0;
359671d7fec4Smrg   } else {
359771d7fec4Smrg      *address = sGetVbiBase.address;
359871d7fec4Smrg      return 1;
359971d7fec4Smrg   }
360071d7fec4Smrg}
360171d7fec4Smrg
360271d7fec4Smrg/*--------------------------------------------------------------------------
360371d7fec4Smrg * Gal_set_vbi_pitch
360471d7fec4Smrg *
360571d7fec4Smrg *  Description: This function sets the number of bytes between scanlines for
360671d7fec4Smrg *				 VBI capture.
360771d7fec4Smrg *
360871d7fec4Smrg *   parameters:
360971d7fec4Smrg *        pitch: VBI pitch.
361071d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
361171d7fec4Smrg *------------------------------------------------------------------------*/
361271d7fec4SmrgBOOLEAN
361371d7fec4SmrgGal_set_vbi_pitch(unsigned long pitch)
361471d7fec4Smrg{
361571d7fec4Smrg   GAL_VBIPITCH sSetVbiPitch;
361671d7fec4Smrg
361771d7fec4Smrg   INIT_GAL(&sSetVbiPitch);
361871d7fec4Smrg   sSetVbiPitch.dwSubfunction = GALFN_SETVBIPITCH;
361971d7fec4Smrg   sSetVbiPitch.pitch = pitch;
362071d7fec4Smrg
362171d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetVbiPitch)) {
362271d7fec4Smrg      return 0;
362371d7fec4Smrg   } else {
362471d7fec4Smrg      return 1;
362571d7fec4Smrg   }
362671d7fec4Smrg}
362771d7fec4Smrg
362871d7fec4Smrg/*--------------------------------------------------------------------------
362971d7fec4Smrg * Gal_get_vbi_pitch
363071d7fec4Smrg *
363171d7fec4Smrg *  Description: This function gets the number of bytes between scanlines for
363271d7fec4Smrg *				 VBI capture.
363371d7fec4Smrg *
363471d7fec4Smrg *   parameters:
363571d7fec4Smrg *        pitch: VBI pitch.
363671d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
363771d7fec4Smrg *------------------------------------------------------------------------*/
363871d7fec4SmrgBOOLEAN
363971d7fec4SmrgGal_get_vbi_pitch(unsigned long *pitch)
364071d7fec4Smrg{
364171d7fec4Smrg   GAL_VBIPITCH sGetVbiPitch;
364271d7fec4Smrg
364371d7fec4Smrg   INIT_GAL(&sGetVbiPitch);
364471d7fec4Smrg   sGetVbiPitch.dwSubfunction = GALFN_GETVBIPITCH;
364571d7fec4Smrg
364671d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sGetVbiPitch)) {
364771d7fec4Smrg      return 0;
364871d7fec4Smrg   } else {
364971d7fec4Smrg      *pitch = sGetVbiPitch.pitch;
365071d7fec4Smrg      return 1;
365171d7fec4Smrg
365271d7fec4Smrg   }
365371d7fec4Smrg}
365471d7fec4Smrg
365571d7fec4Smrg/*--------------------------------------------------------------------------
365671d7fec4Smrg * Gal_set_vbi_mode
365771d7fec4Smrg *
365871d7fec4Smrg *  Description: This function sets the VBI data types captured to memory.
365971d7fec4Smrg *
366071d7fec4Smrg *   parameters:
366171d7fec4Smrg *         mode: VBI mode.
366271d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
366371d7fec4Smrg *------------------------------------------------------------------------*/
366471d7fec4SmrgBOOLEAN
366571d7fec4SmrgGal_set_vbi_mode(int mode)
366671d7fec4Smrg{
366771d7fec4Smrg   GAL_VBIMODE sSetVbiMode;
366871d7fec4Smrg
366971d7fec4Smrg   INIT_GAL(&sSetVbiMode);
367071d7fec4Smrg   sSetVbiMode.dwSubfunction = GALFN_SETVBIMODE;
367171d7fec4Smrg   sSetVbiMode.mode = mode;
367271d7fec4Smrg
367371d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetVbiMode)) {
367471d7fec4Smrg      return 0;
367571d7fec4Smrg   } else {
367671d7fec4Smrg      return 1;
367771d7fec4Smrg   }
367871d7fec4Smrg}
367971d7fec4Smrg
368071d7fec4Smrg/*--------------------------------------------------------------------------
368171d7fec4Smrg * Gal_get_vbi_mode
368271d7fec4Smrg *
368371d7fec4Smrg *  Description: This function gets the VBI data types captured to memory.
368471d7fec4Smrg *
368571d7fec4Smrg *   parameters:
368671d7fec4Smrg *         mode: VBI mode.
368771d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
368871d7fec4Smrg *------------------------------------------------------------------------*/
368971d7fec4SmrgBOOLEAN
369071d7fec4SmrgGal_get_vbi_mode(int *mode)
369171d7fec4Smrg{
369271d7fec4Smrg   GAL_VBIMODE sGetVbiMode;
369371d7fec4Smrg
369471d7fec4Smrg   INIT_GAL(&sGetVbiMode);
369571d7fec4Smrg   sGetVbiMode.dwSubfunction = GALFN_GETVBIMODE;
369671d7fec4Smrg
369771d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sGetVbiMode)) {
369871d7fec4Smrg      return 0;
369971d7fec4Smrg   } else {
370071d7fec4Smrg
370171d7fec4Smrg      *mode = sGetVbiMode.mode;
370271d7fec4Smrg      return 1;
370371d7fec4Smrg   }
370471d7fec4Smrg}
370571d7fec4Smrg
370671d7fec4Smrg/*--------------------------------------------------------------------------
370771d7fec4Smrg * Gal_set_vbi_direct
370871d7fec4Smrg *
370971d7fec4Smrg *  Description: This function sets the VBI lines to be passed to the
371071d7fec4Smrg *				 Direct VIP.
371171d7fec4Smrg *
371271d7fec4Smrg *   parameters:
371371d7fec4Smrg *   even_lines: VBI even lines.
371471d7fec4Smrg *    odd_lines: VBI odd lines.
371571d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
371671d7fec4Smrg *------------------------------------------------------------------------*/
371771d7fec4SmrgBOOLEAN
371871d7fec4SmrgGal_set_vbi_direct(unsigned long even_lines, unsigned long odd_lines)
371971d7fec4Smrg{
372071d7fec4Smrg   GAL_SETVBIDIRECT sSetVbidirect;
372171d7fec4Smrg
372271d7fec4Smrg   INIT_GAL(&sSetVbidirect);
372371d7fec4Smrg   sSetVbidirect.dwSubfunction = GALFN_SETVBIDIRECT;
372471d7fec4Smrg   sSetVbidirect.even_lines = even_lines;
372571d7fec4Smrg   sSetVbidirect.odd_lines = odd_lines;
372671d7fec4Smrg
372771d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetVbidirect)) {
372871d7fec4Smrg      return 0;
372971d7fec4Smrg   } else {
373071d7fec4Smrg      return 1;
373171d7fec4Smrg   }
373271d7fec4Smrg}
373371d7fec4SmrgBOOLEAN
373471d7fec4SmrgGal2_set_destination_stride(unsigned short stride)
373571d7fec4Smrg{
373671d7fec4Smrg   GAL_STRIDE sSetStride;
373771d7fec4Smrg
373871d7fec4Smrg   INIT_GAL(&sSetStride);
373971d7fec4Smrg   sSetStride.dwSubfunction = GALFN_SETDESTINATIONSTRIDE;
374071d7fec4Smrg
374171d7fec4Smrg   sSetStride.stride = stride;
374271d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetStride))
374371d7fec4Smrg      return 0;
374471d7fec4Smrg   else
374571d7fec4Smrg      return 1;
374671d7fec4Smrg}
374771d7fec4Smrg
374871d7fec4SmrgBOOLEAN
374971d7fec4SmrgGal2_set_pattern_origin(int x, int y)
375071d7fec4Smrg{
375171d7fec4Smrg   GAL_PATTERNORIGIN sSetPatOrigin;
375271d7fec4Smrg
375371d7fec4Smrg   INIT_GAL(&sSetPatOrigin);
375471d7fec4Smrg   sSetPatOrigin.dwSubfunction = GALFN_SETPATTERNORIGIN;
375571d7fec4Smrg
375671d7fec4Smrg   sSetPatOrigin.x = x;
375771d7fec4Smrg   sSetPatOrigin.y = y;
375871d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetPatOrigin))
375971d7fec4Smrg      return 0;
376071d7fec4Smrg   else
376171d7fec4Smrg      return 1;
376271d7fec4Smrg}
376371d7fec4Smrg
376471d7fec4Smrg/*--------------------------------------------------------------------------
376571d7fec4Smrg * Gal_set_vbi_direct
376671d7fec4Smrg *
376771d7fec4Smrg *  Description: This function gets the VBI lines to be passed to the
376871d7fec4Smrg *				 Direct VIP.
376971d7fec4Smrg *
377071d7fec4Smrg *   parameters:
377171d7fec4Smrg *          odd: VBI odd lines.
377271d7fec4Smrg * direct_lines: VBI direct lines.
377371d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
377471d7fec4Smrg *------------------------------------------------------------------------*/
377571d7fec4SmrgBOOLEAN
377671d7fec4SmrgGal_get_vbi_direct(int odd, unsigned long *direct_lines)
377771d7fec4Smrg{
377871d7fec4Smrg   GAL_GETVBIDIRECT sGetVbidirect;
377971d7fec4Smrg
378071d7fec4Smrg   INIT_GAL(&sGetVbidirect);
378171d7fec4Smrg   sGetVbidirect.dwSubfunction = GALFN_GETVBIDIRECT;
378271d7fec4Smrg   sGetVbidirect.odd = odd;
378371d7fec4Smrg
378471d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sGetVbidirect)) {
378571d7fec4Smrg      return 0;
378671d7fec4Smrg   } else {
378771d7fec4Smrg      *direct_lines = sGetVbidirect.direct_lines;
378871d7fec4Smrg      return 1;
378971d7fec4Smrg   }
379071d7fec4Smrg}
379171d7fec4Smrg
379271d7fec4Smrg/*--------------------------------------------------------------------------
379371d7fec4Smrg * Gal_set_vbi_interrupt
379471d7fec4Smrg *
379571d7fec4Smrg *  Description: This function enable/disables the VBI field interrupt.
379671d7fec4Smrg *
379771d7fec4Smrg *   parameters:
379871d7fec4Smrg *       enable: Value to enable/disable VBI interrupt.
379971d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
380071d7fec4Smrg *------------------------------------------------------------------------*/
380171d7fec4SmrgBOOLEAN
380271d7fec4SmrgGal_set_vbi_interrupt(int enable)
380371d7fec4Smrg{
380471d7fec4Smrg   GAL_VBIINTERRUPT sSetVbiinterrupt;
380571d7fec4Smrg
380671d7fec4Smrg   INIT_GAL(&sSetVbiinterrupt);
380771d7fec4Smrg   sSetVbiinterrupt.dwSubfunction = GALFN_SETVBIINTERRUPT;
380871d7fec4Smrg   sSetVbiinterrupt.enable = enable;
380971d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetVbiinterrupt)) {
381071d7fec4Smrg      return 0;
381171d7fec4Smrg   } else {
381271d7fec4Smrg      return 1;
381371d7fec4Smrg   }
381471d7fec4Smrg}
381571d7fec4Smrg
381671d7fec4Smrg/*--------------------------------------------------------------------------
381771d7fec4Smrg * Gal_get_vbi_interrupt
381871d7fec4Smrg *
381971d7fec4Smrg *  Description: This function gets the VBI field interrupt.
382071d7fec4Smrg *
382171d7fec4Smrg *   parameters:
382271d7fec4Smrg *       enable: Value of enable/disable VBI interrupt.
382371d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
382471d7fec4Smrg *------------------------------------------------------------------------*/
382571d7fec4SmrgBOOLEAN
382671d7fec4SmrgGal_get_vbi_interrupt(int *enable)
382771d7fec4Smrg{
382871d7fec4Smrg   GAL_VBIINTERRUPT sGetVbiinterrupt;
382971d7fec4Smrg
383071d7fec4Smrg   INIT_GAL(&sGetVbiinterrupt);
383171d7fec4Smrg   sGetVbiinterrupt.dwSubfunction = GALFN_GETVBIINTERRUPT;
383271d7fec4Smrg
383371d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sGetVbiinterrupt)) {
383471d7fec4Smrg      return 0;
383571d7fec4Smrg   } else {
383671d7fec4Smrg      *enable = sGetVbiinterrupt.enable;
383771d7fec4Smrg      return 1;
383871d7fec4Smrg   }
383971d7fec4Smrg}
384071d7fec4Smrg
384171d7fec4Smrg/*--------------------------------------------------------------------------
384271d7fec4Smrg * Gal_set_source_stride
384371d7fec4Smrg *
384471d7fec4Smrg *  Description: This function sets the stride to be used in successive screen
384571d7fec4Smrg *				 to screen BLTs.
384671d7fec4Smrg *
384771d7fec4Smrg *   parameters:
384871d7fec4Smrg *       enable: Value of enable/disable VBI interrupt.
384971d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
385071d7fec4Smrg *------------------------------------------------------------------------*/
385171d7fec4SmrgBOOLEAN
385271d7fec4SmrgGal2_set_source_stride(unsigned short stride)
385371d7fec4Smrg{
385471d7fec4Smrg   GAL_STRIDE sSetsourcestride;
385571d7fec4Smrg
385671d7fec4Smrg   INIT_GAL(&sSetsourcestride);
385771d7fec4Smrg   sSetsourcestride.dwSubfunction = GALFN_SETSOURCESTRIDE;
385871d7fec4Smrg
385971d7fec4Smrg   sSetsourcestride.stride = stride;
386071d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetsourcestride)) {
386171d7fec4Smrg      return 0;
386271d7fec4Smrg   } else {
386371d7fec4Smrg
386471d7fec4Smrg      return 1;
386571d7fec4Smrg   }
386671d7fec4Smrg}
386771d7fec4Smrg
386871d7fec4Smrg/*--------------------------------------------------------------------------
386971d7fec4Smrg * Gal_set_source_transparency
387071d7fec4Smrg *
387171d7fec4Smrg *  Description: This function sets the source transparency color and
387271d7fec4Smrg *				 mask to be used in future rendering routines.
387371d7fec4Smrg *				 to screen BLTs.
387471d7fec4Smrg *
387571d7fec4Smrg *   parameters:
387671d7fec4Smrg *        color: Source color.
387771d7fec4Smrg *		   mask: Source mask.
387871d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
387971d7fec4Smrg *------------------------------------------------------------------------*/
388071d7fec4SmrgBOOLEAN
388171d7fec4SmrgGal2_set_source_transparency(unsigned long color, unsigned long mask)
388271d7fec4Smrg{
388371d7fec4Smrg   GAL_SOURCETRANSPARENCY sSetsourcetransparency;
388471d7fec4Smrg
388571d7fec4Smrg   INIT_GAL(&sSetsourcetransparency);
388671d7fec4Smrg   sSetsourcetransparency.dwSubfunction = GALFN_SETSOURCETRANSPARENCY;
388771d7fec4Smrg
388871d7fec4Smrg   sSetsourcetransparency.color = color;
388971d7fec4Smrg   sSetsourcetransparency.mask = mask;
389071d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetsourcetransparency)) {
389171d7fec4Smrg      return 0;
389271d7fec4Smrg   } else {
389371d7fec4Smrg
389471d7fec4Smrg      return 1;
389571d7fec4Smrg   }
389671d7fec4Smrg}
389771d7fec4Smrg
389871d7fec4Smrg/*--------------------------------------------------------------------------
389971d7fec4Smrg * Gal_set_alpha_mode
390071d7fec4Smrg *
390171d7fec4Smrg *  Description: This function sets the alpha blending mode.
390271d7fec4Smrg *   parameters:
390371d7fec4Smrg *         mode: Alpha blending mode.
390471d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
390571d7fec4Smrg *------------------------------------------------------------------------*/
390671d7fec4SmrgBOOLEAN
390771d7fec4SmrgGal2_set_alpha_mode(int mode)
390871d7fec4Smrg{
390971d7fec4Smrg   GAL_GFX2ALPHAMODE sSetalphamode;
391071d7fec4Smrg
391171d7fec4Smrg   INIT_GAL(&sSetalphamode);
391271d7fec4Smrg   sSetalphamode.dwSubfunction = GALFN_GFX2SETALPHAMODE;
391371d7fec4Smrg
391471d7fec4Smrg   sSetalphamode.mode = mode;
391571d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetalphamode)) {
391671d7fec4Smrg      return 0;
391771d7fec4Smrg   } else {
391871d7fec4Smrg      return 1;
391971d7fec4Smrg   }
392071d7fec4Smrg}
392171d7fec4Smrg
392271d7fec4Smrg/*--------------------------------------------------------------------------
392371d7fec4Smrg * Gal_gfx2_set_alpha_value
392471d7fec4Smrg *
392571d7fec4Smrg *  Description: This function sets the alpha value to be used with certain
392671d7fec4Smrg *				 alpha blending modes.
392771d7fec4Smrg *   parameters:
392871d7fec4Smrg *        value: Alpha blending value.
392971d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
393071d7fec4Smrg *------------------------------------------------------------------------*/
393171d7fec4SmrgBOOLEAN
393271d7fec4SmrgGal2_set_alpha_value(unsigned char value)
393371d7fec4Smrg{
393471d7fec4Smrg   GAL_GFX2ALPHAVALUE sSetalphavalue;
393571d7fec4Smrg
393671d7fec4Smrg   INIT_GAL(&sSetalphavalue);
393771d7fec4Smrg   sSetalphavalue.dwSubfunction = GALFN_GFX2SETALPHAVALUE;
393871d7fec4Smrg
393971d7fec4Smrg   sSetalphavalue.value = value;
394071d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetalphavalue)) {
394171d7fec4Smrg      return 0;
394271d7fec4Smrg   } else {
394371d7fec4Smrg      return 1;
394471d7fec4Smrg   }
394571d7fec4Smrg}
394671d7fec4Smrg
394771d7fec4Smrg/*--------------------------------------------------------------------------
394871d7fec4Smrg * Gal_gfx2_pattern_fill
394971d7fec4Smrg *
395071d7fec4Smrg *  Description: This function used to fill the pattern of GX2.
395171d7fec4Smrg *				 It allows the arbitary destination stride. The rendering
395271d7fec4Smrg *				 position is also specified as an offset instead of (x,y)
395371d7fec4Smrg *				 position.
395471d7fec4Smrg *   parameters:
395571d7fec4Smrg *    dstoffset: Rendering offset.
395671d7fec4Smrg *		  width: Width of the pattern.
395771d7fec4Smrg *       height: Height of the pattern.
395871d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
395971d7fec4Smrg *------------------------------------------------------------------------*/
396071d7fec4SmrgBOOLEAN
396171d7fec4SmrgGal_gfx2_pattern_fill(unsigned long dstoffset, unsigned short width,
396271d7fec4Smrg		      unsigned short height)
396371d7fec4Smrg{
396471d7fec4Smrg   GAL_GFX2PATTERNFILL sPatternfill;
396571d7fec4Smrg
396671d7fec4Smrg   INIT_GAL(&sPatternfill);
396771d7fec4Smrg   sPatternfill.dwSubfunction = GALFN_GFX2PATTERNFILL;
396871d7fec4Smrg
396971d7fec4Smrg   sPatternfill.dstoffset = dstoffset;
397071d7fec4Smrg   sPatternfill.width = width;
397171d7fec4Smrg   sPatternfill.height = height;
397271d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sPatternfill)) {
397371d7fec4Smrg      return 0;
397471d7fec4Smrg   } else {
397571d7fec4Smrg      return 1;
397671d7fec4Smrg   }
397771d7fec4Smrg}
397871d7fec4Smrg
397971d7fec4Smrg/*--------------------------------------------------------------------------
398071d7fec4Smrg * Gal_gfx2_screen_to_screen_blt
398171d7fec4Smrg *
398271d7fec4Smrg *  Description: This function used for screen to screen BLTs of GX2.
398371d7fec4Smrg *				 It allows the arbitary source and destination strides and
398471d7fec4Smrg *				 alpha blending.
398571d7fec4Smrg *   parameters:
398671d7fec4Smrg *    srcoffset: Source Rendering offset.
398771d7fec4Smrg *    dstoffset: Destination Rendering offset.
398871d7fec4Smrg *		  width: Width of the screen.
398971d7fec4Smrg *       height: Height of the screen.
399071d7fec4Smrg *		  flags: Flags of the screen to screen BLT.
399171d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
399271d7fec4Smrg *------------------------------------------------------------------------*/
399371d7fec4SmrgBOOLEAN
399471d7fec4SmrgGal2_screen_to_screen_blt(unsigned long srcoffset,
399571d7fec4Smrg			  unsigned long dstoffset, unsigned short width,
399671d7fec4Smrg			  unsigned short height, int flags)
399771d7fec4Smrg{
399871d7fec4Smrg   GAL_GFX2SCREENTOSCREENBLT sScreentoScreenblt;
399971d7fec4Smrg
400071d7fec4Smrg   INIT_GAL(&sScreentoScreenblt);
400171d7fec4Smrg   sScreentoScreenblt.dwSubfunction = GALFN_GFX2SCREENTOSCREENBLT;
400271d7fec4Smrg
400371d7fec4Smrg   sScreentoScreenblt.srcoffset = srcoffset;
400471d7fec4Smrg   sScreentoScreenblt.dstoffset = dstoffset;
400571d7fec4Smrg   sScreentoScreenblt.width = width;
400671d7fec4Smrg   sScreentoScreenblt.height = height;
400771d7fec4Smrg   sScreentoScreenblt.flags = flags;
400871d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sScreentoScreenblt)) {
400971d7fec4Smrg      return 0;
401071d7fec4Smrg   } else {
401171d7fec4Smrg      return 1;
401271d7fec4Smrg   }
401371d7fec4Smrg}
401471d7fec4Smrg
401571d7fec4Smrg/*--------------------------------------------------------------------------
401671d7fec4Smrg * Gal2_mono_expand_blt
401771d7fec4Smrg *
401871d7fec4Smrg *  Description: This function used to expand monochrome data stored in
401971d7fec4Smrg *				 graphics memory for screen to screen BLTs.
402071d7fec4Smrg *   parameters:
402171d7fec4Smrg *      srcbase: Source Rendering base address.
402271d7fec4Smrg *         srcx: Source X offset.
402371d7fec4Smrg *         srcy: Source Y offset.
402471d7fec4Smrg *    dstoffset: Destination Rendering offset.
402571d7fec4Smrg *		  width: Width of the screen.
402671d7fec4Smrg *       height: Height of the screen.
402771d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
402871d7fec4Smrg *------------------------------------------------------------------------*/
402971d7fec4SmrgBOOLEAN
403071d7fec4SmrgGal2_mono_expand_blt(unsigned long srcbase, unsigned short srcx,
403171d7fec4Smrg		     unsigned short srcy, unsigned long dstoffset,
403271d7fec4Smrg		     unsigned short width, unsigned short height,
403371d7fec4Smrg		     int byte_packed)
403471d7fec4Smrg{
403571d7fec4Smrg   GAL_GFX2MONOEXPANDBLT sMonoexpandblt;
403671d7fec4Smrg
403771d7fec4Smrg   INIT_GAL(&sMonoexpandblt);
403871d7fec4Smrg   sMonoexpandblt.dwSubfunction = GALFN_GFX2MONOEXPANDBLT;
403971d7fec4Smrg   sMonoexpandblt.srcbase = srcbase;
404071d7fec4Smrg   sMonoexpandblt.srcx = srcx;
404171d7fec4Smrg   sMonoexpandblt.srcy = srcy;
404271d7fec4Smrg   sMonoexpandblt.dstoffset = dstoffset;
404371d7fec4Smrg   sMonoexpandblt.width = width;
404471d7fec4Smrg   sMonoexpandblt.height = height;
404571d7fec4Smrg   sMonoexpandblt.byte_packed = byte_packed;
404671d7fec4Smrg
404771d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sMonoexpandblt)) {
404871d7fec4Smrg      return 0;
404971d7fec4Smrg   } else {
405071d7fec4Smrg      return 1;
405171d7fec4Smrg
405271d7fec4Smrg   }
405371d7fec4Smrg}
405471d7fec4Smrg
405571d7fec4Smrg/*--------------------------------------------------------------------------
405671d7fec4Smrg * Gal2_color_bitmap_to_screen_blt
405771d7fec4Smrg *
405871d7fec4Smrg *  Description: This function used for color bmp to screen BLTs.
405971d7fec4Smrg *   parameters:
406071d7fec4Smrg *         srcx: Source X offset.
406171d7fec4Smrg *         srcy: Source Y offset.
406271d7fec4Smrg *    dstoffset: Destination Rendering offset.
406371d7fec4Smrg *		  width: Width of the screen.
406471d7fec4Smrg *       height: Height of the screen.
406571d7fec4Smrg *		  *data: Color bmp data.
406671d7fec4Smrg *	      pitch: Pitch of the dispaly mode.
406771d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
406871d7fec4Smrg *------------------------------------------------------------------------*/
406971d7fec4SmrgBOOLEAN
407071d7fec4SmrgGal2_color_bitmap_to_screen_blt(unsigned short srcx,
407171d7fec4Smrg				unsigned short srcy,
407271d7fec4Smrg				unsigned long dstoffset,
407371d7fec4Smrg				unsigned short width,
407471d7fec4Smrg				unsigned short height,
407571d7fec4Smrg				unsigned char *data, unsigned short pitch)
407671d7fec4Smrg{
407771d7fec4Smrg   GAL_GFX2COLORBMPTOSCRBLT sColorbmptoscrblt;
407871d7fec4Smrg
407971d7fec4Smrg   INIT_GAL(&sColorbmptoscrblt);
408071d7fec4Smrg   sColorbmptoscrblt.dwSubfunction = GALFN_GFX2COLORBMPTOSCRBLT;
408171d7fec4Smrg   sColorbmptoscrblt.srcx = srcx;
408271d7fec4Smrg   sColorbmptoscrblt.srcy = srcy;
408371d7fec4Smrg   sColorbmptoscrblt.dstoffset = dstoffset;
408471d7fec4Smrg   sColorbmptoscrblt.width = width;
408571d7fec4Smrg   sColorbmptoscrblt.height = height;
408671d7fec4Smrg   sColorbmptoscrblt.data = *data;
408771d7fec4Smrg   sColorbmptoscrblt.pitch = pitch;
408871d7fec4Smrg
408971d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sColorbmptoscrblt)) {
409071d7fec4Smrg      return 0;
409171d7fec4Smrg   } else {
409271d7fec4Smrg      return 1;
409371d7fec4Smrg   }
409471d7fec4Smrg}
409571d7fec4Smrg
409671d7fec4Smrg/*--------------------------------------------------------------------------
409771d7fec4Smrg * Gal2_mono_bitmap_to_screen_blt
409871d7fec4Smrg *
409971d7fec4Smrg *  Description: This function used for mono bmp to screen BLTs.
410071d7fec4Smrg *   parameters:
410171d7fec4Smrg *         srcx: Source X offset.
410271d7fec4Smrg *         srcy: Source Y offset.
410371d7fec4Smrg *    dstoffset: Destination Rendering offset.
410471d7fec4Smrg *		  width: Width of the screen.
410571d7fec4Smrg *       height: Height of the screen.
410671d7fec4Smrg *		  *data: mono bmp data.
410771d7fec4Smrg *	      pitch: Pitch of the display mode.
410871d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
410971d7fec4Smrg *------------------------------------------------------------------------*/
411071d7fec4SmrgBOOLEAN
411171d7fec4SmrgGal2_mono_bitmap_to_screen_blt(unsigned short srcx,
411271d7fec4Smrg			       unsigned short srcy,
411371d7fec4Smrg			       unsigned long dstoffset,
411471d7fec4Smrg			       unsigned short width,
411571d7fec4Smrg			       unsigned short height,
411671d7fec4Smrg			       unsigned char *data, unsigned short pitch)
411771d7fec4Smrg{
411871d7fec4Smrg   GAL_GFX2MONOBMPTOSCRBLT sMonobmptoscrblt;
411971d7fec4Smrg
412071d7fec4Smrg   INIT_GAL(&sMonobmptoscrblt);
412171d7fec4Smrg   sMonobmptoscrblt.dwSubfunction = GALFN_GFX2MONOBMPTOSCRBLT;
412271d7fec4Smrg   sMonobmptoscrblt.srcx = srcx;
412371d7fec4Smrg   sMonobmptoscrblt.srcy = srcy;
412471d7fec4Smrg   sMonobmptoscrblt.dstoffset = dstoffset;
412571d7fec4Smrg   sMonobmptoscrblt.width = width;
412671d7fec4Smrg   sMonobmptoscrblt.height = height;
412771d7fec4Smrg   sMonobmptoscrblt.data = *data;
412871d7fec4Smrg   sMonobmptoscrblt.pitch = pitch;
412971d7fec4Smrg
413071d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sMonobmptoscrblt)) {
413171d7fec4Smrg      return 0;
413271d7fec4Smrg   } else {
413371d7fec4Smrg      return 1;
413471d7fec4Smrg   }
413571d7fec4Smrg}
413671d7fec4Smrg
413771d7fec4Smrg/*--------------------------------------------------------------------------
413871d7fec4Smrg * Gal2_bresenham_line
413971d7fec4Smrg *
414071d7fec4Smrg *  Description: This function used to draw bresenham line. It allows the
414171d7fec4Smrg *				 arbitary destination stride.
414271d7fec4Smrg *   parameters:
414371d7fec4Smrg *    dstoffset: Destination  offset.
414471d7fec4Smrg *		 length: Length of the line.
414571d7fec4Smrg *      initerr: Intial error.
414671d7fec4Smrg *	   axialerr:
414771d7fec4Smrg *	    diagerr:
414871d7fec4Smrg *		  flags:
414971d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
415071d7fec4Smrg *------------------------------------------------------------------------*/
415171d7fec4SmrgBOOLEAN
415271d7fec4SmrgGal2_bresenham_line(unsigned long dstoffset, unsigned short length,
415371d7fec4Smrg		    unsigned short initerr, unsigned short axialerr,
415471d7fec4Smrg		    unsigned short diagerr, unsigned short flags)
415571d7fec4Smrg{
415671d7fec4Smrg   GAL_GFX2BRESENHAMLINE sBresenhamline;
415771d7fec4Smrg
415871d7fec4Smrg   INIT_GAL(&sBresenhamline);
415971d7fec4Smrg   sBresenhamline.dwSubfunction = GALFN_GFX2BRESENHAMLINE;
416071d7fec4Smrg   sBresenhamline.dstoffset = dstoffset;
416171d7fec4Smrg   sBresenhamline.length = length;
416271d7fec4Smrg   sBresenhamline.initerr = initerr;
416371d7fec4Smrg   sBresenhamline.axialerr = axialerr;
416471d7fec4Smrg   sBresenhamline.diagerr = diagerr;
416571d7fec4Smrg   sBresenhamline.flags = flags;
416671d7fec4Smrg
416771d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sBresenhamline)) {
416871d7fec4Smrg      return 0;
416971d7fec4Smrg   } else {
417071d7fec4Smrg      return 1;
417171d7fec4Smrg   }
417271d7fec4Smrg}
417371d7fec4Smrg
417471d7fec4Smrg/*--------------------------------------------------------------------------
417571d7fec4Smrg * Gal2_sync_to_vblank
417671d7fec4Smrg *
417771d7fec4Smrg *  Description: This function sets the a flag to synchronize the next
417871d7fec4Smrg *				 rendering routine to VBLANK.
417971d7fec4Smrg *   parameters: none.
418071d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
418171d7fec4Smrg *------------------------------------------------------------------------*/
418271d7fec4SmrgBOOLEAN
418371d7fec4SmrgGal2_sync_to_vblank(void)
418471d7fec4Smrg{
418571d7fec4Smrg   GAL_GFX2SYNCTOVBLANK sSynctovblank;
418671d7fec4Smrg
418771d7fec4Smrg   INIT_GAL(&sSynctovblank);
418871d7fec4Smrg   sSynctovblank.dwSubfunction = GALFN_GFX2SYNCTOVBLANK;
418971d7fec4Smrg
419071d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSynctovblank)) {
419171d7fec4Smrg      return 0;
419271d7fec4Smrg   } else {
419371d7fec4Smrg      return 1;
419471d7fec4Smrg   }
419571d7fec4Smrg}
419671d7fec4Smrg
419771d7fec4Smrg/* Video routines */
419871d7fec4Smrg
419971d7fec4Smrg/*--------------------------------------------------------------------------
420071d7fec4Smrg * Gal_set_video_yuv_pitch
420171d7fec4Smrg *
420271d7fec4Smrg *  Description: This function sets the Video YUV pitch.
420371d7fec4Smrg *
420471d7fec4Smrg *   parameters:
420571d7fec4Smrg *       y_pitch: Y pitch.
420671d7fec4Smrg *	    uv_pitch: UV pitch.
420771d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
420871d7fec4Smrg *------------------------------------------------------------------------*/
420971d7fec4SmrgBOOLEAN
421071d7fec4SmrgGal_set_video_yuv_pitch(unsigned long y_pitch, unsigned long uv_pitch)
421171d7fec4Smrg{
421271d7fec4Smrg   GAL_VIDEOYUVPITCH sSetVideoyuvpitch;
421371d7fec4Smrg
421471d7fec4Smrg   INIT_GAL(&sSetVideoyuvpitch);
421571d7fec4Smrg   sSetVideoyuvpitch.dwSubfunction = GALFN_SETVIDEOYUVPITCH;
421671d7fec4Smrg   sSetVideoyuvpitch.y_pitch = y_pitch;
421771d7fec4Smrg   sSetVideoyuvpitch.uv_pitch = uv_pitch;
421871d7fec4Smrg
421971d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetVideoyuvpitch)) {
422071d7fec4Smrg      return 0;
422171d7fec4Smrg   } else {
422271d7fec4Smrg      return 1;
422371d7fec4Smrg   }
422471d7fec4Smrg}
422571d7fec4Smrg
422671d7fec4Smrg/*--------------------------------------------------------------------------
422771d7fec4Smrg * Gal_get_video_yuv_pitch
422871d7fec4Smrg *
422971d7fec4Smrg *  Description: This function gets the Video YUV pitch.
423071d7fec4Smrg *
423171d7fec4Smrg *   parameters:
423271d7fec4Smrg *       y_pitch: Y pitch.
423371d7fec4Smrg *	    uv_pitch: UV pitch.
423471d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
423571d7fec4Smrg *------------------------------------------------------------------------*/
423671d7fec4SmrgBOOLEAN
423771d7fec4SmrgGal_get_video_yuv_pitch(unsigned long *y_pitch, unsigned long *uv_pitch)
423871d7fec4Smrg{
423971d7fec4Smrg   GAL_VIDEOYUVPITCH sGetVideoyuvpitch;
424071d7fec4Smrg
424171d7fec4Smrg   INIT_GAL(&sGetVideoyuvpitch);
424271d7fec4Smrg   sGetVideoyuvpitch.dwSubfunction = GALFN_GETVIDEOYUVPITCH;
424371d7fec4Smrg
424471d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sGetVideoyuvpitch)) {
424571d7fec4Smrg      return 0;
424671d7fec4Smrg   } else {
424771d7fec4Smrg      *y_pitch = sGetVideoyuvpitch.y_pitch;
424871d7fec4Smrg      *uv_pitch = sGetVideoyuvpitch.uv_pitch;
424971d7fec4Smrg
425071d7fec4Smrg      return 1;
425171d7fec4Smrg   }
425271d7fec4Smrg}
425371d7fec4Smrg
425471d7fec4Smrg/*--------------------------------------------------------------------------
425571d7fec4Smrg * Gal_set_video_yuv_offsets
425671d7fec4Smrg *
425771d7fec4Smrg *  Description: This function sets the Video YUV offsets.
425871d7fec4Smrg *
425971d7fec4Smrg *   parameters:
426071d7fec4Smrg *      y_offset: Y offset.
426171d7fec4Smrg *		u_offset: U offset.
426271d7fec4Smrg *		v_offset: V offset.
426371d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
426471d7fec4Smrg *------------------------------------------------------------------------*/
426571d7fec4SmrgBOOLEAN
426671d7fec4SmrgGal_set_video_yuv_offsets(unsigned long y_offset, unsigned long u_offset,
426771d7fec4Smrg			  unsigned long v_offset)
426871d7fec4Smrg{
426971d7fec4Smrg   GAL_VIDEOYUVOFFSETS sSetVideoyuvoffsets;
427071d7fec4Smrg
427171d7fec4Smrg   INIT_GAL(&sSetVideoyuvoffsets);
427271d7fec4Smrg   sSetVideoyuvoffsets.dwSubfunction = GALFN_SETVIDEOYUVOFFSETS;
427371d7fec4Smrg   sSetVideoyuvoffsets.dwYoffset = y_offset;
427471d7fec4Smrg   sSetVideoyuvoffsets.dwUoffset = u_offset;
427571d7fec4Smrg   sSetVideoyuvoffsets.dwVoffset = v_offset;
427671d7fec4Smrg
427771d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetVideoyuvoffsets)) {
427871d7fec4Smrg      return 0;
427971d7fec4Smrg   } else {
428071d7fec4Smrg      return 1;
428171d7fec4Smrg   }
428271d7fec4Smrg}
428371d7fec4Smrg
428471d7fec4Smrg/*--------------------------------------------------------------------------
428571d7fec4Smrg * Gal_get_video_yuv_offsets
428671d7fec4Smrg *
428771d7fec4Smrg *  Description: This function gets the Video YUV offsets.
428871d7fec4Smrg *
428971d7fec4Smrg *   parameters:
429071d7fec4Smrg *      y_offset: Y offset.
429171d7fec4Smrg *		u_offset: U offset.
429271d7fec4Smrg *		v_offset: V offset.
429371d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
429471d7fec4Smrg *------------------------------------------------------------------------*/ BOOLEAN
429571d7fec4SmrgGal_get_video_yuv_offsets(unsigned long *y_offset,
429671d7fec4Smrg			  unsigned long *u_offset, unsigned long *v_offset)
429771d7fec4Smrg{
429871d7fec4Smrg   GAL_VIDEOYUVOFFSETS sGetVideoyuvoffsets;
429971d7fec4Smrg
430071d7fec4Smrg   INIT_GAL(&sGetVideoyuvoffsets);
430171d7fec4Smrg   sGetVideoyuvoffsets.dwSubfunction = GALFN_GETVIDEOYUVOFFSETS;
430271d7fec4Smrg
430371d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sGetVideoyuvoffsets)) {
430471d7fec4Smrg      return 0;
430571d7fec4Smrg   } else {
430671d7fec4Smrg      *y_offset = sGetVideoyuvoffsets.dwYoffset;
430771d7fec4Smrg      *u_offset = sGetVideoyuvoffsets.dwUoffset;
430871d7fec4Smrg      *v_offset = sGetVideoyuvoffsets.dwVoffset;
430971d7fec4Smrg      return 1;
431071d7fec4Smrg   }
431171d7fec4Smrg}
431271d7fec4Smrg
431371d7fec4Smrg/*--------------------------------------------------------------------------
431471d7fec4Smrg * Gal_set_video_left_crop
431571d7fec4Smrg *
431671d7fec4Smrg *  Description: This function sets the number of pixels which will be cropped
431771d7fec4Smrg *				 from the beginning of each video line.
431871d7fec4Smrg *
431971d7fec4Smrg *   parameters:
432071d7fec4Smrg *			  x:
432171d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
432271d7fec4Smrg *------------------------------------------------------------------------*/ BOOLEAN
432371d7fec4SmrgGal_set_video_left_crop(unsigned short x)
432471d7fec4Smrg{
432571d7fec4Smrg   GAL_VIDEOLEFTCROP sSetVideoleftcrop;;
432671d7fec4Smrg
432771d7fec4Smrg   INIT_GAL(&sSetVideoleftcrop);
432871d7fec4Smrg   sSetVideoleftcrop.dwSubfunction = GALFN_SETVIDEOLEFTCROP;
432971d7fec4Smrg   sSetVideoleftcrop.x = x;
433071d7fec4Smrg
433171d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetVideoleftcrop)) {
433271d7fec4Smrg      return 0;
433371d7fec4Smrg   } else {
433471d7fec4Smrg      return 1;
433571d7fec4Smrg   }
433671d7fec4Smrg}
433771d7fec4Smrg
433871d7fec4Smrg/*--------------------------------------------------------------------------
433971d7fec4Smrg * Gal_set_video_vertical_downscale
434071d7fec4Smrg *
434171d7fec4Smrg *  Description: This function sets the vertical downscale factor for the video
434271d7fec4Smrg *				 overlay window.
434371d7fec4Smrg *
434471d7fec4Smrg *   parameters:
434571d7fec4Smrg *		   srch: Height of the source.
434671d7fec4Smrg *		   dsth: Height of the destination.
434771d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
434871d7fec4Smrg *------------------------------------------------------------------------*/ BOOLEAN
434971d7fec4SmrgGal_set_video_vertical_downscale(unsigned short srch, unsigned short dsth)
435071d7fec4Smrg{
435171d7fec4Smrg   GAL_VIDEOVERTICALDOWNSCALE sSetVideoverticaldownscale;
435271d7fec4Smrg
435371d7fec4Smrg   INIT_GAL(&sSetVideoverticaldownscale);
435471d7fec4Smrg   sSetVideoverticaldownscale.dwSubfunction = GALFN_SETVIDEOVERTICALDOWNSCALE;
435571d7fec4Smrg   sSetVideoverticaldownscale.srch = srch;
435671d7fec4Smrg   sSetVideoverticaldownscale.dsth = dsth;
435771d7fec4Smrg
435871d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetVideoverticaldownscale)) {
435971d7fec4Smrg      return 0;
436071d7fec4Smrg   } else {
436171d7fec4Smrg      return 1;
436271d7fec4Smrg   }
436371d7fec4Smrg}
436471d7fec4Smrg
436571d7fec4Smrg/*--------------------------------------------------------------------------
436671d7fec4Smrg * Gal_set_vbi_source
436771d7fec4Smrg *
436871d7fec4Smrg *  Description: This function sets the VBI source.
436971d7fec4Smrg *
437071d7fec4Smrg *   parameters:
437171d7fec4Smrg *		 source: VBI Source type.
437271d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
437371d7fec4Smrg *------------------------------------------------------------------------*/ BOOLEAN
437471d7fec4SmrgGal_set_vbi_source(VbiSourceType source)
437571d7fec4Smrg{
437671d7fec4Smrg   GAL_VBISOURCE sSetVbisource;
437771d7fec4Smrg
437871d7fec4Smrg   INIT_GAL(&sSetVbisource);
437971d7fec4Smrg   sSetVbisource.dwSubfunction = GALFN_SETVBISOURCE;
438071d7fec4Smrg   sSetVbisource.source = source;
438171d7fec4Smrg
438271d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetVbisource)) {
438371d7fec4Smrg      return 0;
438471d7fec4Smrg   } else {
438571d7fec4Smrg      return 1;
438671d7fec4Smrg   }
438771d7fec4Smrg}
438871d7fec4Smrg
438971d7fec4Smrg/*--------------------------------------------------------------------------
439071d7fec4Smrg * Gal_get_vbi_source
439171d7fec4Smrg *
439271d7fec4Smrg *  Description: This function gets the VBI source.
439371d7fec4Smrg *
439471d7fec4Smrg *   parameters:
439571d7fec4Smrg *		 source: VBI Source type.
439671d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
439771d7fec4Smrg *------------------------------------------------------------------------*/
439871d7fec4SmrgBOOLEAN
439971d7fec4SmrgGal_get_vbi_source(VbiSourceType * source)
440071d7fec4Smrg{
440171d7fec4Smrg   GAL_VBISOURCE sGetVbisource;
440271d7fec4Smrg
440371d7fec4Smrg   INIT_GAL(&sGetVbisource);
440471d7fec4Smrg   sGetVbisource.dwSubfunction = GALFN_GETVBISOURCE;
440571d7fec4Smrg
440671d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sGetVbisource)) {
440771d7fec4Smrg      return 0;
440871d7fec4Smrg   } else {
440971d7fec4Smrg
441071d7fec4Smrg      *source = sGetVbisource.source;
441171d7fec4Smrg      return 1;
441271d7fec4Smrg   }
441371d7fec4Smrg}
441471d7fec4Smrg
441571d7fec4Smrg/*--------------------------------------------------------------------------
441671d7fec4Smrg * Gal_set_vbi_lines
441771d7fec4Smrg *
441871d7fec4Smrg *  Description: This function sets the VBI lines.
441971d7fec4Smrg *
442071d7fec4Smrg *   parameters:
442171d7fec4Smrg *		   even: VBI even lines.
442271d7fec4Smrg *			odd: VBI odd lines.
442371d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
442471d7fec4Smrg *------------------------------------------------------------------------*/
442571d7fec4SmrgBOOLEAN
442671d7fec4SmrgGal_set_vbi_lines(unsigned long even, unsigned long odd)
442771d7fec4Smrg{
442871d7fec4Smrg   GAL_VBILINES sSetVbilines;
442971d7fec4Smrg
443071d7fec4Smrg   INIT_GAL(&sSetVbilines);
443171d7fec4Smrg   sSetVbilines.dwSubfunction = GALFN_SETVBILINES;
443271d7fec4Smrg   sSetVbilines.even = even;
443371d7fec4Smrg   sSetVbilines.odd = odd;
443471d7fec4Smrg
443571d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetVbilines)) {
443671d7fec4Smrg      return 0;
443771d7fec4Smrg   } else {
443871d7fec4Smrg      return 1;
443971d7fec4Smrg   }
444071d7fec4Smrg}
444171d7fec4Smrg
444271d7fec4Smrg/*--------------------------------------------------------------------------
444371d7fec4Smrg * Gal_get_vbi_lines
444471d7fec4Smrg *
444571d7fec4Smrg *  Description: This function gets the VBI lines.
444671d7fec4Smrg *
444771d7fec4Smrg *   parameters:
444871d7fec4Smrg *	      lines: VBI lines.
444971d7fec4Smrg *			odd: VBI odd lines.
445071d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
445171d7fec4Smrg *------------------------------------------------------------------------*/ BOOLEAN
445271d7fec4SmrgGal_get_vbi_lines(int odd, unsigned long *lines)
445371d7fec4Smrg{
445471d7fec4Smrg   GAL_VBILINES sGetVbilines;
445571d7fec4Smrg
445671d7fec4Smrg   INIT_GAL(&sGetVbilines);
445771d7fec4Smrg   sGetVbilines.dwSubfunction = GALFN_GETVBILINES;
445871d7fec4Smrg   sGetVbilines.odd = odd;
445971d7fec4Smrg
446071d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sGetVbilines)) {
446171d7fec4Smrg      return 0;
446271d7fec4Smrg   } else {
446371d7fec4Smrg      *lines = sGetVbilines.lines;
446471d7fec4Smrg      return 1;
446571d7fec4Smrg   }
446671d7fec4Smrg}
446771d7fec4Smrg
446871d7fec4Smrg/*--------------------------------------------------------------------------
446971d7fec4Smrg * Gal_set_vbi_total
447071d7fec4Smrg *
447171d7fec4Smrg *  Description: This function sets the total number of VBI bytes for each
447271d7fec4Smrg *				 field.
447371d7fec4Smrg *
447471d7fec4Smrg *   parameters:
447571d7fec4Smrg *	       even:
447671d7fec4Smrg *			odd:
447771d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
447871d7fec4Smrg *------------------------------------------------------------------------*/
447971d7fec4SmrgBOOLEAN
448071d7fec4SmrgGal_set_vbi_total(unsigned long even, unsigned long odd)
448171d7fec4Smrg{
448271d7fec4Smrg   GAL_VBITOTAL sSetVbitotal;
448371d7fec4Smrg
448471d7fec4Smrg   INIT_GAL(&sSetVbitotal);
448571d7fec4Smrg   sSetVbitotal.dwSubfunction = GALFN_SETVBITOTAL;
448671d7fec4Smrg   sSetVbitotal.even = even;
448771d7fec4Smrg   sSetVbitotal.odd = odd;
448871d7fec4Smrg
448971d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetVbitotal)) {
449071d7fec4Smrg      return 0;
449171d7fec4Smrg   } else {
449271d7fec4Smrg      return 1;
449371d7fec4Smrg   }
449471d7fec4Smrg}
449571d7fec4Smrg
449671d7fec4Smrg/*--------------------------------------------------------------------------
449771d7fec4Smrg * Gal_set_vbi_total
449871d7fec4Smrg *
449971d7fec4Smrg *  Description: This function gets the total number of VBI bytes in the
450071d7fec4Smrg *				 field.
450171d7fec4Smrg *
450271d7fec4Smrg *   parameters:
450371d7fec4Smrg *	       even:
450471d7fec4Smrg *			odd:
450571d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
450671d7fec4Smrg *------------------------------------------------------------------------*/ BOOLEAN
450771d7fec4SmrgGal_get_vbi_total(int odd, unsigned long *total)
450871d7fec4Smrg{
450971d7fec4Smrg   GAL_VBITOTAL sGetVbitotal;
451071d7fec4Smrg
451171d7fec4Smrg   INIT_GAL(&sGetVbitotal);
451271d7fec4Smrg   sGetVbitotal.dwSubfunction = GALFN_GETVBITOTAL;
451371d7fec4Smrg   sGetVbitotal.odd = odd;
451471d7fec4Smrg
451571d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sGetVbitotal)) {
451671d7fec4Smrg      return 0;
451771d7fec4Smrg   } else {
451871d7fec4Smrg      *total = sGetVbitotal.total;
451971d7fec4Smrg      return 1;
452071d7fec4Smrg   }
452171d7fec4Smrg}
452271d7fec4Smrg
452371d7fec4Smrg/*--------------------------------------------------------------------------
452471d7fec4Smrg * Gal_set_vertical_scaler_offset
452571d7fec4Smrg *
452671d7fec4Smrg *  Description: This function sets the Video vertical scaler offset.
452771d7fec4Smrg *
452871d7fec4Smrg *   parameters:
452971d7fec4Smrg *	     offset: Vertical Scaler offset.
453071d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
453171d7fec4Smrg *------------------------------------------------------------------------*/ BOOLEAN
453271d7fec4SmrgGal_set_vertical_scaler_offset(char offset)
453371d7fec4Smrg{
453471d7fec4Smrg   GAL_VSCALEROFFSET sSetVscaleroffset;
453571d7fec4Smrg
453671d7fec4Smrg   INIT_GAL(&sSetVscaleroffset);
453771d7fec4Smrg   sSetVscaleroffset.dwSubfunction = GALFN_SETVSCALEROFFSET;
453871d7fec4Smrg   sSetVscaleroffset.offset = offset;
453971d7fec4Smrg
454071d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetVscaleroffset)) {
454171d7fec4Smrg      return 0;
454271d7fec4Smrg   } else {
454371d7fec4Smrg      return 1;
454471d7fec4Smrg   }
454571d7fec4Smrg}
454671d7fec4Smrg
454771d7fec4Smrg/*--------------------------------------------------------------------------
454871d7fec4Smrg * Gal_get_vertical_scaler_offset
454971d7fec4Smrg *
455071d7fec4Smrg *  Description: This function gets the Video vertical scaler offset.
455171d7fec4Smrg *
455271d7fec4Smrg *   parameters:
455371d7fec4Smrg *	     offset: Vertical Scaler offset.
455471d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
455571d7fec4Smrg *------------------------------------------------------------------------*/ BOOLEAN
455671d7fec4SmrgGal_get_vertical_scaler_offset(char *offset)
455771d7fec4Smrg{
455871d7fec4Smrg   GAL_VSCALEROFFSET sGetVscaleroffset;
455971d7fec4Smrg
456071d7fec4Smrg   INIT_GAL(&sGetVscaleroffset);
456171d7fec4Smrg   sGetVscaleroffset.dwSubfunction = GALFN_GETVSCALEROFFSET;
456271d7fec4Smrg
456371d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sGetVscaleroffset)) {
456471d7fec4Smrg      return 0;
456571d7fec4Smrg   } else {
456671d7fec4Smrg
456771d7fec4Smrg      *offset = sGetVscaleroffset.offset;
456871d7fec4Smrg      return 1;
456971d7fec4Smrg   }
457071d7fec4Smrg}
457171d7fec4Smrg
457271d7fec4Smrg/*--------------------------------------------------------------------------
457371d7fec4Smrg * Gal_get_video_interlaced
457471d7fec4Smrg *
457571d7fec4Smrg *  Description: This function gets the video interlaced mode.
457671d7fec4Smrg *   parameters:
457771d7fec4Smrg *   interlaced: ptr to the interlaced status.
457871d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
457971d7fec4Smrg *------------------------------------------------------------------------*/
458071d7fec4SmrgBOOLEAN
458171d7fec4SmrgGal_get_video_interlaced(int *interlaced)
458271d7fec4Smrg{
458371d7fec4Smrg   GAL_GETVIDEOINTERLACED sGetvideointerlaced;
458471d7fec4Smrg
458571d7fec4Smrg   INIT_GAL(&sGetvideointerlaced);
458671d7fec4Smrg   sGetvideointerlaced.dwSubfunction = GALFN_GETVIDEOINTERLACED;
458771d7fec4Smrg
458871d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sGetvideointerlaced)) {
458971d7fec4Smrg      return 0;
459071d7fec4Smrg   } else {
459171d7fec4Smrg      *interlaced = sGetvideointerlaced.interlaced;
459271d7fec4Smrg      return 1;
459371d7fec4Smrg   }
459471d7fec4Smrg}
459571d7fec4Smrg
459671d7fec4Smrg/*--------------------------------------------------------------------------
459771d7fec4Smrg * Gal_get_color_space_YUV
459871d7fec4Smrg *
459971d7fec4Smrg *  Description: This function gets the video color space YUV.
460071d7fec4Smrg *   parameters:
460171d7fec4Smrg *   colorspace: ptr to the color space.
460271d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
460371d7fec4Smrg *------------------------------------------------------------------------*/
460471d7fec4SmrgBOOLEAN
460571d7fec4SmrgGal_get_color_space_YUV(int *colorspace)
460671d7fec4Smrg{
460771d7fec4Smrg   GAL_COLORSPACEYUV sGetcolorspaceyuv;
460871d7fec4Smrg
460971d7fec4Smrg   INIT_GAL(&sGetcolorspaceyuv);
461071d7fec4Smrg   sGetcolorspaceyuv.dwSubfunction = GALFN_GETCOLORSPACEYUV;
461171d7fec4Smrg
461271d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sGetcolorspaceyuv)) {
461371d7fec4Smrg      return 0;
461471d7fec4Smrg   } else {
461571d7fec4Smrg      *colorspace = sGetcolorspaceyuv.colorspace;
461671d7fec4Smrg      return 1;
461771d7fec4Smrg   }
461871d7fec4Smrg}
461971d7fec4Smrg
462071d7fec4Smrg/*--------------------------------------------------------------------------
462171d7fec4Smrg * Gal_get_genlock_enable
462271d7fec4Smrg *
462371d7fec4Smrg *  Description: This function gets the enable state of the genlock.
462471d7fec4Smrg *   parameters:
462571d7fec4Smrg *       enable: ptr to the enable state of the genlock.
462671d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
462771d7fec4Smrg *------------------------------------------------------------------------*/
462871d7fec4SmrgBOOLEAN
462971d7fec4SmrgGal_get_genlock_enable(int *enable)
463071d7fec4Smrg{
463171d7fec4Smrg   GAL_GENLOCKENABLE sGetgenlockenable;
463271d7fec4Smrg
463371d7fec4Smrg   INIT_GAL(&sGetgenlockenable);
463471d7fec4Smrg   sGetgenlockenable.dwSubfunction = GALFN_GETGENLOCKENABLE;
463571d7fec4Smrg
463671d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sGetgenlockenable)) {
463771d7fec4Smrg      return 0;
463871d7fec4Smrg   } else {
463971d7fec4Smrg      *enable = sGetgenlockenable.enable;
464071d7fec4Smrg      return 1;
464171d7fec4Smrg   }
464271d7fec4Smrg}
464371d7fec4Smrg
464471d7fec4Smrg/*--------------------------------------------------------------------------
464571d7fec4Smrg * Gal_set_genlock_enable
464671d7fec4Smrg *
464771d7fec4Smrg *  Description: This function enable/disables and configure the genlock
464871d7fec4Smrg *				 according to the parameters.
464971d7fec4Smrg *   parameters:
465071d7fec4Smrg *       enable:  enable state of the genlock.
465171d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
465271d7fec4Smrg *------------------------------------------------------------------------*/
465371d7fec4SmrgBOOLEAN
465471d7fec4SmrgGal_set_genlock_enable(int enable)
465571d7fec4Smrg{
465671d7fec4Smrg   GAL_GENLOCKENABLE sSetgenlockenable;
465771d7fec4Smrg
465871d7fec4Smrg   INIT_GAL(&sSetgenlockenable);
465971d7fec4Smrg   sSetgenlockenable.dwSubfunction = GALFN_SETGENLOCKENABLE;
466071d7fec4Smrg
466171d7fec4Smrg   sSetgenlockenable.enable = enable;
466271d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetgenlockenable)) {
466371d7fec4Smrg      return 0;
466471d7fec4Smrg   } else {
466571d7fec4Smrg      return 1;
466671d7fec4Smrg   }
466771d7fec4Smrg}
466871d7fec4Smrg
466971d7fec4Smrg/*--------------------------------------------------------------------------
467071d7fec4Smrg * Gal_get_genlock_delay
467171d7fec4Smrg *
467271d7fec4Smrg *  Description: This function gets the genlock delay.
467371d7fec4Smrg *   parameters:
467471d7fec4Smrg *        delay:  Ptr to the genlock delay.
467571d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
467671d7fec4Smrg *------------------------------------------------------------------------*/
467771d7fec4SmrgBOOLEAN
467871d7fec4SmrgGal_get_genlock_delay(unsigned long *delay)
467971d7fec4Smrg{
468071d7fec4Smrg   GAL_GENLOCKDELAY sGetgenlockdelay;
468171d7fec4Smrg
468271d7fec4Smrg   INIT_GAL(&sGetgenlockdelay);
468371d7fec4Smrg   sGetgenlockdelay.dwSubfunction = GALFN_GETGENLOCKDELAY;
468471d7fec4Smrg
468571d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sGetgenlockdelay)) {
468671d7fec4Smrg      return 0;
468771d7fec4Smrg   } else {
468871d7fec4Smrg      *delay = sGetgenlockdelay.delay;
468971d7fec4Smrg      return 1;
469071d7fec4Smrg   }
469171d7fec4Smrg}
469271d7fec4Smrg
469371d7fec4Smrg/*--------------------------------------------------------------------------
469471d7fec4Smrg * Gal_set_genlock_delay
469571d7fec4Smrg *
469671d7fec4Smrg *  Description: This function sets the genlock delay.
469771d7fec4Smrg *   parameters:
469871d7fec4Smrg *        delay:  genlock delay.
469971d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
470071d7fec4Smrg *------------------------------------------------------------------------*/
470171d7fec4SmrgBOOLEAN
470271d7fec4SmrgGal_set_genlock_delay(unsigned long delay)
470371d7fec4Smrg{
470471d7fec4Smrg   GAL_GENLOCKDELAY sSetgenlockdelay;
470571d7fec4Smrg
470671d7fec4Smrg   INIT_GAL(&sSetgenlockdelay);
470771d7fec4Smrg   sSetgenlockdelay.dwSubfunction = GALFN_SETGENLOCKDELAY;
470871d7fec4Smrg
470971d7fec4Smrg   sSetgenlockdelay.delay = delay;
471071d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetgenlockdelay)) {
471171d7fec4Smrg      return 0;
471271d7fec4Smrg   } else {
471371d7fec4Smrg      return 1;
471471d7fec4Smrg   }
471571d7fec4Smrg}
471671d7fec4Smrg
471771d7fec4SmrgBOOLEAN
471871d7fec4SmrgGal_set_top_line_in_odd(int enable)
471971d7fec4Smrg{
472071d7fec4Smrg   GAL_TOPLINEINODD sSettoplineinodd;
472171d7fec4Smrg
472271d7fec4Smrg   INIT_GAL(&sSettoplineinodd);
472371d7fec4Smrg   sSettoplineinodd.dwSubfunction = GALFN_SETTOPLINEINODD;
472471d7fec4Smrg
472571d7fec4Smrg   sSettoplineinodd.enable = enable;
472671d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSettoplineinodd)) {
472771d7fec4Smrg      return 0;
472871d7fec4Smrg   } else {
472971d7fec4Smrg      return 1;
473071d7fec4Smrg   }
473171d7fec4Smrg}
473271d7fec4Smrg
473371d7fec4Smrg/*--------------------------------------------------------------------------
473471d7fec4Smrg * Gal_get_video_cursor.
473571d7fec4Smrg *
473671d7fec4Smrg *  Description: This function gets configuration of the Video Hardware
473771d7fec4Smrg *				 cursor.
473871d7fec4Smrg *   parameters:
473971d7fec4Smrg *          key: color key.
474071d7fec4Smrg *		   mask: color mask.
474171d7fec4Smrg *select_color2: selected for color2.
474271d7fec4Smrg *		 color1: color1 value.
474371d7fec4Smrg *		 color2: color2 value.
474471d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
474571d7fec4Smrg *------------------------------------------------------------------------*/
474671d7fec4SmrgBOOLEAN
474771d7fec4SmrgGal_get_video_cursor(unsigned long *key,
474871d7fec4Smrg		     unsigned long *mask,
474971d7fec4Smrg		     unsigned short *select_color2,
475071d7fec4Smrg		     unsigned long *color1, unsigned long *color2)
475171d7fec4Smrg{
475271d7fec4Smrg   GAL_VIDEOCURSOR sGetvideocursor;
475371d7fec4Smrg
475471d7fec4Smrg   INIT_GAL(&sGetvideocursor);
475571d7fec4Smrg   sGetvideocursor.dwSubfunction = GALFN_GETVIDEOCURSOR;
475671d7fec4Smrg
475771d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sGetvideocursor)) {
475871d7fec4Smrg      return 0;
475971d7fec4Smrg   } else {
476071d7fec4Smrg      *key = sGetvideocursor.key;
476171d7fec4Smrg      *mask = sGetvideocursor.mask;
476271d7fec4Smrg      *select_color2 = sGetvideocursor.select_color2;
476371d7fec4Smrg      *color1 = sGetvideocursor.color1;
476471d7fec4Smrg      *color2 = sGetvideocursor.color2;
476571d7fec4Smrg      return 1;
476671d7fec4Smrg   }
476771d7fec4Smrg}
476871d7fec4Smrg
476971d7fec4Smrg/*--------------------------------------------------------------------------
477071d7fec4Smrg * Gal_read_crc.
477171d7fec4Smrg *
477271d7fec4Smrg *  Description: This function reads the hardware CRC value, which is used for
477371d7fec4Smrg *				 automated testing.
477471d7fec4Smrg *   parameters:
477571d7fec4Smrg *          crc: Holds the crc value.
477671d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
477771d7fec4Smrg *------------------------------------------------------------------------*/
477871d7fec4SmrgBOOLEAN
477971d7fec4SmrgGal_read_crc(unsigned long *crc)
478071d7fec4Smrg{
478171d7fec4Smrg   GAL_READCRC sReadcrc;
478271d7fec4Smrg
478371d7fec4Smrg   INIT_GAL(&sReadcrc);
478471d7fec4Smrg   sReadcrc.dwSubfunction = GALFN_READCRC;
478571d7fec4Smrg
478671d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sReadcrc)) {
478771d7fec4Smrg      return 0;
478871d7fec4Smrg   } else {
478971d7fec4Smrg      *crc = sReadcrc.crc;
479071d7fec4Smrg      return 1;
479171d7fec4Smrg   }
479271d7fec4Smrg}
479371d7fec4Smrg
479471d7fec4Smrg/*--------------------------------------------------------------------------
479571d7fec4Smrg * Gal_read_window_crc.
479671d7fec4Smrg *
479771d7fec4Smrg *  Description: This function reads the hardware CRC value for a subsection
479871d7fec4Smrg *				 of the display.
479971d7fec4Smrg *
480071d7fec4Smrg *   parameters:
480171d7fec4Smrg *       source:
480271d7fec4Smrg *			  x:
480371d7fec4Smrg *			  y:
480471d7fec4Smrg *	      width:
480571d7fec4Smrg *		 height:
480671d7fec4Smrg *			crc:
480771d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
480871d7fec4Smrg *------------------------------------------------------------------------*/
480971d7fec4SmrgBOOLEAN
481071d7fec4SmrgGal_read_window_crc(int source, unsigned short x, unsigned short y,
481171d7fec4Smrg		    unsigned short width, unsigned short height,
481271d7fec4Smrg		    int crc32, unsigned long *crc)
481371d7fec4Smrg{
481471d7fec4Smrg   GAL_READWINDOWCRC sReadwindowcrc;
481571d7fec4Smrg
481671d7fec4Smrg   INIT_GAL(&sReadwindowcrc);
481771d7fec4Smrg   sReadwindowcrc.dwSubfunction = GALFN_READWINDOWCRC;
481871d7fec4Smrg   sReadwindowcrc.source = source;
481971d7fec4Smrg   sReadwindowcrc.x = x;
482071d7fec4Smrg   sReadwindowcrc.y = y;
482171d7fec4Smrg   sReadwindowcrc.width = width;
482271d7fec4Smrg   sReadwindowcrc.height = height;
482371d7fec4Smrg   sReadwindowcrc.crc32 = crc32;
482471d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sReadwindowcrc)) {
482571d7fec4Smrg      return 0;
482671d7fec4Smrg   } else {
482771d7fec4Smrg      *crc = sReadwindowcrc.crc;
482871d7fec4Smrg      return 1;
482971d7fec4Smrg   }
483071d7fec4Smrg}
483171d7fec4Smrg
483271d7fec4Smrg/*--------------------------------------------------------------------------
483371d7fec4Smrg * Gal_get_macrovision_enable.
483471d7fec4Smrg *
483571d7fec4Smrg *  Description: This function gets the enable state of the macrovision.
483671d7fec4Smrg *
483771d7fec4Smrg *   parameters:
483871d7fec4Smrg *       enable: ptr holds the macrovision enable state.
483971d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
484071d7fec4Smrg *------------------------------------------------------------------------*/
484171d7fec4SmrgBOOLEAN
484271d7fec4SmrgGal_get_macrovision_enable(int *enable)
484371d7fec4Smrg{
484471d7fec4Smrg   GAL_MACROVISIONENABLE sGetmacrovisionenable;
484571d7fec4Smrg
484671d7fec4Smrg   INIT_GAL(&sGetmacrovisionenable);
484771d7fec4Smrg   sGetmacrovisionenable.dwSubfunction = GALFN_GETMACROVISIONENABLE;
484871d7fec4Smrg
484971d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sGetmacrovisionenable)) {
485071d7fec4Smrg      return 0;
485171d7fec4Smrg   } else {
485271d7fec4Smrg      *enable = sGetmacrovisionenable.enable;
485371d7fec4Smrg      return 1;
485471d7fec4Smrg   }
485571d7fec4Smrg}
485671d7fec4Smrg
485771d7fec4Smrg/*--------------------------------------------------------------------------
485871d7fec4Smrg * Gal_set_macrovision_enable.
485971d7fec4Smrg *
486071d7fec4Smrg *  Description: This function gets the enable state of the macrovision.
486171d7fec4Smrg *
486271d7fec4Smrg *   parameters:
486371d7fec4Smrg *       enable: macrovision enable state.
486471d7fec4Smrg *       return: '1' was returned on success otherwise '0' was returned.
486571d7fec4Smrg *------------------------------------------------------------------------*/
486671d7fec4SmrgBOOLEAN
486771d7fec4SmrgGal_set_macrovision_enable(int enable)
486871d7fec4Smrg{
486971d7fec4Smrg   GAL_MACROVISIONENABLE sSetmacrovisionenable;
487071d7fec4Smrg
487171d7fec4Smrg   INIT_GAL(&sSetmacrovisionenable);
487271d7fec4Smrg   sSetmacrovisionenable.dwSubfunction = GALFN_SETMACROVISIONENABLE;
487371d7fec4Smrg
487471d7fec4Smrg   sSetmacrovisionenable.enable = enable;
487571d7fec4Smrg   if (ioctl(ifbdev_handle, FBIOGAL_API, &sSetmacrovisionenable)) {
487671d7fec4Smrg      return 0;
487771d7fec4Smrg   } else {
487871d7fec4Smrg      return 1;
487971d7fec4Smrg   }
488071d7fec4Smrg}
4881