blob: ebdd487e2e5f50e80ba1c370aa248863819c3d79 [file] [log] [blame]
// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
//
# RV_PLIC register template
#
# Parameter (given by python tool)
# - src: Number of Interrupt Sources
# - target: Number of Targets that handle interrupt requests
# - prio: Max value of interrupt priorities
{
name: "RV_PLIC",
clock_primary: "clk_fixed",
bus_device: "tlul",
regwidth: "32",
registers: [
{ multireg: {
name: "IP",
desc: "Interrupt Pending",
count: ${src},
cname: "RV_PLIC",
swaccess: "ro",
hwaccess: "hwo",
fields: [
{ bits: "0", name: "P", desc: "Interrupt Pending of Source" }
],
}
},
{ multireg: {
name: "LE",
desc: "Interrupt Source mode. 0: Level, 1: Edge-triggered",
count: ${src},
cname: "RV_PLIC",
swaccess: "rw",
hwaccess: "hro",
fields: [
{ bits: "0", name: "LE", desc: "L0E1" }
],
}
},
% for i in range(src):
{ name: "PRIO${i}",
desc: "Interrupt Source ${i} Priority",
swaccess: "rw",
hwaccess: "hro",
fields: [
{ bits: "${(prio).bit_length()-1}:0" }
],
}
% endfor
% for i in range(target):
{ skipto: ${0x100 + i*0x100 | x} }
{ multireg: {
name: "IE${i}",
desc: "Interrupt Enable for Target ${i}",
count: ${src},
cname: "RV_PLIC",
swaccess: "rw",
hwaccess: "hro",
fields: [
{ bits: "0", name: "E", desc: "Interrupt Enable of Source" }
],
}
}
{ name: "THRESHOLD${i}",
desc: "Threshold of priority for Target ${i}",
swaccess: "rw",
hwaccess: "hro",
fields: [
{ bits: "${(prio).bit_length()-1}:0" }
],
}
{ name: "CC${i}",
desc: "Claim by read, complete by write for Target ${i}",
swaccess: "rw",
hwaccess: "hrw",
hwext: "true",
hwqe: "true",
hwre: "true",
fields: [
{ bits: "${(src).bit_length()-1}:0" }
],
}
{ name: "MSIP${i}",
desc: "msip for Hart ${i}. Write 1 to here asserts msip_o[${i}]",
swaccess: "rw",
hwaccess: "hro",
fields: [
{ bits: "0",
desc: "Software Interrupt Pending register",
}
],
}
% endfor
],
}