mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2025-12-27 18:25:05 +00:00
glados_pd: oak_pd: fix PD tx_disable timing
Disabling CC TX_DATA needs to be very fast to avoid clocking out an extra garbage bit at the end of transmit. This change fixes pd_tx_disable() to disable the TX_DATA line as fast as possible. BUG=chrome-os-partner:40920 BRANCH=none TEST=test on glados with scope attached to CC. note before this change we occasionally get a garbage bit at the end of CC transmit. With this change, it looks clean. Change-Id: I86b47881e3846b2e3dd4fc2afcf2d28386a068a6 Signed-off-by: Alec Berg <alecaberg@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/277295 Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
This commit is contained in:
committed by
ChromeOS Commit Bot
parent
181913141d
commit
1599e7a6f1
@@ -170,32 +170,34 @@ static inline void pd_tx_enable(int port, int polarity)
|
||||
static inline void pd_tx_disable(int port, int polarity)
|
||||
{
|
||||
if (port == 0) {
|
||||
if (polarity) {/* PA6 is SPI1 MISO */
|
||||
if (polarity) {
|
||||
/* Set TX_DATA to Hi-Z, PA6 is SPI1 MISO */
|
||||
STM32_GPIO_MODER(GPIO_A) = (STM32_GPIO_MODER(GPIO_A)
|
||||
& ~(3 << (2*6)));
|
||||
/* set ADC PA4 pin to ADC function (Hi-Z) */
|
||||
STM32_GPIO_MODER(GPIO_A) = (STM32_GPIO_MODER(GPIO_A)
|
||||
| (3 << (2*4))) /* PA4 as ADC */
|
||||
& ~(1 << (2*4)); /* disable GPO */
|
||||
gpio_set_alternate_function(GPIO_A, 0x0040, -1);
|
||||
} else {/* PB4 is SPI1 MISO */
|
||||
/* set ADC PA4 pin to ADC function (Hi-Z) */
|
||||
| (3 << (2*4))); /* PA4 as ADC */
|
||||
} else {
|
||||
/* Set TX_DATA to Hi-Z, PB4 is SPI1 MISO */
|
||||
STM32_GPIO_MODER(GPIO_B) = (STM32_GPIO_MODER(GPIO_B)
|
||||
& ~(3 << (2*4)));
|
||||
/* set ADC PA2 pin to ADC function (Hi-Z) */
|
||||
STM32_GPIO_MODER(GPIO_A) = (STM32_GPIO_MODER(GPIO_A)
|
||||
| (3 << (2*2))) /* PA2 as ADC */
|
||||
& ~(1 << (2*2)); /* disable GPO */
|
||||
gpio_set_alternate_function(GPIO_B, 0x0010, -1);
|
||||
| (3 << (2*2))); /* PA2 as ADC */
|
||||
}
|
||||
} else {
|
||||
/* Set TX_DATA (PB14) Hi-Z */
|
||||
STM32_GPIO_MODER(GPIO_B) = (STM32_GPIO_MODER(GPIO_B)
|
||||
& ~(3 << (2*14)));
|
||||
if (polarity) {
|
||||
/* set ADC PA4 pin to ADC function (Hi-Z) */
|
||||
/* set ADC PA5 pin to ADC function (Hi-Z) */
|
||||
STM32_GPIO_MODER(GPIO_A) = (STM32_GPIO_MODER(GPIO_A)
|
||||
| (3 << (2*5))) /* PA5 as ADC */
|
||||
& ~(1 << (2*5)); /* disable GPO */
|
||||
| (3 << (2*5))); /* PA5 as ADC */
|
||||
} else {
|
||||
/* set ADC PA4 pin to ADC function (Hi-Z) */
|
||||
/* set ADC PA0 pin to ADC function (Hi-Z) */
|
||||
STM32_GPIO_MODER(GPIO_A) = (STM32_GPIO_MODER(GPIO_A)
|
||||
| (3 << (2*0))) /* PA0 as ADC */
|
||||
& ~(1 << (2*0)); /* disable GPO */
|
||||
| (3 << (2*0))); /* PA0 as ADC */
|
||||
}
|
||||
gpio_set_alternate_function(GPIO_B, 0x4000, -1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -170,32 +170,34 @@ static inline void pd_tx_enable(int port, int polarity)
|
||||
static inline void pd_tx_disable(int port, int polarity)
|
||||
{
|
||||
if (port == 0) {
|
||||
if (polarity) {/* PA6 is SPI1 MISO */
|
||||
if (polarity) {
|
||||
/* Set TX_DATA to Hi-Z, PA6 is SPI1 MISO */
|
||||
STM32_GPIO_MODER(GPIO_A) = (STM32_GPIO_MODER(GPIO_A)
|
||||
& ~(3 << (2*6)));
|
||||
/* set ADC PA4 pin to ADC function (Hi-Z) */
|
||||
STM32_GPIO_MODER(GPIO_A) = (STM32_GPIO_MODER(GPIO_A)
|
||||
| (3 << (2*4))) /* PA4 as ADC */
|
||||
& ~(1 << (2*4)); /* disable GPO */
|
||||
gpio_set_alternate_function(GPIO_A, 0x0040, -1);
|
||||
} else {/* PB4 is SPI1 MISO */
|
||||
/* set ADC PA4 pin to ADC function (Hi-Z) */
|
||||
| (3 << (2*4))); /* PA4 as ADC */
|
||||
} else {
|
||||
/* Set TX_DATA to Hi-Z, PB4 is SPI1 MISO */
|
||||
STM32_GPIO_MODER(GPIO_B) = (STM32_GPIO_MODER(GPIO_B)
|
||||
& ~(3 << (2*4)));
|
||||
/* set ADC PA2 pin to ADC function (Hi-Z) */
|
||||
STM32_GPIO_MODER(GPIO_A) = (STM32_GPIO_MODER(GPIO_A)
|
||||
| (3 << (2*2))) /* PA2 as ADC */
|
||||
& ~(1 << (2*2)); /* disable GPO */
|
||||
gpio_set_alternate_function(GPIO_B, 0x0010, -1);
|
||||
| (3 << (2*2))); /* PA2 as ADC */
|
||||
}
|
||||
} else {
|
||||
/* Set TX_DATA (PB14) Hi-Z */
|
||||
STM32_GPIO_MODER(GPIO_B) = (STM32_GPIO_MODER(GPIO_B)
|
||||
& ~(3 << (2*14)));
|
||||
if (polarity) {
|
||||
/* set ADC PA4 pin to ADC function (Hi-Z) */
|
||||
/* set ADC PA5 pin to ADC function (Hi-Z) */
|
||||
STM32_GPIO_MODER(GPIO_A) = (STM32_GPIO_MODER(GPIO_A)
|
||||
| (3 << (2*5))) /* PA5 as ADC */
|
||||
& ~(1 << (2*5)); /* disable GPO */
|
||||
| (3 << (2*5))); /* PA5 as ADC */
|
||||
} else {
|
||||
/* set ADC PA4 pin to ADC function (Hi-Z) */
|
||||
/* set ADC PA0 pin to ADC function (Hi-Z) */
|
||||
STM32_GPIO_MODER(GPIO_A) = (STM32_GPIO_MODER(GPIO_A)
|
||||
| (3 << (2*0))) /* PA0 as ADC */
|
||||
& ~(1 << (2*0)); /* disable GPO */
|
||||
| (3 << (2*0))); /* PA0 as ADC */
|
||||
}
|
||||
gpio_set_alternate_function(GPIO_B, 0x4000, -1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user