Hi Joe,

I love your patch! Perhaps something to improve:

[auto build test WARNING on linus/master]
[also build test WARNING on v5.0-rc4 next-20190201]
[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/Joe-Perches/device-h-Add-__cold-to-dev_-level-logging-functions/20190203-211040
config: i386-randconfig-c0-01290401 (attached as .config)
compiler: gcc-8 (Debian 8.2.0-14) 8.2.0
reproduce:
        # save the attached .config to linux build tree
        make ARCH=i386 

Note: it may well be a FALSE warning. FWIW you are at least aware of it now.
http://gcc.gnu.org/wiki/Better_Uninitialized_Warnings

All warnings (new ones prefixed by >>):

   drivers/staging/axis-fifo/axis-fifo.c: In function 'axis_fifo_probe':
   drivers/staging/axis-fifo/axis-fifo.c:900:5: warning: 'rxd_tdata_width' may 
be used uninitialized in this function [-Wmaybe-uninitialized]
     if (rxd_tdata_width != 32) {
        ^
>> drivers/staging/axis-fifo/axis-fifo.c:907:5: warning: 'txd_tdata_width' may 
>> be used uninitialized in this function [-Wmaybe-uninitialized]
     if (txd_tdata_width != 32) {
        ^
   drivers/staging/axis-fifo/axis-fifo.c:914:5: warning: 'has_tdest' may be 
used uninitialized in this function [-Wmaybe-uninitialized]
     if (has_tdest) {
        ^
>> drivers/staging/axis-fifo/axis-fifo.c:919:5: warning: 'has_tid' may be used 
>> uninitialized in this function [-Wmaybe-uninitialized]
     if (has_tid) {
        ^
>> drivers/staging/axis-fifo/axis-fifo.c:924:5: warning: 'has_tkeep' may be 
>> used uninitialized in this function [-Wmaybe-uninitialized]
     if (has_tkeep) {
        ^
>> drivers/staging/axis-fifo/axis-fifo.c:929:5: warning: 'has_tstrb' may be 
>> used uninitialized in this function [-Wmaybe-uninitialized]
     if (has_tstrb) {
        ^
>> drivers/staging/axis-fifo/axis-fifo.c:934:5: warning: 'has_tuser' may be 
>> used uninitialized in this function [-Wmaybe-uninitialized]
     if (has_tuser) {
        ^
>> drivers/staging/axis-fifo/axis-fifo.c:939:5: warning: 'use_rx_cut_through' 
>> may be used uninitialized in this function [-Wmaybe-uninitialized]
     if (use_rx_cut_through) {
        ^
>> drivers/staging/axis-fifo/axis-fifo.c:944:5: warning: 'use_tx_cut_through' 
>> may be used uninitialized in this function [-Wmaybe-uninitialized]
     if (use_tx_cut_through) {
        ^
>> drivers/staging/axis-fifo/axis-fifo.c:949:5: warning: 'use_tx_control' may 
>> be used uninitialized in this function [-Wmaybe-uninitialized]
     if (use_tx_control) {
        ^
   drivers/staging/axis-fifo/axis-fifo.c:962:22: warning: 'rx_fifo_depth' may 
be used uninitialized in this function [-Wmaybe-uninitialized]
     fifo->rx_fifo_depth = rx_fifo_depth;
     ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~
   drivers/staging/axis-fifo/axis-fifo.c:964:38: warning: 'tx_fifo_depth' may 
be used uninitialized in this function [-Wmaybe-uninitialized]
     fifo->tx_fifo_depth = tx_fifo_depth - 4;
                           ~~~~~~~~~~~~~~^~~
   drivers/staging/axis-fifo/axis-fifo.c:965:20: warning: 'use_rx_data' may be 
used uninitialized in this function [-Wmaybe-uninitialized]
     fifo->has_rx_fifo = use_rx_data;
     ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
   drivers/staging/axis-fifo/axis-fifo.c:966:20: warning: 'use_tx_data' may be 
used uninitialized in this function [-Wmaybe-uninitialized]
     fifo->has_tx_fifo = use_tx_data;
     ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~

vim +/txd_tdata_width +907 drivers/staging/axis-fifo/axis-fifo.c

4a965c5f8 Jacob Feder 2018-07-22   703  
4a965c5f8 Jacob Feder 2018-07-22   704  static int axis_fifo_probe(struct 
platform_device *pdev)
4a965c5f8 Jacob Feder 2018-07-22   705  {
4a965c5f8 Jacob Feder 2018-07-22   706          struct resource *r_irq; /* 
interrupt resources */
4a965c5f8 Jacob Feder 2018-07-22   707          struct resource *r_mem; /* IO 
mem resources */
4a965c5f8 Jacob Feder 2018-07-22   708          struct device *dev = 
&pdev->dev; /* OS device (from device tree) */
4a965c5f8 Jacob Feder 2018-07-22   709          struct axis_fifo *fifo = NULL;
4a965c5f8 Jacob Feder 2018-07-22   710  
4a965c5f8 Jacob Feder 2018-07-22   711          char device_name[32];
4a965c5f8 Jacob Feder 2018-07-22   712  
4a965c5f8 Jacob Feder 2018-07-22   713          int rc = 0; /* error return 
value */
4a965c5f8 Jacob Feder 2018-07-22   714  
4a965c5f8 Jacob Feder 2018-07-22   715          /* IP properties from device 
tree */
4a965c5f8 Jacob Feder 2018-07-22   716          unsigned int rxd_tdata_width;
4a965c5f8 Jacob Feder 2018-07-22   717          unsigned int txc_tdata_width;
4a965c5f8 Jacob Feder 2018-07-22   718          unsigned int txd_tdata_width;
4a965c5f8 Jacob Feder 2018-07-22   719          unsigned int tdest_width;
4a965c5f8 Jacob Feder 2018-07-22   720          unsigned int tid_width;
4a965c5f8 Jacob Feder 2018-07-22   721          unsigned int tuser_width;
4a965c5f8 Jacob Feder 2018-07-22   722          unsigned int 
data_interface_type;
4a965c5f8 Jacob Feder 2018-07-22   723          unsigned int has_tdest;
4a965c5f8 Jacob Feder 2018-07-22   724          unsigned int has_tid;
4a965c5f8 Jacob Feder 2018-07-22   725          unsigned int has_tkeep;
4a965c5f8 Jacob Feder 2018-07-22   726          unsigned int has_tstrb;
4a965c5f8 Jacob Feder 2018-07-22   727          unsigned int has_tuser;
4a965c5f8 Jacob Feder 2018-07-22   728          unsigned int rx_fifo_depth;
4a965c5f8 Jacob Feder 2018-07-22   729          unsigned int 
rx_programmable_empty_threshold;
4a965c5f8 Jacob Feder 2018-07-22   730          unsigned int 
rx_programmable_full_threshold;
4a965c5f8 Jacob Feder 2018-07-22   731          unsigned int axi_id_width;
4a965c5f8 Jacob Feder 2018-07-22   732          unsigned int axi4_data_width;
4a965c5f8 Jacob Feder 2018-07-22   733          unsigned int select_xpm;
4a965c5f8 Jacob Feder 2018-07-22   734          unsigned int tx_fifo_depth;
4a965c5f8 Jacob Feder 2018-07-22   735          unsigned int 
tx_programmable_empty_threshold;
4a965c5f8 Jacob Feder 2018-07-22   736          unsigned int 
tx_programmable_full_threshold;
4a965c5f8 Jacob Feder 2018-07-22   737          unsigned int use_rx_cut_through;
4a965c5f8 Jacob Feder 2018-07-22   738          unsigned int use_rx_data;
4a965c5f8 Jacob Feder 2018-07-22   739          unsigned int use_tx_control;
4a965c5f8 Jacob Feder 2018-07-22   740          unsigned int use_tx_cut_through;
4a965c5f8 Jacob Feder 2018-07-22   741          unsigned int use_tx_data;
4a965c5f8 Jacob Feder 2018-07-22   742  
4a965c5f8 Jacob Feder 2018-07-22   743          /* ----------------------------
4a965c5f8 Jacob Feder 2018-07-22   744           *     init wrapper device
4a965c5f8 Jacob Feder 2018-07-22   745           * ----------------------------
4a965c5f8 Jacob Feder 2018-07-22   746           */
4a965c5f8 Jacob Feder 2018-07-22   747  
4a965c5f8 Jacob Feder 2018-07-22   748          /* allocate device wrapper 
memory */
4a965c5f8 Jacob Feder 2018-07-22   749          fifo = devm_kmalloc(dev, 
sizeof(*fifo), GFP_KERNEL);
4a965c5f8 Jacob Feder 2018-07-22   750          if (!fifo)
4a965c5f8 Jacob Feder 2018-07-22   751                  return -ENOMEM;
4a965c5f8 Jacob Feder 2018-07-22   752  
4a965c5f8 Jacob Feder 2018-07-22   753          dev_set_drvdata(dev, fifo);
4a965c5f8 Jacob Feder 2018-07-22   754          fifo->dt_device = dev;
4a965c5f8 Jacob Feder 2018-07-22   755  
4a965c5f8 Jacob Feder 2018-07-22   756          
init_waitqueue_head(&fifo->read_queue);
4a965c5f8 Jacob Feder 2018-07-22   757          
init_waitqueue_head(&fifo->write_queue);
4a965c5f8 Jacob Feder 2018-07-22   758  
4a965c5f8 Jacob Feder 2018-07-22   759          
spin_lock_init(&fifo->read_queue_lock);
4a965c5f8 Jacob Feder 2018-07-22   760          
spin_lock_init(&fifo->write_queue_lock);
4a965c5f8 Jacob Feder 2018-07-22   761  
4a965c5f8 Jacob Feder 2018-07-22   762          /* ----------------------------
4a965c5f8 Jacob Feder 2018-07-22   763           *   init device memory space
4a965c5f8 Jacob Feder 2018-07-22   764           * ----------------------------
4a965c5f8 Jacob Feder 2018-07-22   765           */
4a965c5f8 Jacob Feder 2018-07-22   766  
4a965c5f8 Jacob Feder 2018-07-22   767          /* get iospace for the device */
4a965c5f8 Jacob Feder 2018-07-22   768          r_mem = 
platform_get_resource(pdev, IORESOURCE_MEM, 0);
4a965c5f8 Jacob Feder 2018-07-22   769          if (!r_mem) {
4a965c5f8 Jacob Feder 2018-07-22   770                  
dev_err(fifo->dt_device, "invalid address\n");
4a965c5f8 Jacob Feder 2018-07-22   771                  rc = -ENODEV;
4a965c5f8 Jacob Feder 2018-07-22   772                  goto err_initial;
4a965c5f8 Jacob Feder 2018-07-22   773          }
4a965c5f8 Jacob Feder 2018-07-22   774  
4a965c5f8 Jacob Feder 2018-07-22   775          fifo->mem = r_mem;
4a965c5f8 Jacob Feder 2018-07-22   776  
4a965c5f8 Jacob Feder 2018-07-22   777          /* request physical memory */
4a965c5f8 Jacob Feder 2018-07-22   778          if 
(!request_mem_region(fifo->mem->start, resource_size(fifo->mem),
4a965c5f8 Jacob Feder 2018-07-22   779                                  
DRIVER_NAME)) {
4a965c5f8 Jacob Feder 2018-07-22   780                  dev_err(fifo->dt_device,
4a965c5f8 Jacob Feder 2018-07-22   781                          "couldn't lock 
memory region at 0x%pa\n",
4a965c5f8 Jacob Feder 2018-07-22   782                          
&fifo->mem->start);
4a965c5f8 Jacob Feder 2018-07-22   783                  rc = -EBUSY;
4a965c5f8 Jacob Feder 2018-07-22   784                  goto err_initial;
4a965c5f8 Jacob Feder 2018-07-22   785          }
4a965c5f8 Jacob Feder 2018-07-22   786          dev_dbg(fifo->dt_device, "got 
memory location [0x%pa - 0x%pa]\n",
4a965c5f8 Jacob Feder 2018-07-22   787                  &fifo->mem->start, 
&fifo->mem->end);
4a965c5f8 Jacob Feder 2018-07-22   788  
4a965c5f8 Jacob Feder 2018-07-22   789          /* map physical memory to 
kernel virtual address space */
4a965c5f8 Jacob Feder 2018-07-22   790          fifo->base_addr = 
ioremap(fifo->mem->start, resource_size(fifo->mem));
4a965c5f8 Jacob Feder 2018-07-22   791          if (!fifo->base_addr) {
4a965c5f8 Jacob Feder 2018-07-22   792                  
dev_err(fifo->dt_device, "couldn't map physical memory\n");
4a965c5f8 Jacob Feder 2018-07-22   793                  rc = -ENOMEM;
4a965c5f8 Jacob Feder 2018-07-22   794                  goto err_mem;
4a965c5f8 Jacob Feder 2018-07-22   795          }
4a965c5f8 Jacob Feder 2018-07-22   796          dev_dbg(fifo->dt_device, 
"remapped memory to 0x%p\n", fifo->base_addr);
4a965c5f8 Jacob Feder 2018-07-22   797  
4a965c5f8 Jacob Feder 2018-07-22   798          /* create unique device name */
4a965c5f8 Jacob Feder 2018-07-22   799          snprintf(device_name, 
sizeof(device_name), "%s_%pa",
4a965c5f8 Jacob Feder 2018-07-22   800                   DRIVER_NAME, 
&fifo->mem->start);
4a965c5f8 Jacob Feder 2018-07-22   801  
4a965c5f8 Jacob Feder 2018-07-22   802          dev_dbg(fifo->dt_device, 
"device name [%s]\n", device_name);
4a965c5f8 Jacob Feder 2018-07-22   803  
4a965c5f8 Jacob Feder 2018-07-22   804          /* ----------------------------
4a965c5f8 Jacob Feder 2018-07-22   805           *          init IP
4a965c5f8 Jacob Feder 2018-07-22   806           * ----------------------------
4a965c5f8 Jacob Feder 2018-07-22   807           */
4a965c5f8 Jacob Feder 2018-07-22   808  
4a965c5f8 Jacob Feder 2018-07-22   809          /* retrieve device tree 
properties */
4a965c5f8 Jacob Feder 2018-07-22   810          rc = get_dts_property(fifo, 
"xlnx,axi-str-rxd-tdata-width",
4a965c5f8 Jacob Feder 2018-07-22   811                                
&rxd_tdata_width);
4a965c5f8 Jacob Feder 2018-07-22   812          if (rc)
4a965c5f8 Jacob Feder 2018-07-22   813                  goto err_unmap;
4a965c5f8 Jacob Feder 2018-07-22   814          rc = get_dts_property(fifo, 
"xlnx,axi-str-txc-tdata-width",
4a965c5f8 Jacob Feder 2018-07-22   815                                
&txc_tdata_width);
4a965c5f8 Jacob Feder 2018-07-22   816          if (rc)
4a965c5f8 Jacob Feder 2018-07-22   817                  goto err_unmap;
4a965c5f8 Jacob Feder 2018-07-22   818          rc = get_dts_property(fifo, 
"xlnx,axi-str-txd-tdata-width",
4a965c5f8 Jacob Feder 2018-07-22   819                                
&txd_tdata_width);
4a965c5f8 Jacob Feder 2018-07-22   820          if (rc)
4a965c5f8 Jacob Feder 2018-07-22   821                  goto err_unmap;
4a965c5f8 Jacob Feder 2018-07-22   822          rc = get_dts_property(fifo, 
"xlnx,axis-tdest-width", &tdest_width);
4a965c5f8 Jacob Feder 2018-07-22   823          if (rc)
4a965c5f8 Jacob Feder 2018-07-22   824                  goto err_unmap;
4a965c5f8 Jacob Feder 2018-07-22   825          rc = get_dts_property(fifo, 
"xlnx,axis-tid-width", &tid_width);
4a965c5f8 Jacob Feder 2018-07-22   826          if (rc)
4a965c5f8 Jacob Feder 2018-07-22   827                  goto err_unmap;
4a965c5f8 Jacob Feder 2018-07-22   828          rc = get_dts_property(fifo, 
"xlnx,axis-tuser-width", &tuser_width);
4a965c5f8 Jacob Feder 2018-07-22   829          if (rc)
4a965c5f8 Jacob Feder 2018-07-22   830                  goto err_unmap;
4a965c5f8 Jacob Feder 2018-07-22   831          rc = get_dts_property(fifo, 
"xlnx,data-interface-type",
4a965c5f8 Jacob Feder 2018-07-22   832                                
&data_interface_type);
4a965c5f8 Jacob Feder 2018-07-22   833          if (rc)
4a965c5f8 Jacob Feder 2018-07-22   834                  goto err_unmap;
4a965c5f8 Jacob Feder 2018-07-22   835          rc = get_dts_property(fifo, 
"xlnx,has-axis-tdest", &has_tdest);
4a965c5f8 Jacob Feder 2018-07-22   836          if (rc)
4a965c5f8 Jacob Feder 2018-07-22   837                  goto err_unmap;
4a965c5f8 Jacob Feder 2018-07-22   838          rc = get_dts_property(fifo, 
"xlnx,has-axis-tid", &has_tid);
4a965c5f8 Jacob Feder 2018-07-22   839          if (rc)
4a965c5f8 Jacob Feder 2018-07-22   840                  goto err_unmap;
4a965c5f8 Jacob Feder 2018-07-22   841          rc = get_dts_property(fifo, 
"xlnx,has-axis-tkeep", &has_tkeep);
4a965c5f8 Jacob Feder 2018-07-22   842          if (rc)
4a965c5f8 Jacob Feder 2018-07-22   843                  goto err_unmap;
4a965c5f8 Jacob Feder 2018-07-22   844          rc = get_dts_property(fifo, 
"xlnx,has-axis-tstrb", &has_tstrb);
4a965c5f8 Jacob Feder 2018-07-22   845          if (rc)
4a965c5f8 Jacob Feder 2018-07-22   846                  goto err_unmap;
4a965c5f8 Jacob Feder 2018-07-22   847          rc = get_dts_property(fifo, 
"xlnx,has-axis-tuser", &has_tuser);
4a965c5f8 Jacob Feder 2018-07-22   848          if (rc)
4a965c5f8 Jacob Feder 2018-07-22   849                  goto err_unmap;
4a965c5f8 Jacob Feder 2018-07-22   850          rc = get_dts_property(fifo, 
"xlnx,rx-fifo-depth", &rx_fifo_depth);
4a965c5f8 Jacob Feder 2018-07-22   851          if (rc)
4a965c5f8 Jacob Feder 2018-07-22   852                  goto err_unmap;
4a965c5f8 Jacob Feder 2018-07-22   853          rc = get_dts_property(fifo, 
"xlnx,rx-fifo-pe-threshold",
4a965c5f8 Jacob Feder 2018-07-22   854                                
&rx_programmable_empty_threshold);
4a965c5f8 Jacob Feder 2018-07-22   855          if (rc)
4a965c5f8 Jacob Feder 2018-07-22   856                  goto err_unmap;
4a965c5f8 Jacob Feder 2018-07-22   857          rc = get_dts_property(fifo, 
"xlnx,rx-fifo-pf-threshold",
4a965c5f8 Jacob Feder 2018-07-22   858                                
&rx_programmable_full_threshold);
4a965c5f8 Jacob Feder 2018-07-22   859          if (rc)
4a965c5f8 Jacob Feder 2018-07-22   860                  goto err_unmap;
4a965c5f8 Jacob Feder 2018-07-22   861          rc = get_dts_property(fifo, 
"xlnx,s-axi-id-width", &axi_id_width);
4a965c5f8 Jacob Feder 2018-07-22   862          if (rc)
4a965c5f8 Jacob Feder 2018-07-22   863                  goto err_unmap;
4a965c5f8 Jacob Feder 2018-07-22   864          rc = get_dts_property(fifo, 
"xlnx,s-axi4-data-width", &axi4_data_width);
4a965c5f8 Jacob Feder 2018-07-22   865          if (rc)
4a965c5f8 Jacob Feder 2018-07-22   866                  goto err_unmap;
4a965c5f8 Jacob Feder 2018-07-22   867          rc = get_dts_property(fifo, 
"xlnx,select-xpm", &select_xpm);
4a965c5f8 Jacob Feder 2018-07-22   868          if (rc)
4a965c5f8 Jacob Feder 2018-07-22   869                  goto err_unmap;
4a965c5f8 Jacob Feder 2018-07-22   870          rc = get_dts_property(fifo, 
"xlnx,tx-fifo-depth", &tx_fifo_depth);
4a965c5f8 Jacob Feder 2018-07-22   871          if (rc)
4a965c5f8 Jacob Feder 2018-07-22   872                  goto err_unmap;
4a965c5f8 Jacob Feder 2018-07-22   873          rc = get_dts_property(fifo, 
"xlnx,tx-fifo-pe-threshold",
4a965c5f8 Jacob Feder 2018-07-22   874                                
&tx_programmable_empty_threshold);
4a965c5f8 Jacob Feder 2018-07-22   875          if (rc)
4a965c5f8 Jacob Feder 2018-07-22   876                  goto err_unmap;
4a965c5f8 Jacob Feder 2018-07-22   877          rc = get_dts_property(fifo, 
"xlnx,tx-fifo-pf-threshold",
4a965c5f8 Jacob Feder 2018-07-22   878                                
&tx_programmable_full_threshold);
4a965c5f8 Jacob Feder 2018-07-22   879          if (rc)
4a965c5f8 Jacob Feder 2018-07-22   880                  goto err_unmap;
4a965c5f8 Jacob Feder 2018-07-22   881          rc = get_dts_property(fifo, 
"xlnx,use-rx-cut-through",
4a965c5f8 Jacob Feder 2018-07-22   882                                
&use_rx_cut_through);
4a965c5f8 Jacob Feder 2018-07-22   883          if (rc)
4a965c5f8 Jacob Feder 2018-07-22   884                  goto err_unmap;
4a965c5f8 Jacob Feder 2018-07-22   885          rc = get_dts_property(fifo, 
"xlnx,use-rx-data", &use_rx_data);
4a965c5f8 Jacob Feder 2018-07-22   886          if (rc)
4a965c5f8 Jacob Feder 2018-07-22   887                  goto err_unmap;
4a965c5f8 Jacob Feder 2018-07-22   888          rc = get_dts_property(fifo, 
"xlnx,use-tx-ctrl", &use_tx_control);
4a965c5f8 Jacob Feder 2018-07-22   889          if (rc)
4a965c5f8 Jacob Feder 2018-07-22   890                  goto err_unmap;
4a965c5f8 Jacob Feder 2018-07-22   891          rc = get_dts_property(fifo, 
"xlnx,use-tx-cut-through",
4a965c5f8 Jacob Feder 2018-07-22   892                                
&use_tx_cut_through);
4a965c5f8 Jacob Feder 2018-07-22   893          if (rc)
4a965c5f8 Jacob Feder 2018-07-22   894                  goto err_unmap;
4a965c5f8 Jacob Feder 2018-07-22   895          rc = get_dts_property(fifo, 
"xlnx,use-tx-data", &use_tx_data);
4a965c5f8 Jacob Feder 2018-07-22   896          if (rc)
4a965c5f8 Jacob Feder 2018-07-22   897                  goto err_unmap;
4a965c5f8 Jacob Feder 2018-07-22   898  
4a965c5f8 Jacob Feder 2018-07-22   899          /* check validity of device 
tree properties */
4a965c5f8 Jacob Feder 2018-07-22  @900          if (rxd_tdata_width != 32) {
4a965c5f8 Jacob Feder 2018-07-22   901                  dev_err(fifo->dt_device,
4a965c5f8 Jacob Feder 2018-07-22   902                          
"rxd_tdata_width width [%u] unsupported\n",
4a965c5f8 Jacob Feder 2018-07-22   903                          
rxd_tdata_width);
4a965c5f8 Jacob Feder 2018-07-22   904                  rc = -EIO;
4a965c5f8 Jacob Feder 2018-07-22   905                  goto err_unmap;
4a965c5f8 Jacob Feder 2018-07-22   906          }
4a965c5f8 Jacob Feder 2018-07-22  @907          if (txd_tdata_width != 32) {
4a965c5f8 Jacob Feder 2018-07-22   908                  dev_err(fifo->dt_device,
4a965c5f8 Jacob Feder 2018-07-22   909                          
"txd_tdata_width width [%u] unsupported\n",
4a965c5f8 Jacob Feder 2018-07-22   910                          
txd_tdata_width);
4a965c5f8 Jacob Feder 2018-07-22   911                  rc = -EIO;
4a965c5f8 Jacob Feder 2018-07-22   912                  goto err_unmap;
4a965c5f8 Jacob Feder 2018-07-22   913          }
4a965c5f8 Jacob Feder 2018-07-22  @914          if (has_tdest) {
4a965c5f8 Jacob Feder 2018-07-22   915                  
dev_err(fifo->dt_device, "tdest not supported\n");
4a965c5f8 Jacob Feder 2018-07-22   916                  rc = -EIO;
4a965c5f8 Jacob Feder 2018-07-22   917                  goto err_unmap;
4a965c5f8 Jacob Feder 2018-07-22   918          }
4a965c5f8 Jacob Feder 2018-07-22  @919          if (has_tid) {
4a965c5f8 Jacob Feder 2018-07-22   920                  
dev_err(fifo->dt_device, "tid not supported\n");
4a965c5f8 Jacob Feder 2018-07-22   921                  rc = -EIO;
4a965c5f8 Jacob Feder 2018-07-22   922                  goto err_unmap;
4a965c5f8 Jacob Feder 2018-07-22   923          }
4a965c5f8 Jacob Feder 2018-07-22  @924          if (has_tkeep) {
4a965c5f8 Jacob Feder 2018-07-22   925                  
dev_err(fifo->dt_device, "tkeep not supported\n");
4a965c5f8 Jacob Feder 2018-07-22   926                  rc = -EIO;
4a965c5f8 Jacob Feder 2018-07-22   927                  goto err_unmap;
4a965c5f8 Jacob Feder 2018-07-22   928          }
4a965c5f8 Jacob Feder 2018-07-22  @929          if (has_tstrb) {
4a965c5f8 Jacob Feder 2018-07-22   930                  
dev_err(fifo->dt_device, "tstrb not supported\n");
4a965c5f8 Jacob Feder 2018-07-22   931                  rc = -EIO;
4a965c5f8 Jacob Feder 2018-07-22   932                  goto err_unmap;
4a965c5f8 Jacob Feder 2018-07-22   933          }
4a965c5f8 Jacob Feder 2018-07-22  @934          if (has_tuser) {
4a965c5f8 Jacob Feder 2018-07-22   935                  
dev_err(fifo->dt_device, "tuser not supported\n");
4a965c5f8 Jacob Feder 2018-07-22   936                  rc = -EIO;
4a965c5f8 Jacob Feder 2018-07-22   937                  goto err_unmap;
4a965c5f8 Jacob Feder 2018-07-22   938          }
4a965c5f8 Jacob Feder 2018-07-22  @939          if (use_rx_cut_through) {
4a965c5f8 Jacob Feder 2018-07-22   940                  
dev_err(fifo->dt_device, "rx cut-through not supported\n");
4a965c5f8 Jacob Feder 2018-07-22   941                  rc = -EIO;
4a965c5f8 Jacob Feder 2018-07-22   942                  goto err_unmap;
4a965c5f8 Jacob Feder 2018-07-22   943          }
4a965c5f8 Jacob Feder 2018-07-22  @944          if (use_tx_cut_through) {
4a965c5f8 Jacob Feder 2018-07-22   945                  
dev_err(fifo->dt_device, "tx cut-through not supported\n");
4a965c5f8 Jacob Feder 2018-07-22   946                  rc = -EIO;
4a965c5f8 Jacob Feder 2018-07-22   947                  goto err_unmap;
4a965c5f8 Jacob Feder 2018-07-22   948          }
4a965c5f8 Jacob Feder 2018-07-22  @949          if (use_tx_control) {
4a965c5f8 Jacob Feder 2018-07-22   950                  
dev_err(fifo->dt_device, "tx control not supported\n");
4a965c5f8 Jacob Feder 2018-07-22   951                  rc = -EIO;
4a965c5f8 Jacob Feder 2018-07-22   952                  goto err_unmap;
4a965c5f8 Jacob Feder 2018-07-22   953          }
4a965c5f8 Jacob Feder 2018-07-22   954  
4a965c5f8 Jacob Feder 2018-07-22   955          /* TODO
4a965c5f8 Jacob Feder 2018-07-22   956           * these exist in the device 
tree but it's unclear what they do
4a965c5f8 Jacob Feder 2018-07-22   957           * - select-xpm
4a965c5f8 Jacob Feder 2018-07-22   958           * - data-interface-type
4a965c5f8 Jacob Feder 2018-07-22   959           */
4a965c5f8 Jacob Feder 2018-07-22   960  
4a965c5f8 Jacob Feder 2018-07-22   961          /* set device wrapper 
properties based on IP config */
4a965c5f8 Jacob Feder 2018-07-22   962          fifo->rx_fifo_depth = 
rx_fifo_depth;
4a965c5f8 Jacob Feder 2018-07-22   963          /* IP sets TDFV to fifo depth - 
4 so we will do the same */
4a965c5f8 Jacob Feder 2018-07-22   964          fifo->tx_fifo_depth = 
tx_fifo_depth - 4;
4a965c5f8 Jacob Feder 2018-07-22   965          fifo->has_rx_fifo = use_rx_data;
4a965c5f8 Jacob Feder 2018-07-22   966          fifo->has_tx_fifo = use_tx_data;
4a965c5f8 Jacob Feder 2018-07-22   967  
4a965c5f8 Jacob Feder 2018-07-22   968          reset_ip_core(fifo);
4a965c5f8 Jacob Feder 2018-07-22   969  
4a965c5f8 Jacob Feder 2018-07-22   970          /* ----------------------------
4a965c5f8 Jacob Feder 2018-07-22   971           *    init device interrupts
4a965c5f8 Jacob Feder 2018-07-22   972           * ----------------------------
4a965c5f8 Jacob Feder 2018-07-22   973           */
4a965c5f8 Jacob Feder 2018-07-22   974  
4a965c5f8 Jacob Feder 2018-07-22   975          /* get IRQ resource */
4a965c5f8 Jacob Feder 2018-07-22   976          r_irq = 
platform_get_resource(pdev, IORESOURCE_IRQ, 0);
4a965c5f8 Jacob Feder 2018-07-22   977          if (!r_irq) {
4a965c5f8 Jacob Feder 2018-07-22   978                  
dev_err(fifo->dt_device, "no IRQ found for 0x%pa\n",
4a965c5f8 Jacob Feder 2018-07-22   979                          
&fifo->mem->start);
4a965c5f8 Jacob Feder 2018-07-22   980                  rc = -EIO;
4a965c5f8 Jacob Feder 2018-07-22   981                  goto err_unmap;
4a965c5f8 Jacob Feder 2018-07-22   982          }
4a965c5f8 Jacob Feder 2018-07-22   983  
4a965c5f8 Jacob Feder 2018-07-22   984          /* request IRQ */
4a965c5f8 Jacob Feder 2018-07-22   985          fifo->irq = r_irq->start;
4a965c5f8 Jacob Feder 2018-07-22   986          rc = request_irq(fifo->irq, 
&axis_fifo_irq, 0, DRIVER_NAME, fifo);
4a965c5f8 Jacob Feder 2018-07-22   987          if (rc) {
4a965c5f8 Jacob Feder 2018-07-22   988                  
dev_err(fifo->dt_device, "couldn't allocate interrupt %i\n",
4a965c5f8 Jacob Feder 2018-07-22   989                          fifo->irq);
4a965c5f8 Jacob Feder 2018-07-22   990                  goto err_unmap;
4a965c5f8 Jacob Feder 2018-07-22   991          }
4a965c5f8 Jacob Feder 2018-07-22   992  
4a965c5f8 Jacob Feder 2018-07-22   993          /* ----------------------------
4a965c5f8 Jacob Feder 2018-07-22   994           *      init char device
4a965c5f8 Jacob Feder 2018-07-22   995           * ----------------------------
4a965c5f8 Jacob Feder 2018-07-22   996           */
4a965c5f8 Jacob Feder 2018-07-22   997  
4a965c5f8 Jacob Feder 2018-07-22   998          /* allocate device number */
4a965c5f8 Jacob Feder 2018-07-22   999          rc = 
alloc_chrdev_region(&fifo->devt, 0, 1, DRIVER_NAME);
4a965c5f8 Jacob Feder 2018-07-22  1000          if (rc < 0)
4a965c5f8 Jacob Feder 2018-07-22  1001                  goto err_irq;
4a965c5f8 Jacob Feder 2018-07-22  1002          dev_dbg(fifo->dt_device, 
"allocated device number major %i minor %i\n",
4a965c5f8 Jacob Feder 2018-07-22  1003                  MAJOR(fifo->devt), 
MINOR(fifo->devt));
4a965c5f8 Jacob Feder 2018-07-22  1004  
4a965c5f8 Jacob Feder 2018-07-22  1005          /* create driver file */
4a965c5f8 Jacob Feder 2018-07-22  1006          fifo->device = 
device_create(axis_fifo_driver_class, NULL, fifo->devt,
4a965c5f8 Jacob Feder 2018-07-22  1007                                       
NULL, device_name);
6d4abf1c0 Wei Yongjun 2018-07-27  1008          if (IS_ERR(fifo->device)) {
4a965c5f8 Jacob Feder 2018-07-22  1009                  dev_err(fifo->dt_device,
4a965c5f8 Jacob Feder 2018-07-22  1010                          "couldn't 
create driver file\n");
6d4abf1c0 Wei Yongjun 2018-07-27  1011                  rc = 
PTR_ERR(fifo->device);
4a965c5f8 Jacob Feder 2018-07-22  1012                  goto err_chrdev_region;
4a965c5f8 Jacob Feder 2018-07-22  1013          }
4a965c5f8 Jacob Feder 2018-07-22  1014          dev_set_drvdata(fifo->device, 
fifo);
4a965c5f8 Jacob Feder 2018-07-22  1015  
4a965c5f8 Jacob Feder 2018-07-22  1016          /* create character device */
4a965c5f8 Jacob Feder 2018-07-22  1017          cdev_init(&fifo->char_device, 
&fops);
4a965c5f8 Jacob Feder 2018-07-22  1018          rc = 
cdev_add(&fifo->char_device, fifo->devt, 1);
4a965c5f8 Jacob Feder 2018-07-22  1019          if (rc < 0) {
4a965c5f8 Jacob Feder 2018-07-22  1020                  
dev_err(fifo->dt_device, "couldn't create character device\n");
4a965c5f8 Jacob Feder 2018-07-22  1021                  goto err_dev;
4a965c5f8 Jacob Feder 2018-07-22  1022          }
4a965c5f8 Jacob Feder 2018-07-22  1023  
4a965c5f8 Jacob Feder 2018-07-22  1024          /* create sysfs entries */
4a965c5f8 Jacob Feder 2018-07-22  1025          rc = 
sysfs_create_group(&fifo->device->kobj, &axis_fifo_attrs_group);
4a965c5f8 Jacob Feder 2018-07-22  1026          if (rc < 0) {
4a965c5f8 Jacob Feder 2018-07-22  1027                  
dev_err(fifo->dt_device, "couldn't register sysfs group\n");
4a965c5f8 Jacob Feder 2018-07-22  1028                  goto err_cdev;
4a965c5f8 Jacob Feder 2018-07-22  1029          }
4a965c5f8 Jacob Feder 2018-07-22  1030  
4a965c5f8 Jacob Feder 2018-07-22  1031          dev_info(fifo->dt_device, 
"axis-fifo created at %pa mapped to 0x%pa, irq=%i, major=%i, minor=%i\n",
4a965c5f8 Jacob Feder 2018-07-22  1032                   &fifo->mem->start, 
&fifo->base_addr, fifo->irq,
4a965c5f8 Jacob Feder 2018-07-22  1033                   MAJOR(fifo->devt), 
MINOR(fifo->devt));
4a965c5f8 Jacob Feder 2018-07-22  1034  
4a965c5f8 Jacob Feder 2018-07-22  1035          return 0;
4a965c5f8 Jacob Feder 2018-07-22  1036  
4a965c5f8 Jacob Feder 2018-07-22  1037  err_cdev:
4a965c5f8 Jacob Feder 2018-07-22  1038          cdev_del(&fifo->char_device);
4a965c5f8 Jacob Feder 2018-07-22  1039  err_dev:
4a965c5f8 Jacob Feder 2018-07-22  1040          
device_destroy(axis_fifo_driver_class, fifo->devt);
4a965c5f8 Jacob Feder 2018-07-22  1041  err_chrdev_region:
4a965c5f8 Jacob Feder 2018-07-22  1042          
unregister_chrdev_region(fifo->devt, 1);
4a965c5f8 Jacob Feder 2018-07-22  1043  err_irq:
4a965c5f8 Jacob Feder 2018-07-22  1044          free_irq(fifo->irq, fifo);
4a965c5f8 Jacob Feder 2018-07-22  1045  err_unmap:
4a965c5f8 Jacob Feder 2018-07-22  1046          iounmap(fifo->base_addr);
4a965c5f8 Jacob Feder 2018-07-22  1047  err_mem:
4a965c5f8 Jacob Feder 2018-07-22  1048          
release_mem_region(fifo->mem->start, resource_size(fifo->mem));
4a965c5f8 Jacob Feder 2018-07-22  1049  err_initial:
4a965c5f8 Jacob Feder 2018-07-22  1050          dev_set_drvdata(dev, NULL);
4a965c5f8 Jacob Feder 2018-07-22  1051          return rc;
4a965c5f8 Jacob Feder 2018-07-22  1052  }
4a965c5f8 Jacob Feder 2018-07-22  1053  

:::::: The code at line 907 was first introduced by commit
:::::: 4a965c5f89decd636129cddc47e5f2c61e8f13e6 staging: add driver for Xilinx 
AXI-Stream FIFO v4.1 IP core

:::::: TO: Jacob Feder <jacobsfe...@gmail.com>
:::::: CC: Greg Kroah-Hartman <gre...@linuxfoundation.org>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip

Reply via email to