@@ -618,7 +618,7 @@ struct fman {
618
618
unsigned long cam_offset ;
619
619
size_t cam_size ;
620
620
/* Fifo in MURAM */
621
- int fifo_offset ;
621
+ unsigned long fifo_offset ;
622
622
size_t fifo_size ;
623
623
624
624
u32 liodn_base [64 ];
@@ -2036,7 +2036,7 @@ static int fman_init(struct fman *fman)
2036
2036
/* allocate MURAM for FIFO according to total size */
2037
2037
fman -> fifo_offset = fman_muram_alloc (fman -> muram ,
2038
2038
fman -> state -> total_fifo_size );
2039
- if (IS_ERR_VALUE (fman -> cam_offset )) {
2039
+ if (IS_ERR_VALUE (fman -> fifo_offset )) {
2040
2040
free_init_resources (fman );
2041
2041
dev_err (fman -> dev , "%s: MURAM alloc for BMI FIFO failed\n" ,
2042
2042
__func__ );
@@ -2115,6 +2115,7 @@ void fman_register_intr(struct fman *fman, enum fman_event_modules module,
2115
2115
fman -> intr_mng [event ].isr_cb = isr_cb ;
2116
2116
fman -> intr_mng [event ].src_handle = src_arg ;
2117
2117
}
2118
+ EXPORT_SYMBOL (fman_register_intr );
2118
2119
2119
2120
/**
2120
2121
* fman_unregister_intr
@@ -2138,6 +2139,7 @@ void fman_unregister_intr(struct fman *fman, enum fman_event_modules module,
2138
2139
fman -> intr_mng [event ].isr_cb = NULL ;
2139
2140
fman -> intr_mng [event ].src_handle = NULL ;
2140
2141
}
2142
+ EXPORT_SYMBOL (fman_unregister_intr );
2141
2143
2142
2144
/**
2143
2145
* fman_set_port_params
@@ -2241,6 +2243,7 @@ int fman_set_port_params(struct fman *fman,
2241
2243
spin_unlock_irqrestore (& fman -> spinlock , flags );
2242
2244
return err ;
2243
2245
}
2246
+ EXPORT_SYMBOL (fman_set_port_params );
2244
2247
2245
2248
/**
2246
2249
* fman_reset_mac
@@ -2310,6 +2313,7 @@ int fman_reset_mac(struct fman *fman, u8 mac_id)
2310
2313
2311
2314
return 0 ;
2312
2315
}
2316
+ EXPORT_SYMBOL (fman_reset_mac );
2313
2317
2314
2318
/**
2315
2319
* fman_set_mac_max_frame
@@ -2327,8 +2331,7 @@ int fman_set_mac_max_frame(struct fman *fman, u8 mac_id, u16 mfl)
2327
2331
* or equal to the port's max
2328
2332
*/
2329
2333
if ((!fman -> state -> port_mfl [mac_id ]) ||
2330
- (fman -> state -> port_mfl [mac_id ] &&
2331
- (mfl <= fman -> state -> port_mfl [mac_id ]))) {
2334
+ (mfl <= fman -> state -> port_mfl [mac_id ])) {
2332
2335
fman -> state -> mac_mfl [mac_id ] = mfl ;
2333
2336
} else {
2334
2337
dev_warn (fman -> dev , "%s: MAC max_frame_length is larger than Port max_frame_length\n" ,
@@ -2337,6 +2340,7 @@ int fman_set_mac_max_frame(struct fman *fman, u8 mac_id, u16 mfl)
2337
2340
}
2338
2341
return 0 ;
2339
2342
}
2343
+ EXPORT_SYMBOL (fman_set_mac_max_frame );
2340
2344
2341
2345
/**
2342
2346
* fman_get_clock_freq
@@ -2363,6 +2367,7 @@ u32 fman_get_bmi_max_fifo_size(struct fman *fman)
2363
2367
{
2364
2368
return fman -> state -> bmi_max_fifo_size ;
2365
2369
}
2370
+ EXPORT_SYMBOL (fman_get_bmi_max_fifo_size );
2366
2371
2367
2372
/**
2368
2373
* fman_get_revision
@@ -2384,6 +2389,7 @@ void fman_get_revision(struct fman *fman, struct fman_rev_info *rev_info)
2384
2389
FPM_REV1_MAJOR_SHIFT );
2385
2390
rev_info -> minor = tmp & FPM_REV1_MINOR_MASK ;
2386
2391
}
2392
+ EXPORT_SYMBOL (fman_get_revision );
2387
2393
2388
2394
/**
2389
2395
* fman_get_qman_channel_id
@@ -2419,6 +2425,7 @@ u32 fman_get_qman_channel_id(struct fman *fman, u32 port_id)
2419
2425
2420
2426
return fman -> state -> qman_channel_base + i ;
2421
2427
}
2428
+ EXPORT_SYMBOL (fman_get_qman_channel_id );
2422
2429
2423
2430
/**
2424
2431
* fman_get_mem_region
@@ -2432,6 +2439,7 @@ struct resource *fman_get_mem_region(struct fman *fman)
2432
2439
{
2433
2440
return fman -> state -> res ;
2434
2441
}
2442
+ EXPORT_SYMBOL (fman_get_mem_region );
2435
2443
2436
2444
/* Bootargs defines */
2437
2445
/* Extra headroom for RX buffers - Default, min and max */
@@ -2453,7 +2461,7 @@ struct resource *fman_get_mem_region(struct fman *fman)
2453
2461
* particular forwarding scenarios that add extra headers to the
2454
2462
* forwarded frame.
2455
2463
*/
2456
- int fsl_fm_rx_extra_headroom = FSL_FM_RX_EXTRA_HEADROOM ;
2464
+ static int fsl_fm_rx_extra_headroom = FSL_FM_RX_EXTRA_HEADROOM ;
2457
2465
module_param (fsl_fm_rx_extra_headroom , int , 0 );
2458
2466
MODULE_PARM_DESC (fsl_fm_rx_extra_headroom , "Extra headroom for Rx buffers" );
2459
2467
@@ -2466,7 +2474,7 @@ MODULE_PARM_DESC(fsl_fm_rx_extra_headroom, "Extra headroom for Rx buffers");
2466
2474
* Could be overridden once, at boot-time, via the
2467
2475
* fm_set_max_frm() callback.
2468
2476
*/
2469
- int fsl_fm_max_frm = FSL_FM_MAX_FRAME_SIZE ;
2477
+ static int fsl_fm_max_frm = FSL_FM_MAX_FRAME_SIZE ;
2470
2478
module_param (fsl_fm_max_frm , int , 0 );
2471
2479
MODULE_PARM_DESC (fsl_fm_max_frm , "Maximum frame size, across all interfaces" );
2472
2480
@@ -2538,6 +2546,7 @@ struct fman *fman_bind(struct device *fm_dev)
2538
2546
{
2539
2547
return (struct fman * )(dev_get_drvdata (get_device (fm_dev )));
2540
2548
}
2549
+ EXPORT_SYMBOL (fman_bind );
2541
2550
2542
2551
static irqreturn_t fman_err_irq (int irq , void * handle )
2543
2552
{
@@ -2727,8 +2736,8 @@ static struct fman *read_dts_node(struct platform_device *of_dev)
2727
2736
struct fman * fman ;
2728
2737
struct device_node * fm_node , * muram_node ;
2729
2738
struct resource * res ;
2730
- const u32 * u32_prop ;
2731
- int lenp , err , irq ;
2739
+ u32 val , range [ 2 ] ;
2740
+ int err , irq ;
2732
2741
struct clk * clk ;
2733
2742
u32 clk_rate ;
2734
2743
phys_addr_t phys_base_addr ;
@@ -2740,16 +2749,13 @@ static struct fman *read_dts_node(struct platform_device *of_dev)
2740
2749
2741
2750
fm_node = of_node_get (of_dev -> dev .of_node );
2742
2751
2743
- u32_prop = ( const u32 * ) of_get_property ( fm_node , "cell-index" , & lenp );
2744
- if (! u32_prop ) {
2745
- dev_err (& of_dev -> dev , "%s: of_get_property(%s, cell-index) failed \n" ,
2752
+ err = of_property_read_u32 ( fm_node , "cell-index" , & val );
2753
+ if (err ) {
2754
+ dev_err (& of_dev -> dev , "%s: failed to read cell-index for %s \n" ,
2746
2755
__func__ , fm_node -> full_name );
2747
2756
goto fman_node_put ;
2748
2757
}
2749
- if (WARN_ON (lenp != sizeof (u32 )))
2750
- goto fman_node_put ;
2751
-
2752
- fman -> dts_params .id = (u8 )fdt32_to_cpu (u32_prop [0 ]);
2758
+ fman -> dts_params .id = (u8 )val ;
2753
2759
2754
2760
/* Get the FM interrupt */
2755
2761
res = platform_get_resource (of_dev , IORESOURCE_IRQ , 0 );
@@ -2796,18 +2802,15 @@ static struct fman *read_dts_node(struct platform_device *of_dev)
2796
2802
/* Rounding to MHz */
2797
2803
fman -> dts_params .clk_freq = DIV_ROUND_UP (clk_rate , 1000000 );
2798
2804
2799
- u32_prop = (const u32 * )of_get_property (fm_node ,
2800
- "fsl,qman-channel-range" ,
2801
- & lenp );
2802
- if (!u32_prop ) {
2803
- dev_err (& of_dev -> dev , "%s: of_get_property(%s, fsl,qman-channel-range) failed\n" ,
2805
+ err = of_property_read_u32_array (fm_node , "fsl,qman-channel-range" ,
2806
+ & range [0 ], 2 );
2807
+ if (err ) {
2808
+ dev_err (& of_dev -> dev , "%s: failed to read fsl,qman-channel-range for %s\n" ,
2804
2809
__func__ , fm_node -> full_name );
2805
2810
goto fman_node_put ;
2806
2811
}
2807
- if (WARN_ON (lenp != sizeof (u32 ) * 2 ))
2808
- goto fman_node_put ;
2809
- fman -> dts_params .qman_channel_base = fdt32_to_cpu (u32_prop [0 ]);
2810
- fman -> dts_params .num_of_qman_channels = fdt32_to_cpu (u32_prop [1 ]);
2812
+ fman -> dts_params .qman_channel_base = range [0 ];
2813
+ fman -> dts_params .num_of_qman_channels = range [1 ];
2811
2814
2812
2815
/* Get the MURAM base address and size */
2813
2816
muram_node = of_find_matching_node (fm_node , fman_muram_match );
@@ -2858,7 +2861,7 @@ static struct fman *read_dts_node(struct platform_device *of_dev)
2858
2861
2859
2862
fman -> dts_params .base_addr =
2860
2863
devm_ioremap (& of_dev -> dev , phys_base_addr , mem_size );
2861
- if (fman -> dts_params .base_addr == 0 ) {
2864
+ if (! fman -> dts_params .base_addr ) {
2862
2865
dev_err (& of_dev -> dev , "%s: devm_ioremap() failed\n" , __func__ );
2863
2866
goto fman_free ;
2864
2867
}
@@ -2930,7 +2933,7 @@ static const struct of_device_id fman_match[] = {
2930
2933
{}
2931
2934
};
2932
2935
2933
- MODULE_DEVICE_TABLE (of , fm_match );
2936
+ MODULE_DEVICE_TABLE (of , fman_match );
2934
2937
2935
2938
static struct platform_driver fman_driver = {
2936
2939
.driver = {
@@ -2940,4 +2943,25 @@ static struct platform_driver fman_driver = {
2940
2943
.probe = fman_probe ,
2941
2944
};
2942
2945
2943
- builtin_platform_driver (fman_driver );
2946
+ static int __init fman_load (void )
2947
+ {
2948
+ int err ;
2949
+
2950
+ pr_debug ("FSL DPAA FMan driver\n" );
2951
+
2952
+ err = platform_driver_register (& fman_driver );
2953
+ if (err < 0 )
2954
+ pr_err ("Error, platform_driver_register() = %d\n" , err );
2955
+
2956
+ return err ;
2957
+ }
2958
+ module_init (fman_load );
2959
+
2960
+ static void __exit fman_unload (void )
2961
+ {
2962
+ platform_driver_unregister (& fman_driver );
2963
+ }
2964
+ module_exit (fman_unload );
2965
+
2966
+ MODULE_LICENSE ("Dual BSD/GPL" );
2967
+ MODULE_DESCRIPTION ("Freescale DPAA Frame Manager driver" );
0 commit comments