# Copyright (c) 2021 Yonatan Schachter
# SPDX-License-Identifier: Apache-2.0

config HAS_RPI_PICO
	bool

config PICOSDK_USE_UART
	bool
	help
	  Use the UART driver from pico-sdk

config PICOSDK_USE_GPIO
	bool
	help
	  Use the GPIO driver from pico-sdk

config PICOSDK_USE_FLASH
	bool
	help
	  Use the flash driver from pico-sdk

config PICOSDK_USE_PWM
	bool
	help
	  Use the PWM driver from pico-sdk

config PICOSDK_USE_ADC
	bool
	help
	  Use the ADC driver from pico-sdk

config PICOSDK_USE_DMA
	bool
	help
	  Use the DMA driver from pico-sdk

config PICOSDK_USE_PIO
	bool
	select PICOSDK_USE_CLAIM
	help
	  Use the PIO driver from pico-sdk

config PICOSDK_USE_CLAIM
	bool
	help
	  Use the "claim" driver from pico-sdk
