Skip to content

Commit d0b2461

Browse files
robherringdamien-lemoal
authored andcommitted
ata: Use of_property_read_reg() to parse "reg"
Use the recently added of_property_read_reg() helper to get the untranslated "reg" address value. Signed-off-by: Rob Herring <[email protected]> Reviewed-by: Sergey Shtylyov <[email protected]> Signed-off-by: Damien Le Moal <[email protected]>
1 parent 43cff7d commit d0b2461

File tree

2 files changed

+14
-20
lines changed

2 files changed

+14
-20
lines changed

drivers/ata/pata_octeon_cf.c

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -804,9 +804,7 @@ static int octeon_cf_probe(struct platform_device *pdev)
804804
struct resource *res_cs0, *res_cs1;
805805

806806
bool is_16bit;
807-
const __be32 *cs_num;
808-
struct property *reg_prop;
809-
int n_addr, n_size, reg_len;
807+
u64 reg;
810808
struct device_node *node;
811809
void __iomem *cs0;
812810
void __iomem *cs1 = NULL;
@@ -834,15 +832,10 @@ static int octeon_cf_probe(struct platform_device *pdev)
834832
else
835833
is_16bit = false;
836834

837-
n_addr = of_n_addr_cells(node);
838-
n_size = of_n_size_cells(node);
839-
840-
reg_prop = of_find_property(node, "reg", &reg_len);
841-
if (!reg_prop || reg_len < sizeof(__be32))
842-
return -EINVAL;
843-
844-
cs_num = reg_prop->value;
845-
cf_port->cs0 = be32_to_cpup(cs_num);
835+
rv = of_property_read_reg(node, 0, &reg, NULL);
836+
if (rv < 0)
837+
return rv;
838+
cf_port->cs0 = upper_32_bits(reg);
846839

847840
if (cf_port->is_true_ide) {
848841
struct device_node *dma_node;
@@ -884,13 +877,12 @@ static int octeon_cf_probe(struct platform_device *pdev)
884877
cs1 = devm_ioremap(&pdev->dev, res_cs1->start,
885878
resource_size(res_cs1));
886879
if (!cs1)
887-
return rv;
888-
889-
if (reg_len < (n_addr + n_size + 1) * sizeof(__be32))
890880
return -EINVAL;
891881

892-
cs_num += n_addr + n_size;
893-
cf_port->cs1 = be32_to_cpup(cs_num);
882+
rv = of_property_read_reg(node, 1, &reg, NULL);
883+
if (rv < 0)
884+
return rv;
885+
cf_port->cs1 = upper_32_bits(reg);
894886
}
895887

896888
res_cs0 = platform_get_resource(pdev, IORESOURCE_MEM, 0);

drivers/ata/sata_svw.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
#include <scsi/scsi.h>
3333
#include <linux/libata.h>
3434
#include <linux/of.h>
35+
#include <linux/of_address.h>
3536

3637
#define DRV_NAME "sata_svw"
3738
#define DRV_VERSION "2.3"
@@ -319,10 +320,11 @@ static int k2_sata_show_info(struct seq_file *m, struct Scsi_Host *shost)
319320
/* Match it to a port node */
320321
index = (ap == ap->host->ports[0]) ? 0 : 1;
321322
for (np = np->child; np != NULL; np = np->sibling) {
322-
const u32 *reg = of_get_property(np, "reg", NULL);
323-
if (!reg)
323+
u64 reg;
324+
325+
if (of_property_read_reg(np, 0, &reg, NULL))
324326
continue;
325-
if (index == *reg) {
327+
if (index == reg) {
326328
seq_printf(m, "devspec: %pOF\n", np);
327329
break;
328330
}

0 commit comments

Comments
 (0)