Hi,
On Mon, Nov 12, 2012 at 05:59:51PM +0100, Andreas Larsson wrote:
quoted hunk ↗ jump to hunk
@@ -233,6 +276,7 @@ static int ocores_i2c_of_probe(struct platform_device *pdev,
{
struct device_node *np = pdev->dev.of_node;
u32 val;
+ const char *name;
if (of_property_read_u32(np, "reg-shift", &i2c->reg_shift)) {
/* no 'reg-shift', check for deprecated 'regstep' */@@ -257,6 +301,15 @@ static int ocores_i2c_of_probe(struct platform_device *pdev,
of_property_read_u32(pdev->dev.of_node, "reg-io-width",
&i2c->reg_io_width);
+
+ name = of_get_property(pdev->dev.of_node, "name", NULL);
+ if (name && (!strcmp(name, "GAISLER_I2CMST") ||
+ !strcmp(name, "01_028"))) {
+ dev_dbg(&pdev->dev, "GRLIB variant of i2c-ocores\n");
+ i2c->setreg = oc_setreg_grlib;
+ i2c->getreg = oc_getreg_grlib;
+ }
+
I'd think we should handle this via a seperate compatible-entry and
match->data?
Regards,
Wolfram
--
Pengutronix e.K. | Wolfram Sang |
Industrial Linux Solutions | http://www.pengutronix.de/ |