From fd8bc177ad2762ef00a9cbce72dbe8e794f362ea Mon Sep 17 00:00:00 2001 From: jLynx Date: Tue, 5 Apr 2022 14:41:12 +1200 Subject: [PATCH] Added support for H2+ --- firmware/application/portapack.cpp | 12 +++++++++--- firmware/common/ak4951.cpp | 4 ++++ firmware/common/ak4951.hpp | 2 ++ 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/firmware/application/portapack.cpp b/firmware/application/portapack.cpp index 0f9c8b480..b4c6ec2df 100644 --- a/firmware/application/portapack.cpp +++ b/firmware/application/portapack.cpp @@ -179,18 +179,24 @@ static PortaPackModel portapack_model() { static Optional model; if( !model.is_valid() ) { - if( audio_codec_wm8731.detected() ) { - model = PortaPackModel::R1_20150901; + if( audio_codec_wm8731.detected() && audio_codec_ak4951.detected()) { + model = PortaPackModel::R2_20170522; // H2+ + } else if( audio_codec_wm8731.detected() ) { + model = PortaPackModel::R1_20150901; // H1R1 } else { - model = PortaPackModel::R2_20170522; + model = PortaPackModel::R2_20170522; // H1R2 } } return model.value(); } +//audio_codec_wm8731 = H1R1 & H2 +//audio_codec_ak4951 = H1R2 (China/mine) + static audio::Codec* portapack_audio_codec() { /* I2C ready OK, Automatic recognition of audio chip */ + // return static_cast(&audio_codec_wm8731); return (audio_codec_wm8731.detected()) ? static_cast(&audio_codec_wm8731) : static_cast(&audio_codec_ak4951) diff --git a/firmware/common/ak4951.cpp b/firmware/common/ak4951.cpp index d94bbb0bb..1f88a3d6e 100644 --- a/firmware/common/ak4951.cpp +++ b/firmware/common/ak4951.cpp @@ -115,6 +115,10 @@ void AK4951::init() { // update(Register::DigitalFilterMode); } +bool AK4951::detected() { + return reset(); +} + bool AK4951::reset() { io.audio_reset_state(true); diff --git a/firmware/common/ak4951.hpp b/firmware/common/ak4951.hpp index ea394966a..3b1f9e1aa 100644 --- a/firmware/common/ak4951.hpp +++ b/firmware/common/ak4951.hpp @@ -823,6 +823,8 @@ public: std::string name() const override { return "AK4951"; } + + bool detected(); void init() override; bool reset() override;