115d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman/*
215d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman * Copyright (C) 2004,2005  ADDI-DATA GmbH for the source code of this module.
315d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman *
415d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman *	ADDI-DATA GmbH
515d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman *	Dieselstrasse 3
615d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman *	D-77833 Ottersweier
715d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman *	Tel: +19(0)7223/9493-0
815d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman *	Fax: +49(0)7223/9493-92
925417922694e60f04cd4dc8448ada9236f18c532Justin P. Mattock *	http://www.addi-data.com
1015d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman *	info@addi-data.com
1115d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman *
1215d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman * This program is free software; you can redistribute it and/or modify it
1315d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman * under the terms of the GNU General Public License as published by the Free
1415d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman * Software Foundation; either version 2 of the License, or (at your option)
1515d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman * any later version.
1615d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman */
1715d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman
1815d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman#define APCI1710_30MHZ		30
1915d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman#define APCI1710_33MHZ		33
2015d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman#define APCI1710_40MHZ		40
2115d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman
2215d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman#define APCI1710_PWM_INIT		0
23c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH#define APCI1710_PWM_GETINITDATA	1
24c995fe9475e062bab6f5a45ed28cd2d3d955ef43ADDI-DATA GmbH
2515d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman#define APCI1710_PWM_DISABLE		0
2615d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman#define APCI1710_PWM_ENABLE		1
2715d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman#define APCI1710_PWM_NEWTIMING		2
2815d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman
2974b894e56abcb2403894b268100773f4aabe1999Bill Pembertonint i_APCI1710_InsnConfigPWM(struct comedi_device *dev, struct comedi_subdevice *s,
3090035c0886b256d75bced13b3b3cea5234aff136Bill Pemberton			     struct comedi_insn *insn, unsigned int *data);
3115d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman
3274b894e56abcb2403894b268100773f4aabe1999Bill Pembertonint i_APCI1710_InitPWM(struct comedi_device *dev,
331783fbfe023b7c2b912fbb020e01ff46985aa0abBill Pemberton		       unsigned char b_ModulNbr,
341783fbfe023b7c2b912fbb020e01ff46985aa0abBill Pemberton		       unsigned char b_PWM,
351783fbfe023b7c2b912fbb020e01ff46985aa0abBill Pemberton		       unsigned char b_ClockSelection,
361783fbfe023b7c2b912fbb020e01ff46985aa0abBill Pemberton		       unsigned char b_TimingUnit,
3782a6e2e7ab47b940d5d1d7c1d13498be27f238f8Bill Pemberton		       unsigned int ul_LowTiming,
3882a6e2e7ab47b940d5d1d7c1d13498be27f238f8Bill Pemberton		       unsigned int ul_HighTiming,
39da91b2692e0939b307f9047192d2b9fe07793e7aBill Pemberton		       unsigned int *pul_RealLowTiming, unsigned int *pul_RealHighTiming);
4015d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman
4174b894e56abcb2403894b268100773f4aabe1999Bill Pembertonint i_APCI1710_GetPWMInitialisation(struct comedi_device *dev,
421783fbfe023b7c2b912fbb020e01ff46985aa0abBill Pemberton				    unsigned char b_ModulNbr,
431783fbfe023b7c2b912fbb020e01ff46985aa0abBill Pemberton				    unsigned char b_PWM,
44da91b2692e0939b307f9047192d2b9fe07793e7aBill Pemberton				    unsigned char *pb_TimingUnit,
45da91b2692e0939b307f9047192d2b9fe07793e7aBill Pemberton				    unsigned int *pul_LowTiming,
46da91b2692e0939b307f9047192d2b9fe07793e7aBill Pemberton				    unsigned int *pul_HighTiming,
47da91b2692e0939b307f9047192d2b9fe07793e7aBill Pemberton				    unsigned char *pb_StartLevel,
48da91b2692e0939b307f9047192d2b9fe07793e7aBill Pemberton				    unsigned char *pb_StopMode,
49da91b2692e0939b307f9047192d2b9fe07793e7aBill Pemberton				    unsigned char *pb_StopLevel,
50da91b2692e0939b307f9047192d2b9fe07793e7aBill Pemberton				    unsigned char *pb_ExternGate,
51da91b2692e0939b307f9047192d2b9fe07793e7aBill Pemberton				    unsigned char *pb_InterruptEnable, unsigned char *pb_Enable);
5215d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman
5374b894e56abcb2403894b268100773f4aabe1999Bill Pembertonint i_APCI1710_InsnWritePWM(struct comedi_device *dev, struct comedi_subdevice *s,
5490035c0886b256d75bced13b3b3cea5234aff136Bill Pemberton			    struct comedi_insn *insn, unsigned int *data);
5515d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman
5674b894e56abcb2403894b268100773f4aabe1999Bill Pembertonint i_APCI1710_EnablePWM(struct comedi_device *dev,
571783fbfe023b7c2b912fbb020e01ff46985aa0abBill Pemberton			 unsigned char b_ModulNbr,
581783fbfe023b7c2b912fbb020e01ff46985aa0abBill Pemberton			 unsigned char b_PWM,
591783fbfe023b7c2b912fbb020e01ff46985aa0abBill Pemberton			 unsigned char b_StartLevel,
601783fbfe023b7c2b912fbb020e01ff46985aa0abBill Pemberton			 unsigned char b_StopMode,
611783fbfe023b7c2b912fbb020e01ff46985aa0abBill Pemberton			 unsigned char b_StopLevel, unsigned char b_ExternGate,
621783fbfe023b7c2b912fbb020e01ff46985aa0abBill Pemberton			 unsigned char b_InterruptEnable);
6315d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman
6474b894e56abcb2403894b268100773f4aabe1999Bill Pembertonint i_APCI1710_SetNewPWMTiming(struct comedi_device *dev,
651783fbfe023b7c2b912fbb020e01ff46985aa0abBill Pemberton			       unsigned char b_ModulNbr,
661783fbfe023b7c2b912fbb020e01ff46985aa0abBill Pemberton			       unsigned char b_PWM, unsigned char b_TimingUnit,
6782a6e2e7ab47b940d5d1d7c1d13498be27f238f8Bill Pemberton			       unsigned int ul_LowTiming, unsigned int ul_HighTiming);
6815d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman
6974b894e56abcb2403894b268100773f4aabe1999Bill Pembertonint i_APCI1710_DisablePWM(struct comedi_device *dev, unsigned char b_ModulNbr, unsigned char b_PWM);
7015d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman
7174b894e56abcb2403894b268100773f4aabe1999Bill Pembertonint i_APCI1710_InsnReadGetPWMStatus(struct comedi_device *dev, struct comedi_subdevice *s,
7290035c0886b256d75bced13b3b3cea5234aff136Bill Pemberton				    struct comedi_insn *insn, unsigned int *data);
7315d8826a6a2ed954ce7daf1d321cce99d5c12668Greg Kroah-Hartman
7474b894e56abcb2403894b268100773f4aabe1999Bill Pembertonint i_APCI1710_InsnBitsReadPWMInterrupt(struct comedi_device *dev,
7534c43922e62708d45e9660eee4b4f1fb7b4bf2c7Bill Pemberton					struct comedi_subdevice *s,
7690035c0886b256d75bced13b3b3cea5234aff136Bill Pemberton					struct comedi_insn *insn, unsigned int *data);
77