linux/include/linux/pruss_driver.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0-only */
   2/*
   3 * PRU-ICSS sub-system specific definitions
   4 *
   5 * Copyright (C) 2014-2020 Texas Instruments Incorporated - http://www.ti.com/
   6 *      Suman Anna <s-anna@ti.com>
   7 */
   8
   9#ifndef _PRUSS_DRIVER_H_
  10#define _PRUSS_DRIVER_H_
  11
  12#include <linux/types.h>
  13
  14/*
  15 * enum pruss_mem - PRUSS memory range identifiers
  16 */
  17enum pruss_mem {
  18        PRUSS_MEM_DRAM0 = 0,
  19        PRUSS_MEM_DRAM1,
  20        PRUSS_MEM_SHRD_RAM2,
  21        PRUSS_MEM_MAX,
  22};
  23
  24/**
  25 * struct pruss_mem_region - PRUSS memory region structure
  26 * @va: kernel virtual address of the PRUSS memory region
  27 * @pa: physical (bus) address of the PRUSS memory region
  28 * @size: size of the PRUSS memory region
  29 */
  30struct pruss_mem_region {
  31        void __iomem *va;
  32        phys_addr_t pa;
  33        size_t size;
  34};
  35
  36/**
  37 * struct pruss - PRUSS parent structure
  38 * @dev: pruss device pointer
  39 * @cfg_base: base iomap for CFG region
  40 * @cfg_regmap: regmap for config region
  41 * @mem_regions: data for each of the PRUSS memory regions
  42 * @core_clk_mux: clk handle for PRUSS CORE_CLK_MUX
  43 * @iep_clk_mux: clk handle for PRUSS IEP_CLK_MUX
  44 */
  45struct pruss {
  46        struct device *dev;
  47        void __iomem *cfg_base;
  48        struct regmap *cfg_regmap;
  49        struct pruss_mem_region mem_regions[PRUSS_MEM_MAX];
  50        struct clk *core_clk_mux;
  51        struct clk *iep_clk_mux;
  52};
  53
  54#endif  /* _PRUSS_DRIVER_H_ */
  55