Devicetree fixes for 6.11, part 1
- Treewide conversion of of_property_for_each_u32() to drop internal arguments making struct property opaque - Add binding for Amlogic A4 SoC watchdog - Fix constraints for AD7192 'single-channel' property -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEktVUI4SxYhzZyEuo+vtdtY28YcMFAmaj8ncACgkQ+vtdtY28 YcMwZRAAh618Xfw+J8pxv62PMw11r0hgMNYoHPYDMt47D7g9Wwa71xdR6OpfIpf+ EyHUXrnXJT6f5sm8mVe9Gsni0MZfgdkwchxlCQej0rJKchdLdAFNXbg4GbhF+0Ht tA3Y6bPB9FYKHExd87flnt4AO3ypF+1ihjSAAoy4EyEZUfyKgQVPyebDGwlPYlkH dmhF+q9d94LVw3lj/C7htWGELProogsU3i498ey7m/w8jwiJav2DVJ0cRuld/aPG 7VwGQhJzdndlH1MPcl9slzIPadUrZ0S3/7V4c9cC0E22XpHJzp4RSdGmzsXJ7adp Q+OlQYiyZLLhEA/alVO/j5SJtfxt+T6+lrpbbu1wcJMFoukXusvL+0KbxxbExEn0 /3MrZuxEq3F+jcKtMR/1PFcO7o1uEzzyTZcdufV3siABjZqmG4AFzBhHWP4Xh2Uw 6hs7R/Ktf2lmacCK9fawfJF6Qq4RtFIakUuI6S3Q3oHHTRw6kr1Lsw+Wko/K20mO BEdfhocxEk5vf/kGxcBfM+GTybhagbBh0GxYB/Lm8vATfLHzhunipbc0ZwozDfPu IWiY+Nv+hGeGhfvSfNFUcsknF+QwtSjGis7hQjHkJc/siahaXJVAaf+tvtL1xm/p 0CGPIJFZgzkcbjCT3iPVaJjfyRlMe9l7HJ6XiBSrMpiFpZPTgT8= =Nn/d -----END PGP SIGNATURE----- Merge tag 'devicetree-fixes-for-6.11-1' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux Pull more devicetree updates from Rob Herring: "Most of this is a treewide change to of_property_for_each_u32() which was small enough to do in one go before rc1 and avoids the need to create of_property_for_each_u32_some_new_name(). - Treewide conversion of of_property_for_each_u32() to drop internal arguments making struct property opaque - Add binding for Amlogic A4 SoC watchdog - Fix constraints for AD7192 'single-channel' property" * tag 'devicetree-fixes-for-6.11-1' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux: dt-bindings: iio: adc: ad7192: Fix 'single-channel' constraints of: remove internal arguments from of_property_for_each_u32() dt-bindings: watchdog: add support for Amlogic A4 SoCs
This commit is contained in:
commit
bf80f1391a
@ -120,9 +120,8 @@ patternProperties:
|
||||
description:
|
||||
Positive input can be connected to pins AIN1 to AIN16 by choosing the
|
||||
appropriate value from 1 to 16. Negative input is connected to AINCOM.
|
||||
items:
|
||||
minimum: 1
|
||||
maximum: 16
|
||||
minimum: 1
|
||||
maximum: 16
|
||||
|
||||
oneOf:
|
||||
- required:
|
||||
|
@ -21,6 +21,7 @@ properties:
|
||||
- amlogic,t7-wdt
|
||||
- items:
|
||||
- enum:
|
||||
- amlogic,a4-wdt
|
||||
- amlogic,c3-wdt
|
||||
- amlogic,s4-wdt
|
||||
- const: amlogic,t7-wdt
|
||||
|
@ -559,9 +559,7 @@ bool __init xive_native_init(void)
|
||||
struct device_node *np;
|
||||
struct resource r;
|
||||
void __iomem *tima;
|
||||
struct property *prop;
|
||||
u8 max_prio = 7;
|
||||
const __be32 *p;
|
||||
u32 val, cpu;
|
||||
s64 rc;
|
||||
|
||||
@ -592,7 +590,7 @@ bool __init xive_native_init(void)
|
||||
max_prio = val - 1;
|
||||
|
||||
/* Iterate the EQ sizes and pick one */
|
||||
of_property_for_each_u32(np, "ibm,xive-eq-sizes", prop, p, val) {
|
||||
of_property_for_each_u32(np, "ibm,xive-eq-sizes", val) {
|
||||
xive_queue_shift = val;
|
||||
if (val == PAGE_SHIFT)
|
||||
break;
|
||||
|
@ -814,7 +814,6 @@ bool __init xive_spapr_init(void)
|
||||
struct device_node *np;
|
||||
struct resource r;
|
||||
void __iomem *tima;
|
||||
struct property *prop;
|
||||
u8 max_prio;
|
||||
u32 val;
|
||||
u32 len;
|
||||
@ -866,7 +865,7 @@ bool __init xive_spapr_init(void)
|
||||
}
|
||||
|
||||
/* Iterate the EQ sizes and pick one */
|
||||
of_property_for_each_u32(np, "ibm,xive-eq-sizes", prop, reg, val) {
|
||||
of_property_for_each_u32(np, "ibm,xive-eq-sizes", val) {
|
||||
xive_queue_shift = val;
|
||||
if (val == PAGE_SHIFT)
|
||||
break;
|
||||
|
@ -2291,11 +2291,9 @@ static int sysc_init_idlemode(struct sysc *ddata, u8 *idlemodes,
|
||||
const char *name)
|
||||
{
|
||||
struct device_node *np = ddata->dev->of_node;
|
||||
struct property *prop;
|
||||
const __be32 *p;
|
||||
u32 val;
|
||||
|
||||
of_property_for_each_u32(np, name, prop, p, val) {
|
||||
of_property_for_each_u32(np, name, val) {
|
||||
if (val >= SYSC_NR_IDLEMODES) {
|
||||
dev_err(ddata->dev, "invalid idlemode: %i\n", val);
|
||||
return -EINVAL;
|
||||
|
@ -81,13 +81,11 @@ err:
|
||||
static int __set_clk_rates(struct device_node *node, bool clk_supplier)
|
||||
{
|
||||
struct of_phandle_args clkspec;
|
||||
struct property *prop;
|
||||
const __be32 *cur;
|
||||
int rc, index = 0;
|
||||
struct clk *clk;
|
||||
u32 rate;
|
||||
|
||||
of_property_for_each_u32(node, "assigned-clock-rates", prop, cur, rate) {
|
||||
of_property_for_each_u32(node, "assigned-clock-rates", rate) {
|
||||
if (rate) {
|
||||
rc = of_parse_phandle_with_args(node, "assigned-clocks",
|
||||
"#clock-cells", index, &clkspec);
|
||||
|
@ -1175,8 +1175,8 @@ static int si5351_dt_parse(struct i2c_client *client,
|
||||
{
|
||||
struct device_node *child, *np = client->dev.of_node;
|
||||
struct si5351_platform_data *pdata;
|
||||
struct property *prop;
|
||||
const __be32 *p;
|
||||
u32 array[4];
|
||||
int sz, i;
|
||||
int num = 0;
|
||||
u32 val;
|
||||
|
||||
@ -1191,20 +1191,24 @@ static int si5351_dt_parse(struct i2c_client *client,
|
||||
* property silabs,pll-source : <num src>, [<..>]
|
||||
* allow to selectively set pll source
|
||||
*/
|
||||
of_property_for_each_u32(np, "silabs,pll-source", prop, p, num) {
|
||||
sz = of_property_read_variable_u32_array(np, "silabs,pll-source", array, 2, 4);
|
||||
sz = (sz == -EINVAL) ? 0 : sz; /* Missing property is OK */
|
||||
if (sz < 0)
|
||||
return dev_err_probe(&client->dev, sz, "invalid pll-source\n");
|
||||
if (sz % 2)
|
||||
return dev_err_probe(&client->dev, -EINVAL,
|
||||
"missing pll-source for pll %d\n", array[sz - 1]);
|
||||
|
||||
for (i = 0; i < sz; i += 2) {
|
||||
num = array[i];
|
||||
val = array[i + 1];
|
||||
|
||||
if (num >= 2) {
|
||||
dev_err(&client->dev,
|
||||
"invalid pll %d on pll-source prop\n", num);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
p = of_prop_next_u32(prop, p, &val);
|
||||
if (!p) {
|
||||
dev_err(&client->dev,
|
||||
"missing pll-source for pll %d\n", num);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
switch (val) {
|
||||
case 0:
|
||||
pdata->pll_src[num] = SI5351_PLL_SRC_XTAL;
|
||||
@ -1232,19 +1236,24 @@ static int si5351_dt_parse(struct i2c_client *client,
|
||||
pdata->pll_reset[0] = true;
|
||||
pdata->pll_reset[1] = true;
|
||||
|
||||
of_property_for_each_u32(np, "silabs,pll-reset-mode", prop, p, num) {
|
||||
sz = of_property_read_variable_u32_array(np, "silabs,pll-reset-mode", array, 2, 4);
|
||||
sz = (sz == -EINVAL) ? 0 : sz; /* Missing property is OK */
|
||||
if (sz < 0)
|
||||
return dev_err_probe(&client->dev, sz, "invalid pll-reset-mode\n");
|
||||
if (sz % 2)
|
||||
return dev_err_probe(&client->dev, -EINVAL,
|
||||
"missing pll-reset-mode for pll %d\n", array[sz - 1]);
|
||||
|
||||
for (i = 0; i < sz; i += 2) {
|
||||
num = array[i];
|
||||
val = array[i + 1];
|
||||
|
||||
if (num >= 2) {
|
||||
dev_err(&client->dev,
|
||||
"invalid pll %d on pll-reset-mode prop\n", num);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
p = of_prop_next_u32(prop, p, &val);
|
||||
if (!p) {
|
||||
dev_err(&client->dev,
|
||||
"missing pll-reset-mode for pll %d\n", num);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
switch (val) {
|
||||
case 0:
|
||||
|
@ -5364,9 +5364,8 @@ EXPORT_SYMBOL_GPL(of_clk_get_parent_count);
|
||||
const char *of_clk_get_parent_name(const struct device_node *np, int index)
|
||||
{
|
||||
struct of_phandle_args clkspec;
|
||||
struct property *prop;
|
||||
const char *clk_name;
|
||||
const __be32 *vp;
|
||||
bool found = false;
|
||||
u32 pv;
|
||||
int rc;
|
||||
int count;
|
||||
@ -5383,15 +5382,16 @@ const char *of_clk_get_parent_name(const struct device_node *np, int index)
|
||||
/* if there is an indices property, use it to transfer the index
|
||||
* specified into an array offset for the clock-output-names property.
|
||||
*/
|
||||
of_property_for_each_u32(clkspec.np, "clock-indices", prop, vp, pv) {
|
||||
of_property_for_each_u32(clkspec.np, "clock-indices", pv) {
|
||||
if (index == pv) {
|
||||
index = count;
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
count++;
|
||||
}
|
||||
/* We went off the end of 'clock-indices' without finding it */
|
||||
if (prop && !vp)
|
||||
if (of_property_present(clkspec.np, "clock-indices") && !found)
|
||||
return NULL;
|
||||
|
||||
if (of_property_read_string_index(clkspec.np, "clock-output-names",
|
||||
@ -5504,14 +5504,12 @@ static int parent_ready(struct device_node *np)
|
||||
int of_clk_detect_critical(struct device_node *np, int index,
|
||||
unsigned long *flags)
|
||||
{
|
||||
struct property *prop;
|
||||
const __be32 *cur;
|
||||
uint32_t idx;
|
||||
|
||||
if (!np || !flags)
|
||||
return -EINVAL;
|
||||
|
||||
of_property_for_each_u32(np, "clock-critical", prop, cur, idx)
|
||||
of_property_for_each_u32(np, "clock-critical", idx)
|
||||
if (index == idx)
|
||||
*flags |= CLK_IS_CRITICAL;
|
||||
|
||||
|
@ -227,11 +227,9 @@ EXPORT_SYMBOL_GPL(qcom_cc_register_sleep_clk);
|
||||
static void qcom_cc_drop_protected(struct device *dev, struct qcom_cc *cc)
|
||||
{
|
||||
struct device_node *np = dev->of_node;
|
||||
struct property *prop;
|
||||
const __be32 *p;
|
||||
u32 i;
|
||||
|
||||
of_property_for_each_u32(np, "protected-clocks", prop, p, i) {
|
||||
of_property_for_each_u32(np, "protected-clocks", i) {
|
||||
if (i >= cc->num_rclks)
|
||||
continue;
|
||||
|
||||
|
@ -21,11 +21,9 @@ static void __init sunxi_simple_gates_setup(struct device_node *node,
|
||||
{
|
||||
struct clk_onecell_data *clk_data;
|
||||
const char *clk_parent, *clk_name;
|
||||
struct property *prop;
|
||||
struct resource res;
|
||||
void __iomem *clk_reg;
|
||||
void __iomem *reg;
|
||||
const __be32 *p;
|
||||
int number, i = 0, j;
|
||||
u8 clk_bit;
|
||||
u32 index;
|
||||
@ -47,7 +45,7 @@ static void __init sunxi_simple_gates_setup(struct device_node *node,
|
||||
if (!clk_data->clks)
|
||||
goto err_free_data;
|
||||
|
||||
of_property_for_each_u32(node, "clock-indices", prop, p, index) {
|
||||
of_property_for_each_u32(node, "clock-indices", index) {
|
||||
of_property_read_string_index(node, "clock-output-names",
|
||||
i, &clk_name);
|
||||
|
||||
|
@ -24,11 +24,9 @@ static void __init sun8i_h3_bus_gates_init(struct device_node *node)
|
||||
const char *parents[PARENT_MAX];
|
||||
struct clk_onecell_data *clk_data;
|
||||
const char *clk_name;
|
||||
struct property *prop;
|
||||
struct resource res;
|
||||
void __iomem *clk_reg;
|
||||
void __iomem *reg;
|
||||
const __be32 *p;
|
||||
int number, i;
|
||||
u8 clk_bit;
|
||||
int index;
|
||||
@ -58,7 +56,7 @@ static void __init sun8i_h3_bus_gates_init(struct device_node *node)
|
||||
goto err_free_data;
|
||||
|
||||
i = 0;
|
||||
of_property_for_each_u32(node, "clock-indices", prop, p, index) {
|
||||
of_property_for_each_u32(node, "clock-indices", index) {
|
||||
of_property_read_string_index(node, "clock-output-names",
|
||||
i, &clk_name);
|
||||
|
||||
|
@ -418,8 +418,6 @@ void __init samsung_pwm_clocksource_init(void __iomem *base,
|
||||
static int __init samsung_pwm_alloc(struct device_node *np,
|
||||
const struct samsung_pwm_variant *variant)
|
||||
{
|
||||
struct property *prop;
|
||||
const __be32 *cur;
|
||||
u32 val;
|
||||
int i, ret;
|
||||
|
||||
@ -427,7 +425,7 @@ static int __init samsung_pwm_alloc(struct device_node *np,
|
||||
for (i = 0; i < SAMSUNG_PWM_NUM; ++i)
|
||||
pwm.irq[i] = irq_of_parse_and_map(np, i);
|
||||
|
||||
of_property_for_each_u32(np, "samsung,pwm-outputs", prop, cur, val) {
|
||||
of_property_for_each_u32(np, "samsung,pwm-outputs", val) {
|
||||
if (val >= SAMSUNG_PWM_NUM) {
|
||||
pr_warn("%s: invalid channel index in samsung,pwm-outputs property\n", __func__);
|
||||
continue;
|
||||
|
@ -591,8 +591,6 @@ static int brcmstb_gpio_probe(struct platform_device *pdev)
|
||||
void __iomem *reg_base;
|
||||
struct brcmstb_gpio_priv *priv;
|
||||
struct resource *res;
|
||||
struct property *prop;
|
||||
const __be32 *p;
|
||||
u32 bank_width;
|
||||
int num_banks = 0;
|
||||
int num_gpios = 0;
|
||||
@ -636,8 +634,7 @@ static int brcmstb_gpio_probe(struct platform_device *pdev)
|
||||
flags = BGPIOF_BIG_ENDIAN_BYTE_ORDER;
|
||||
#endif
|
||||
|
||||
of_property_for_each_u32(np, "brcm,gpio-bank-widths", prop, p,
|
||||
bank_width) {
|
||||
of_property_for_each_u32(np, "brcm,gpio-bank-widths", bank_width) {
|
||||
struct brcmstb_gpio_bank *bank;
|
||||
struct gpio_chip *gc;
|
||||
|
||||
|
@ -564,13 +564,11 @@ static int tiadc_parse_dt(struct platform_device *pdev,
|
||||
struct tiadc_device *adc_dev)
|
||||
{
|
||||
struct device_node *node = pdev->dev.of_node;
|
||||
struct property *prop;
|
||||
const __be32 *cur;
|
||||
int channels = 0;
|
||||
u32 val;
|
||||
int i;
|
||||
|
||||
of_property_for_each_u32(node, "ti,adc-channels", prop, cur, val) {
|
||||
of_property_for_each_u32(node, "ti,adc-channels", val) {
|
||||
adc_dev->channel_line[channels] = val;
|
||||
|
||||
/* Set Default values for optional DT parameters */
|
||||
|
@ -111,8 +111,6 @@ static void __init aic_common_ext_irq_of_init(struct irq_domain *domain)
|
||||
struct device_node *node = irq_domain_get_of_node(domain);
|
||||
struct irq_chip_generic *gc;
|
||||
struct aic_chip_data *aic;
|
||||
struct property *prop;
|
||||
const __be32 *p;
|
||||
u32 hwirq;
|
||||
|
||||
gc = irq_get_domain_generic_chip(domain, 0);
|
||||
@ -120,7 +118,7 @@ static void __init aic_common_ext_irq_of_init(struct irq_domain *domain)
|
||||
aic = gc->private;
|
||||
aic->ext_irqs |= 1;
|
||||
|
||||
of_property_for_each_u32(node, "atmel,external-irqs", prop, p, hwirq) {
|
||||
of_property_for_each_u32(node, "atmel,external-irqs", hwirq) {
|
||||
gc = irq_get_domain_generic_chip(domain, hwirq);
|
||||
if (!gc) {
|
||||
pr_warn("AIC: external irq %d >= %d skip it\n",
|
||||
|
@ -190,13 +190,11 @@ static void __init pic32_ext_irq_of_init(struct irq_domain *domain)
|
||||
{
|
||||
struct device_node *node = irq_domain_get_of_node(domain);
|
||||
struct evic_chip_data *priv = domain->host_data;
|
||||
struct property *prop;
|
||||
const __le32 *p;
|
||||
u32 hwirq;
|
||||
int i = 0;
|
||||
const char *pname = "microchip,external-irqs";
|
||||
|
||||
of_property_for_each_u32(node, pname, prop, p, hwirq) {
|
||||
of_property_for_each_u32(node, pname, hwirq) {
|
||||
if (i >= ARRAY_SIZE(priv->ext_irqs)) {
|
||||
pr_warn("More than %d external irq, skip rest\n",
|
||||
ARRAY_SIZE(priv->ext_irqs));
|
||||
|
@ -119,8 +119,6 @@ static int ti_tscadc_probe(struct platform_device *pdev)
|
||||
struct clk *clk;
|
||||
struct device_node *node;
|
||||
struct mfd_cell *cell;
|
||||
struct property *prop;
|
||||
const __be32 *cur;
|
||||
bool use_tsc = false, use_mag = false;
|
||||
u32 val;
|
||||
int err;
|
||||
@ -167,7 +165,7 @@ static int ti_tscadc_probe(struct platform_device *pdev)
|
||||
}
|
||||
|
||||
node = of_get_child_by_name(pdev->dev.of_node, "adc");
|
||||
of_property_for_each_u32(node, "ti,adc-channels", prop, cur, val) {
|
||||
of_property_for_each_u32(node, "ti,adc-channels", val) {
|
||||
adc_channels++;
|
||||
if (val > 7) {
|
||||
dev_err(&pdev->dev, " PIN numbers are 0..7 (not %d)\n",
|
||||
|
@ -730,9 +730,7 @@ static int s32_pinctrl_parse_groups(struct device_node *np,
|
||||
struct s32_pin_group *grp,
|
||||
struct s32_pinctrl_soc_info *info)
|
||||
{
|
||||
const __be32 *p;
|
||||
struct device *dev;
|
||||
struct property *prop;
|
||||
unsigned int *pins, *sss;
|
||||
int i, npins;
|
||||
u32 pinmux;
|
||||
@ -763,7 +761,7 @@ static int s32_pinctrl_parse_groups(struct device_node *np,
|
||||
return -ENOMEM;
|
||||
|
||||
i = 0;
|
||||
of_property_for_each_u32(np, "pinmux", prop, p, pinmux) {
|
||||
of_property_for_each_u32(np, "pinmux", pinmux) {
|
||||
pins[i] = get_pin_no(pinmux);
|
||||
sss[i] = get_pin_func(pinmux);
|
||||
|
||||
|
@ -763,8 +763,6 @@ static int k210_pinctrl_dt_subnode_to_map(struct pinctrl_dev *pctldev,
|
||||
unsigned int *reserved_maps,
|
||||
unsigned int *num_maps)
|
||||
{
|
||||
struct property *prop;
|
||||
const __be32 *p;
|
||||
int ret, pinmux_groups;
|
||||
u32 pinmux_group;
|
||||
unsigned long *configs = NULL;
|
||||
@ -797,7 +795,7 @@ static int k210_pinctrl_dt_subnode_to_map(struct pinctrl_dev *pctldev,
|
||||
if (ret < 0)
|
||||
goto exit;
|
||||
|
||||
of_property_for_each_u32(np, "pinmux", prop, p, pinmux_group) {
|
||||
of_property_for_each_u32(np, "pinmux", pinmux_group) {
|
||||
const char *group_name, *func_name;
|
||||
u32 pin = FIELD_GET(K210_PG_PIN, pinmux_group);
|
||||
u32 func = FIELD_GET(K210_PG_FUNC, pinmux_group);
|
||||
|
@ -510,8 +510,6 @@ static int pwm_samsung_parse_dt(struct pwm_chip *chip)
|
||||
struct samsung_pwm_chip *our_chip = to_samsung_pwm_chip(chip);
|
||||
struct device_node *np = pwmchip_parent(chip)->of_node;
|
||||
const struct of_device_id *match;
|
||||
struct property *prop;
|
||||
const __be32 *cur;
|
||||
u32 val;
|
||||
|
||||
match = of_match_node(samsung_pwm_matches, np);
|
||||
@ -520,7 +518,7 @@ static int pwm_samsung_parse_dt(struct pwm_chip *chip)
|
||||
|
||||
memcpy(&our_chip->variant, match->data, sizeof(our_chip->variant));
|
||||
|
||||
of_property_for_each_u32(np, "samsung,pwm-outputs", prop, cur, val) {
|
||||
of_property_for_each_u32(np, "samsung,pwm-outputs", val) {
|
||||
if (val >= SAMSUNG_PWM_NUM) {
|
||||
dev_err(pwmchip_parent(chip),
|
||||
"%s: invalid channel index in samsung,pwm-outputs property\n",
|
||||
|
@ -770,8 +770,6 @@ static void sysrq_of_get_keyreset_config(void)
|
||||
{
|
||||
u32 key;
|
||||
struct device_node *np;
|
||||
struct property *prop;
|
||||
const __be32 *p;
|
||||
|
||||
np = of_find_node_by_path("/chosen/linux,sysrq-reset-seq");
|
||||
if (!np) {
|
||||
@ -782,7 +780,7 @@ static void sysrq_of_get_keyreset_config(void)
|
||||
/* Reset in case a __weak definition was present */
|
||||
sysrq_reset_seq_len = 0;
|
||||
|
||||
of_property_for_each_u32(np, "keyset", prop, p, key) {
|
||||
of_property_for_each_u32(np, "keyset", key) {
|
||||
if (key == KEY_RESERVED || key > KEY_MAX ||
|
||||
sysrq_reset_seq_len == SYSRQ_KEY_RESET_MAX)
|
||||
break;
|
||||
|
@ -382,11 +382,9 @@ static void usb251xb_get_ports_field(struct usb251xb *hub,
|
||||
bool ds_only, u8 *fld)
|
||||
{
|
||||
struct device *dev = hub->dev;
|
||||
struct property *prop;
|
||||
const __be32 *p;
|
||||
u32 port;
|
||||
|
||||
of_property_for_each_u32(dev->of_node, prop_name, prop, p, port) {
|
||||
of_property_for_each_u32(dev->of_node, prop_name, port) {
|
||||
if ((port >= ds_only ? 1 : 0) && (port <= port_cnt))
|
||||
*fld |= BIT(port);
|
||||
else
|
||||
|
@ -430,11 +430,9 @@ extern int of_detach_node(struct device_node *);
|
||||
#define of_match_ptr(_ptr) (_ptr)
|
||||
|
||||
/*
|
||||
* struct property *prop;
|
||||
* const __be32 *p;
|
||||
* u32 u;
|
||||
*
|
||||
* of_property_for_each_u32(np, "propname", prop, p, u)
|
||||
* of_property_for_each_u32(np, "propname", u)
|
||||
* printk("U32 value: %x\n", u);
|
||||
*/
|
||||
const __be32 *of_prop_next_u32(struct property *prop, const __be32 *cur,
|
||||
@ -1431,11 +1429,12 @@ static inline int of_property_read_s32(const struct device_node *np,
|
||||
err == 0; \
|
||||
err = of_phandle_iterator_next(it))
|
||||
|
||||
#define of_property_for_each_u32(np, propname, prop, p, u) \
|
||||
for (prop = of_find_property(np, propname, NULL), \
|
||||
p = of_prop_next_u32(prop, NULL, &u); \
|
||||
p; \
|
||||
p = of_prop_next_u32(prop, p, &u))
|
||||
#define of_property_for_each_u32(np, propname, u) \
|
||||
for (struct {struct property *prop; const __be32 *item; } _it = \
|
||||
{of_find_property(np, propname, NULL), \
|
||||
of_prop_next_u32(_it.prop, NULL, &u)}; \
|
||||
_it.item; \
|
||||
_it.item = of_prop_next_u32(_it.prop, _it.item, &u))
|
||||
|
||||
#define of_property_for_each_string(np, propname, prop, s) \
|
||||
for (prop = of_find_property(np, propname, NULL), \
|
||||
|
@ -2786,15 +2786,13 @@ int arizona_of_get_audio_pdata(struct arizona *arizona)
|
||||
{
|
||||
struct arizona_pdata *pdata = &arizona->pdata;
|
||||
struct device_node *np = arizona->dev->of_node;
|
||||
struct property *prop;
|
||||
const __be32 *cur;
|
||||
u32 val;
|
||||
u32 pdm_val[ARIZONA_MAX_PDM_SPK];
|
||||
int ret;
|
||||
int count = 0;
|
||||
|
||||
count = 0;
|
||||
of_property_for_each_u32(np, "wlf,inmode", prop, cur, val) {
|
||||
of_property_for_each_u32(np, "wlf,inmode", val) {
|
||||
if (count == ARRAY_SIZE(pdata->inmode))
|
||||
break;
|
||||
|
||||
@ -2803,7 +2801,7 @@ int arizona_of_get_audio_pdata(struct arizona *arizona)
|
||||
}
|
||||
|
||||
count = 0;
|
||||
of_property_for_each_u32(np, "wlf,dmic-ref", prop, cur, val) {
|
||||
of_property_for_each_u32(np, "wlf,dmic-ref", val) {
|
||||
if (count == ARRAY_SIZE(pdata->dmic_ref))
|
||||
break;
|
||||
|
||||
@ -2812,7 +2810,7 @@ int arizona_of_get_audio_pdata(struct arizona *arizona)
|
||||
}
|
||||
|
||||
count = 0;
|
||||
of_property_for_each_u32(np, "wlf,out-mono", prop, cur, val) {
|
||||
of_property_for_each_u32(np, "wlf,out-mono", val) {
|
||||
if (count == ARRAY_SIZE(pdata->out_mono))
|
||||
break;
|
||||
|
||||
@ -2821,7 +2819,7 @@ int arizona_of_get_audio_pdata(struct arizona *arizona)
|
||||
}
|
||||
|
||||
count = 0;
|
||||
of_property_for_each_u32(np, "wlf,max-channels-clocked", prop, cur, val) {
|
||||
of_property_for_each_u32(np, "wlf,max-channels-clocked", val) {
|
||||
if (count == ARRAY_SIZE(pdata->max_channels_clocked))
|
||||
break;
|
||||
|
||||
@ -2830,7 +2828,7 @@ int arizona_of_get_audio_pdata(struct arizona *arizona)
|
||||
}
|
||||
|
||||
count = 0;
|
||||
of_property_for_each_u32(np, "wlf,out-volume-limit", prop, cur, val) {
|
||||
of_property_for_each_u32(np, "wlf,out-volume-limit", val) {
|
||||
if (count == ARRAY_SIZE(pdata->out_vol_limit))
|
||||
break;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user