Commit d0b24616 authored by Rob Herring's avatar Rob Herring Committed by Damien Le Moal
Browse files

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: default avatarRob Herring <robh@kernel.org>
Reviewed-by: default avatarSergey Shtylyov <s.shtylyov@omp.ru>
Signed-off-by: default avatarDamien Le Moal <dlemoal@kernel.org>
parent 43cff7d9
Loading
Loading
Loading
Loading
+9 −17
Original line number Diff line number Diff line
@@ -804,9 +804,7 @@ static int octeon_cf_probe(struct platform_device *pdev)
	struct resource *res_cs0, *res_cs1;

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

	n_addr = of_n_addr_cells(node);
	n_size = of_n_size_cells(node);

	reg_prop = of_find_property(node, "reg", &reg_len);
	if (!reg_prop || reg_len < sizeof(__be32))
		return -EINVAL;

	cs_num = reg_prop->value;
	cf_port->cs0 = be32_to_cpup(cs_num);
	rv = of_property_read_reg(node, 0, &reg, NULL);
	if (rv < 0)
		return rv;
	cf_port->cs0 = upper_32_bits(reg);

	if (cf_port->is_true_ide) {
		struct device_node *dma_node;
@@ -884,13 +877,12 @@ static int octeon_cf_probe(struct platform_device *pdev)
		cs1 = devm_ioremap(&pdev->dev, res_cs1->start,
					   resource_size(res_cs1));
		if (!cs1)
			return rv;

		if (reg_len < (n_addr + n_size + 1) * sizeof(__be32))
			return -EINVAL;

		cs_num += n_addr + n_size;
		cf_port->cs1 = be32_to_cpup(cs_num);
		rv = of_property_read_reg(node, 1, &reg, NULL);
		if (rv < 0)
			return rv;
		cf_port->cs1 = upper_32_bits(reg);
	}

	res_cs0 = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+5 −3
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@
#include <scsi/scsi.h>
#include <linux/libata.h>
#include <linux/of.h>
#include <linux/of_address.h>

#define DRV_NAME	"sata_svw"
#define DRV_VERSION	"2.3"
@@ -319,10 +320,11 @@ static int k2_sata_show_info(struct seq_file *m, struct Scsi_Host *shost)
	/* Match it to a port node */
	index = (ap == ap->host->ports[0]) ? 0 : 1;
	for (np = np->child; np != NULL; np = np->sibling) {
		const u32 *reg = of_get_property(np, "reg", NULL);
		if (!reg)
		u64 reg;

		if (of_property_read_reg(np, 0, &reg, NULL))
			continue;
		if (index == *reg) {
		if (index == reg) {
			seq_printf(m, "devspec: %pOF\n", np);
			break;
		}