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 |