Skip to content

Commit

Permalink
atomisp: clean up the hmm init/cleanup indirections
Browse files Browse the repository at this point in the history
We don't need any of these indirections as we only support one MMU type. Start
by getting rid of the init/clear/free ones. The init ordering check we already
pushed down in a previous patch.

The allocation side is more complicated so leave it for now.

Signed-off-by: Alan Cox <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
  • Loading branch information
Alan Cox authored and gregkh committed Apr 28, 2017
1 parent ec58cbe commit b83cc37
Show file tree
Hide file tree
Showing 6 changed files with 8 additions and 39 deletions.
6 changes: 3 additions & 3 deletions drivers/staging/media/atomisp/pci/atomisp2/atomisp_v4l2.c
Original file line number Diff line number Diff line change
Expand Up @@ -1454,7 +1454,7 @@ static int atomisp_pci_probe(struct pci_dev *dev,
}

/* Init ISP memory management */
hrt_isp_css_mm_init();
hmm_init();

err = devm_request_threaded_irq(&dev->dev, dev->irq,
atomisp_isr, atomisp_isr_thread,
Expand Down Expand Up @@ -1486,7 +1486,7 @@ static int atomisp_pci_probe(struct pci_dev *dev,
css_init_fail:
devm_free_irq(&dev->dev, dev->irq, isp);
request_irq_fail:
hrt_isp_css_mm_clear();
hmm_cleanup();
hmm_pool_unregister(HMM_POOL_TYPE_RESERVED);
hmm_pool_fail:
destroy_workqueue(isp->wdt_work_queue);
Expand Down Expand Up @@ -1538,7 +1538,7 @@ static void atomisp_pci_remove(struct pci_dev *dev)
atomisp_acc_cleanup(isp);

atomisp_css_unload_firmware(isp);
hrt_isp_css_mm_clear();
hmm_cleanup();

pm_runtime_forbid(&dev->dev);
pm_runtime_get_noresume(&dev->dev);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ mmgr_calloc(const size_t N, const size_t size)
void
mmgr_free(hrt_vaddress vaddr)
{
hrt_isp_css_mm_free(vaddr);
hmm_free(vaddr);
}

void
Expand Down
4 changes: 2 additions & 2 deletions drivers/staging/media/atomisp/pci/atomisp2/hmm/hmm.c
Original file line number Diff line number Diff line change
Expand Up @@ -272,6 +272,8 @@ void hmm_free(ia_css_ptr virt)
{
struct hmm_buffer_object *bo;

WARN_ON(!virt);

bo = hmm_bo_device_search_start(&bo_device, (unsigned int)virt);

if (!bo) {
Expand All @@ -284,9 +286,7 @@ void hmm_free(ia_css_ptr virt)
hmm_mem_stat.tol_cnt -= bo->pgnr;

hmm_bo_unbind(bo);

hmm_bo_free_pages(bo);

hmm_bo_unref(bo);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,6 @@

#define __page_align(size) (((size) + (PAGE_SIZE-1)) & (~(PAGE_SIZE-1)))

static unsigned init_done;
void hrt_isp_css_mm_init(void)
{
hmm_init();
init_done = 1;
}

int hrt_isp_css_mm_set(ia_css_ptr virt_addr, int c, size_t bytes)
{
if (virt_addr)
Expand All @@ -57,20 +50,6 @@ int hrt_isp_css_mm_store(ia_css_ptr virt_addr, const void *data, size_t bytes)
return -EFAULT;
}

void hrt_isp_css_mm_free(ia_css_ptr virt_addr)
{
if (virt_addr)
hmm_free(virt_addr);
}

void hrt_isp_css_mm_clear(void)
{
if (init_done) {
hmm_cleanup();
init_done = 0;
}
}

static void *my_userptr;
static unsigned my_num_pages;
static enum hrt_userptr_type my_usr_type;
Expand All @@ -89,8 +68,6 @@ static ia_css_ptr __hrt_isp_css_mm_alloc(size_t bytes, void *userptr,
enum hrt_userptr_type type,
bool cached)
{
if (!init_done)
hrt_isp_css_mm_init();
#ifdef CONFIG_ION
if (type == HRT_USR_ION)
return hmm_alloc(bytes, HMM_BO_ION, 0,
Expand Down Expand Up @@ -138,9 +115,6 @@ ia_css_ptr hrt_isp_css_mm_alloc_user_ptr(size_t bytes, void *userptr,

ia_css_ptr hrt_isp_css_mm_alloc_cached(size_t bytes)
{
if (!init_done)
hrt_isp_css_mm_init();

if (my_userptr == NULL)
return hmm_alloc(bytes, HMM_BO_PRIVATE, 0, 0,
HMM_CACHED);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@ struct hrt_userbuffer_attr {
unsigned int pgnr;
};

void hrt_isp_css_mm_init(void);
void hrt_isp_css_mm_set_user_ptr(void *userptr,
unsigned int num_pages, enum hrt_userptr_type);

Expand All @@ -60,9 +59,6 @@ ia_css_ptr hrt_isp_css_mm_alloc_cached(size_t bytes);
ia_css_ptr hrt_isp_css_mm_calloc(size_t bytes);
ia_css_ptr hrt_isp_css_mm_calloc_cached(size_t bytes);

/* Free memory, given a virtual address */
void hrt_isp_css_mm_free(ia_css_ptr virt_addr);

/* Store data to a virtual address */
int hrt_isp_css_mm_load(ia_css_ptr virt_addr, void *data, size_t bytes);

Expand All @@ -81,5 +77,4 @@ int hrt_isp_css_mm_store_int(ia_css_ptr virt_addr, int data);
the display driver on the FPGA system */
phys_addr_t hrt_isp_css_virt_to_phys(ia_css_ptr virt_addr);

void hrt_isp_css_mm_clear(void);
#endif /* _hive_isp_css_mm_hrt_h_ */
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,9 @@ ia_css_ptr mmgr_calloc(const size_t N, const size_t size)

void mmgr_free(ia_css_ptr vaddr)
{
/* "free()" should accept NULL, "hrt_isp_css_mm_free()" may not */
/* "free()" should accept NULL, "hmm_free()" may not */
if (vaddr)
hrt_isp_css_mm_free(vaddr);
hmm_free(vaddr);
}

ia_css_ptr mmgr_alloc_attr(const size_t size, const uint16_t attribute)
Expand Down

0 comments on commit b83cc37

Please sign in to comment.