> +#define IDM_CTRL_DIRECT_OFFSET 0x00 And this IDM thing is also never used outside of the I2C context? In other words, it also doesn't need a seperate DT node? > + /* indicates no slave mode support */ > + bool no_slave; I would suggest to not use a flag, but to nullify the {un}reg_slave callbacks in probe depending on the type. That will also tell the i2c-core that slave functionality is not supported. And you can use if (!algo->reg_slave) as a flag, too. > + iproc_i2c->type = > + (enum bcm_iproc_i2c_type) of_device_get_match_data(&pdev->dev); No need to cast a void*.