From 556d071e7fa4ac62082aeecfe039f5875dec464c Mon Sep 17 00:00:00 2001
From: Keith Burzinski <kbx81x@gmail.com>
Date: Tue, 30 Nov 2021 00:30:45 -0600
Subject: [PATCH] Fix 8266 SPI Clock Polarity Setting (#2836)

---
 esphome/components/spi/spi.h | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/esphome/components/spi/spi.h b/esphome/components/spi/spi.h
index 601a5c5a7e..6c3fd17e56 100644
--- a/esphome/components/spi/spi.h
+++ b/esphome/components/spi/spi.h
@@ -195,7 +195,14 @@ class SPIComponent : public Component {
   void enable(GPIOPin *cs) {
 #ifdef USE_SPI_ARDUINO_BACKEND
     if (this->hw_spi_ != nullptr) {
-      uint8_t data_mode = (uint8_t(CLOCK_POLARITY) << 1) | uint8_t(CLOCK_PHASE);
+      uint8_t data_mode = SPI_MODE0;
+      if (!CLOCK_POLARITY && CLOCK_PHASE) {
+        data_mode = SPI_MODE1;
+      } else if (CLOCK_POLARITY && !CLOCK_PHASE) {
+        data_mode = SPI_MODE2;
+      } else if (CLOCK_POLARITY && CLOCK_PHASE) {
+        data_mode = SPI_MODE3;
+      }
       SPISettings settings(DATA_RATE, BIT_ORDER, data_mode);
       this->hw_spi_->beginTransaction(settings);
     } else {