From eebb68cd7f260d02a21e403b528547922203cbae Mon Sep 17 00:00:00 2001
From: Scott Lahteine <github@thinkyhead.com>
Date: Sun, 26 Apr 2020 03:09:15 -0500
Subject: [PATCH] SPI performance tweak

---
 Marlin/src/HAL/LPC1768/include/SPI.h | 2 +-
 Marlin/src/HAL/STM32F1/SPI.cpp       | 4 ++--
 Marlin/src/HAL/STM32F1/SPI.h         | 7 ++++---
 3 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/Marlin/src/HAL/LPC1768/include/SPI.h b/Marlin/src/HAL/LPC1768/include/SPI.h
index af085f29a9..3bc0299b14 100644
--- a/Marlin/src/HAL/LPC1768/include/SPI.h
+++ b/Marlin/src/HAL/LPC1768/include/SPI.h
@@ -39,7 +39,7 @@ class SPISettings {
 class SPIClass {
   public:
     void begin();
-    void beginTransaction(SPISettings);
+    void beginTransaction(const SPISettings&);
     void endTransaction() {};
     uint8_t transfer(uint8_t data);
     uint16_t transfer16(uint16_t data);
diff --git a/Marlin/src/HAL/STM32F1/SPI.cpp b/Marlin/src/HAL/STM32F1/SPI.cpp
index 5576cc7b56..991ceb3148 100644
--- a/Marlin/src/HAL/STM32F1/SPI.cpp
+++ b/Marlin/src/HAL/STM32F1/SPI.cpp
@@ -243,7 +243,7 @@ void SPIClass::setDataMode(uint8_t dataMode) {
   _currentSetting->spi_d->regs->CR1 = cr1 | (dataMode & (SPI_CR1_CPOL|SPI_CR1_CPHA));
 }
 
-void SPIClass::beginTransaction(uint8_t pin, SPISettings settings) {
+void SPIClass::beginTransaction(uint8_t pin, const SPISettings &settings) {
   setBitOrder(settings.bitOrder);
   setDataMode(settings.dataMode);
   setDataSize(settings.dataSize);
@@ -251,7 +251,7 @@ void SPIClass::beginTransaction(uint8_t pin, SPISettings settings) {
   begin();
 }
 
-void SPIClass::beginTransactionSlave(SPISettings settings) {
+void SPIClass::beginTransactionSlave(const SPISettings &settings) {
   setBitOrder(settings.bitOrder);
   setDataMode(settings.dataMode);
   setDataSize(settings.dataSize);
diff --git a/Marlin/src/HAL/STM32F1/SPI.h b/Marlin/src/HAL/STM32F1/SPI.h
index 0162ac13bb..dc2a215865 100644
--- a/Marlin/src/HAL/STM32F1/SPI.h
+++ b/Marlin/src/HAL/STM32F1/SPI.h
@@ -126,6 +126,7 @@ private:
     bitOrder = inBitOrder;
     dataMode = inDataMode;
     dataSize = inDataSize;
+    //state    = SPI_STATE_IDLE;
   }
   uint32_t clock;
   uint32_t dataSize;
@@ -187,11 +188,11 @@ public:
    */
   void end();
 
-  void beginTransaction(SPISettings settings) { beginTransaction(BOARD_SPI_DEFAULT_SS, settings); }
-  void beginTransaction(uint8_t pin, SPISettings settings);
+  void beginTransaction(const SPISettings &settings) { beginTransaction(BOARD_SPI_DEFAULT_SS, settings); }
+  void beginTransaction(uint8_t pin, const SPISettings &settings);
   void endTransaction();
 
-  void beginTransactionSlave(SPISettings settings);
+  void beginTransactionSlave(const SPISettings &settings);
 
   void setClockDivider(uint32_t clockDivider);
   void setBitOrder(BitOrder bitOrder);