mirror of
https://github.com/followmsi/android_kernel_google_msm.git
synced 2024-11-06 23:17:41 +00:00
skd: reorder construct/destruct code
Reorder placement of skd_construct(), skd_cons_sg_list(), skd_destruct() and skd_free_sg_list() functions. Then remove no longer needed function prototypes. Cc: Akhil Bhansali <abhansali@stec-inc.com> Cc: Jeff Moyer <jmoyer@redhat.com> Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
fec23f6311
commit
542d7b0015
1 changed files with 148 additions and 171 deletions
|
@ -449,7 +449,6 @@ MODULE_PARM_DESC(skd_isr_comp_limit, "s1120 isr comp limit (0=none) default=4");
|
||||||
/* Major device number dynamically assigned. */
|
/* Major device number dynamically assigned. */
|
||||||
static u32 skd_major;
|
static u32 skd_major;
|
||||||
|
|
||||||
static struct skd_device *skd_construct(struct pci_dev *pdev);
|
|
||||||
static void skd_destruct(struct skd_device *skdev);
|
static void skd_destruct(struct skd_device *skdev);
|
||||||
static const struct block_device_operations skd_blockdev_ops;
|
static const struct block_device_operations skd_blockdev_ops;
|
||||||
static void skd_send_fitmsg(struct skd_device *skdev,
|
static void skd_send_fitmsg(struct skd_device *skdev,
|
||||||
|
@ -4115,96 +4114,6 @@ static void skd_release_irq(struct skd_device *skdev)
|
||||||
*****************************************************************************
|
*****************************************************************************
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int skd_cons_skcomp(struct skd_device *skdev);
|
|
||||||
static int skd_cons_skmsg(struct skd_device *skdev);
|
|
||||||
static int skd_cons_skreq(struct skd_device *skdev);
|
|
||||||
static int skd_cons_skspcl(struct skd_device *skdev);
|
|
||||||
static int skd_cons_sksb(struct skd_device *skdev);
|
|
||||||
static struct fit_sg_descriptor *skd_cons_sg_list(struct skd_device *skdev,
|
|
||||||
u32 n_sg,
|
|
||||||
dma_addr_t *ret_dma_addr);
|
|
||||||
static int skd_cons_disk(struct skd_device *skdev);
|
|
||||||
|
|
||||||
#define SKD_N_DEV_TABLE 16u
|
|
||||||
static u32 skd_next_devno;
|
|
||||||
|
|
||||||
static struct skd_device *skd_construct(struct pci_dev *pdev)
|
|
||||||
{
|
|
||||||
struct skd_device *skdev;
|
|
||||||
int blk_major = skd_major;
|
|
||||||
int rc;
|
|
||||||
|
|
||||||
skdev = kzalloc(sizeof(*skdev), GFP_KERNEL);
|
|
||||||
|
|
||||||
if (!skdev) {
|
|
||||||
pr_err(PFX "(%s): memory alloc failure\n",
|
|
||||||
pci_name(pdev));
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
skdev->state = SKD_DRVR_STATE_LOAD;
|
|
||||||
skdev->pdev = pdev;
|
|
||||||
skdev->devno = skd_next_devno++;
|
|
||||||
skdev->major = blk_major;
|
|
||||||
skdev->irq_type = skd_isr_type;
|
|
||||||
sprintf(skdev->name, DRV_NAME "%d", skdev->devno);
|
|
||||||
skdev->dev_max_queue_depth = 0;
|
|
||||||
|
|
||||||
skdev->num_req_context = skd_max_queue_depth;
|
|
||||||
skdev->num_fitmsg_context = skd_max_queue_depth;
|
|
||||||
skdev->n_special = skd_max_pass_thru;
|
|
||||||
skdev->cur_max_queue_depth = 1;
|
|
||||||
skdev->queue_low_water_mark = 1;
|
|
||||||
skdev->proto_ver = 99;
|
|
||||||
skdev->sgs_per_request = skd_sgs_per_request;
|
|
||||||
skdev->dbg_level = skd_dbg_level;
|
|
||||||
|
|
||||||
atomic_set(&skdev->device_count, 0);
|
|
||||||
|
|
||||||
spin_lock_init(&skdev->lock);
|
|
||||||
|
|
||||||
INIT_WORK(&skdev->completion_worker, skd_completion_worker);
|
|
||||||
|
|
||||||
pr_debug("%s:%s:%d skcomp\n", skdev->name, __func__, __LINE__);
|
|
||||||
rc = skd_cons_skcomp(skdev);
|
|
||||||
if (rc < 0)
|
|
||||||
goto err_out;
|
|
||||||
|
|
||||||
pr_debug("%s:%s:%d skmsg\n", skdev->name, __func__, __LINE__);
|
|
||||||
rc = skd_cons_skmsg(skdev);
|
|
||||||
if (rc < 0)
|
|
||||||
goto err_out;
|
|
||||||
|
|
||||||
pr_debug("%s:%s:%d skreq\n", skdev->name, __func__, __LINE__);
|
|
||||||
rc = skd_cons_skreq(skdev);
|
|
||||||
if (rc < 0)
|
|
||||||
goto err_out;
|
|
||||||
|
|
||||||
pr_debug("%s:%s:%d skspcl\n", skdev->name, __func__, __LINE__);
|
|
||||||
rc = skd_cons_skspcl(skdev);
|
|
||||||
if (rc < 0)
|
|
||||||
goto err_out;
|
|
||||||
|
|
||||||
pr_debug("%s:%s:%d sksb\n", skdev->name, __func__, __LINE__);
|
|
||||||
rc = skd_cons_sksb(skdev);
|
|
||||||
if (rc < 0)
|
|
||||||
goto err_out;
|
|
||||||
|
|
||||||
pr_debug("%s:%s:%d disk\n", skdev->name, __func__, __LINE__);
|
|
||||||
rc = skd_cons_disk(skdev);
|
|
||||||
if (rc < 0)
|
|
||||||
goto err_out;
|
|
||||||
|
|
||||||
pr_debug("%s:%s:%d VICTORY\n", skdev->name, __func__, __LINE__);
|
|
||||||
return skdev;
|
|
||||||
|
|
||||||
err_out:
|
|
||||||
pr_debug("%s:%s:%d construct failed\n",
|
|
||||||
skdev->name, __func__, __LINE__);
|
|
||||||
skd_destruct(skdev);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int skd_cons_skcomp(struct skd_device *skdev)
|
static int skd_cons_skcomp(struct skd_device *skdev)
|
||||||
{
|
{
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
|
@ -4292,6 +4201,35 @@ err_out:
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static struct fit_sg_descriptor *skd_cons_sg_list(struct skd_device *skdev,
|
||||||
|
u32 n_sg,
|
||||||
|
dma_addr_t *ret_dma_addr)
|
||||||
|
{
|
||||||
|
struct fit_sg_descriptor *sg_list;
|
||||||
|
u32 nbytes;
|
||||||
|
|
||||||
|
nbytes = sizeof(*sg_list) * n_sg;
|
||||||
|
|
||||||
|
sg_list = pci_alloc_consistent(skdev->pdev, nbytes, ret_dma_addr);
|
||||||
|
|
||||||
|
if (sg_list != NULL) {
|
||||||
|
uint64_t dma_address = *ret_dma_addr;
|
||||||
|
u32 i;
|
||||||
|
|
||||||
|
memset(sg_list, 0, nbytes);
|
||||||
|
|
||||||
|
for (i = 0; i < n_sg - 1; i++) {
|
||||||
|
uint64_t ndp_off;
|
||||||
|
ndp_off = (i + 1) * sizeof(struct fit_sg_descriptor);
|
||||||
|
|
||||||
|
sg_list[i].next_desc_ptr = dma_address + ndp_off;
|
||||||
|
}
|
||||||
|
sg_list[i].next_desc_ptr = 0LL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return sg_list;
|
||||||
|
}
|
||||||
|
|
||||||
static int skd_cons_skreq(struct skd_device *skdev)
|
static int skd_cons_skreq(struct skd_device *skdev)
|
||||||
{
|
{
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
|
@ -4465,35 +4403,6 @@ err_out:
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct fit_sg_descriptor *skd_cons_sg_list(struct skd_device *skdev,
|
|
||||||
u32 n_sg,
|
|
||||||
dma_addr_t *ret_dma_addr)
|
|
||||||
{
|
|
||||||
struct fit_sg_descriptor *sg_list;
|
|
||||||
u32 nbytes;
|
|
||||||
|
|
||||||
nbytes = sizeof(*sg_list) * n_sg;
|
|
||||||
|
|
||||||
sg_list = pci_alloc_consistent(skdev->pdev, nbytes, ret_dma_addr);
|
|
||||||
|
|
||||||
if (sg_list != NULL) {
|
|
||||||
uint64_t dma_address = *ret_dma_addr;
|
|
||||||
u32 i;
|
|
||||||
|
|
||||||
memset(sg_list, 0, nbytes);
|
|
||||||
|
|
||||||
for (i = 0; i < n_sg - 1; i++) {
|
|
||||||
uint64_t ndp_off;
|
|
||||||
ndp_off = (i + 1) * sizeof(struct fit_sg_descriptor);
|
|
||||||
|
|
||||||
sg_list[i].next_desc_ptr = dma_address + ndp_off;
|
|
||||||
}
|
|
||||||
sg_list[i].next_desc_ptr = 0LL;
|
|
||||||
}
|
|
||||||
|
|
||||||
return sg_list;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int skd_cons_disk(struct skd_device *skdev)
|
static int skd_cons_disk(struct skd_device *skdev)
|
||||||
{
|
{
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
|
@ -4550,50 +4459,92 @@ err_out:
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define SKD_N_DEV_TABLE 16u
|
||||||
|
static u32 skd_next_devno;
|
||||||
|
|
||||||
|
static struct skd_device *skd_construct(struct pci_dev *pdev)
|
||||||
|
{
|
||||||
|
struct skd_device *skdev;
|
||||||
|
int blk_major = skd_major;
|
||||||
|
int rc;
|
||||||
|
|
||||||
|
skdev = kzalloc(sizeof(*skdev), GFP_KERNEL);
|
||||||
|
|
||||||
|
if (!skdev) {
|
||||||
|
pr_err(PFX "(%s): memory alloc failure\n",
|
||||||
|
pci_name(pdev));
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
skdev->state = SKD_DRVR_STATE_LOAD;
|
||||||
|
skdev->pdev = pdev;
|
||||||
|
skdev->devno = skd_next_devno++;
|
||||||
|
skdev->major = blk_major;
|
||||||
|
skdev->irq_type = skd_isr_type;
|
||||||
|
sprintf(skdev->name, DRV_NAME "%d", skdev->devno);
|
||||||
|
skdev->dev_max_queue_depth = 0;
|
||||||
|
|
||||||
|
skdev->num_req_context = skd_max_queue_depth;
|
||||||
|
skdev->num_fitmsg_context = skd_max_queue_depth;
|
||||||
|
skdev->n_special = skd_max_pass_thru;
|
||||||
|
skdev->cur_max_queue_depth = 1;
|
||||||
|
skdev->queue_low_water_mark = 1;
|
||||||
|
skdev->proto_ver = 99;
|
||||||
|
skdev->sgs_per_request = skd_sgs_per_request;
|
||||||
|
skdev->dbg_level = skd_dbg_level;
|
||||||
|
|
||||||
|
atomic_set(&skdev->device_count, 0);
|
||||||
|
|
||||||
|
spin_lock_init(&skdev->lock);
|
||||||
|
|
||||||
|
INIT_WORK(&skdev->completion_worker, skd_completion_worker);
|
||||||
|
|
||||||
|
pr_debug("%s:%s:%d skcomp\n", skdev->name, __func__, __LINE__);
|
||||||
|
rc = skd_cons_skcomp(skdev);
|
||||||
|
if (rc < 0)
|
||||||
|
goto err_out;
|
||||||
|
|
||||||
|
pr_debug("%s:%s:%d skmsg\n", skdev->name, __func__, __LINE__);
|
||||||
|
rc = skd_cons_skmsg(skdev);
|
||||||
|
if (rc < 0)
|
||||||
|
goto err_out;
|
||||||
|
|
||||||
|
pr_debug("%s:%s:%d skreq\n", skdev->name, __func__, __LINE__);
|
||||||
|
rc = skd_cons_skreq(skdev);
|
||||||
|
if (rc < 0)
|
||||||
|
goto err_out;
|
||||||
|
|
||||||
|
pr_debug("%s:%s:%d skspcl\n", skdev->name, __func__, __LINE__);
|
||||||
|
rc = skd_cons_skspcl(skdev);
|
||||||
|
if (rc < 0)
|
||||||
|
goto err_out;
|
||||||
|
|
||||||
|
pr_debug("%s:%s:%d sksb\n", skdev->name, __func__, __LINE__);
|
||||||
|
rc = skd_cons_sksb(skdev);
|
||||||
|
if (rc < 0)
|
||||||
|
goto err_out;
|
||||||
|
|
||||||
|
pr_debug("%s:%s:%d disk\n", skdev->name, __func__, __LINE__);
|
||||||
|
rc = skd_cons_disk(skdev);
|
||||||
|
if (rc < 0)
|
||||||
|
goto err_out;
|
||||||
|
|
||||||
|
pr_debug("%s:%s:%d VICTORY\n", skdev->name, __func__, __LINE__);
|
||||||
|
return skdev;
|
||||||
|
|
||||||
|
err_out:
|
||||||
|
pr_debug("%s:%s:%d construct failed\n",
|
||||||
|
skdev->name, __func__, __LINE__);
|
||||||
|
skd_destruct(skdev);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
*****************************************************************************
|
*****************************************************************************
|
||||||
* DESTRUCT (FREE)
|
* DESTRUCT (FREE)
|
||||||
*****************************************************************************
|
*****************************************************************************
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static void skd_free_skcomp(struct skd_device *skdev);
|
|
||||||
static void skd_free_skmsg(struct skd_device *skdev);
|
|
||||||
static void skd_free_skreq(struct skd_device *skdev);
|
|
||||||
static void skd_free_skspcl(struct skd_device *skdev);
|
|
||||||
static void skd_free_sksb(struct skd_device *skdev);
|
|
||||||
static void skd_free_sg_list(struct skd_device *skdev,
|
|
||||||
struct fit_sg_descriptor *sg_list,
|
|
||||||
u32 n_sg, dma_addr_t dma_addr);
|
|
||||||
static void skd_free_disk(struct skd_device *skdev);
|
|
||||||
|
|
||||||
static void skd_destruct(struct skd_device *skdev)
|
|
||||||
{
|
|
||||||
if (skdev == NULL)
|
|
||||||
return;
|
|
||||||
|
|
||||||
|
|
||||||
pr_debug("%s:%s:%d disk\n", skdev->name, __func__, __LINE__);
|
|
||||||
skd_free_disk(skdev);
|
|
||||||
|
|
||||||
pr_debug("%s:%s:%d sksb\n", skdev->name, __func__, __LINE__);
|
|
||||||
skd_free_sksb(skdev);
|
|
||||||
|
|
||||||
pr_debug("%s:%s:%d skspcl\n", skdev->name, __func__, __LINE__);
|
|
||||||
skd_free_skspcl(skdev);
|
|
||||||
|
|
||||||
pr_debug("%s:%s:%d skreq\n", skdev->name, __func__, __LINE__);
|
|
||||||
skd_free_skreq(skdev);
|
|
||||||
|
|
||||||
pr_debug("%s:%s:%d skmsg\n", skdev->name, __func__, __LINE__);
|
|
||||||
skd_free_skmsg(skdev);
|
|
||||||
|
|
||||||
pr_debug("%s:%s:%d skcomp\n", skdev->name, __func__, __LINE__);
|
|
||||||
skd_free_skcomp(skdev);
|
|
||||||
|
|
||||||
pr_debug("%s:%s:%d skdev\n", skdev->name, __func__, __LINE__);
|
|
||||||
kfree(skdev);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void skd_free_skcomp(struct skd_device *skdev)
|
static void skd_free_skcomp(struct skd_device *skdev)
|
||||||
{
|
{
|
||||||
if (skdev->skcomp_table != NULL) {
|
if (skdev->skcomp_table != NULL) {
|
||||||
|
@ -4636,6 +4587,19 @@ static void skd_free_skmsg(struct skd_device *skdev)
|
||||||
skdev->skmsg_table = NULL;
|
skdev->skmsg_table = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void skd_free_sg_list(struct skd_device *skdev,
|
||||||
|
struct fit_sg_descriptor *sg_list,
|
||||||
|
u32 n_sg, dma_addr_t dma_addr)
|
||||||
|
{
|
||||||
|
if (sg_list != NULL) {
|
||||||
|
u32 nbytes;
|
||||||
|
|
||||||
|
nbytes = sizeof(*sg_list) * n_sg;
|
||||||
|
|
||||||
|
pci_free_consistent(skdev->pdev, nbytes, sg_list, dma_addr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void skd_free_skreq(struct skd_device *skdev)
|
static void skd_free_skreq(struct skd_device *skdev)
|
||||||
{
|
{
|
||||||
u32 i;
|
u32 i;
|
||||||
|
@ -4732,19 +4696,6 @@ static void skd_free_sksb(struct skd_device *skdev)
|
||||||
skspcl->req.sksg_dma_address = 0;
|
skspcl->req.sksg_dma_address = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void skd_free_sg_list(struct skd_device *skdev,
|
|
||||||
struct fit_sg_descriptor *sg_list,
|
|
||||||
u32 n_sg, dma_addr_t dma_addr)
|
|
||||||
{
|
|
||||||
if (sg_list != NULL) {
|
|
||||||
u32 nbytes;
|
|
||||||
|
|
||||||
nbytes = sizeof(*sg_list) * n_sg;
|
|
||||||
|
|
||||||
pci_free_consistent(skdev->pdev, nbytes, sg_list, dma_addr);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void skd_free_disk(struct skd_device *skdev)
|
static void skd_free_disk(struct skd_device *skdev)
|
||||||
{
|
{
|
||||||
struct gendisk *disk = skdev->disk;
|
struct gendisk *disk = skdev->disk;
|
||||||
|
@ -4761,8 +4712,34 @@ static void skd_free_disk(struct skd_device *skdev)
|
||||||
skdev->disk = NULL;
|
skdev->disk = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void skd_destruct(struct skd_device *skdev)
|
||||||
|
{
|
||||||
|
if (skdev == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
|
||||||
|
pr_debug("%s:%s:%d disk\n", skdev->name, __func__, __LINE__);
|
||||||
|
skd_free_disk(skdev);
|
||||||
|
|
||||||
|
pr_debug("%s:%s:%d sksb\n", skdev->name, __func__, __LINE__);
|
||||||
|
skd_free_sksb(skdev);
|
||||||
|
|
||||||
|
pr_debug("%s:%s:%d skspcl\n", skdev->name, __func__, __LINE__);
|
||||||
|
skd_free_skspcl(skdev);
|
||||||
|
|
||||||
|
pr_debug("%s:%s:%d skreq\n", skdev->name, __func__, __LINE__);
|
||||||
|
skd_free_skreq(skdev);
|
||||||
|
|
||||||
|
pr_debug("%s:%s:%d skmsg\n", skdev->name, __func__, __LINE__);
|
||||||
|
skd_free_skmsg(skdev);
|
||||||
|
|
||||||
|
pr_debug("%s:%s:%d skcomp\n", skdev->name, __func__, __LINE__);
|
||||||
|
skd_free_skcomp(skdev);
|
||||||
|
|
||||||
|
pr_debug("%s:%s:%d skdev\n", skdev->name, __func__, __LINE__);
|
||||||
|
kfree(skdev);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
*****************************************************************************
|
*****************************************************************************
|
||||||
* BLOCK DEVICE (BDEV) GLUE
|
* BLOCK DEVICE (BDEV) GLUE
|
||||||
|
|
Loading…
Reference in a new issue