Lines Matching refs:dev
65 static void c2port_reset(struct c2port_device *dev) in c2port_reset() argument
67 struct c2port_ops *ops = dev->ops; in c2port_reset()
73 ops->c2ck_set(dev, 0); in c2port_reset()
75 ops->c2ck_set(dev, 1); in c2port_reset()
81 static void c2port_strobe_ck(struct c2port_device *dev) in c2port_strobe_ck() argument
83 struct c2port_ops *ops = dev->ops; in c2port_strobe_ck()
91 ops->c2ck_set(dev, 0); in c2port_strobe_ck()
93 ops->c2ck_set(dev, 1); in c2port_strobe_ck()
103 static void c2port_write_ar(struct c2port_device *dev, u8 addr) in c2port_write_ar() argument
105 struct c2port_ops *ops = dev->ops; in c2port_write_ar()
109 c2port_strobe_ck(dev); in c2port_write_ar()
112 ops->c2d_dir(dev, 0); in c2port_write_ar()
113 ops->c2d_set(dev, 1); in c2port_write_ar()
114 c2port_strobe_ck(dev); in c2port_write_ar()
115 ops->c2d_set(dev, 1); in c2port_write_ar()
116 c2port_strobe_ck(dev); in c2port_write_ar()
120 ops->c2d_set(dev, addr & 0x01); in c2port_write_ar()
121 c2port_strobe_ck(dev); in c2port_write_ar()
127 ops->c2d_dir(dev, 1); in c2port_write_ar()
128 c2port_strobe_ck(dev); in c2port_write_ar()
131 static int c2port_read_ar(struct c2port_device *dev, u8 *addr) in c2port_read_ar() argument
133 struct c2port_ops *ops = dev->ops; in c2port_read_ar()
137 c2port_strobe_ck(dev); in c2port_read_ar()
140 ops->c2d_dir(dev, 0); in c2port_read_ar()
141 ops->c2d_set(dev, 0); in c2port_read_ar()
142 c2port_strobe_ck(dev); in c2port_read_ar()
143 ops->c2d_set(dev, 1); in c2port_read_ar()
144 c2port_strobe_ck(dev); in c2port_read_ar()
147 ops->c2d_dir(dev, 1); in c2port_read_ar()
152 c2port_strobe_ck(dev); in c2port_read_ar()
153 if (ops->c2d_get(dev)) in c2port_read_ar()
158 c2port_strobe_ck(dev); in c2port_read_ar()
163 static int c2port_write_dr(struct c2port_device *dev, u8 data) in c2port_write_dr() argument
165 struct c2port_ops *ops = dev->ops; in c2port_write_dr()
169 c2port_strobe_ck(dev); in c2port_write_dr()
172 ops->c2d_dir(dev, 0); in c2port_write_dr()
173 ops->c2d_set(dev, 1); in c2port_write_dr()
174 c2port_strobe_ck(dev); in c2port_write_dr()
175 ops->c2d_set(dev, 0); in c2port_write_dr()
176 c2port_strobe_ck(dev); in c2port_write_dr()
179 ops->c2d_set(dev, 0); in c2port_write_dr()
180 c2port_strobe_ck(dev); in c2port_write_dr()
181 ops->c2d_set(dev, 0); in c2port_write_dr()
182 c2port_strobe_ck(dev); in c2port_write_dr()
186 ops->c2d_set(dev, data & 0x01); in c2port_write_dr()
187 c2port_strobe_ck(dev); in c2port_write_dr()
193 ops->c2d_dir(dev, 1); in c2port_write_dr()
196 c2port_strobe_ck(dev); in c2port_write_dr()
197 if (ops->c2d_get(dev)) in c2port_write_dr()
206 c2port_strobe_ck(dev); in c2port_write_dr()
211 static int c2port_read_dr(struct c2port_device *dev, u8 *data) in c2port_read_dr() argument
213 struct c2port_ops *ops = dev->ops; in c2port_read_dr()
217 c2port_strobe_ck(dev); in c2port_read_dr()
220 ops->c2d_dir(dev, 0); in c2port_read_dr()
221 ops->c2d_set(dev, 0); in c2port_read_dr()
222 c2port_strobe_ck(dev); in c2port_read_dr()
223 ops->c2d_set(dev, 0); in c2port_read_dr()
224 c2port_strobe_ck(dev); in c2port_read_dr()
227 ops->c2d_set(dev, 0); in c2port_read_dr()
228 c2port_strobe_ck(dev); in c2port_read_dr()
229 ops->c2d_set(dev, 0); in c2port_read_dr()
230 c2port_strobe_ck(dev); in c2port_read_dr()
233 ops->c2d_dir(dev, 1); in c2port_read_dr()
236 c2port_strobe_ck(dev); in c2port_read_dr()
237 if (ops->c2d_get(dev)) in c2port_read_dr()
250 c2port_strobe_ck(dev); in c2port_read_dr()
251 if (ops->c2d_get(dev)) in c2port_read_dr()
256 c2port_strobe_ck(dev); in c2port_read_dr()
261 static int c2port_poll_in_busy(struct c2port_device *dev) in c2port_poll_in_busy() argument
267 ret = (c2port_read_ar(dev, &addr)); in c2port_poll_in_busy()
282 static int c2port_poll_out_ready(struct c2port_device *dev) in c2port_poll_out_ready() argument
288 ret = (c2port_read_ar(dev, &addr)); in c2port_poll_out_ready()
307 static ssize_t c2port_show_name(struct device *dev, in c2port_show_name() argument
310 struct c2port_device *c2dev = dev_get_drvdata(dev); in c2port_show_name()
316 static ssize_t c2port_show_flash_blocks_num(struct device *dev, in c2port_show_flash_blocks_num() argument
319 struct c2port_device *c2dev = dev_get_drvdata(dev); in c2port_show_flash_blocks_num()
326 static ssize_t c2port_show_flash_block_size(struct device *dev, in c2port_show_flash_block_size() argument
329 struct c2port_device *c2dev = dev_get_drvdata(dev); in c2port_show_flash_block_size()
336 static ssize_t c2port_show_flash_size(struct device *dev, in c2port_show_flash_size() argument
339 struct c2port_device *c2dev = dev_get_drvdata(dev); in c2port_show_flash_size()
346 static ssize_t access_show(struct device *dev, struct device_attribute *attr, in access_show() argument
349 struct c2port_device *c2dev = dev_get_drvdata(dev); in access_show()
354 static ssize_t access_store(struct device *dev, struct device_attribute *attr, in access_store() argument
357 struct c2port_device *c2dev = dev_get_drvdata(dev); in access_store()
383 static ssize_t c2port_store_reset(struct device *dev, in c2port_store_reset() argument
387 struct c2port_device *c2dev = dev_get_drvdata(dev); in c2port_store_reset()
404 static ssize_t __c2port_show_dev_id(struct c2port_device *dev, char *buf) in __c2port_show_dev_id() argument
410 c2port_write_ar(dev, C2PORT_DEVICEID); in __c2port_show_dev_id()
413 ret = c2port_read_dr(dev, &data); in __c2port_show_dev_id()
420 static ssize_t c2port_show_dev_id(struct device *dev, in c2port_show_dev_id() argument
423 struct c2port_device *c2dev = dev_get_drvdata(dev); in c2port_show_dev_id()
435 dev_err(dev, "cannot read from %s\n", c2dev->name); in c2port_show_dev_id()
441 static ssize_t __c2port_show_rev_id(struct c2port_device *dev, char *buf) in __c2port_show_rev_id() argument
447 c2port_write_ar(dev, C2PORT_REVID); in __c2port_show_rev_id()
450 ret = c2port_read_dr(dev, &data); in __c2port_show_rev_id()
457 static ssize_t c2port_show_rev_id(struct device *dev, in c2port_show_rev_id() argument
460 struct c2port_device *c2dev = dev_get_drvdata(dev); in c2port_show_rev_id()
472 dev_err(c2dev->dev, "cannot read from %s\n", c2dev->name); in c2port_show_rev_id()
478 static ssize_t c2port_show_flash_access(struct device *dev, in c2port_show_flash_access() argument
481 struct c2port_device *c2dev = dev_get_drvdata(dev); in c2port_show_flash_access()
486 static ssize_t __c2port_store_flash_access(struct c2port_device *dev, in __c2port_store_flash_access() argument
492 if (!dev->access) in __c2port_store_flash_access()
495 dev->flash_access = !!status; in __c2port_store_flash_access()
498 if (dev->flash_access == 0) in __c2port_store_flash_access()
503 c2port_write_ar(dev, C2PORT_FPCTL); in __c2port_store_flash_access()
506 ret = c2port_write_dr(dev, 0x02); in __c2port_store_flash_access()
511 ret = c2port_write_dr(dev, 0x01); in __c2port_store_flash_access()
522 static ssize_t c2port_store_flash_access(struct device *dev, in c2port_store_flash_access() argument
526 struct c2port_device *c2dev = dev_get_drvdata(dev); in c2port_store_flash_access()
539 dev_err(c2dev->dev, "cannot enable %s flash programming\n", in c2port_store_flash_access()
549 static ssize_t __c2port_write_flash_erase(struct c2port_device *dev) in __c2port_write_flash_erase() argument
557 c2port_write_ar(dev, C2PORT_FPDAT); in __c2port_write_flash_erase()
560 c2port_write_dr(dev, C2PORT_DEVICE_ERASE); in __c2port_write_flash_erase()
563 ret = c2port_poll_in_busy(dev); in __c2port_write_flash_erase()
570 ret = c2port_poll_out_ready(dev); in __c2port_write_flash_erase()
575 ret = c2port_read_dr(dev, &status); in __c2port_write_flash_erase()
586 c2port_write_dr(dev, 0xde); in __c2port_write_flash_erase()
587 ret = c2port_poll_in_busy(dev); in __c2port_write_flash_erase()
590 c2port_write_dr(dev, 0xad); in __c2port_write_flash_erase()
591 ret = c2port_poll_in_busy(dev); in __c2port_write_flash_erase()
594 c2port_write_dr(dev, 0xa5); in __c2port_write_flash_erase()
595 ret = c2port_poll_in_busy(dev); in __c2port_write_flash_erase()
599 ret = c2port_poll_out_ready(dev); in __c2port_write_flash_erase()
606 static ssize_t c2port_store_flash_erase(struct device *dev, in c2port_store_flash_erase() argument
610 struct c2port_device *c2dev = dev_get_drvdata(dev); in c2port_store_flash_erase()
622 dev_err(c2dev->dev, "cannot erase %s flash\n", c2dev->name); in c2port_store_flash_erase()
630 static ssize_t __c2port_read_flash_data(struct c2port_device *dev, in __c2port_read_flash_data() argument
633 struct c2port_ops *ops = dev->ops; in __c2port_read_flash_data()
650 c2port_write_ar(dev, C2PORT_FPDAT); in __c2port_read_flash_data()
653 c2port_write_dr(dev, C2PORT_BLOCK_READ); in __c2port_read_flash_data()
656 ret = c2port_poll_in_busy(dev); in __c2port_read_flash_data()
663 ret = c2port_poll_out_ready(dev); in __c2port_read_flash_data()
668 ret = c2port_read_dr(dev, &status); in __c2port_read_flash_data()
675 c2port_write_dr(dev, offset >> 8); in __c2port_read_flash_data()
676 ret = c2port_poll_in_busy(dev); in __c2port_read_flash_data()
681 c2port_write_dr(dev, offset & 0x00ff); in __c2port_read_flash_data()
682 ret = c2port_poll_in_busy(dev); in __c2port_read_flash_data()
687 c2port_write_dr(dev, nread); in __c2port_read_flash_data()
688 ret = c2port_poll_in_busy(dev); in __c2port_read_flash_data()
695 ret = c2port_poll_out_ready(dev); in __c2port_read_flash_data()
700 ret = c2port_read_dr(dev, &status); in __c2port_read_flash_data()
708 ret = c2port_poll_out_ready(dev); in __c2port_read_flash_data()
712 ret = c2port_read_dr(dev, buffer+i); in __c2port_read_flash_data()
738 dev_err(c2dev->dev, "cannot read %s flash\n", c2dev->name); in c2port_read_flash_data()
743 static ssize_t __c2port_write_flash_data(struct c2port_device *dev, in __c2port_write_flash_data() argument
746 struct c2port_ops *ops = dev->ops; in __c2port_write_flash_data()
761 c2port_write_ar(dev, C2PORT_FPDAT); in __c2port_write_flash_data()
764 c2port_write_dr(dev, C2PORT_BLOCK_WRITE); in __c2port_write_flash_data()
767 ret = c2port_poll_in_busy(dev); in __c2port_write_flash_data()
774 ret = c2port_poll_out_ready(dev); in __c2port_write_flash_data()
779 ret = c2port_read_dr(dev, &status); in __c2port_write_flash_data()
786 c2port_write_dr(dev, offset >> 8); in __c2port_write_flash_data()
787 ret = c2port_poll_in_busy(dev); in __c2port_write_flash_data()
792 c2port_write_dr(dev, offset & 0x00ff); in __c2port_write_flash_data()
793 ret = c2port_poll_in_busy(dev); in __c2port_write_flash_data()
798 c2port_write_dr(dev, nwrite); in __c2port_write_flash_data()
799 ret = c2port_poll_in_busy(dev); in __c2port_write_flash_data()
806 ret = c2port_poll_out_ready(dev); in __c2port_write_flash_data()
811 ret = c2port_read_dr(dev, &status); in __c2port_write_flash_data()
819 ret = c2port_write_dr(dev, *(buffer+i)); in __c2port_write_flash_data()
823 ret = c2port_poll_in_busy(dev); in __c2port_write_flash_data()
830 ret = c2port_poll_out_ready(dev); in __c2port_write_flash_data()
855 dev_err(c2dev->dev, "cannot write %s flash\n", c2dev->name); in c2port_write_flash_data()
927 c2dev->dev = device_create(c2port_class, NULL, 0, c2dev, in c2port_device_register()
929 if (unlikely(IS_ERR(c2dev->dev))) { in c2port_device_register()
930 ret = PTR_ERR(c2dev->dev); in c2port_device_register()
933 dev_set_drvdata(c2dev->dev, c2dev); in c2port_device_register()
943 dev_info(c2dev->dev, "C2 port %s added\n", name); in c2port_device_register()
944 dev_info(c2dev->dev, "%s flash has %d blocks x %d bytes " in c2port_device_register()
968 dev_info(c2dev->dev, "C2 port %s removed\n", c2dev->name); in c2port_device_unregister()