RE: [PATCH 5/6] can: flexcan: add CAN wakeup function for i.MX8QM

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Marc,

> -----Original Message-----
> From: Marc Kleine-Budde <mkl@xxxxxxxxxxxxxx>
> Sent: 2020年10月16日 18:40
> To: Joakim Zhang <qiangqing.zhang@xxxxxxx>; robh+dt@xxxxxxxxxx;
> shawnguo@xxxxxxxxxx; s.hauer@xxxxxxxxxxxxxx
> Cc: kernel@xxxxxxxxxxxxxx; dl-linux-imx <linux-imx@xxxxxxx>; Ying Liu
> <victor.liu@xxxxxxx>; Peng Fan <peng.fan@xxxxxxx>;
> linux-can@xxxxxxxxxxxxxxx; Pankaj Bansal <pankaj.bansal@xxxxxxx>;
> netdev@xxxxxxxxxxxxxxx; devicetree@xxxxxxxxxxxxxxx;
> linux-kernel@xxxxxxxxxxxxxxx
> Subject: Re: [PATCH 5/6] can: flexcan: add CAN wakeup function for i.MX8QM
> 
> On 10/16/20 12:00 PM, Joakim Zhang wrote:
> >>>> +static int flexcan_stop_mode_enable_scfw(struct flexcan_priv
> >>>> +*priv, bool enabled) {
> >>>> +	u8 idx = priv->can_idx;
> >>>> +	u32 rsrc_id, val;
> >>>> +
> >>>> +	if (idx == 0)
> >>>> +		rsrc_id = IMX_SC_R_CAN_0;
> >>>> +	else if (idx == 1)
> >>>> +		rsrc_id = IMX_SC_R_CAN_1;
> >>>> +	else
> >>>> +		rsrc_id = IMX_SC_R_CAN_2;
> >>>
> >>> Can you introduce something like and make use of it:
> >>>
> >>> #define IMX_SC_R_CAN(x)			(105 + (x))
> >> OK.
> >
> > I thought it over again, from my point of view, use macro here
> > directly could be more intuitive, and can achieve a direct jump.
> > If change to above wrapper, on the contrary make confusion, and
> > generate the magic number 105. ☹
> 
> The define should go into the rsrc.h, and probably be:
> 
> #define IMX_SC_R_CAN(x)		(IMX_SC_R_CAN_0 + (x))
> 
> and if you change the firmware interface, you probably have more problems :)

rsrc.h:
 /*
  * These defines are used to indicate a resource. Resources include peripherals
  * and bus masters (but not memory regions). Note items from list should
  * never be changed or removed (only added to at the end of the list).
  */
Hmm, it just list all resource id, and never be changed. Anyway, if you think above way is better, I will turn to it.

> >>>> +
> >>>> +	if (enabled)
> >>>> +		val = 1;
> >>>> +	else
> >>>> +		val = 0;
> >>>> +
> >>>> +	/* stop mode request via scu firmware */
> >>>> +	return imx_sc_misc_set_control(priv->sc_ipc_handle, rsrc_id,
> >>>> +IMX_SC_C_IPG_STOP, val); }
> >
> > We still need use IMX_SC_C_IPG_STOP, why not be consistent?
> 
> Sorry I don't get what you want to tell me here.

Need me add IMX_SC_C_IPG_STOP macro in the driver directly?

Such as, #define IMX_SC_C_IPG_STOP 52, so that no need to include rsrc.h file in the driver.

Best Regards,
Joakim Zhang
> Marc
> 
> --
> Pengutronix e.K.                 | Marc Kleine-Budde           |
> Embedded Linux                   | https://www.pengutronix.de  |
> Vertretung West/Dortmund         | Phone: +49-231-2826-924     |
> Amtsgericht Hildesheim, HRA 2686 | Fax:   +49-5121-206917-5555 |





[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux