[Pdbg] [PATCH 05/10] libpdbg/p9chip.c: implement core target release to de-assert special wakeup

Alistair Popple alistair at popple.id.au
Tue May 8 12:29:16 AEST 2018


On Thursday, 3 May 2018 4:26:57 PM AEST Nicholas Piggin wrote:
> Signed-off-by: Nicholas Piggin <npiggin at gmail.com>
> ---
>  libpdbg/p9chip.c | 15 +++++++++++++++
>  1 file changed, 15 insertions(+)
> 
> diff --git a/libpdbg/p9chip.c b/libpdbg/p9chip.c
> index e64c73c..d9fcf5f 100644
> --- a/libpdbg/p9chip.c
> +++ b/libpdbg/p9chip.c
> @@ -24,6 +24,13 @@
>  #include "operations.h"
>  #include "bitutils.h"
>  
> +/*
> + * NOTE!
> + * All timeouts and scom procedures in general through the file should be kept
> + * in synch with skiboot (e.g., core/direct-controls.c) as far as possible.
> + * If you fix a bug here, fix it in skiboot, and vice versa.
> + */

Even better it would be nice if one day we could use the same code for both,
although that's somewhat of a pipedream at the moment.

>  #define P9_RAS_STATUS 0x10a02
>  #define P9_CORE_THREAD_STATE 0x10ab3
>  #define P9_THREAD_INFO 0x10a9b
> @@ -450,12 +457,20 @@ static int p9_core_probe(struct pdbg_target *target)
>  	return 0;
>  }
>  
> +static void p9_core_release(struct pdbg_target *target)
> +{
> +	usleep(1); /* enforce small delay before and after it is cleared */
> +	pib_write(target, PPM_SPWKUP_OTR, 0);
> +	usleep(10000);
> +}
> +
>  static struct core p9_core = {
>  	.target = {
>  		.name = "POWER9 Core",
>  		.compatible = "ibm,power9-core",
>  		.class = "core",
>  		.probe = p9_core_probe,
> +		.release = p9_core_release,
>  	},
>  };
>  DECLARE_HW_UNIT(p9_core);
> 




More information about the Pdbg mailing list