diff options
Diffstat (limited to 'arch/arm/mach-at91/pm.c')
| -rw-r--r-- | arch/arm/mach-at91/pm.c | 35 | 
1 files changed, 30 insertions, 5 deletions
diff --git a/arch/arm/mach-at91/pm.c b/arch/arm/mach-at91/pm.c index 374b9d155558..074bde64064e 100644 --- a/arch/arm/mach-at91/pm.c +++ b/arch/arm/mach-at91/pm.c @@ -736,13 +736,36 @@ backup_default:  struct pmc_info {  	unsigned long uhp_udp_mask; +	unsigned long mckr; +	unsigned long version;  };  static const struct pmc_info pmc_infos[] __initconst = { -	{ .uhp_udp_mask = AT91RM9200_PMC_UHP | AT91RM9200_PMC_UDP }, -	{ .uhp_udp_mask = AT91SAM926x_PMC_UHP | AT91SAM926x_PMC_UDP }, -	{ .uhp_udp_mask = AT91SAM926x_PMC_UHP }, -	{ .uhp_udp_mask = 0 }, +	{ +		.uhp_udp_mask = AT91RM9200_PMC_UHP | AT91RM9200_PMC_UDP, +		.mckr = 0x30, +		.version = AT91_PMC_V1, +	}, + +	{ +		.uhp_udp_mask = AT91SAM926x_PMC_UHP | AT91SAM926x_PMC_UDP, +		.mckr = 0x30, +		.version = AT91_PMC_V1, +	}, +	{ +		.uhp_udp_mask = AT91SAM926x_PMC_UHP, +		.mckr = 0x30, +		.version = AT91_PMC_V1, +	}, +	{	.uhp_udp_mask = 0, +		.mckr = 0x30, +		.version = AT91_PMC_V1, +	}, +	{ +		.uhp_udp_mask = AT91SAM926x_PMC_UHP | AT91SAM926x_PMC_UDP, +		.mckr = 0x28, +		.version = AT91_PMC_V2, +	},  };  static const struct of_device_id atmel_pmc_ids[] __initconst = { @@ -757,7 +780,7 @@ static const struct of_device_id atmel_pmc_ids[] __initconst = {  	{ .compatible = "atmel,sama5d3-pmc", .data = &pmc_infos[1] },  	{ .compatible = "atmel,sama5d4-pmc", .data = &pmc_infos[1] },  	{ .compatible = "atmel,sama5d2-pmc", .data = &pmc_infos[1] }, -	{ .compatible = "microchip,sam9x60-pmc", .data = &pmc_infos[1] }, +	{ .compatible = "microchip,sam9x60-pmc", .data = &pmc_infos[4] },  	{ /* sentinel */ },  }; @@ -779,6 +802,8 @@ static void __init at91_pm_init(void (*pm_idle)(void))  	pmc = of_id->data;  	soc_pm.data.uhp_udp_mask = pmc->uhp_udp_mask; +	soc_pm.data.pmc_mckr_offset = pmc->mckr; +	soc_pm.data.pmc_version = pmc->version;  	if (pm_idle)  		arm_pm_idle = pm_idle;  |