- /* Save pin IO configuration */
- m_dir = m_out = m_ren = 0;
- if (is4pin())
- saveBits(STE, 0, m_dir, m_out, m_ren);
- saveBits(SIMO, 1, m_dir, m_out, m_ren);
- saveBits(SOMI, 2, m_dir, m_out, m_ren);
- saveBits(CLK, 3, m_dir, m_out, m_ren);
-
- /* Configure pins for SPI use */
- if (is4pin()) {
-#if 0 /* Unsure if REN on STE is a valid configuration */
- /* Configure STE pin for SPI use */
- if (config->ren & USCI_REN_STE) {
- if (config->ren & USCI_REN_STE_PULLUP)
- call STE.set();
- else
- call STE.clr();
- call STE.enableRen();
- }
+ /* Configure pins for SPI, saving prior pin states */
+ m_pins = 0;
+#ifdef NO_REN_ON_SPI
+ /* - First save off and disable PxREN bits */
+ if (is4pin() && call STE.isRen()) {
+ m_pins |= (1 << (PINS_STE + PINS_RENADDR));
+ call STE.disableRen();
+ }
+ if (call SOMI.isRen()) {
+ m_pins |= (1 << (PINS_SOMI + PINS_RENADDR));
+ call SOMI.disableRen();
+ }
+ if (call SIMO.isRen()) {
+ m_pins |= (1 << (PINS_SIMO + PINS_RENADDR));
+ call SIMO.disableRen();
+ }
+ if (call CLK.isRen()) {
+ m_pins |= (1 << (PINS_CLK + PINS_RENADDR));
+ call CLK.disableRen();
+ }