Hi Marc, > -----Original Message----- > From: Marc Kleine-Budde <m...@pengutronix.de> > Sent: 2020年10月16日 18:40 > To: Joakim Zhang <qiangqing.zh...@nxp.com>; robh...@kernel.org; > shawn...@kernel.org; s.ha...@pengutronix.de > Cc: ker...@pengutronix.de; dl-linux-imx <linux-...@nxp.com>; Ying Liu > <victor....@nxp.com>; Peng Fan <peng....@nxp.com>; > linux-...@vger.kernel.org; Pankaj Bansal <pankaj.ban...@nxp.com>; > netdev@vger.kernel.org; devicet...@vger.kernel.org; > linux-ker...@vger.kernel.org > 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 |