Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[pb] Add "autostop" module parameter (defaulting to off)
Signed-off-by: Michael Brown <mbrown@fensystems.co.uk>
  • Loading branch information
mcb30 committed Oct 10, 2010
1 parent 82cebe8 commit 0abf7b8
Showing 1 changed file with 19 additions and 4 deletions.
23 changes: 19 additions & 4 deletions pulseblaster.c
Expand Up @@ -22,6 +22,9 @@ struct pulseblaster {
loff_t offset;
};

/** Automatically stop devices on module load */
static int autostop = 0;

/**
* Send command to device
*
Expand Down Expand Up @@ -141,8 +144,8 @@ static int pb_write_enable ( struct pulseblaster *pb ) {
return rc;
if ( ( rc = pb_cmd_clear_address_counter ( pb ) ) != 0 )
return rc;

pb->offset = 0;

return 0;
}

Expand All @@ -161,6 +164,7 @@ static int pb_arm ( struct pulseblaster *pb ) {
}
if ( ( rc = pb_cmd_finished ( pb ) ) != 0 )
return rc;
pb->offset = 0;

return 0;
}
Expand Down Expand Up @@ -194,6 +198,7 @@ static int pb_stop ( struct pulseblaster *pb ) {
if ( pb->offset != 0 ) {
if ( ( rc = pb_cmd_finished ( pb ) ) != 0 )
return rc;
pb->offset = 0;
}
if ( ( rc = pb_cmd_stop ( pb ) ) != 0 )
return rc;
Expand Down Expand Up @@ -430,17 +435,24 @@ static int __devinit pb_probe ( struct pci_dev *pci,
rc = PTR_ERR ( pb->dev );
goto err_device_create;
}
printk ( "%s: I/O at %04lx\n", dev_name ( pb->dev ), pb->iobase );

/* Create program attribute */
if ( ( rc = device_create_bin_file ( pb->dev,
&dev_attr_program ) ) != 0 ) {
goto err_device_create_bin_file;
}

printk ( "%s: I/O at %04lx\n", dev_name ( pb->dev ), pb->iobase );
/* Stop device, if autostop is enabled */
if ( autostop ) {
if ( ( rc = pb_cmd_stop ( pb ) ) != 0 )
goto err_autostop;
}

pci_set_drvdata ( pci, pb );
return 0;

err_autostop:
device_remove_bin_file ( pb->dev, &dev_attr_program );
err_device_create_bin_file:
device_unregister ( pb->dev );
Expand Down Expand Up @@ -521,8 +533,11 @@ static void __exit pb_module_exit ( void ) {
class_destroy ( pb_class );
}

module_init(pb_module_init);
module_exit(pb_module_exit);
module_init ( pb_module_init );
module_exit ( pb_module_exit );

module_param ( autostop, int, 0 );
MODULE_PARM_DESC ( autostop, "Automatically stop device on module load" );

MODULE_AUTHOR ( "Michael Brown <mbrown@fensystems.co.uk>" );
MODULE_DESCRIPTION ( "SpinCore PulseBlaster driver" );
Expand Down

0 comments on commit 0abf7b8

Please sign in to comment.