Hi Yangbo,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on staging/staging-testing]
[also build test WARNING on v4.17-rc1 next-20180420]
[if your patch is applied to the wrong git tree, please drop us a note to help 
improve the system]

url:    
https://github.com/0day-ci/linux/commits/Yangbo-Lu/staging-fsl-dpaa2-rtc-add-rtc-driver/20180420-190320
reproduce:
        # apt-get install sparse
        make ARCH=x86_64 allmodconfig
        make C=1 CF=-D__CHECK_ENDIAN__


sparse warnings: (new ones prefixed by >>)

>> drivers/staging/fsl-dpaa2/rtc/dprtc.c:43:30: sparse: incorrect type in 
>> assignment (different base types) @@    expected unsigned int [unsigned] 
>> [usertype] dprtc_id @@    got ed int [unsigned] [usertype] dprtc_id @@
   drivers/staging/fsl-dpaa2/rtc/dprtc.c:43:30:    expected unsigned int 
[unsigned] [usertype] dprtc_id
   drivers/staging/fsl-dpaa2/rtc/dprtc.c:43:30:    got restricted __le32 
[usertype] <noident>
>> drivers/staging/fsl-dpaa2/rtc/dprtc.c:155:31: sparse: incorrect type in 
>> assignment (different base types) @@    expected unsigned int [unsigned] 
>> [usertype] object_id @@    got ed int [unsigned] [usertype] object_id @@
   drivers/staging/fsl-dpaa2/rtc/dprtc.c:155:31:    expected unsigned int 
[unsigned] [usertype] object_id
   drivers/staging/fsl-dpaa2/rtc/dprtc.c:155:31:    got restricted __le32 
[usertype] <noident>
>> drivers/staging/fsl-dpaa2/rtc/dprtc.c:369:26: sparse: incorrect type in 
>> assignment (different base types) @@    expected unsigned int [unsigned] 
>> [usertype] mask @@    got ed int [unsigned] [usertype] mask @@
   drivers/staging/fsl-dpaa2/rtc/dprtc.c:369:26:    expected unsigned int 
[unsigned] [usertype] mask
   drivers/staging/fsl-dpaa2/rtc/dprtc.c:369:26:    got restricted __le32 
[usertype] <noident>
>> drivers/staging/fsl-dpaa2/rtc/dprtc.c:414:17: sparse: cast to restricted 
>> __le32
>> drivers/staging/fsl-dpaa2/rtc/dprtc.c:448:28: sparse: incorrect type in 
>> assignment (different base types) @@    expected unsigned int [unsigned] 
>> [usertype] status @@    got ed int [unsigned] [usertype] status @@
   drivers/staging/fsl-dpaa2/rtc/dprtc.c:448:28:    expected unsigned int 
[unsigned] [usertype] status
   drivers/staging/fsl-dpaa2/rtc/dprtc.c:448:28:    got restricted __le32 
[usertype] <noident>
   drivers/staging/fsl-dpaa2/rtc/dprtc.c:491:28: sparse: incorrect type in 
assignment (different base types) @@    expected unsigned int [unsigned] 
[usertype] status @@    got ed int [unsigned] [usertype] status @@
   drivers/staging/fsl-dpaa2/rtc/dprtc.c:491:28:    expected unsigned int 
[unsigned] [usertype] status
   drivers/staging/fsl-dpaa2/rtc/dprtc.c:491:28:    got restricted __le32 
[usertype] <noident>
   drivers/staging/fsl-dpaa2/rtc/dprtc.c:528:20: sparse: cast to restricted 
__le32
>> drivers/staging/fsl-dpaa2/rtc/dprtc.c:557:28: sparse: incorrect type in 
>> assignment (different base types) @@    expected unsigned long long 
>> [unsigned] [usertype] offset @@    got g long [unsigned] [usertype] offset @@
   drivers/staging/fsl-dpaa2/rtc/dprtc.c:557:28:    expected unsigned long long 
[unsigned] [usertype] offset
   drivers/staging/fsl-dpaa2/rtc/dprtc.c:557:28:    got restricted __le64 
[usertype] <noident>
>> drivers/staging/fsl-dpaa2/rtc/dprtc.c:586:39: sparse: incorrect type in 
>> assignment (different base types) @@    expected unsigned int [unsigned] 
>> [usertype] freq_compensation @@    got ed int [unsigned] [usertype] 
>> freq_compensation @@
   drivers/staging/fsl-dpaa2/rtc/dprtc.c:586:39:    expected unsigned int 
[unsigned] [usertype] freq_compensation
   drivers/staging/fsl-dpaa2/rtc/dprtc.c:586:39:    got restricted __le32 
[usertype] <noident>
   drivers/staging/fsl-dpaa2/rtc/dprtc.c:623:30: sparse: cast to restricted 
__le32
>> drivers/staging/fsl-dpaa2/rtc/dprtc.c:659:17: sparse: cast to restricted 
>> __le64
>> drivers/staging/fsl-dpaa2/rtc/dprtc.c:687:26: sparse: incorrect type in 
>> assignment (different base types) @@    expected unsigned long long 
>> [unsigned] [usertype] time @@    got g long [unsigned] [usertype] time @@
   drivers/staging/fsl-dpaa2/rtc/dprtc.c:687:26:    expected unsigned long long 
[unsigned] [usertype] time
   drivers/staging/fsl-dpaa2/rtc/dprtc.c:687:26:    got restricted __le64 
[usertype] <noident>
   drivers/staging/fsl-dpaa2/rtc/dprtc.c:717:26: sparse: incorrect type in 
assignment (different base types) @@    expected unsigned long long [unsigned] 
[usertype] time @@    got g long [unsigned] [usertype] time @@
   drivers/staging/fsl-dpaa2/rtc/dprtc.c:717:26:    expected unsigned long long 
[unsigned] [usertype] time
   drivers/staging/fsl-dpaa2/rtc/dprtc.c:717:26:    got restricted __le64 
[usertype] <noident>
>> drivers/staging/fsl-dpaa2/rtc/dprtc.c:750:22: sparse: cast to restricted 
>> __le16
   drivers/staging/fsl-dpaa2/rtc/dprtc.c:751:22: sparse: cast to restricted 
__le16

vim +43 drivers/staging/fsl-dpaa2/rtc/dprtc.c

    11  
    12  /**
    13   * dprtc_open() - Open a control session for the specified object.
    14   * @mc_io:      Pointer to MC portal's I/O object
    15   * @cmd_flags:  Command flags; one or more of 'MC_CMD_FLAG_'
    16   * @dprtc_id:   DPRTC unique ID
    17   * @token:      Returned token; use in subsequent API calls
    18   *
    19   * This function can be used to open a control session for an
    20   * already created object; an object may have been declared in
    21   * the DPL or by calling the dprtc_create function.
    22   * This function returns a unique authentication token,
    23   * associated with the specific object ID and the specific MC
    24   * portal; this token must be used in all subsequent commands for
    25   * this specific object
    26   *
    27   * Return:      '0' on Success; Error code otherwise.
    28   */
    29  int dprtc_open(struct fsl_mc_io *mc_io,
    30                 u32 cmd_flags,
    31                 int dprtc_id,
    32                 u16 *token)
    33  {
    34          struct dprtc_cmd_open *cmd_params;
    35          struct fsl_mc_command cmd = { 0 };
    36          int err;
    37  
    38          /* prepare command */
    39          cmd.header = mc_encode_cmd_header(DPRTC_CMDID_OPEN,
    40                                            cmd_flags,
    41                                            0);
    42          cmd_params = (struct dprtc_cmd_open *)cmd.params;
  > 43          cmd_params->dprtc_id = cpu_to_le32(dprtc_id);
    44  
    45          /* send command to mc*/
    46          err = mc_send_command(mc_io, &cmd);
    47          if (err)
    48                  return err;
    49  
    50          /* retrieve response parameters */
    51          *token = mc_cmd_hdr_read_token(&cmd);
    52  
    53          return err;
    54  }
    55  
    56  /**
    57   * dprtc_close() - Close the control session of the object
    58   * @mc_io:      Pointer to MC portal's I/O object
    59   * @cmd_flags:  Command flags; one or more of 'MC_CMD_FLAG_'
    60   * @token:      Token of DPRTC object
    61   *
    62   * After this function is called, no further operations are
    63   * allowed on the object without opening a new control session.
    64   *
    65   * Return:      '0' on Success; Error code otherwise.
    66   */
    67  int dprtc_close(struct fsl_mc_io *mc_io,
    68                  u32 cmd_flags,
    69                  u16 token)
    70  {
    71          struct fsl_mc_command cmd = { 0 };
    72  
    73          /* prepare command */
    74          cmd.header = mc_encode_cmd_header(DPRTC_CMDID_CLOSE, cmd_flags,
    75                                            token);
    76  
    77          /* send command to mc*/
    78          return mc_send_command(mc_io, &cmd);
    79  }
    80  
    81  /**
    82   * dprtc_create() - Create the DPRTC object.
    83   * @mc_io:      Pointer to MC portal's I/O object
    84   * @dprc_token: Parent container token; '0' for default container
    85   * @cmd_flags:  Command flags; one or more of 'MC_CMD_FLAG_'
    86   * @cfg:        Configuration structure
    87   * @obj_id:     Returned object id
    88   *
    89   * Create the DPRTC object, allocate required resources and
    90   * perform required initialization.
    91   *
    92   * The function accepts an authentication token of a parent
    93   * container that this object should be assigned to. The token
    94   * can be '0' so the object will be assigned to the default container.
    95   * The newly created object can be opened with the returned
    96   * object id and using the container's associated tokens and MC portals.
    97   *
    98   * Return:      '0' on Success; Error code otherwise.
    99   */
   100  int dprtc_create(struct fsl_mc_io *mc_io,
   101                   u16 dprc_token,
   102                   u32 cmd_flags,
   103                   const struct dprtc_cfg *cfg,
   104                   u32 *obj_id)
   105  {
   106          struct fsl_mc_command cmd = { 0 };
   107          int err;
   108  
   109          (void)(cfg); /* unused */
   110  
   111          /* prepare command */
   112          cmd.header = mc_encode_cmd_header(DPRTC_CMDID_CREATE,
   113                                            cmd_flags,
   114                                            dprc_token);
   115  
   116          /* send command to mc*/
   117          err = mc_send_command(mc_io, &cmd);
   118          if (err)
   119                  return err;
   120  
   121          /* retrieve response parameters */
   122          *obj_id = mc_cmd_read_object_id(&cmd);
   123  
   124          return 0;
   125  }
   126  
   127  /**
   128   * dprtc_destroy() - Destroy the DPRTC object and release all its 
resources.
   129   * @mc_io:      Pointer to MC portal's I/O object
   130   * @dprc_token: Parent container token; '0' for default container
   131   * @cmd_flags:  Command flags; one or more of 'MC_CMD_FLAG_'
   132   * @object_id:  The object id; it must be a valid id within the 
container that
   133   * created this object;
   134   *
   135   * The function accepts the authentication token of the parent 
container that
   136   * created the object (not the one that currently owns the object). The 
object
   137   * is searched within parent using the provided 'object_id'.
   138   * All tokens to the object must be closed before calling destroy.
   139   *
   140   * Return:      '0' on Success; error code otherwise.
   141   */
   142  int dprtc_destroy(struct fsl_mc_io *mc_io,
   143                    u16 dprc_token,
   144                    u32 cmd_flags,
   145                    u32 object_id)
   146  {
   147          struct dprtc_cmd_destroy *cmd_params;
   148          struct fsl_mc_command cmd = { 0 };
   149  
   150          /* prepare command */
   151          cmd.header = mc_encode_cmd_header(DPRTC_CMDID_DESTROY,
   152                                            cmd_flags,
   153                                            dprc_token);
   154          cmd_params = (struct dprtc_cmd_destroy *)cmd.params;
 > 155          cmd_params->object_id = cpu_to_le32(object_id);
   156  
   157          /* send command to mc*/
   158          return mc_send_command(mc_io, &cmd);
   159  }
   160  

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
_______________________________________________
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to