Skip to content

Commit

Permalink
[ipgen,pinmux] Generate pinmux files with ipgen
Browse files Browse the repository at this point in the history
The older way to generate files is preserved.

Part of pinmux lowRISC#8440

Signed-off-by: Guillermo Maturana <[email protected]>
  • Loading branch information
matutem authored and andrea-caforio committed Nov 12, 2024
1 parent 1cdf199 commit b99a222
Show file tree
Hide file tree
Showing 41 changed files with 48,843 additions and 0 deletions.
30 changes: 30 additions & 0 deletions hw/top_earlgrey/ip_autogen/pinmux/BUILD
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Copyright lowRISC contributors (OpenTitan project).
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0

package(default_visibility = ["//visibility:public"])

load(
"//rules:autogen.bzl",
"autogen_hjson_c_header",
"autogen_hjson_rust_header",
)

autogen_hjson_c_header(
name = "pinmux_c_regs",
srcs = [
"data/pinmux.hjson",
],
)

autogen_hjson_rust_header(
name = "pinmux_rust_regs",
srcs = [
"data/pinmux.hjson",
],
)

filegroup(
name = "all_files",
srcs = glob(["**"]),
)
29 changes: 29 additions & 0 deletions hw/top_earlgrey/ip_autogen/pinmux/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Pinmux Technical Specification


# Overview

This document specifies the functionality of the pin multiplexer (`pinmux`) peripheral.
This module conforms to the [OpenTitan guideline for peripheral device functionality](https://opentitan.org/book/doc/contributing/hw/comportability).
See that document for integration overview within the broader OpenTitan top level system.
The module provides a mechanism to reconfigure the peripheral-to-pin mapping at runtime, which greatly enhances the system flexibility.
In addition to that, the `pinmux` also allows the user to control pad attributes (such as pull-up, pull-down, open-drain, drive-strength, keeper and inversion), and it contains features that facilitate low-power modes of the system.
For example, the sleep behavior of each pad can be programmed individually, and the module contains additional pattern detectors that can listen on any IO and wake up the system if a specific pattern has been detected.

## Features

- Configurable number of chip bidirectional IOs

- Configurable number of peripheral inputs and outputs

- Programmable mapping from peripheral outputs (and output enables) to top-level outputs (and output enables)

- Programmable mapping from top-level inputs to peripheral inputs

- Programmable control of chip pad attributes like output drive-strength, pull-up, pull-down and virtual open-drain

- Programmable pattern detectors to detect wakeup conditions during sleep mode

- Programmable sleep mode behavior

- Support for life-cycle-based JTAG (TAP) isolation and muxing
Loading

0 comments on commit b99a222

Please sign in to comment.