Skip to content

Add support for RP2040 GPIN/GPOUT (clkio) #9009

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 11 commits into from
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Rename clkio to rp2clock
  • Loading branch information
tinylabs committed Mar 22, 2024
commit 128b8c4ca22a8a31779df7e44500a7d802b0cfa4
16 changes: 8 additions & 8 deletions ports/raspberrypi/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -259,15 +259,15 @@ SRC_C += \
$(SRC_CYW43) \
$(SRC_LWIP) \

ifeq ($(CIRCUITPY_RP2CLKIO),1)
ifeq ($(CIRCUITPY_RP2CLOCK),1)
SRC_C += \
bindings/clkio/__init__.c \
bindings/clkio/ClkOutput.c \
bindings/clkio/ClkInput.c \
bindings/clkio/ClkAuxSrc.c \
bindings/clkio/ClkIndex.c \
common-hal/clkio/ClkOutput.c \
common-hal/clkio/ClkInput.c \
bindings/rp2clock/__init__.c \
bindings/rp2clock/ClkOutput.c \
bindings/rp2clock/ClkInput.c \
bindings/rp2clock/ClkAuxSrc.c \
bindings/rp2clock/ClkIndex.c \
common-hal/rp2clock/ClkOutput.c \
common-hal/rp2clock/ClkInput.c \

endif

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@

#include "py/runtime.h"
#include "supervisor/shared/translate/translate.h"
#include "bindings/clkio/ClkAuxSrc.h"
#include "bindings/rp2clock/ClkAuxSrc.h"

//| class ClkAuxSrc:
//| """Defines the input clock for GPOUT on RP2040"""
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@

#include "py/runtime.h"
#include "supervisor/shared/translate/translate.h"
#include "bindings/clkio/ClkIndex.h"
#include "bindings/rp2clock/ClkIndex.h"

//| class ClkIndex:
//| """Defines the internal clock index to drive GPIN from an external pin."""
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@
#include "py/objarray.h"

#include "shared-bindings/util.h"
#include "bindings/clkio/ClkInput.h"
#include "common-hal/clkio/ClkInput.h"
#include "bindings/rp2clock/ClkInput.h"
#include "common-hal/rp2clock/ClkInput.h"

STATIC void check_for_deinit(clkio_clkinput_obj_t *self) {
if (common_hal_clkio_clkinput_deinited(self)) {
Expand Down Expand Up @@ -71,8 +71,8 @@ STATIC mp_obj_t clkio_clkinput_make_new(const mp_obj_type_t *type, size_t n_args
self->base.type = &clkio_clkinput_type;

// Validate pin number
common_hal_clkio_clkinput_validate_clkindex_pin(args[ARG_pin].u_rom_obj);
self->pin = args[ARG_pin].u_rom_obj;
common_hal_clkio_clkinput_validate_clkindex_pin(self->pin);

// Validate pin based on clock
if (args[ARG_clkindex].u_rom_obj != mp_const_none) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@
#include "py/objarray.h"

#include "shared-bindings/util.h"
#include "bindings/clkio/ClkOutput.h"
#include "common-hal/clkio/ClkOutput.h"
#include "bindings/rp2clock/ClkOutput.h"
#include "common-hal/rp2clock/ClkOutput.h"

STATIC void check_for_deinit(clkio_clkoutput_obj_t *self) {
if (common_hal_clkio_clkoutput_deinited(self)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,16 +29,16 @@
#include "shared-bindings/board/__init__.h"
#include "shared-bindings/microcontroller/__init__.h"
#include "shared-bindings/microcontroller/Pin.h"
#include "bindings/clkio/__init__.h"
#include "bindings/clkio/ClkAuxSrc.h"
#include "bindings/clkio/ClkIndex.h"
#include "bindings/clkio/ClkOutput.h"
#include "bindings/clkio/ClkInput.h"
#include "bindings/rp2clock/__init__.h"
#include "bindings/rp2clock/ClkAuxSrc.h"
#include "bindings/rp2clock/ClkIndex.h"
#include "bindings/rp2clock/ClkOutput.h"
#include "bindings/rp2clock/ClkInput.h"

STATIC const mp_rom_map_elem_t clkio_module_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_clkio) },
{ MP_ROM_QSTR(MP_QSTR_ClkOutput), MP_ROM_PTR(&clkio_clkoutput_type) },
{ MP_ROM_QSTR(MP_QSTR_ClkInput), MP_ROM_PTR(&clkio_clkinput_type) },
{ MP_ROM_QSTR(MP_QSTR_ClkInput), MP_ROM_PTR(&clkio_clkinput_type) },

// Enum like classes
{ MP_ROM_QSTR(MP_QSTR_ClkAuxSrc), MP_ROM_PTR(&clkio_clkauxsrc_type) },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,4 @@ EXTERNAL_FLASH_DEVICES = "W25Q16JVxQ"

CIRCUITPY__EVE = 1
CIRCUITPY_PICODVI = 1
CIRCUITPY_RP2CLOCK = 1
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@
* THE SOFTWARE.
*/
#include "shared-bindings/microcontroller/Pin.h"
#include "common-hal/clkio/ClkInput.h"
#include "bindings/clkio/ClkIndex.h"
#include "common-hal/rp2clock/ClkInput.h"
#include "bindings/rp2clock/ClkIndex.h"
#include "hardware/clocks.h"
#include "hardware/gpio.h"
#include "py/runtime.h"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
#pragma once

#include "common-hal/microcontroller/Pin.h"
#include "bindings/clkio/ClkIndex.h"
#include "bindings/rp2clock/ClkIndex.h"
#include "hardware/clocks.h"

typedef struct {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,9 @@
* THE SOFTWARE.
*/
#include "shared-bindings/microcontroller/Pin.h"
#include "common-hal/clkio/ClkOutput.h"
#include "bindings/clkio/ClkAuxSrc.h"
#include "bindings/clkio/ClkIndex.h"
#include "common-hal/rp2clock/ClkOutput.h"
#include "bindings/rp2clock/ClkAuxSrc.h"
#include "bindings/rp2clock/ClkIndex.h"
#include "hardware/clocks.h"
#include "hardware/gpio.h"
#include "py/runtime.h"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
#pragma once

#include "common-hal/microcontroller/Pin.h"
#include "bindings/clkio/ClkAuxSrc.h"
#include "bindings/rp2clock/ClkAuxSrc.h"
#include "hardware/clocks.h"

typedef struct {
Expand Down
6 changes: 3 additions & 3 deletions py/circuitpy_mpconfig.mk
Original file line number Diff line number Diff line change
Expand Up @@ -431,11 +431,11 @@ CFLAGS += -DCIRCUITPY_REQUIRE_I2C_PULLUPS=$(CIRCUITPY_REQUIRE_I2C_PULLUPS)
CIRCUITPY_RP2PIO ?= 0
CFLAGS += -DCIRCUITPY_RP2PIO=$(CIRCUITPY_RP2PIO)

# CIRCUITPY_RP2CLKIO is handled in the raspberrypi tree.
# CIRCUITPY_RP2CLOCK is handled in the raspberrypi tree.
# Only for rp2 chips.
# Assume not a rp2 build.
CIRCUITPY_RP2CLKIO ?= 0
CFLAGS += -DCIRCUITPY_RP2CLKIO=$(CIRCUITPY_RP2CLKIO)
CIRCUITPY_RP2CLOCK ?= 0
CFLAGS += -DCIRCUITPY_RP2CLOCK=$(CIRCUITPY_RP2CLOCK)

CIRCUITPY_RGBMATRIX ?= 0
CFLAGS += -DCIRCUITPY_RGBMATRIX=$(CIRCUITPY_RGBMATRIX)
Expand Down