max98390.c (cdd38c5f1ce4398ec58fec95904b75824daab7b5) | max98390.c (e5870bd0e40c749fd96a4e565497c789bee456bf) |
---|---|
1// SPDX-License-Identifier: GPL-2.0-or-later 2/* 3 * max98390.c -- MAX98390 ALSA Soc Audio driver 4 * 5 * Copyright (C) 2020 Maxim Integrated Products 6 * 7 */ 8 --- 842 unchanged lines hidden (view full) --- 851 852 regmap_write(max98390->regmap, MAX98390_CLK_MON, 0x6f); 853 regmap_write(max98390->regmap, MAX98390_DAT_MON, 0x00); 854 regmap_write(max98390->regmap, MAX98390_PWR_GATE_CTL, 0x00); 855 regmap_write(max98390->regmap, MAX98390_PCM_RX_EN_A, 0x03); 856 regmap_write(max98390->regmap, MAX98390_ENV_TRACK_VOUT_HEADROOM, 0x0e); 857 regmap_write(max98390->regmap, MAX98390_BOOST_BYPASS1, 0x46); 858 regmap_write(max98390->regmap, MAX98390_FET_SCALING3, 0x03); | 1// SPDX-License-Identifier: GPL-2.0-or-later 2/* 3 * max98390.c -- MAX98390 ALSA Soc Audio driver 4 * 5 * Copyright (C) 2020 Maxim Integrated Products 6 * 7 */ 8 --- 842 unchanged lines hidden (view full) --- 851 852 regmap_write(max98390->regmap, MAX98390_CLK_MON, 0x6f); 853 regmap_write(max98390->regmap, MAX98390_DAT_MON, 0x00); 854 regmap_write(max98390->regmap, MAX98390_PWR_GATE_CTL, 0x00); 855 regmap_write(max98390->regmap, MAX98390_PCM_RX_EN_A, 0x03); 856 regmap_write(max98390->regmap, MAX98390_ENV_TRACK_VOUT_HEADROOM, 0x0e); 857 regmap_write(max98390->regmap, MAX98390_BOOST_BYPASS1, 0x46); 858 regmap_write(max98390->regmap, MAX98390_FET_SCALING3, 0x03); |
859 860 /* voltage, current slot configuration */ 861 regmap_write(max98390->regmap, 862 MAX98390_PCM_CH_SRC_2, 863 (max98390->i_l_slot << 4 | 864 max98390->v_l_slot)&0xFF); 865 866 if (max98390->v_l_slot < 8) { 867 regmap_update_bits(max98390->regmap, 868 MAX98390_PCM_TX_HIZ_CTRL_A, 869 1 << max98390->v_l_slot, 0); 870 regmap_update_bits(max98390->regmap, 871 MAX98390_PCM_TX_EN_A, 872 1 << max98390->v_l_slot, 873 1 << max98390->v_l_slot); 874 } else { 875 regmap_update_bits(max98390->regmap, 876 MAX98390_PCM_TX_HIZ_CTRL_B, 877 1 << (max98390->v_l_slot - 8), 0); 878 regmap_update_bits(max98390->regmap, 879 MAX98390_PCM_TX_EN_B, 880 1 << (max98390->v_l_slot - 8), 881 1 << (max98390->v_l_slot - 8)); 882 } 883 884 if (max98390->i_l_slot < 8) { 885 regmap_update_bits(max98390->regmap, 886 MAX98390_PCM_TX_HIZ_CTRL_A, 887 1 << max98390->i_l_slot, 0); 888 regmap_update_bits(max98390->regmap, 889 MAX98390_PCM_TX_EN_A, 890 1 << max98390->i_l_slot, 891 1 << max98390->i_l_slot); 892 } else { 893 regmap_update_bits(max98390->regmap, 894 MAX98390_PCM_TX_HIZ_CTRL_B, 895 1 << (max98390->i_l_slot - 8), 0); 896 regmap_update_bits(max98390->regmap, 897 MAX98390_PCM_TX_EN_B, 898 1 << (max98390->i_l_slot - 8), 899 1 << (max98390->i_l_slot - 8)); 900 } |
|
859} 860 861static int max98390_probe(struct snd_soc_component *component) 862{ 863 struct max98390_priv *max98390 = 864 snd_soc_component_get_drvdata(component); 865 866 regmap_write(max98390->regmap, MAX98390_SOFTWARE_RESET, 0x01); --- 74 unchanged lines hidden (view full) --- 941 .max_register = MAX98390_R24FF_REV_ID, 942 .reg_defaults = max98390_reg_defaults, 943 .num_reg_defaults = ARRAY_SIZE(max98390_reg_defaults), 944 .readable_reg = max98390_readable_register, 945 .volatile_reg = max98390_volatile_reg, 946 .cache_type = REGCACHE_RBTREE, 947}; 948 | 901} 902 903static int max98390_probe(struct snd_soc_component *component) 904{ 905 struct max98390_priv *max98390 = 906 snd_soc_component_get_drvdata(component); 907 908 regmap_write(max98390->regmap, MAX98390_SOFTWARE_RESET, 0x01); --- 74 unchanged lines hidden (view full) --- 983 .max_register = MAX98390_R24FF_REV_ID, 984 .reg_defaults = max98390_reg_defaults, 985 .num_reg_defaults = ARRAY_SIZE(max98390_reg_defaults), 986 .readable_reg = max98390_readable_register, 987 .volatile_reg = max98390_volatile_reg, 988 .cache_type = REGCACHE_RBTREE, 989}; 990 |
991static void max98390_slot_config(struct i2c_client *i2c, 992 struct max98390_priv *max98390) 993{ 994 int value; 995 struct device *dev = &i2c->dev; 996 997 if (!device_property_read_u32(dev, "maxim,vmon-slot-no", &value)) 998 max98390->v_l_slot = value & 0xF; 999 else 1000 max98390->v_l_slot = 0; 1001 1002 if (!device_property_read_u32(dev, "maxim,imon-slot-no", &value)) 1003 max98390->i_l_slot = value & 0xF; 1004 else 1005 max98390->i_l_slot = 1; 1006} 1007 |
|
949static int max98390_i2c_probe(struct i2c_client *i2c, 950 const struct i2c_device_id *id) 951{ 952 int ret = 0; 953 int reg = 0; 954 955 struct max98390_priv *max98390 = NULL; 956 struct i2c_adapter *adapter = to_i2c_adapter(i2c->dev.parent); --- 26 unchanged lines hidden (view full) --- 983 "no optional property 'r0_calib' found, default:\n"); 984 } 985 986 dev_info(&i2c->dev, 987 "%s: r0_calib: 0x%x,temperature_calib: 0x%x", 988 __func__, max98390->ref_rdc_value, 989 max98390->ambient_temp_value); 990 | 1008static int max98390_i2c_probe(struct i2c_client *i2c, 1009 const struct i2c_device_id *id) 1010{ 1011 int ret = 0; 1012 int reg = 0; 1013 1014 struct max98390_priv *max98390 = NULL; 1015 struct i2c_adapter *adapter = to_i2c_adapter(i2c->dev.parent); --- 26 unchanged lines hidden (view full) --- 1042 "no optional property 'r0_calib' found, default:\n"); 1043 } 1044 1045 dev_info(&i2c->dev, 1046 "%s: r0_calib: 0x%x,temperature_calib: 0x%x", 1047 __func__, max98390->ref_rdc_value, 1048 max98390->ambient_temp_value); 1049 |
1050 /* voltage/current slot configuration */ 1051 max98390_slot_config(i2c, max98390); 1052 |
|
991 /* regmap initialization */ 992 max98390->regmap = devm_regmap_init_i2c(i2c, &max98390_regmap); 993 if (IS_ERR(max98390->regmap)) { 994 ret = PTR_ERR(max98390->regmap); 995 dev_err(&i2c->dev, 996 "Failed to allocate regmap: %d\n", ret); 997 return ret; 998 } --- 58 unchanged lines hidden --- | 1053 /* regmap initialization */ 1054 max98390->regmap = devm_regmap_init_i2c(i2c, &max98390_regmap); 1055 if (IS_ERR(max98390->regmap)) { 1056 ret = PTR_ERR(max98390->regmap); 1057 dev_err(&i2c->dev, 1058 "Failed to allocate regmap: %d\n", ret); 1059 return ret; 1060 } --- 58 unchanged lines hidden --- |