staging: dgnc: move functions unrelated with dgnc_found_board()
The functions related with tty device initialization are needed to be moved from dgnc_found_board() to dgnc_init_one(). Signed-off-by: Daeseok Youn <daeseok.youn@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
467132b029
commit
f20ae478ff
@ -38,7 +38,7 @@ MODULE_SUPPORTED_DEVICE("dgnc");
|
|||||||
*/
|
*/
|
||||||
static int dgnc_start(void);
|
static int dgnc_start(void);
|
||||||
static int dgnc_finalize_board_init(struct dgnc_board *brd);
|
static int dgnc_finalize_board_init(struct dgnc_board *brd);
|
||||||
static int dgnc_found_board(struct pci_dev *pdev, int id);
|
static struct dgnc_board *dgnc_found_board(struct pci_dev *pdev, int id);
|
||||||
static void dgnc_cleanup_board(struct dgnc_board *brd);
|
static void dgnc_cleanup_board(struct dgnc_board *brd);
|
||||||
static void dgnc_poll_handler(ulong dummy);
|
static void dgnc_poll_handler(ulong dummy);
|
||||||
static int dgnc_init_one(struct pci_dev *pdev,
|
static int dgnc_init_one(struct pci_dev *pdev,
|
||||||
@ -274,6 +274,7 @@ failed_class:
|
|||||||
static int dgnc_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
|
static int dgnc_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
|
||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
|
struct dgnc_board *brd;
|
||||||
|
|
||||||
/* wake up and enable device */
|
/* wake up and enable device */
|
||||||
rc = pci_enable_device(pdev);
|
rc = pci_enable_device(pdev);
|
||||||
@ -281,9 +282,43 @@ static int dgnc_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|||||||
if (rc)
|
if (rc)
|
||||||
return -EIO;
|
return -EIO;
|
||||||
|
|
||||||
rc = dgnc_found_board(pdev, ent->driver_data);
|
brd = dgnc_found_board(pdev, ent->driver_data);
|
||||||
if (rc == 0)
|
if (IS_ERR(brd))
|
||||||
dgnc_num_boards++;
|
return PTR_ERR(brd);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Do tty device initialization.
|
||||||
|
*/
|
||||||
|
|
||||||
|
rc = dgnc_tty_register(brd);
|
||||||
|
if (rc < 0) {
|
||||||
|
pr_err(DRVSTR ": Can't register tty devices (%d)\n", rc);
|
||||||
|
goto failed;
|
||||||
|
}
|
||||||
|
|
||||||
|
rc = dgnc_finalize_board_init(brd);
|
||||||
|
if (rc < 0) {
|
||||||
|
pr_err(DRVSTR ": Can't finalize board init (%d)\n", rc);
|
||||||
|
goto failed;
|
||||||
|
}
|
||||||
|
|
||||||
|
rc = dgnc_tty_init(brd);
|
||||||
|
if (rc < 0) {
|
||||||
|
pr_err(DRVSTR ": Can't init tty devices (%d)\n", rc);
|
||||||
|
goto failed;
|
||||||
|
}
|
||||||
|
|
||||||
|
brd->state = BOARD_READY;
|
||||||
|
brd->dpastatus = BD_RUNNING;
|
||||||
|
|
||||||
|
dgnc_create_ports_sysfiles(brd);
|
||||||
|
|
||||||
|
dgnc_board[dgnc_num_boards++] = brd;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
failed:
|
||||||
|
kfree(brd);
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
@ -345,7 +380,7 @@ static void dgnc_cleanup_board(struct dgnc_board *brd)
|
|||||||
*
|
*
|
||||||
* A board has been found, init it.
|
* A board has been found, init it.
|
||||||
*/
|
*/
|
||||||
static int dgnc_found_board(struct pci_dev *pdev, int id)
|
static struct dgnc_board *dgnc_found_board(struct pci_dev *pdev, int id)
|
||||||
{
|
{
|
||||||
struct dgnc_board *brd;
|
struct dgnc_board *brd;
|
||||||
unsigned int pci_irq;
|
unsigned int pci_irq;
|
||||||
@ -355,7 +390,7 @@ static int dgnc_found_board(struct pci_dev *pdev, int id)
|
|||||||
/* get the board structure and prep it */
|
/* get the board structure and prep it */
|
||||||
brd = kzalloc(sizeof(*brd), GFP_KERNEL);
|
brd = kzalloc(sizeof(*brd), GFP_KERNEL);
|
||||||
if (!brd)
|
if (!brd)
|
||||||
return -ENOMEM;
|
return ERR_PTR(-ENOMEM);
|
||||||
|
|
||||||
/* store the info for the board we've found */
|
/* store the info for the board we've found */
|
||||||
brd->magic = DGNC_BOARD_MAGIC;
|
brd->magic = DGNC_BOARD_MAGIC;
|
||||||
@ -505,33 +540,6 @@ static int dgnc_found_board(struct pci_dev *pdev, int id)
|
|||||||
goto failed;
|
goto failed;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Do tty device initialization.
|
|
||||||
*/
|
|
||||||
|
|
||||||
rc = dgnc_tty_register(brd);
|
|
||||||
if (rc < 0) {
|
|
||||||
pr_err(DRVSTR ": Can't register tty devices (%d)\n", rc);
|
|
||||||
goto failed;
|
|
||||||
}
|
|
||||||
|
|
||||||
rc = dgnc_finalize_board_init(brd);
|
|
||||||
if (rc < 0) {
|
|
||||||
pr_err(DRVSTR ": Can't finalize board init (%d)\n", rc);
|
|
||||||
goto failed;
|
|
||||||
}
|
|
||||||
|
|
||||||
rc = dgnc_tty_init(brd);
|
|
||||||
if (rc < 0) {
|
|
||||||
pr_err(DRVSTR ": Can't init tty devices (%d)\n", rc);
|
|
||||||
goto failed;
|
|
||||||
}
|
|
||||||
|
|
||||||
brd->state = BOARD_READY;
|
|
||||||
brd->dpastatus = BD_RUNNING;
|
|
||||||
|
|
||||||
dgnc_create_ports_sysfiles(brd);
|
|
||||||
|
|
||||||
/* init our poll helper tasklet */
|
/* init our poll helper tasklet */
|
||||||
tasklet_init(&brd->helper_tasklet,
|
tasklet_init(&brd->helper_tasklet,
|
||||||
brd->bd_ops->tasklet,
|
brd->bd_ops->tasklet,
|
||||||
@ -539,15 +547,12 @@ static int dgnc_found_board(struct pci_dev *pdev, int id)
|
|||||||
|
|
||||||
wake_up_interruptible(&brd->state_wait);
|
wake_up_interruptible(&brd->state_wait);
|
||||||
|
|
||||||
dgnc_board[dgnc_num_boards] = brd;
|
return brd;
|
||||||
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
failed:
|
failed:
|
||||||
dgnc_tty_uninit(brd);
|
|
||||||
kfree(brd);
|
kfree(brd);
|
||||||
|
|
||||||
return rc;
|
return ERR_PTR(rc);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int dgnc_finalize_board_init(struct dgnc_board *brd)
|
static int dgnc_finalize_board_init(struct dgnc_board *brd)
|
||||||
|
Reference in New Issue
Block a user