raw_spin_unlock_irqrestore(&l2x0_lock, flags);
}
+static void l2c_save(void __iomem *base)
+{
+ l2x0_saved_regs.aux_ctrl = readl_relaxed(l2x0_base + L2X0_AUX_CTRL);
+}
+
/*
* L2C-210 specific code.
*
.way_size_0 = SZ_8K,
.num_lock = 1,
.enable = l2c_enable,
+ .save = l2c_save,
.outer_cache = {
.inv_range = l2c210_inv_range,
.clean_range = l2c210_clean_range,
.way_size_0 = SZ_8K,
.num_lock = 1,
.enable = l2c_enable,
+ .save = l2c_save,
.outer_cache = {
.inv_range = l2c220_inv_range,
.clean_range = l2c220_clean_range,
{
unsigned revision;
+ l2c_save(base);
+
l2x0_saved_regs.tag_latency = readl_relaxed(base +
L310_TAG_LATENCY_CTRL);
l2x0_saved_regs.data_latency = readl_relaxed(base +
unsigned way_size_bits, ways;
u32 aux;
- /*
- * It is strange to save the register state before initialisation,
- * but hey, this is what the DT implementations decided to do.
- */
- if (data->save)
- data->save(l2x0_base);
-
aux = readl_relaxed(l2x0_base + L2X0_AUX_CTRL);
aux &= aux_mask;
if (!(readl_relaxed(l2x0_base + L2X0_CTRL) & L2X0_CTRL_EN))
data->enable(l2x0_base, aux, data->num_lock);
- /* Re-read it in case some bits are reserved. */
- aux = readl_relaxed(l2x0_base + L2X0_AUX_CTRL);
+ outer_cache = fns;
- /* Save the value for resuming. */
- l2x0_saved_regs.aux_ctrl = aux;
+ /*
+ * It is strange to save the register state before initialisation,
+ * but hey, this is what the DT implementations decided to do.
+ */
+ if (data->save)
+ data->save(l2x0_base);
- outer_cache = fns;
+ /* Re-read it in case some bits are reserved. */
+ aux = readl_relaxed(l2x0_base + L2X0_AUX_CTRL);
pr_info("%s cache controller enabled, %d ways, %d kB\n",
data->type, ways, l2x0_size >> 10);
.num_lock = 1,
.of_parse = l2x0_of_parse,
.enable = l2c_enable,
+ .save = l2c_save,
.outer_cache = {
.inv_range = l2c210_inv_range,
.clean_range = l2c210_clean_range,
.num_lock = 1,
.of_parse = l2x0_of_parse,
.enable = l2c_enable,
+ .save = l2c_save,
.outer_cache = {
.inv_range = l2c220_inv_range,
.clean_range = l2c220_clean_range,
static void __init tauros3_save(void __iomem *base)
{
+ l2c_save(base);
+
l2x0_saved_regs.aux2_ctrl =
readl_relaxed(base + TAUROS3_AUX2_CTRL);
l2x0_saved_regs.prefetch_ctrl =