mirror of
				https://github.com/DigitalDevices/dddvb.git
				synced 2025-03-01 10:35:23 +00:00 
			
		
		
		
	store ids for all links in link structure and add devid attribute
This commit is contained in:
		| @@ -3661,10 +3661,10 @@ static long ddb_ioctl(struct file *file, unsigned int cmd, unsigned long arg) | ||||
| 	{ | ||||
| 		struct ddb_id ddbid; | ||||
|  | ||||
| 		ddbid.vendor = dev->ids.vendor; | ||||
| 		ddbid.device = dev->ids.device; | ||||
| 		ddbid.subvendor = dev->ids.subvendor; | ||||
| 		ddbid.subdevice = dev->ids.subdevice; | ||||
| 		ddbid.vendor = dev->link[0].ids.vendor; | ||||
| 		ddbid.device = dev->link[0].ids.device; | ||||
| 		ddbid.subvendor = dev->link[0].ids.subvendor; | ||||
| 		ddbid.subdevice = dev->link[0].ids.subdevice; | ||||
| 		ddbid.hw = ddbreadl(dev, 0); | ||||
| 		ddbid.regmap = ddbreadl(dev, 4); | ||||
| 		if (copy_to_user(parg, &ddbid, sizeof(ddbid))) | ||||
| @@ -4165,7 +4165,7 @@ static ssize_t version_show(struct device *device, | ||||
| 	struct ddb *dev = dev_get_drvdata(device); | ||||
|  | ||||
| 	return sprintf(buf, "%08x %08x\n", | ||||
| 		       dev->ids.hwid, dev->ids.regmapid); | ||||
| 		       dev->link[0].ids.hwid, dev->link[0].ids.regmapid); | ||||
| } | ||||
|  | ||||
| static ssize_t hwid_show(struct device *device, | ||||
| @@ -4173,7 +4173,7 @@ static ssize_t hwid_show(struct device *device, | ||||
| { | ||||
| 	struct ddb *dev = dev_get_drvdata(device); | ||||
|  | ||||
| 	return sprintf(buf, "0x%08X\n", dev->ids.hwid); | ||||
| 	return sprintf(buf, "0x%08X\n", dev->link[0].ids.hwid); | ||||
| } | ||||
|  | ||||
| static ssize_t regmap_show(struct device *device, | ||||
| @@ -4181,7 +4181,7 @@ static ssize_t regmap_show(struct device *device, | ||||
| { | ||||
| 	struct ddb *dev = dev_get_drvdata(device); | ||||
|  | ||||
| 	return sprintf(buf, "0x%08X\n", dev->ids.regmapid); | ||||
| 	return sprintf(buf, "0x%08X\n", dev->link[0].ids.regmapid); | ||||
| } | ||||
|  | ||||
| static ssize_t vlan_show(struct device *device, | ||||
| @@ -4218,6 +4218,15 @@ static ssize_t fmode_show(struct device *device, | ||||
| 	return sprintf(buf, "%u\n", dev->link[num].lnb.fmode); | ||||
| } | ||||
|  | ||||
| static ssize_t devid_show(struct device *device, | ||||
| 			  struct device_attribute *attr, char *buf) | ||||
| { | ||||
| 	int num = attr->attr.name[5] - 0x30; | ||||
| 	struct ddb *dev = dev_get_drvdata(device); | ||||
| 	 | ||||
| 	return sprintf(buf, "%08x\n", dev->link[num].ids.devid); | ||||
| } | ||||
|  | ||||
| static ssize_t fmode_store(struct device *device, struct device_attribute *attr, | ||||
| 			  const char *buf, size_t count) | ||||
| { | ||||
| @@ -4247,6 +4256,10 @@ static struct device_attribute ddb_attrs[] = { | ||||
| 	__ATTR(fmode1, 0664, fmode_show, fmode_store), | ||||
| 	__ATTR(fmode2, 0664, fmode_show, fmode_store), | ||||
| 	__ATTR(fmode3, 0664, fmode_show, fmode_store), | ||||
| 	__ATTR_MRO(devid0, devid_show), | ||||
| 	__ATTR_MRO(devid1, devid_show), | ||||
| 	__ATTR_MRO(devid2, devid_show), | ||||
| 	__ATTR_MRO(devid3, devid_show), | ||||
| 	__ATTR_RO(hwid), | ||||
| 	__ATTR_RO(regmap), | ||||
| #if 0 | ||||
| @@ -4536,6 +4549,7 @@ static int ddb_gtl_init_link(struct ddb *dev, u32 l) | ||||
| 			id); | ||||
| 		return -1; | ||||
| 	} | ||||
| 	link->ids.devid = id; | ||||
| 	 | ||||
| 	ddbwritel(dev, 1, 0x1a0); | ||||
|  | ||||
|   | ||||
| @@ -102,7 +102,7 @@ static int ns_set_pids(struct dvbnss *nss) | ||||
| 	struct ddb *dev = input->port->dev; | ||||
| 	struct ddb_ns *dns = (struct ddb_ns *) nss->priv; | ||||
|  | ||||
| 	if (dev->ids.devid == 0x0301dd01) { | ||||
| 	if (dev->link[0].ids.devid == 0x0301dd01) { | ||||
| 		u32 sys = 0; | ||||
| 		int pid, j = 1; | ||||
|  | ||||
| @@ -134,7 +134,7 @@ static int ns_set_pid(struct dvbnss *nss, u16 pid) | ||||
| 	u32 off = STREAM_PIDS(dns->nr); | ||||
|  | ||||
| #if 1 | ||||
| 	if (dev->ids.devid == 0x0301dd01) { | ||||
| 	if (dev->link[0].ids.devid == 0x0301dd01) { | ||||
| 		if (pid & 0x2000) { | ||||
| 			if (pid & 0x8000) | ||||
| 				memset(nss->pids, 0xff, 0x400); | ||||
|   | ||||
| @@ -112,10 +112,10 @@ static int __devinit ddb_probe(struct pci_dev *pdev, | ||||
| 	dev->dev = &pdev->dev; | ||||
| 	pci_set_drvdata(pdev, dev); | ||||
|  | ||||
| 	dev->ids.vendor = id->vendor; | ||||
| 	dev->ids.device = id->device; | ||||
| 	dev->ids.subvendor = id->subvendor; | ||||
| 	dev->ids.subdevice = id->subdevice; | ||||
| 	dev->link[0].ids.vendor = id->vendor; | ||||
| 	dev->link[0].ids.device = id->device; | ||||
| 	dev->link[0].ids.subvendor = id->subvendor; | ||||
| 	dev->link[0].ids.subdevice = id->subdevice; | ||||
|  | ||||
| 	dev->link[0].dev = dev; | ||||
| 	dev->link[0].info = (struct ddb_info *) id->driver_data; | ||||
| @@ -136,11 +136,11 @@ static int __devinit ddb_probe(struct pci_dev *pdev, | ||||
| 		goto fail; | ||||
| 	} | ||||
|  | ||||
| 	dev->ids.hwid = ddbreadl(dev, 0); | ||||
| 	dev->ids.regmapid = ddbreadl(dev, 4); | ||||
| 	dev->link[0].ids.hwid = ddbreadl(dev, 0); | ||||
| 	dev->link[0].ids.regmapid = ddbreadl(dev, 4); | ||||
|  | ||||
| 	pr_info("DDBridge: HW %08x REGMAP %08x\n", | ||||
| 		dev->ids.hwid, dev->ids.regmapid); | ||||
| 		dev->link[0].ids.hwid, dev->link[0].ids.regmapid); | ||||
|  | ||||
| 	if (dev->link[0].info->ns_num) { | ||||
| 		int i; | ||||
|   | ||||
| @@ -382,13 +382,13 @@ struct ddb_link { | ||||
| 	struct mutex           flash_mutex; | ||||
| 	struct ddb_lnb         lnb; | ||||
| 	struct tasklet_struct  tasklet; | ||||
| 	struct ddb_ids         ids; | ||||
| }; | ||||
|  | ||||
| struct ddb { | ||||
| 	struct pci_dev        *pdev; | ||||
| 	struct platform_device *pfdev; | ||||
| 	struct device         *dev; | ||||
| 	struct ddb_ids         ids; | ||||
| 	 | ||||
| 	int                    msi; | ||||
| 	struct workqueue_struct *wq; | ||||
|   | ||||
| @@ -156,28 +156,28 @@ static int __init octonet_probe(struct platform_device *pdev) | ||||
| 		return -ENOMEM; | ||||
| 	} | ||||
|  | ||||
| 	dev->ids.hwid = ddbreadl(dev, 0); | ||||
| 	dev->ids.regmapid = ddbreadl(dev, 4); | ||||
| 	dev->ids.devid = ddbreadl(dev, 8); | ||||
| 	dev->ids.mac = ddbreadl(dev, 12); | ||||
| 	dev->link[0].ids.hwid = ddbreadl(dev, 0); | ||||
| 	dev->link[0].ids.regmapid = ddbreadl(dev, 4); | ||||
| 	dev->link[0].ids.devid = ddbreadl(dev, 8); | ||||
| 	dev->link[0].ids.mac = ddbreadl(dev, 12); | ||||
|  | ||||
| 	dev->ids.vendor = dev->ids.devid & 0xffff; | ||||
| 	dev->ids.device = dev->ids.devid >> 16; | ||||
| 	dev->ids.subvendor = dev->ids.devid & 0xffff; | ||||
| 	dev->ids.subdevice = dev->ids.devid >> 16; | ||||
| 	dev->link[0].ids.vendor = dev->link[0].ids.devid & 0xffff; | ||||
| 	dev->link[0].ids.device = dev->link[0].ids.devid >> 16; | ||||
| 	dev->link[0].ids.subvendor = dev->link[0].ids.devid & 0xffff; | ||||
| 	dev->link[0].ids.subdevice = dev->link[0].ids.devid >> 16; | ||||
|  | ||||
| 	dev->link[0].dev = dev; | ||||
| 	if (dev->ids.devid == 0x0300dd01) | ||||
| 	if (dev->link[0].ids.devid == 0x0300dd01) | ||||
| 		dev->link[0].info = &ddb_octonet; | ||||
| 	else if (dev->ids.devid == 0x0301dd01) | ||||
| 	else if (dev->link[0].ids.devid == 0x0301dd01) | ||||
| 		dev->link[0].info = &ddb_octonet_jse; | ||||
| 	else if (dev->ids.devid == 0x0307dd01) | ||||
| 	else if (dev->link[0].ids.devid == 0x0307dd01) | ||||
| 		dev->link[0].info = &ddb_octonet_gtl; | ||||
| 	else | ||||
| 		dev->link[0].info = &ddb_octonet_tbd; | ||||
| 		 | ||||
| 	pr_info("HW  %08x REGMAP %08x\n", dev->ids.hwid, dev->ids.regmapid); | ||||
| 	pr_info("MAC %08x DEVID  %08x\n", dev->ids.mac, dev->ids.devid); | ||||
| 	pr_info("HW  %08x REGMAP %08x\n", dev->link[0].ids.hwid, dev->link[0].ids.regmapid); | ||||
| 	pr_info("MAC %08x DEVID  %08x\n", dev->link[0].ids.mac, dev->link[0].ids.devid); | ||||
|  | ||||
| 	ddbwritel(dev, 0, ETHER_CONTROL); | ||||
| 	ddbwritel(dev, 0x00000000, INTERRUPT_ENABLE); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user