Re: [PATCH 4/8] i2c: pxa: add OF support
From: Arnd Bergmann <hidden>
Date: 2012-03-01 10:01:00
Also in:
linux-arm-kernel
On Thursday 01 March 2012, Haojian Zhuang wrote:
+#ifdef CONFIG_OF
+static int i2c_pxa_probe_dt(struct platform_device *pdev, struct pxa_i2c *i2c,
+ enum pxa_i2c_types *i2c_types)
{
+ struct device_node *np = pdev->dev.of_node;
+ const struct of_device_id *of_id =
+ of_match_device(i2c_pxa_dt_ids, &pdev->dev);
+ const char *status;
+ int len;
+
+ if (of_get_property(np, "mrvl,i2c-polling", NULL))
+ i2c->use_pio = 1;
+ status = of_get_property(np, "mrvl,i2c-mode", &len);
+ if (status && len > 0)
+ if (!strcmp(status, "fast"))
+ i2c->fast_mode = 1;This would be easier if you made it an empty "mrvl,i2c-fast-mode" property to get rid of the strcmp.
+ *i2c_types = ((u32)(of_id->data) - (u32)&pxa_reg_layout[0]) + / sizeof(struct pxa_reg_layout);
This looks unnecessarily complicated. Just put the enum into of_id->data instead of the pointer, with a cast to unsigned long.
+ return 0;
+}
+#else
+static int i2c_pxa_probe_dt(struct platform_device *pdev, struct pxa_i2c *i2c,
+ enum pxa_i2c_types *i2c_types)
+{
+ return 1;
+}
+#endifAgain, no need for the #ifdef. Just add in the beginning if (!of_id) return 1; And the rest will be optimized out without CONFIG_OF. Arnd