summaryrefslogtreecommitdiff
path: root/drivers/media/video/tiler/dmm_ll_drv.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/video/tiler/dmm_ll_drv.c')
-rw-r--r--drivers/media/video/tiler/dmm_ll_drv.c547
1 files changed, 11 insertions, 536 deletions
diff --git a/drivers/media/video/tiler/dmm_ll_drv.c b/drivers/media/video/tiler/dmm_ll_drv.c
index df787790762b..fa794e7a8bd8 100644
--- a/drivers/media/video/tiler/dmm_ll_drv.c
+++ b/drivers/media/video/tiler/dmm_ll_drv.c
@@ -22,39 +22,6 @@
#include "dmm_reg.h"
MODULE_LICENSE("GPL v2");
-#define __NEWCODE__
-#ifdef __NEWCODE__
-/* extern unsigned long entry_data; */
-static void pat_config_set();
-
-static void pat_config_set()/* (struct pat_config_set *config, char id) */
-{
- void __iomem *reg = NULL;
- unsigned long reg_val = 0x0;
- unsigned long new_val = 0x0;
- unsigned long bit_field = 0x0;
- unsigned long field_pos = 0x0;
-
- /* set PAT_CONFIG register */
- reg = (void __iomem *)(
- (unsigned long)dmm_virt_base_addr
- | (unsigned long)PAT_CONFIG);
- reg_val = __raw_readl(reg);
- regdump("PAT_CONFIG", reg_val);
-
- bit_field = BITFIELD(31, 0);
- field_pos = 0;
- new_val = (reg_val & (~(bit_field))) |
- ((((unsigned long)0) << field_pos) & bit_field);
- __raw_writel(0x0000000F, reg); /* __raw_writel(new_val, reg); */
-
- reg = (void __iomem *)(
- (unsigned long)dmm_virt_base_addr |
- (unsigned long)PAT_CONFIG);
- reg_val = __raw_readl(reg);
- regdump("PAT_CONFIG", reg_val);
-}
-
struct pat_area {
int x0:8;
int y0:8;
@@ -89,7 +56,7 @@ static void pat_ctrl_set(struct pat_ctrl *ctrl, char id)
/* TODO: casting as unsigned long */
reg = (void __iomem *)(
- (unsigned long)dmm_virt_base_addr |
+ (unsigned long)dmm_base |
(unsigned long)PAT_CTRL__0);
reg_val = __raw_readl(reg);
@@ -130,129 +97,6 @@ static void pat_ctrl_set(struct pat_ctrl *ctrl, char id)
dsb();
}
-#endif
-
-/* ========================================================================== */
-/**
- * dmm_tiler_alias_orientation_set()
- *
- * @brief Set specific TILER alias orientation setting per initiator ID
- * (alias view).
- *
- * @param initiatorID - signed long - [in] OCP id of DMM transfer initiator
- * which alias view will be editted.
- *
- * @param viewOrientation - dmmViewOrientT - [in] New alias view orientation
- * setting.
- *
- * @return errorCodeT
- *
- * @pre There is no pre conditions.
- *
- * @post There is no post conditions.
- *
- * @see errorCodeT, dmmViewOrientT for further detail.
- */
-/* ========================================================================== */
-enum errorCodeT dmm_tiler_alias_orientation_set(signed long initiatorID,
- struct dmmViewOrientT viewOrientation)
-{
- enum errorCodeT eCode = DMM_NO_ERROR;
- void __iomem *reg = NULL;
-
- reg = (void __iomem *)((unsigned long)dmm_virt_base_addr |
- (0x220ul));
- __raw_writel(0x88888888, reg);
-
- reg = (void __iomem *)((unsigned long)dmm_virt_base_addr |
- (0x220ul+0x4));
- __raw_writel(0x88888888, reg);
-
- return eCode;
-}
-
-/* ========================================================================== */
-/**
- * dmm_tiler_alias_orientation_get()
- *
- * @brief Get specific TILER alias orientation setting per initiator ID
- * (alias view).
- *
- * @param initiatorID - signed long - [in] OCP id of DMM transfer initiator
- * which alias view will be editted.
- *
- * @param viewOrientation - dmmViewOrientT* - [out] Pointer to write alias view
- * orientation setting to.
- *
- * @return errorCodeT
- *
- * @pre There is no pre conditions.
- *
- * @post There is no post conditions.
- *
- * @see errorCodeT, dmmViewOrientT for further detail.
- */
-/* ========================================================================== */
-enum errorCodeT dmm_tiler_alias_orientation_get(signed long initiatorID,
- struct dmmViewOrientT *viewOrientation)
-{
- enum errorCodeT eCode = DMM_NO_ERROR;
- return eCode;
-}
-
-/* ========================================================================== */
-/**
- * dmm_peg_priority_set()
- *
- * @brief Set specific PEG priority setting per initiator ID.
- *
- * @param initiatorID - signed long - [in] OCP id of DMM transfer initiator
- * which priority will be editted.
- *
- * @param prio - unsigned long - [in] New priority setting.
- *
- * @return errorCodeT
- *
- * @pre There is no pre conditions.
- *
- * @post There is no post conditions.
- *
- * @see errorCodeT for further detail.
- */
-/* ========================================================================== */
-enum errorCodeT dmm_peg_priority_set(signed long initiatorID,
- unsigned long prio)
-{
- enum errorCodeT eCode = DMM_NO_ERROR;
- return eCode;
-}
-
-/* ========================================================================== */
-/**
- * dmm_peg_priority_get()
- *
- * @brief Get specific PEG priority setting per initiator ID.
- *
- * @param initiatorID - signed long - [in] OCP id of DMM transfer initiator
- * which priority will be editted.
- *
- * @param prio - unsigned long* - [out] Poitner to write the priority setting.
- *
- * @return errorCodeT
- *
- * @pre There is no pre conditions.
- *
- * @post There is no post conditions.
- *
- * @see errorCodeT for further detail.
- */
-/* ========================================================================== */
-enum errorCodeT dmm_peg_priority_get(signed long initiatorID,
- unsigned long *prio)
-{
- enum errorCodeT eCode = DMM_NO_ERROR;
- return eCode;
-}
/* ========================================================================== */
/**
@@ -295,10 +139,10 @@ enum errorCodeT dmm_pat_area_refill(struct PATDescrT *patDesc,
unsigned long writeval = 0xffffffff;
unsigned long f = 0xffffffff; /* field */
unsigned long fp = 0xffffffff; /* field position */
+ struct pat_desc pat_desc = {0};
struct dmmPATStatusT areaStat;
- tilerdump(__LINE__);
if (forcedRefill == 0) {
eCode = dmm_pat_refill_area_status_get(
dmmPatAreaSel, &areaStat);
@@ -316,7 +160,7 @@ enum errorCodeT dmm_pat_area_refill(struct PATDescrT *patDesc,
} else if (eCode == DMM_NO_ERROR) {
if (refillType == AUTO) {
reg = (void __iomem *)
- ((unsigned long)dmm_virt_base_addr |
+ ((unsigned long)dmm_base |
(0x500ul + 0x0));
regval = __raw_readl(reg);
f = BITFIELD(31, 4);
@@ -329,7 +173,7 @@ enum errorCodeT dmm_pat_area_refill(struct PATDescrT *patDesc,
* an error.
*/
reg = (void __iomem *)(
- (unsigned long)dmm_virt_base_addr |
+ (unsigned long)dmm_base |
(unsigned long)PAT_STATUS__0);
regval = __raw_readl(reg);
if ((regval & 0xFC00) != 0) {
@@ -341,7 +185,7 @@ enum errorCodeT dmm_pat_area_refill(struct PATDescrT *patDesc,
/* set DESC register to NULL */
reg = (void __iomem *)
- ((unsigned long)dmm_virt_base_addr |
+ ((unsigned long)dmm_base |
(0x500ul + 0x0));
regval = __raw_readl(reg);
f = BITFIELD(31, 4);
@@ -350,7 +194,7 @@ enum errorCodeT dmm_pat_area_refill(struct PATDescrT *patDesc,
((((unsigned long)NULL) << fp) & f);
__raw_writel(writeval, reg);
reg = (void __iomem *)
- ((unsigned long)dmm_virt_base_addr |
+ ((unsigned long)dmm_base |
(0x500ul + 0x4));
regval = __raw_readl(reg);
@@ -390,54 +234,15 @@ enum errorCodeT dmm_pat_area_refill(struct PATDescrT *patDesc,
(char)patDesc->area.y1);
dsb();
-#ifndef __NEWCODE__
- /* Apply 4 bit lft shft to counter the 4 bit rt shft */
- reg = (void __iomem *)
- ((unsigned long)dmm_virt_base_addr | (0x500ul + 0xc));
- regval = __raw_readl(reg);
- f = BITFIELD(31, 4);
- fp = 4;
- writeval = (regval & (~(f))) |
- ((((unsigned long)(patDesc->data >> 4)) <<
- fp) & f);
- __raw_writel(writeval, reg);
- reg = (void __iomem *)
- ((unsigned long)dmm_virt_base_addr |
- (0x500ul + 0x8));
- regval = __raw_readl(reg);
- f = BITFIELD(31, 28);
- fp = 28;
- writeval = (regval & (~(f))) |
- (((patDesc->ctrl.initiator) << fp) & f);
- __raw_writel(writeval, reg);
-
- f = BITFIELD(16, 16);
- fp = 16;
- writeval = (regval & (~(f))) |
- (((patDesc->ctrl.sync) << fp) & f);
- __raw_writel(writeval, reg);
-
- f = BITFIELD(6, 4);
- fp = 4;
- writeval = (regval & (~(f))) |
- (((patDesc->ctrl.direction) << fp) & f);
- __raw_writel(writeval, reg);
-
- f = BITFIELD(0, 0);
- fp = 0;
- writeval = (regval & (~(f))) |
- (((patDesc->ctrl.start) << fp) & f);
- __raw_writel(writeval, reg);
-#else
/* First, clear the PAT_IRQSTATUS register */
reg = (void __iomem *)(
- (unsigned long)dmm_virt_base_addr |
+ (unsigned long)dmm_base |
(unsigned long)PAT_IRQSTATUS);
__raw_writel(0xFFFFFFFF, reg);
dsb();
reg = (void __iomem *)(
- (unsigned long)dmm_virt_base_addr |
+ (unsigned long)dmm_base |
(unsigned long)PAT_IRQSTATUS_RAW);
regval = 0xFFFFFFFF;
while (regval != 0x0) {
@@ -447,7 +252,7 @@ enum errorCodeT dmm_pat_area_refill(struct PATDescrT *patDesc,
/* fill data register */
reg = (void __iomem *)
- ((unsigned long)dmm_virt_base_addr | (0x500ul + 0xc));
+ ((unsigned long)dmm_base | (0x500ul + 0xc));
regval = __raw_readl(reg);
/* Apply 4 bit lft shft to counter the 4 bit rt shft */
@@ -465,7 +270,6 @@ enum errorCodeT dmm_pat_area_refill(struct PATDescrT *patDesc,
regdump("PAT_DATA__0", regval);
}
- struct pat_desc pat_desc = {0};
pat_desc.ctrl.start = 1;
pat_desc.ctrl.direction = 0;
pat_desc.ctrl.lut_id = 0;
@@ -476,16 +280,13 @@ enum errorCodeT dmm_pat_area_refill(struct PATDescrT *patDesc,
/* Now, check if PAT_IRQSTATUS_RAW has been set after
the PAT has been refilled */
reg = (void __iomem *)(
- (unsigned long)dmm_virt_base_addr |
+ (unsigned long)dmm_base |
(unsigned long)PAT_IRQSTATUS_RAW);
regval = 0x0;
while ((regval & 0x3) != 0x3) {
regval = __raw_readl(reg);
regdump("PAT_IRQSTATUS_RAW", regval);
}
-
- /* pat_config_set(); */
-#endif
} else {
eCode = DMM_WRONG_PARAM;
}
@@ -513,7 +314,6 @@ enum errorCodeT dmm_pat_area_refill(struct PATDescrT *patDesc,
}
}
}
- tilerdump(__LINE__);
return eCode;
}
@@ -546,7 +346,7 @@ enum errorCodeT dmm_pat_refill_area_status_get(signed long dmmPatAreaStatSel,
unsigned long stat = 0xffffffff;
void __iomem *statreg = (void __iomem *)
- ((unsigned long)dmm_virt_base_addr | 0x4c0ul);
+ ((unsigned long)dmm_base | 0x4c0ul);
if (dmmPatAreaStatSel >= 0 && dmmPatAreaStatSel <= 3) {
stat = __raw_readl(statreg);
@@ -568,328 +368,3 @@ enum errorCodeT dmm_pat_refill_area_status_get(signed long dmmPatAreaStatSel,
return eCode;
}
-/* ========================================================================== */
-/**
- * dmm_pat_refill_engine_config()
- *
- * @brief Configure the selected PAT refill engine.
- *
- * @param dmmPatEngineSel - signed long - [in] Selects which PAT engine will be
- * configured.
- *
- * @param engineMode - dmmPATEngineAccessT - [in] New engine mode.
- *
- * @return errorCodeT
- *
- * @pre There is no pre conditions.
- *
- * @post There is no post conditions.
- *
- * @see errorCodeT, dmmPATEngineAccessT for further detail.
- */
-/* ========================================================================== */
-enum errorCodeT dmm_pat_refill_engine_config(signed long dmmPatEngineSel,
- enum dmmPATEngineAccessT engineMode)
-{
- enum errorCodeT eCode = DMM_NO_ERROR;
- void __iomem *reg = NULL;
-
- reg = (void __iomem *)((unsigned long)dmm_virt_base_addr |
- (0x410ul));
- __raw_writel(0x00000000, reg);
-
- return eCode;
-}
-
-/* ========================================================================== */
-/**
- * dmm_pat_refill_engine_config_get()
- *
- * @brief Get the selected PAT refill engine configuration.
- *
- * @param dmmPatEngineSel - signed long - [in] Selects which PAT engine will be
- * configured.
- *
- * @param engineMode - dmmPATEngineAccessT* - [out] Pointer to write the engine
- * mode.
- *
- * @return errorCodeT
- *
- * @pre There is no pre conditions.
- *
- * @post There is no post conditions.
- *
- * @see errorCodeT, dmmPATEngineAccessT for further detail.
- */
-/* ========================================================================== */
-enum errorCodeT dmm_pat_refill_engine_config_get(signed long dmmPatEngineSel,
- enum dmmPATEngineAccessT *engineMode)
-{
- enum errorCodeT eCode = DMM_NO_ERROR;
- return eCode;
-}
-
-/* ========================================================================== */
-/**
- * dmm_pat_view_set()
- *
- * @brief Set specific PAT initiator view settings.
- *
- * @param initiatorID - signed long - [in] OCP id of DMM transfer initiator
- * which PAT view will be editted.
- *
- * @param patViewIndx - signed long - [in] New view map setting.
- *
- * @return errorCodeT
- *
- * @pre There is no pre conditions.
- *
- * @post There is no post conditions.
- *
- * @see errorCodeT for further detail.
- */
-/* ========================================================================== */
-enum errorCodeT dmm_pat_view_set(signed long initiatorID,
- signed long patViewIndx)
-{
- enum errorCodeT eCode = DMM_NO_ERROR;
- void __iomem *reg = NULL;
-
- if (patViewIndx < 0 || patViewIndx > 3) {
- eCode = DMM_WRONG_PARAM;
- } else {
- reg = (void __iomem *)
- ((unsigned long)dmm_virt_base_addr | (0x420ul));
- __raw_writel(0xDDDDDDDD, reg);
-
- reg = (void __iomem *)
- ((unsigned long)dmm_virt_base_addr | (0x420ul+0x4));
- __raw_writel(0xDDDDDDDD, reg);
- }
-
- return eCode;
-}
-
-/* ========================================================================== */
-/**
- * dmm_pat_view_get()
- *
- * @brief Get specific PAT initiator view settings.
- *
- * @param initiatorID - signed long - [in] OCP id of DMM transfer initiator
- * which PAT view will be editted.
- *
- * @param patViewIndx - signed long* - [out] Pointer to write the view map
- * setting.
- *
- * @return errorCodeT
- *
- * @pre There is no pre conditions.
- *
- * @post There is no post conditions.
- *
- * @see errorCodeT for further detail.
- */
-/* ========================================================================== */
-enum errorCodeT dmm_pat_view_get(
- signed long initiatorID, signed long *patViewIndx)
-{
- enum errorCodeT eCode = DMM_NO_ERROR;
- return eCode;
-}
-
-/* ========================================================================== */
-/**
- * dmm_pat_view_map_config()
- *
- * @brief Configure selected PAT view map.
- *
- * @param patViewMapIndx - signed long - [in] Index of the selected PAT view
- * map.
- *
- * @param memoryAccessMode - dmmMemoryAccessT - [in] Type of memory access to
- * perform through this view.
- *
- * @param contX - unsigned long - [in] CONT_x register value.
- *
- * @param transType - dmmPATTranslationT - [in] Address translation schemes.
- *
- * @param dmmPATViewBase - unsigned long - [in] View map base address
- * (31-bit only considered).
- *
- * @return errorCodeT
- *
- * @pre There is no pre conditions.
- *
- * @post There is no post conditions.
- *
- * @see errorCodeT, dmmMemoryAccessT, dmmPATTranslationT for further detail.
- */
-/* ========================================================================== */
-enum errorCodeT dmm_pat_view_map_config(signed long patViewMapIndx,
- enum dmmMemoryAccessT memoryAccessMode,
- unsigned long contX,
- enum dmmPATTranslationT transType,
- unsigned long dmmPATViewBase)
-{
- enum errorCodeT eCode = DMM_NO_ERROR;
- void __iomem *reg = NULL;
- unsigned long regval = 0xffffffff;
-
- reg = (void __iomem *)((unsigned long)dmm_virt_base_addr |
- (0x460ul));
- regval = __raw_readl(reg);
- __raw_writel(0xFFFFFFFF, reg);
-
- reg = (void __iomem *)((unsigned long)dmm_virt_base_addr |
- (0x440ul));
- regval = __raw_readl(reg);
- __raw_writel(0x80808080, reg);
-
- return eCode;
-}
-
-enum errorCodeT dmm_pat_view_map_config_get(signed long patViewMapIndx,
- enum dmmMemoryAccessT memoryAccessMode,
- unsigned long *contX,
- enum dmmPATTranslationT *transType,
- unsigned long *dmmPATViewBase)
-{
- enum errorCodeT eCode = DMM_NO_ERROR;
- return eCode;
-}
-
-/* ========================================================================== */
-/**
- * dmm_lisa_memory_map_config()
- *
- * @brief Configure selected LISA memory map.
- *
- * @param lisaMemMapIndx - signed long - [in] Index of the selected LISA memory
- * map.
- *
- * @param sysSize - dmmMemSectionSizeT - [in] Size of the memory section.
- *
- * @param sdrcIntl - dmmMemSdrcIntlModeT - [in] SDRAM controller interleaving
- * mode
- *
- * @param sdrcAddrspc - unsigned long - [in] SDRAM controller address space.
- *
- * @param sdrcMap - dmmMemSectionMappingT - [in] SDRAM controller mapping.
- *
- * @param sdrcAddr - unsigned long - [in] SDRAM controller address MSB.
- *
- * @return errorCodeT
- *
- * @pre There is no pre conditions.
- *
- * @post There is no post conditions.
- *
- * @see errorCodeT, dmmMemSectionSizeT for further detail.
- */
-/* ========================================================================== */
-enum errorCodeT dmm_lisa_memory_map_config(signed long lisaMemMapIndx,
- unsigned long sysAddr,
- enum dmmMemSectionSizeT sysSize,
- enum dmmMemSdrcIntlModeT sdrcIntl,
- unsigned long sdrcAddrspc,
- enum dmmMemSectionMappingT sdrcMap,
- unsigned long sdrcAddr)
-{
- enum errorCodeT eCode = DMM_NO_ERROR;
- void __iomem *reg = NULL;
-
- if (lisaMemMapIndx != 0)
- printk(KERN_WARNING "lisaMemMapIndx != 0\n");
-
- reg = (void __iomem *)((unsigned long)dmm_virt_base_addr |
- (0x40ul + (0x4*lisaMemMapIndx)));
- __raw_writel(0x80710100, reg);
-
- return eCode;
-}
-
-enum errorCodeT dmm_lisa_memory_map_config_get(signed long lisaMemMapIndx,
- unsigned long *sysAddr,
- enum dmmMemSectionSizeT *sysSize,
- enum dmmMemSdrcIntlModeT *sdrcIntl,
- unsigned long *sdrcAddrspc,
- enum dmmMemSectionMappingT *sdrcMap,
- unsigned long *sdrcAddr)
-{
- enum errorCodeT eCode = DMM_NO_ERROR;
- return eCode;
-}
-
-/* ========================================================================== */
-/**
- * dmm_engage_lisa_lock()
- *
- * @brief Sets the LISA lock register preventing further writting to the
- * LISA memory map registers.
- *
- * @return errorCodeT
- *
- * @pre There is no pre conditions.
- *
- * @post Only a software reset of the DMM module can clear the lock bit.
- *
- * @see errorCodeT for further detail.
- */
-/* ========================================================================== */
-enum errorCodeT dmm_engage_lisa_lock()
-{
- void __iomem *reg = NULL;
- unsigned long regval = 0xffffffff;
- unsigned long writeval = 0xffffffff;
- unsigned long f = 0xffffffff; /* field */
- unsigned long fp = 0xffffffff; /* field position */
-
- reg = (void __iomem *)((unsigned long)dmm_virt_base_addr |
- (0x1cul));
- regval = __raw_readl(reg);
-
- f = BITFIELD(0, 0);
- fp = 0;
- writeval = (regval & (~(f))) | (((0x1ul) << fp) & f);
- __raw_writel(writeval, reg);
-
- return DMM_NO_ERROR;
-}
-
-enum errorCodeT dmm_sys_config_set(unsigned long dmmIdleMode)
-{
- enum errorCodeT eCode = DMM_NO_ERROR;
- return eCode;
-}
-
-enum errorCodeT dmm_sys_config_get(unsigned long *dmmIdleMode)
-{
- enum errorCodeT eCode = DMM_NO_ERROR;
- return eCode;
-}
-
-enum errorCodeT dmm_pat_irq_mode_set(struct dmmPATIrqEventsT *patIrqEvnt)
-{
- enum errorCodeT eCode = DMM_NO_ERROR;
- void __iomem *reg = NULL;
-
- reg = (void __iomem *)((unsigned long)dmm_virt_base_addr |
- (0x4a0ul));
-
- __raw_writel(0x0000FFFF, reg); /* clr all irq registers */
- return eCode;
-}
-
-enum errorCodeT dmm_pat_irq_mode_get(struct dmmPATIrqEventsT *patIrqEvnt)
-{
- enum errorCodeT eCode = DMM_NO_ERROR;
- return eCode;
-}
-
-enum errorCodeT dmm_pat_irq_status_get(struct dmmPATIrqEventsT *patIrqEvnt,
- int clrEvents)
-{
- enum errorCodeT eCode = DMM_NO_ERROR;
- return eCode;
-}