123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- #include <linux/module.h>
- #include <linux/init.h>
- #include <linux/delay.h>
- #include <asm/io.h>
- #include "bttvp.h"
- EXPORT_SYMBOL(bttv_get_pcidev);
- EXPORT_SYMBOL(bttv_gpio_enable);
- EXPORT_SYMBOL(bttv_read_gpio);
- EXPORT_SYMBOL(bttv_write_gpio);
- struct pci_dev* bttv_get_pcidev(unsigned int card)
- {
- if (card >= bttv_num)
- return NULL;
- if (!bttvs[card])
- return NULL;
- return bttvs[card]->c.pci;
- }
- int bttv_gpio_enable(unsigned int card, unsigned long mask, unsigned long data)
- {
- struct bttv *btv;
- if (card >= bttv_num) {
- return -EINVAL;
- }
- btv = bttvs[card];
- if (!btv)
- return -ENODEV;
- gpio_inout(mask,data);
- if (bttv_gpio)
- bttv_gpio_tracking(btv,"extern enable");
- return 0;
- }
- int bttv_read_gpio(unsigned int card, unsigned long *data)
- {
- struct bttv *btv;
- if (card >= bttv_num) {
- return -EINVAL;
- }
- btv = bttvs[card];
- if (!btv)
- return -ENODEV;
- if(btv->shutdown) {
- return -ENODEV;
- }
- *data = gpio_read();
- return 0;
- }
- int bttv_write_gpio(unsigned int card, unsigned long mask, unsigned long data)
- {
- struct bttv *btv;
- if (card >= bttv_num) {
- return -EINVAL;
- }
- btv = bttvs[card];
- if (!btv)
- return -ENODEV;
- gpio_bits(mask,data);
- if (bttv_gpio)
- bttv_gpio_tracking(btv,"extern write");
- return 0;
- }
|