162306a36Sopenharmony_ci/*
262306a36Sopenharmony_ci *  linux/drivers/video/kyro/STG4000Interface.h
362306a36Sopenharmony_ci *
462306a36Sopenharmony_ci *  Copyright (C) 2002 STMicroelectronics
562306a36Sopenharmony_ci *
662306a36Sopenharmony_ci * This file is subject to the terms and conditions of the GNU General Public
762306a36Sopenharmony_ci * License.  See the file COPYING in the main directory of this archive
862306a36Sopenharmony_ci * for more details.
962306a36Sopenharmony_ci */
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci#ifndef _STG4000INTERFACE_H
1262306a36Sopenharmony_ci#define _STG4000INTERFACE_H
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ci#include <linux/pci.h>
1562306a36Sopenharmony_ci#include <video/kyro.h>
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci/*
1862306a36Sopenharmony_ci * Ramdac Setup
1962306a36Sopenharmony_ci */
2062306a36Sopenharmony_ciextern int InitialiseRamdac(volatile STG4000REG __iomem *pSTGReg, u32 displayDepth,
2162306a36Sopenharmony_ci			    u32 displayWidth, u32 displayHeight,
2262306a36Sopenharmony_ci			    s32 HSyncPolarity, s32 VSyncPolarity,
2362306a36Sopenharmony_ci			    u32 *pixelClock);
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ciextern void DisableRamdacOutput(volatile STG4000REG __iomem *pSTGReg);
2662306a36Sopenharmony_ciextern void EnableRamdacOutput(volatile STG4000REG __iomem *pSTGReg);
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci/*
2962306a36Sopenharmony_ci * Timing generator setup
3062306a36Sopenharmony_ci */
3162306a36Sopenharmony_ciextern void DisableVGA(volatile STG4000REG __iomem *pSTGReg);
3262306a36Sopenharmony_ciextern void StopVTG(volatile STG4000REG __iomem *pSTGReg);
3362306a36Sopenharmony_ciextern void StartVTG(volatile STG4000REG __iomem *pSTGReg);
3462306a36Sopenharmony_ciextern void SetupVTG(volatile STG4000REG __iomem *pSTGReg,
3562306a36Sopenharmony_ci		     const struct kyrofb_info * pTiming);
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ciextern u32 ProgramClock(u32 refClock, u32 coreClock, u32 *FOut, u32 *ROut, u32 *POut);
3862306a36Sopenharmony_ciextern int SetCoreClockPLL(volatile STG4000REG __iomem *pSTGReg, struct pci_dev *pDev);
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ci/*
4162306a36Sopenharmony_ci * Overlay setup
4262306a36Sopenharmony_ci */
4362306a36Sopenharmony_ciextern void ResetOverlayRegisters(volatile STG4000REG __iomem *pSTGReg);
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_ciextern int CreateOverlaySurface(volatile STG4000REG __iomem *pSTGReg,
4662306a36Sopenharmony_ci				u32 ulWidth, u32 ulHeight,
4762306a36Sopenharmony_ci				int bLinear,
4862306a36Sopenharmony_ci				u32 ulOverlayOffset,
4962306a36Sopenharmony_ci				u32 * retStride, u32 * retUVStride);
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ciextern int SetOverlayBlendMode(volatile STG4000REG __iomem *pSTGReg,
5262306a36Sopenharmony_ci			       OVRL_BLEND_MODE mode,
5362306a36Sopenharmony_ci			       u32 ulAlpha, u32 ulColorKey);
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ciextern int SetOverlayViewPort(volatile STG4000REG __iomem *pSTGReg,
5662306a36Sopenharmony_ci			      u32 left, u32 top,
5762306a36Sopenharmony_ci			      u32 right, u32 bottom);
5862306a36Sopenharmony_ci
5962306a36Sopenharmony_ciextern void EnableOverlayPlane(volatile STG4000REG __iomem *pSTGReg);
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_ci#endif /* _STG4000INTERFACE_H */
62