static int max98505_i2c_probe(struct i2c_client *i2c_l, const struct i2c_device_id *id) { struct max98505_priv *max98505; int ret; pr_info("%s: enter, device '%s'\n", __func__, id->name); #ifdef SUPPORT_DEVICE_TREE max98505_regulator_config(i2c_l, of_property_read_bool(i2c_l->dev.of_node, "max98505,i2c-pull-up"), 1); #endif max98505 = kzalloc(sizeof(struct max98505_priv), GFP_KERNEL); if (max98505 == NULL) return -ENOMEM; max98505->devtype = id->driver_data; i2c_set_clientdata(i2c_l, max98505); max98505->control_data = i2c_l; max98505->pdata = i2c_l->dev.platform_data; max98505->regmap = regmap_init_i2c(i2c_l, &max98505_regmap); if (IS_ERR(max98505->regmap)) { ret = PTR_ERR(max98505->regmap); dev_err(&i2c_l->dev, "Failed to allocate regmap: %d\n", ret); goto err_out; } ret = snd_soc_register_codec(&i2c_l->dev, &soc_codec_dev_max98505, max98505_dai, ARRAY_SIZE(max98505_dai)); err_out: if (ret < 0) { if (max98505->regmap) regmap_exit(max98505->regmap); kfree(max98505); } dsm_misc_device_init(); pr_info("%s: ret %d\n", __func__, ret); return ret; }
static int __init max98504_init(void) { int ret; msg_maxim("%s\n", __func__); ret = i2c_add_driver(&max98504_i2c_driver); if (ret) pr_err("Failed to register MAX98504 I2C driver: %d\n", ret); else pr_info("MAX98504 driver built on %s at %s\n", __DATE__, __TIME__); #ifdef USE_MISC_FOR_DEMO dsm_misc_device_init(); #endif return ret; }