lpc176x: Add an enable_peripheral_clock() helper function
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
@@ -32,6 +32,20 @@ static LPC_GPIO_TypeDef * const digital_regs[] = {
|
||||
* General Purpose Input Output (GPIO) pins
|
||||
****************************************************************/
|
||||
|
||||
// Enable a peripheral clock
|
||||
void
|
||||
enable_peripheral_clock(uint32_t pclk)
|
||||
{
|
||||
LPC_SC->PCONP |= 1<<pclk;
|
||||
if (pclk < 16) {
|
||||
uint32_t shift = pclk * 2;
|
||||
LPC_SC->PCLKSEL0 = (LPC_SC->PCLKSEL0 & ~(0x3<<shift)) | (0x1<<shift);
|
||||
} else {
|
||||
uint32_t shift = (pclk - 16) * 2;
|
||||
LPC_SC->PCLKSEL1 = (LPC_SC->PCLKSEL1 & ~(0x3<<shift)) | (0x1<<shift);
|
||||
}
|
||||
}
|
||||
|
||||
// Set the mode and extended function of a pin
|
||||
void
|
||||
gpio_peripheral(int bank, int pin, int func, int pullup)
|
||||
@@ -178,10 +192,9 @@ gpio_adc_setup(uint8_t pin)
|
||||
|
||||
uint32_t prescal = DIV_ROUND_UP(CONFIG_CLOCK_FREQ*4, ADC_FREQ_MAX) - 1;
|
||||
uint32_t adcr = (1<<21) | ((prescal & 0xff) << 8);
|
||||
if (!(LPC_SC->PCONP & (1<<12))) {
|
||||
if (!(LPC_SC->PCONP & (1<<PCLK_ADC))) {
|
||||
// Power up ADC
|
||||
LPC_SC->PCONP |= 1<<12;
|
||||
LPC_SC->PCLKSEL0 = (LPC_SC->PCLKSEL0 & ~(0x3<<24)) | (0x1<<24);
|
||||
enable_peripheral_clock(PCLK_ADC);
|
||||
LPC_ADC->ADCR = adcr;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user