diff options
Diffstat (limited to 'drivers/misc/fsl_law.c')
| -rw-r--r-- | drivers/misc/fsl_law.c | 19 | 
1 files changed, 19 insertions, 0 deletions
| diff --git a/drivers/misc/fsl_law.c b/drivers/misc/fsl_law.c index d7d6c403b..48ece4f09 100644 --- a/drivers/misc/fsl_law.c +++ b/drivers/misc/fsl_law.c @@ -70,6 +70,25 @@ int set_next_law(phys_addr_t addr, enum law_size sz, enum law_trgt_if id)  	return idx;  } +int set_last_law(phys_addr_t addr, enum law_size sz, enum law_trgt_if id) +{ +	u32 idx; + +	/* we have no LAWs free */ +	if (gd->used_laws == -1) +		return -1; + +	/* grab the last free law */ +	idx = __ilog2(~(gd->used_laws)); + +	if (idx >= FSL_HW_NUM_LAWS) +		return -1; + +	set_law(idx, addr, sz, id); + +	return idx; +} +  void disable_law(u8 idx)  {  	volatile u32 *base = (volatile u32 *)(CFG_IMMR + 0xc08); |