};
fragment@1 {
- target = <&soc>;
- __overlay__ {
- reg_digital: reg_digital@0 {
- compatible = "regulator-fixed";
- regulator-name = "cs42448_dig_supply";
- regulator-min-microvolt = <3300000>;
- regulator-max-microvolt = <3300000>;
- regulator-always-on;
- };
- reg_analogue: reg_analogue@0 {
- compatible = "regulator-fixed";
- regulator-name = "cs42448_ana_supply";
- regulator-min-microvolt = <5000000>;
- regulator-max-microvolt = <5000000>;
- regulator-always-on;
- };
- };
- };
-
- fragment@2 {
target = <&i2c1>;
__overlay__ {
#address-cells = <1>;
reg = <0x48>;
clocks = <&cs42448_mclk>;
clock-names = "mclk";
- VA-supply = <®_analogue>;
- VD-supply = <®_digital>;
- VLS-supply = <®_digital>;
- VLC-supply = <®_digital>;
+ VA-supply = <&vdd_5v0_reg>;
+ VD-supply = <&vdd_3v3_reg>;
+ VLS-supply = <&vdd_3v3_reg>;
+ VLC-supply = <&vdd_3v3_reg>;
status = "okay";
};
};
};
- fragment@3 {
+ fragment@2 {
target = <&sound>;
__overlay__ {
compatible = "ai,audioinjector-octo-soundcard";
static unsigned int audioinjector_octo_rate;
static const unsigned int audioinjector_octo_rates[] = {
- 96000, 48000, 88200, 44100,
+ 96000, 48000, 32000, 24000, 16000, 8000, 88200, 44100, 29400, 22050, 14700,
};
static struct snd_pcm_hw_constraint_list audioinjector_octo_constraints = {
return snd_soc_dai_set_sysclk(rtd->codec_dai, 0, 49152000,
0);
break;
+ case 24000:
+ return snd_soc_dai_set_sysclk(rtd->codec_dai, 0, 49152000/2,
+ 0);
+ break;
+ case 32000:
+ case 16000:
+ return snd_soc_dai_set_sysclk(rtd->codec_dai, 0, 49152000/3,
+ 0);
+ break;
+ case 8000:
+ return snd_soc_dai_set_sysclk(rtd->codec_dai, 0, 49152000/6,
+ 0);
+ break;
case 88200:
case 44100:
return snd_soc_dai_set_sysclk(rtd->codec_dai, 0, 45185400,
0);
break;
+ case 22050:
+ return snd_soc_dai_set_sysclk(rtd->codec_dai, 0, 45185400/2,
+ 0);
+ break;
+ case 29400:
+ case 14700:
+ return snd_soc_dai_set_sysclk(rtd->codec_dai, 0, 45185400/3,
+ 0);
+ break;
default:
return -EINVAL;
}
case 44100:
mult[2] = 1;
break;
+ case 32000:
+ mult[3] = 1;
+ case 29400:
+ mult[0] = 1;
+ mult[1] = 1;
+ break;
+ case 24000:
+ mult[3] = 1;
+ case 22050:
+ mult[1] = 1;
+ break;
+ case 16000:
+ mult[3] = 1;
+ case 14700:
+ mult[0] = 1;
+ break;
+ case 8000:
+ mult[3] = 1;
+ break;
default:
return -EINVAL;
}
if (IS_ERR(codec_rst_gpio))
return PTR_ERR(codec_rst_gpio);
+ if (codec_rst_gpio)
+ gpiod_set_value(codec_rst_gpio, 1);
+ msleep(500);
if (codec_rst_gpio)
gpiod_set_value(codec_rst_gpio, 0);
- msleep(5);
+ msleep(500);
if (codec_rst_gpio)
gpiod_set_value(codec_rst_gpio, 1);
- msleep(50);
+ msleep(500);
if (i2s_node && codec_node) {
dai->cpu_dai_name = NULL;