135135#include <linux/slab.h>
136136#include <linux/uaccess.h>
137137
138+ #include "qcom-dcc.h"
139+
138140#define STATUS_READY_TIMEOUT 5000 /* microseconds */
139141
140142/* DCC registers */
@@ -1423,57 +1425,6 @@ static ssize_t dcc_sram_read(struct file *file, char __user *data,
14231425 return len ;
14241426}
14251427
1426- static void dcc_configure_list (struct dcc_drvdata * drvdata , struct device_node * np )
1427- {
1428- const char * prop ;
1429- int ret , curr_list , index = 0 ;
1430- char * token , * bufp ;
1431- char * delim = " " ;
1432- u32 len , processed_len = 0 ;
1433-
1434- ret = of_property_read_u32 (np , "qcom,curr-link-list" ,
1435- & curr_list );
1436- if (ret )
1437- return ;
1438-
1439- if (!of_get_property (np , "qcom,link-list" , & len ))
1440- return ;
1441-
1442- bufp = kzalloc (len + 1 , GFP_KERNEL );
1443- if (!bufp )
1444- return ;
1445-
1446- while (!of_property_read_string_index (np , "qcom,link-list" , index , & prop )) {
1447- strncpy (bufp , prop , strlen (prop ));
1448- bufp [strlen (prop )] = '\0' ;
1449-
1450- processed_len += strlen (bufp ) + 1 ;
1451-
1452- token = strsep (& bufp , delim );
1453-
1454- if (!strcmp ("R" , token )) {
1455- ret = dcc_config_add_read (drvdata , bufp , curr_list );
1456- } else if (!strcmp ("W" , token )) {
1457- ret = dcc_config_add_write (drvdata , bufp , curr_list );
1458- } else if (!strcmp ("RW" , token )) {
1459- ret = dcc_config_add_read_write (drvdata , bufp , curr_list );
1460- } else if (!strcmp ("L" , token )) {
1461- ret = dcc_config_add_loop (drvdata , bufp , curr_list );
1462- } else {
1463- dev_err (drvdata -> dev , "%s is not a correct input\n" , token );
1464- ret = - EINVAL ;
1465- }
1466-
1467- if (ret < 0 )
1468- dev_err (drvdata -> dev , "Configure line %s failed\n" , prop );
1469-
1470- index ++ ;
1471- }
1472-
1473- dcc_enable (drvdata , curr_list );
1474- kfree (bufp );
1475- }
1476-
14771428static const struct file_operations dcc_sram_fops = {
14781429 .owner = THIS_MODULE ,
14791430 .read = dcc_sram_read ,
@@ -1499,7 +1450,7 @@ static int dcc_probe(struct platform_device *pdev)
14991450 int ret = 0 , i ;
15001451 struct device * dev = & pdev -> dev ;
15011452 struct dcc_drvdata * drvdata ;
1502- struct resource * res ;
1453+ const struct dcc_pdata * pdata = dev_get_platdata ( dev ) ;
15031454
15041455 drvdata = devm_kzalloc (dev , sizeof (* drvdata ), GFP_KERNEL );
15051456 if (!drvdata )
@@ -1508,21 +1459,17 @@ static int dcc_probe(struct platform_device *pdev)
15081459 drvdata -> dev = & pdev -> dev ;
15091460 platform_set_drvdata (pdev , drvdata );
15101461
1511- drvdata -> base = devm_platform_ioremap_resource ( pdev , 0 );
1462+ drvdata -> base = devm_ioremap ( dev , pdata -> base , pdata -> size );
15121463 if (IS_ERR (drvdata -> base ))
15131464 return PTR_ERR (drvdata -> base );
15141465
1515- drvdata -> ram_base = devm_platform_get_and_ioremap_resource ( pdev , 1 , & res );
1466+ drvdata -> ram_base = devm_ioremap ( dev , pdata -> ram_base , pdata -> ram_size );
15161467 if (IS_ERR (drvdata -> ram_base ))
15171468 return PTR_ERR (drvdata -> ram_base );
15181469
1519- drvdata -> ram_size = resource_size (res );
1520- ret = of_property_read_u32 (pdev -> dev .of_node , "qcom,dcc-offset" ,
1521- & drvdata -> ram_offset );
1522- if (ret )
1523- return - EINVAL ;
1524-
1525- drvdata -> mem_map_ver = (u64 )of_device_get_match_data (& pdev -> dev );
1470+ drvdata -> ram_size = pdata -> ram_size ;
1471+ drvdata -> ram_offset = pdata -> dcc_offset ;
1472+ drvdata -> mem_map_ver = pdata -> map_ver ;
15261473
15271474 switch (drvdata -> mem_map_ver ) {
15281475 case MEM_MAP_VER3 :
@@ -1573,7 +1520,6 @@ static int dcc_probe(struct platform_device *pdev)
15731520 }
15741521
15751522 dcc_create_debug_dir (drvdata );
1576- dcc_configure_list (drvdata , pdev -> dev .of_node );
15771523
15781524 return 0 ;
15791525}
@@ -1587,20 +1533,11 @@ static void dcc_remove(struct platform_device *pdev)
15871533 dcc_config_reset (drvdata );
15881534}
15891535
1590- static const struct of_device_id dcc_match_table [] = {
1591- { .compatible = "qcom,dcc-v1" , .data = (void * )MEM_MAP_VER1 },
1592- { .compatible = "qcom,dcc-v2" , .data = (void * )MEM_MAP_VER2 },
1593- { .compatible = "qcom,dcc-v3" , .data = (void * )MEM_MAP_VER3 },
1594- { }
1595- };
1596- MODULE_DEVICE_TABLE (of , dcc_match_table );
1597-
15981536static struct platform_driver dcc_driver = {
15991537 .probe = dcc_probe ,
16001538 .remove = dcc_remove ,
16011539 .driver = {
16021540 .name = "qcom-dcc" ,
1603- .of_match_table = dcc_match_table ,
16041541 },
16051542};
16061543
0 commit comments