mirror of
https://github.com/dwhinham/mt32-pi.git
synced 2026-10-27 06:21:59 +00:00
Update to circle-stdlib v15.6/Circle Step 43.3
This commit is contained in:
1 parent
769a8f0318
commit
80eb86b01f
6 files changed
+5
-236
No files matched your search
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
### Changed
|
||||
|
||||
- Update to circle-stdlib v15.6/Circle Step 43.3.
|
||||
|
||||
## [0.8.5] - 2021-02-10
|
||||
|
||||
### Fixed
|
||||
|
||||
@@ -15,11 +15,6 @@ $(CIRCLE_STDLIB_CONFIG) $(CIRCLE_CONFIG)&:
|
||||
@echo "Configuring for Raspberry Pi $(RASPBERRYPI) ($(BITS) bit)"
|
||||
$(CIRCLESTDLIBHOME)/configure --raspberrypi=$(RASPBERRYPI) --prefix=$(PREFIX)
|
||||
|
||||
# Apply patches
|
||||
@patch -N -p1 --no-backup-if-mismatch -r - -d $(CIRCLEHOME) < patches/circle-43.2-i2s-slave.patch
|
||||
@patch -N -p1 --no-backup-if-mismatch -r - -d $(CIRCLEHOME) < patches/circle-43.2-sd-high-speed.patch
|
||||
@patch -N -p1 --no-backup-if-mismatch -r - -d $(CIRCLEHOME) < patches/circle-43.2-sd-sysconfig.patch
|
||||
|
||||
# Enable multi-core
|
||||
echo "DEFINE += -DARM_ALLOW_MULTI_CORE" >> $(CIRCLE_CONFIG)
|
||||
|
||||
@@ -113,9 +108,6 @@ clean:
|
||||
#
|
||||
veryclean: clean
|
||||
# Reverse patches
|
||||
@patch -R -N -p1 --no-backup-if-mismatch -r - -d $(CIRCLEHOME) < patches/circle-43.2-sd-sysconfig.patch
|
||||
@patch -R -N -p1 --no-backup-if-mismatch -r - -d $(CIRCLEHOME) < patches/circle-43.2-sd-high-speed.patch
|
||||
@patch -R -N -p1 --no-backup-if-mismatch -r - -d $(CIRCLEHOME) < patches/circle-43.2-i2s-slave.patch
|
||||
@patch -R -N -p1 --no-backup-if-mismatch -r - -d $(FLUIDSYNTHHOME) < patches/fluidsynth-2.1.7-circle.patch
|
||||
@patch -R -N -p1 --no-backup-if-mismatch -r - -d $(FLUIDSYNTHHOME) < patches/fluidsynth-2.1.7-pan-fix-2.patch
|
||||
@patch -R -N -p1 --no-backup-if-mismatch -r - -d $(FLUIDSYNTHHOME) < patches/fluidsynth-2.1.7-pan-fix-1.patch
|
||||
|
||||
Vendored
+1
-1
Submodule external/circle-stdlib updated: fdb3c4a948...44ae08ea8a.
@@ -1,87 +0,0 @@
|
||||
From bfbd0e1444c1cf7d3056a1a44fe0cf47bc9c9e3d Mon Sep 17 00:00:00 2001
|
||||
From: Dale Whinham <daleyo@gmail.com>
|
||||
Date: Wed, 25 Nov 2020 20:07:55 +0000
|
||||
Subject: [PATCH] Add option to allow I2S DAC to be master clock
|
||||
|
||||
---
|
||||
include/circle/i2ssoundbasedevice.h | 5 ++++-
|
||||
lib/i2ssoundbasedevice.cpp | 23 ++++++++++++++++++-----
|
||||
2 files changed, 22 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/include/circle/i2ssoundbasedevice.h b/include/circle/i2ssoundbasedevice.h
|
||||
index 12366f26..242798ad 100644
|
||||
--- a/include/circle/i2ssoundbasedevice.h
|
||||
+++ b/include/circle/i2ssoundbasedevice.h
|
||||
@@ -45,9 +45,11 @@ class CI2SSoundBaseDevice : public CSoundBaseDevice /// Low level access to the
|
||||
/// \param nSampleRate sample rate in Hz
|
||||
/// \param nChunkSize twice the number of samples (words) to be handled\n
|
||||
/// with one call to GetChunk() (one word per stereo channel)
|
||||
+ /// \param bSlave enable slave mode (PCM clock and FS clock are inputs)
|
||||
CI2SSoundBaseDevice (CInterruptSystem *pInterrupt,
|
||||
unsigned nSampleRate = 192000,
|
||||
- unsigned nChunkSize = 8192);
|
||||
+ unsigned nChunkSize = 8192,
|
||||
+ bool bSlave = FALSE);
|
||||
|
||||
virtual ~CI2SSoundBaseDevice (void);
|
||||
|
||||
@@ -90,6 +92,7 @@ class CI2SSoundBaseDevice : public CSoundBaseDevice /// Low level access to the
|
||||
private:
|
||||
CInterruptSystem *m_pInterruptSystem;
|
||||
unsigned m_nChunkSize;
|
||||
+ bool m_bSlave;
|
||||
|
||||
CGPIOPin m_PCMCLKPin;
|
||||
CGPIOPin m_PCMFSPin;
|
||||
diff --git a/lib/i2ssoundbasedevice.cpp b/lib/i2ssoundbasedevice.cpp
|
||||
index 334e0150..3627b708 100644
|
||||
--- a/lib/i2ssoundbasedevice.cpp
|
||||
+++ b/lib/i2ssoundbasedevice.cpp
|
||||
@@ -59,7 +59,9 @@
|
||||
#define CS_A_EN (1 << 0)
|
||||
|
||||
#define MODE_A_CLKI (1 << 22)
|
||||
+#define MODE_A_CLKM (1 << 23)
|
||||
#define MODE_A_FSI (1 << 20)
|
||||
+#define MODE_A_FSM (1 << 21)
|
||||
#define MODE_A_FLEN__SHIFT 10
|
||||
#define MODE_A_FSLEN__SHIFT 0
|
||||
|
||||
@@ -123,10 +125,12 @@
|
||||
|
||||
CI2SSoundBaseDevice::CI2SSoundBaseDevice (CInterruptSystem *pInterrupt,
|
||||
unsigned nSampleRate,
|
||||
- unsigned nChunkSize)
|
||||
+ unsigned nChunkSize,
|
||||
+ bool bSlave)
|
||||
: CSoundBaseDevice (SoundFormatSigned24, 0, nSampleRate),
|
||||
m_pInterruptSystem (pInterrupt),
|
||||
m_nChunkSize (nChunkSize),
|
||||
+ m_bSlave (bSlave),
|
||||
m_PCMCLKPin (18, GPIOModeAlternateFunction0),
|
||||
m_PCMFSPin (19, GPIOModeAlternateFunction0),
|
||||
m_PCMDOUTPin (21, GPIOModeAlternateFunction0),
|
||||
@@ -387,10 +391,19 @@ void CI2SSoundBaseDevice::RunI2S (void)
|
||||
| TXC_A_CH2EN
|
||||
| ((CHANLEN+1) << TXC_A_CH2POS__SHIFT)
|
||||
| (0 << TXC_A_CH2WID__SHIFT));
|
||||
- write32 (ARM_PCM_MODE_A, MODE_A_CLKI
|
||||
- | MODE_A_FSI
|
||||
- | ((CHANS*CHANLEN-1) << MODE_A_FLEN__SHIFT)
|
||||
- | (CHANLEN << MODE_A_FSLEN__SHIFT));
|
||||
+
|
||||
+ u32 nModeA = MODE_A_CLKI
|
||||
+ | MODE_A_FSI
|
||||
+ | ((CHANS*CHANLEN-1) << MODE_A_FLEN__SHIFT)
|
||||
+ | (CHANLEN << MODE_A_FSLEN__SHIFT);
|
||||
+
|
||||
+ // set PCM clock and frame sync as inputs if in slave mode
|
||||
+ if (m_bSlave)
|
||||
+ {
|
||||
+ nModeA |= MODE_A_CLKM | MODE_A_FSM;
|
||||
+ }
|
||||
+
|
||||
+ write32 (ARM_PCM_MODE_A, nModeA);
|
||||
|
||||
// disable standby
|
||||
write32 (ARM_PCM_CS_A, read32 (ARM_PCM_CS_A) | CS_A_STBY);
|
||||
@@ -1,111 +0,0 @@
|
||||
From ec7a0d0c66caa81e15719a035ddb8e3e931819dd Mon Sep 17 00:00:00 2001
|
||||
From: Dale Whinham <daleyo@gmail.com>
|
||||
Date: Sun, 27 Dec 2020 17:31:58 +0000
|
||||
Subject: [PATCH] addon/SDCard: Enable optional High Speed/SDR25 mode
|
||||
|
||||
---
|
||||
addon/SDCard/emmc.cpp | 57 ++++++++++++++++++++++++++++++++++++++++++-
|
||||
addon/SDCard/emmc.h | 1 +
|
||||
2 files changed, 57 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/addon/SDCard/emmc.cpp b/addon/SDCard/emmc.cpp
|
||||
index 7f0d9d1d..298e058f 100644
|
||||
--- a/addon/SDCard/emmc.cpp
|
||||
+++ b/addon/SDCard/emmc.cpp
|
||||
@@ -68,6 +68,9 @@
|
||||
// Enable 1.8V support
|
||||
//#define SD_1_8V_SUPPORT
|
||||
|
||||
+// Enable High Speed/SDR25 mode
|
||||
+//#define SD_HIGH_SPEED
|
||||
+
|
||||
// Enable 4-bit support
|
||||
#define SD_4BIT_DATA
|
||||
|
||||
@@ -277,7 +280,7 @@ const u32 CEMMCDevice::sd_commands[] =
|
||||
SD_CMD_INDEX(3) | SD_RESP_R6,
|
||||
SD_CMD_INDEX(4),
|
||||
SD_CMD_INDEX(5) | SD_RESP_R4,
|
||||
- SD_CMD_INDEX(6) | SD_RESP_R1,
|
||||
+ SD_CMD_INDEX(6) | SD_RESP_R1 | SD_DATA_READ,
|
||||
SD_CMD_INDEX(7) | SD_RESP_R1b,
|
||||
SD_CMD_INDEX(8) | SD_RESP_R7,
|
||||
SD_CMD_INDEX(9) | SD_RESP_R2,
|
||||
@@ -1511,6 +1514,7 @@ int CEMMCDevice::CardReset (void)
|
||||
m_device_id[3] = 0;
|
||||
|
||||
m_card_supports_sdhc = 0;
|
||||
+ m_card_supports_hs = 0;
|
||||
m_card_supports_18v = 0;
|
||||
m_card_ocr = 0;
|
||||
m_card_rca = 0;
|
||||
@@ -1957,6 +1961,57 @@ int CEMMCDevice::CardReset (void)
|
||||
LogWrite (LogDebug, "SCR: version %s, bus_widths %01x", sd_versions[m_pSCR->sd_version], m_pSCR->sd_bus_widths);
|
||||
#endif
|
||||
|
||||
+#ifdef SD_HIGH_SPEED
|
||||
+ // If card supports CMD6, read switch information from card
|
||||
+ if (m_pSCR->sd_version >= SD_VER_1_1)
|
||||
+ {
|
||||
+ // 512 bit response
|
||||
+ u8 cmd6_resp[64];
|
||||
+ m_buf = &cmd6_resp[0];
|
||||
+ m_block_size = 64;
|
||||
+
|
||||
+ // CMD6 Mode 0: Check Function (Group 1, Access Mode)
|
||||
+ if (!IssueCommand (SWITCH_FUNC, 0x00fffff0, 100000))
|
||||
+ {
|
||||
+ LogWrite (LogError, "Error sending SWITCH_FUNC (Mode 0)");
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ // Check Group 1, Function 1 (High Speed/SDR25)
|
||||
+ m_card_supports_hs = (cmd6_resp[13] >> 1) & 0x1;
|
||||
+
|
||||
+ // Attempt switch if supported
|
||||
+ if (m_card_supports_hs)
|
||||
+ {
|
||||
+#ifdef EMMC_DEBUG2
|
||||
+ LogWrite (LogDebug, "Switching to %s mode", m_card_supports_18v ? "SDR25" : "High Speed");
|
||||
+#endif
|
||||
+
|
||||
+ // CMD6 Mode 1: Set Function (Group 1, Access Mode = High Speed/SDR25)
|
||||
+ if (!IssueCommand (SWITCH_FUNC, 0x80fffff1, 100000))
|
||||
+ {
|
||||
+ LogWrite (LogError, "Switch to %s mode failed", m_card_supports_18v ? "SDR25" : "High Speed");
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ // Success; switch clock to 50MHz
|
||||
+#ifndef USE_SDHOST
|
||||
+ SwitchClockRate (base_clock, SD_CLOCK_HIGH);
|
||||
+#else
|
||||
+ m_Host.SetClock (SD_CLOCK_HIGH);
|
||||
+#endif
|
||||
+#ifdef EMMC_DEBUG2
|
||||
+ LogWrite (LogDebug, "Switch to 50MHz clock complete");
|
||||
+#endif
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ // Restore block size
|
||||
+ m_block_size = SD_BLOCK_SIZE;
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
if (m_pSCR->sd_bus_widths & 4)
|
||||
{
|
||||
// Set 4-bit transfer mode (ACMD6)
|
||||
diff --git a/addon/SDCard/emmc.h b/addon/SDCard/emmc.h
|
||||
index 0ced0045..6411aa59 100644
|
||||
--- a/addon/SDCard/emmc.h
|
||||
+++ b/addon/SDCard/emmc.h
|
||||
@@ -128,6 +128,7 @@ class CEMMCDevice : public CDevice
|
||||
u32 m_device_id[4];
|
||||
|
||||
u32 m_card_supports_sdhc;
|
||||
+ u32 m_card_supports_hs;
|
||||
u32 m_card_supports_18v;
|
||||
u32 m_card_ocr;
|
||||
u32 m_card_rca;
|
||||
@@ -1,29 +0,0 @@
|
||||
From 7878a53b26a7df22b321a687a14f1adbcf75dcb1 Mon Sep 17 00:00:00 2001
|
||||
From: Rene Stange <rsta2@o2online.de>
|
||||
Date: Mon, 28 Dec 2020 20:55:58 +0100
|
||||
Subject: [PATCH] sysconfig: Add SD_HIGH_SPEED
|
||||
|
||||
---
|
||||
include/circle/sysconfig.h | 9 +++++++++
|
||||
1 file changed, 9 insertions(+)
|
||||
|
||||
diff --git a/include/circle/sysconfig.h b/include/circle/sysconfig.h
|
||||
index 0a410cd1..fbe92b4a 100644
|
||||
--- a/include/circle/sysconfig.h
|
||||
+++ b/include/circle/sysconfig.h
|
||||
@@ -299,6 +299,15 @@
|
||||
|
||||
#endif
|
||||
|
||||
+// SD_HIGH_SPEED enables the high-speed extensions of the SD card
|
||||
+// driver, which should result in a better performance with modern SD
|
||||
+// cards. This is not tested that widely like the standard driver, why
|
||||
+// it is presented as an option here, but is enabled by default.
|
||||
+
|
||||
+#ifndef NO_SD_HIGH_SPEED
|
||||
+#define SD_HIGH_SPEED
|
||||
+#endif
|
||||
+
|
||||
// SAVE_VFP_REGS_ON_IRQ enables saving the floating point registers
|
||||
// on entry when an IRQ occurs and will restore these registers on exit
|
||||
// from the IRQ handler. This has to be defined, if an IRQ handler
|
||||
Reference in new issue
Block a user