[PATCH linux v4 17/20] drivers/fsi: Set slave SMODE to init communications

Jeremy Kerr jk at ozlabs.org
Mon Oct 17 18:04:44 AEDT 2016


Hi Chris,

> @@ -301,15 +376,26 @@ static int fsi_master_link_enable(struct fsi_master *master, int link)
>  static int fsi_master_break(struct fsi_master *master, int link)
>  {
>  	int rc;
> +	uint32_t smode;
>  
>  	if (!master->send_break)
>  		return -EINVAL;
>  
> -	rc =  master->send_break(master, link);
> -	if (rc)
> +	rc = master->send_break(master, link);
> +	if (rc) {
>  		dev_info(master->dev, "break failed with:%d\n", rc);
> +		return rc;
> +	}
> +	/* Verify can read slave at default ID location */
> +	rc = master->read(master, link, 3, FSI_SLAVE_BASE + FSI_SMODE,
> +			&smode, sizeof(smode));
>  
> -	return rc;
> +	/* If read fails then nothing on other end of link */
> +	if (rc)
> +		return -ENODEV;
> +
> +	dev_dbg(master->dev, "smode at ID 3 after break:%08x\n", smode);
> +	return 0;
>  }

Should this smode read logic be in fsi_master_break() at all?

I'd be inclined to keep the slave detection separate. If it's necessary
to check for slave presence, we can do that in the caller.

Cheers,


Jeremy


More information about the openbmc mailing list