# HG changeset patch # User Yoshiki Yazawa # Date 1251376754 -32400 # Node ID 23b6f99f65b2d6232ae9206ac438c6017dcd96cb # Parent 6bcdd17c12f6f6c4c043d53a87fb5c59d274c0b9 propagate upstream change: - adapted to FastBoot. use spinlock to avoid resource contention between multiple number of cards. diff -r 6bcdd17c12f6 -r 23b6f99f65b2 driver/pt1_pci.c --- a/driver/pt1_pci.c Tue Jul 21 00:08:47 2009 +0900 +++ b/driver/pt1_pci.c Thu Aug 27 21:39:14 2009 +0900 @@ -51,8 +51,10 @@ MODULE_DESCRIPTION(DRIVER_DESC); MODULE_LICENSE("GPL"); -static int debug = 7; /* 1 normal messages, 0 quiet .. 7 verbose. */ -static int lnb = 0; /* LNB OFF:0 +11V:1 +15V:2 */ +static int debug = 7; /* 1 normal messages, 0 quiet .. + 7 verbose. */ +static int lnb = 0; /* LNB OFF:0 +11V:1 +15V:2 */ +static spinlock_t lock; /* to synchronize at probing */ module_param(debug, int, 0); module_param(lnb, int, 0); @@ -698,6 +700,9 @@ goto out_err_fpga; } } + + spin_lock(&lock); + // ½é´ü²½´°Î» for(lp = 0 ; lp < MAX_CHANNEL ; lp++){ set_sleepmode(dev_conf->regs, &dev_conf->lock, @@ -707,6 +712,7 @@ } rc = alloc_chrdev_region(&dev_conf->dev, 0, MAX_CHANNEL, DEV_NAME); if(rc < 0){ + spin_unlock(&lock); goto out_err_fpga; } @@ -723,6 +729,9 @@ break ; } } + + spin_unlock(&lock); + for(lp = 0 ; lp < MAX_CHANNEL ; lp++){ cdev_init(&dev_conf->cdev[lp], &pt1_fops); dev_conf->cdev[lp].owner = THIS_MODULE; @@ -910,6 +919,7 @@ pt1video_class = class_create(THIS_MODULE, DRIVERNAME); if (IS_ERR(pt1video_class)) return PTR_ERR(pt1video_class); + spin_lock_init(&lock); return pci_register_driver(&pt1_driver); }