Skip to content

Commit

Permalink
DMAENGINE: ste_dma40: removed a few magic numbers
Browse files Browse the repository at this point in the history
Make sure to extract the revision field explicitly and document
what bits are being accessed here without magic numbers.

Signed-off-by: Jonas Aaberg <jonas.aberg@stericsson.com>
Signed-off-by: Linus Walleij <linus.walleij@stericsson.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
  • Loading branch information
Jonas Aaberg authored and Dan Williams committed Sep 22, 2010
1 parent 0246e77 commit 3ae0267
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 6 deletions.
18 changes: 12 additions & 6 deletions drivers/dma/ste_dma40.c
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
#define D40_ALLOC_LOG_FREE 0

/* Hardware designer of the block */
#define D40_PERIPHID2_DESIGNER 0x8
#define D40_HW_DESIGNER 0x8

/**
* enum 40_command - The different commands and/or statuses.
Expand Down Expand Up @@ -2438,6 +2438,7 @@ static struct d40_base * __init d40_hw_detect_init(struct platform_device *pdev)
int num_phy_chans;
int i;
u32 val;
u32 rev;

clk = clk_get(&pdev->dev, NULL);

Expand Down Expand Up @@ -2476,21 +2477,26 @@ static struct d40_base * __init d40_hw_detect_init(struct platform_device *pdev)
}
}

/* Get silicon revision */
/* Get silicon revision and designer */
val = readl(virtbase + D40_DREG_PERIPHID2);

if ((val & 0xf) != D40_PERIPHID2_DESIGNER) {
if ((val & D40_DREG_PERIPHID2_DESIGNER_MASK) !=
D40_HW_DESIGNER) {
dev_err(&pdev->dev,
"[%s] Unknown designer! Got %x wanted %x\n",
__func__, val & 0xf, D40_PERIPHID2_DESIGNER);
__func__, val & D40_DREG_PERIPHID2_DESIGNER_MASK,
D40_HW_DESIGNER);
goto failure;
}

rev = (val & D40_DREG_PERIPHID2_REV_MASK) >>
D40_DREG_PERIPHID2_REV_POS;

/* The number of physical channels on this HW */
num_phy_chans = 4 * (readl(virtbase + D40_DREG_ICFG) & 0x7) + 4;

dev_info(&pdev->dev, "hardware revision: %d @ 0x%x\n",
(val >> 4) & 0xf, res->start);
rev, res->start);

plat_data = pdev->dev.platform_data;

Expand All @@ -2512,7 +2518,7 @@ static struct d40_base * __init d40_hw_detect_init(struct platform_device *pdev)
goto failure;
}

base->rev = (val >> 4) & 0xf;
base->rev = rev;
base->clk = clk;
base->num_phy_chans = num_phy_chans;
base->num_log_chans = num_log_chans;
Expand Down
3 changes: 3 additions & 0 deletions drivers/dma/ste_dma40_ll.h
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,9 @@
#define D40_DREG_PERIPHID0 0xFE0
#define D40_DREG_PERIPHID1 0xFE4
#define D40_DREG_PERIPHID2 0xFE8
#define D40_DREG_PERIPHID2_REV_POS 4
#define D40_DREG_PERIPHID2_REV_MASK (0xf << D40_DREG_PERIPHID2_REV_POS)
#define D40_DREG_PERIPHID2_DESIGNER_MASK 0xf
#define D40_DREG_PERIPHID3 0xFEC
#define D40_DREG_CELLID0 0xFF0
#define D40_DREG_CELLID1 0xFF4
Expand Down

0 comments on commit 3ae0267

Please sign in to comment.