arch/arm64/kernel/signal.c
1327
char __user *sfp = (char __user *)user->sigframe;
arch/arm64/kernel/signal.c
1348
extra_size = sfp + round_up(user->size, 16) - userp;
arch/arm64/kernel/signal.c
762
char const __user *const sfp = (char const __user *)sf;
arch/arm64/kernel/signal.c
946
if (extra_size > sfp + SIGFRAME_MAXSZ - userp)
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
282
static void pvr2_sysfs_add_control(struct pvr2_sysfs *sfp,int ctl_id)
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
289
cptr = pvr2_hdw_get_ctrl_by_index(sfp->channel.hdw,ctl_id);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
299
cip->chptr = sfp;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
301
if (sfp->item_last) {
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
302
sfp->item_last->item_next = cip;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
304
sfp->item_first = cip;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
306
sfp->item_last = cip;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
391
ret = sysfs_create_group(&sfp->class_dev->kobj,&cip->grp);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
409
static void pvr2_sysfs_add_debugifc(struct pvr2_sysfs *sfp)
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
425
sfp->debugifc = dip;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
426
ret = device_create_file(sfp->class_dev,&dip->attr_debugcmd);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
434
ret = device_create_file(sfp->class_dev,&dip->attr_debuginfo);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
445
static void pvr2_sysfs_tear_down_debugifc(struct pvr2_sysfs *sfp)
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
447
if (!sfp->debugifc) return;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
448
if (sfp->debugifc->debuginfo_created_ok) {
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
449
device_remove_file(sfp->class_dev,
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
450
&sfp->debugifc->attr_debuginfo);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
452
if (sfp->debugifc->debugcmd_created_ok) {
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
453
device_remove_file(sfp->class_dev,
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
454
&sfp->debugifc->attr_debugcmd);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
456
kfree(sfp->debugifc);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
457
sfp->debugifc = NULL;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
462
static void pvr2_sysfs_add_controls(struct pvr2_sysfs *sfp)
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
465
cnt = pvr2_hdw_get_ctrl_count(sfp->channel.hdw);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
467
pvr2_sysfs_add_control(sfp,idx);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
472
static void pvr2_sysfs_tear_down_controls(struct pvr2_sysfs *sfp)
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
475
for (cip1 = sfp->item_first; cip1; cip1 = cip2) {
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
478
sysfs_remove_group(&sfp->class_dev->kobj,&cip1->grp);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
499
static void class_dev_destroy(struct pvr2_sysfs *sfp)
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
502
if (!sfp->class_dev) return;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
504
pvr2_sysfs_tear_down_debugifc(sfp);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
506
pvr2_sysfs_tear_down_controls(sfp);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
507
if (sfp->hdw_desc_created_ok) {
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
508
device_remove_file(sfp->class_dev,
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
509
&sfp->attr_hdw_desc);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
511
if (sfp->hdw_name_created_ok) {
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
512
device_remove_file(sfp->class_dev,
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
513
&sfp->attr_hdw_name);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
515
if (sfp->bus_info_created_ok) {
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
516
device_remove_file(sfp->class_dev,
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
517
&sfp->attr_bus_info);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
519
if (sfp->v4l_minor_number_created_ok) {
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
520
device_remove_file(sfp->class_dev,
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
521
&sfp->attr_v4l_minor_number);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
523
if (sfp->v4l_radio_minor_number_created_ok) {
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
524
device_remove_file(sfp->class_dev,
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
525
&sfp->attr_v4l_radio_minor_number);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
527
if (sfp->unit_number_created_ok) {
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
528
device_remove_file(sfp->class_dev,
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
529
&sfp->attr_unit_number);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
531
pvr2_sysfs_trace("Destroying class_dev id=%p",sfp->class_dev);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
532
dev_set_drvdata(sfp->class_dev, NULL);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
533
dev = sfp->class_dev->parent;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
534
sfp->class_dev->parent = NULL;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
536
device_unregister(sfp->class_dev);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
537
sfp->class_dev = NULL;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
544
struct pvr2_sysfs *sfp;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
545
sfp = dev_get_drvdata(class_dev);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
546
if (!sfp) return -EINVAL;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
548
pvr2_hdw_v4l_get_minor_number(sfp->channel.hdw,
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
556
struct pvr2_sysfs *sfp;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
557
sfp = dev_get_drvdata(class_dev);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
558
if (!sfp) return -EINVAL;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
560
pvr2_hdw_get_bus_info(sfp->channel.hdw));
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
567
struct pvr2_sysfs *sfp;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
568
sfp = dev_get_drvdata(class_dev);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
569
if (!sfp) return -EINVAL;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
571
pvr2_hdw_get_type(sfp->channel.hdw));
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
578
struct pvr2_sysfs *sfp;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
579
sfp = dev_get_drvdata(class_dev);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
580
if (!sfp) return -EINVAL;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
582
pvr2_hdw_get_desc(sfp->channel.hdw));
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
590
struct pvr2_sysfs *sfp;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
591
sfp = dev_get_drvdata(class_dev);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
592
if (!sfp) return -EINVAL;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
594
pvr2_hdw_v4l_get_minor_number(sfp->channel.hdw,
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
602
struct pvr2_sysfs *sfp;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
603
sfp = dev_get_drvdata(class_dev);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
604
if (!sfp) return -EINVAL;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
606
pvr2_hdw_get_unit_number(sfp->channel.hdw));
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
610
static void class_dev_create(struct pvr2_sysfs *sfp)
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
616
usb_dev = pvr2_hdw_get_dev(sfp->channel.hdw);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
626
pvr2_hdw_get_device_identifier(sfp->channel.hdw));
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
630
sfp->class_dev = class_dev;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
631
dev_set_drvdata(class_dev, sfp);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
640
sysfs_attr_init(&sfp->attr_v4l_minor_number.attr);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
641
sfp->attr_v4l_minor_number.attr.name = "v4l_minor_number";
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
642
sfp->attr_v4l_minor_number.attr.mode = S_IRUGO;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
643
sfp->attr_v4l_minor_number.show = v4l_minor_number_show;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
644
sfp->attr_v4l_minor_number.store = NULL;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
645
ret = device_create_file(sfp->class_dev,
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
646
&sfp->attr_v4l_minor_number);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
652
sfp->v4l_minor_number_created_ok = !0;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
655
sysfs_attr_init(&sfp->attr_v4l_radio_minor_number.attr);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
656
sfp->attr_v4l_radio_minor_number.attr.name = "v4l_radio_minor_number";
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
657
sfp->attr_v4l_radio_minor_number.attr.mode = S_IRUGO;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
658
sfp->attr_v4l_radio_minor_number.show = v4l_radio_minor_number_show;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
659
sfp->attr_v4l_radio_minor_number.store = NULL;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
660
ret = device_create_file(sfp->class_dev,
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
661
&sfp->attr_v4l_radio_minor_number);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
667
sfp->v4l_radio_minor_number_created_ok = !0;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
670
sysfs_attr_init(&sfp->attr_unit_number.attr);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
671
sfp->attr_unit_number.attr.name = "unit_number";
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
672
sfp->attr_unit_number.attr.mode = S_IRUGO;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
673
sfp->attr_unit_number.show = unit_number_show;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
674
sfp->attr_unit_number.store = NULL;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
675
ret = device_create_file(sfp->class_dev,&sfp->attr_unit_number);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
681
sfp->unit_number_created_ok = !0;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
684
sysfs_attr_init(&sfp->attr_bus_info.attr);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
685
sfp->attr_bus_info.attr.name = "bus_info_str";
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
686
sfp->attr_bus_info.attr.mode = S_IRUGO;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
687
sfp->attr_bus_info.show = bus_info_show;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
688
sfp->attr_bus_info.store = NULL;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
689
ret = device_create_file(sfp->class_dev,
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
690
&sfp->attr_bus_info);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
696
sfp->bus_info_created_ok = !0;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
699
sysfs_attr_init(&sfp->attr_hdw_name.attr);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
700
sfp->attr_hdw_name.attr.name = "device_hardware_type";
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
701
sfp->attr_hdw_name.attr.mode = S_IRUGO;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
702
sfp->attr_hdw_name.show = hdw_name_show;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
703
sfp->attr_hdw_name.store = NULL;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
704
ret = device_create_file(sfp->class_dev,
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
705
&sfp->attr_hdw_name);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
711
sfp->hdw_name_created_ok = !0;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
714
sysfs_attr_init(&sfp->attr_hdw_desc.attr);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
715
sfp->attr_hdw_desc.attr.name = "device_hardware_description";
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
716
sfp->attr_hdw_desc.attr.mode = S_IRUGO;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
717
sfp->attr_hdw_desc.show = hdw_desc_show;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
718
sfp->attr_hdw_desc.store = NULL;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
719
ret = device_create_file(sfp->class_dev,
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
720
&sfp->attr_hdw_desc);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
726
sfp->hdw_desc_created_ok = !0;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
729
pvr2_sysfs_add_controls(sfp);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
731
pvr2_sysfs_add_debugifc(sfp);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
738
struct pvr2_sysfs *sfp;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
739
sfp = container_of(chp,struct pvr2_sysfs,channel);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
740
if (!sfp->channel.mc_head->disconnect_flag) return;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
741
pvr2_trace(PVR2_TRACE_STRUCT,"Destroying pvr2_sysfs id=%p",sfp);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
742
class_dev_destroy(sfp);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
743
pvr2_channel_done(&sfp->channel);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
744
kfree(sfp);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
750
struct pvr2_sysfs *sfp;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
751
sfp = kzalloc_obj(*sfp);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
752
if (!sfp)
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
754
pvr2_trace(PVR2_TRACE_STRUCT,"Creating pvr2_sysfs id=%p",sfp);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
755
pvr2_channel_init(&sfp->channel,mp);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
756
sfp->channel.check_func = pvr2_sysfs_internal_check;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
758
class_dev_create(sfp);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
779
struct pvr2_sysfs *sfp;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
780
sfp = dev_get_drvdata(class_dev);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
781
if (!sfp) return -EINVAL;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
782
pvr2_hdw_trigger_module_log(sfp->channel.hdw);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
783
return pvr2_debugifc_print_info(sfp->channel.hdw,buf,PAGE_SIZE);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
790
struct pvr2_sysfs *sfp;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
791
sfp = dev_get_drvdata(class_dev);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
792
if (!sfp) return -EINVAL;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
793
return pvr2_debugifc_print_status(sfp->channel.hdw,buf,PAGE_SIZE);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
801
struct pvr2_sysfs *sfp;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
804
sfp = dev_get_drvdata(class_dev);
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
805
if (!sfp) return -EINVAL;
drivers/media/usb/pvrusb2/pvrusb2-sysfs.c
807
ret = pvr2_debugifc_docmd(sfp->channel.hdw,buf,count);
drivers/net/phy/sfp-bus.c
24
struct sfp *sfp;
drivers/net/phy/sfp-bus.c
389
struct sfp_bus *sfp, *new, *found = NULL;
drivers/net/phy/sfp-bus.c
395
list_for_each_entry(sfp, &sfp_buses, node) {
drivers/net/phy/sfp-bus.c
396
if (sfp->fwnode == fwnode) {
drivers/net/phy/sfp-bus.c
397
kref_get(&sfp->kref);
drivers/net/phy/sfp-bus.c
398
found = sfp;
drivers/net/phy/sfp-bus.c
456
bus->socket_ops->attach(bus->sfp);
drivers/net/phy/sfp-bus.c
458
bus->socket_ops->start(bus->sfp);
drivers/net/phy/sfp-bus.c
470
bus->socket_ops->stop(bus->sfp);
drivers/net/phy/sfp-bus.c
471
bus->socket_ops->detach(bus->sfp);
drivers/net/phy/sfp-bus.c
490
return bus->socket_ops->module_info(bus->sfp, modinfo);
drivers/net/phy/sfp-bus.c
508
return bus->socket_ops->module_eeprom(bus->sfp, ee, data);
drivers/net/phy/sfp-bus.c
528
return bus->socket_ops->module_eeprom_by_page(bus->sfp, page, extack);
drivers/net/phy/sfp-bus.c
544
bus->socket_ops->start(bus->sfp);
drivers/net/phy/sfp-bus.c
561
bus->socket_ops->stop(bus->sfp);
drivers/net/phy/sfp-bus.c
588
bus->socket_ops->set_signal_rate(bus->sfp, rate_kbd);
drivers/net/phy/sfp-bus.c
671
if (bus->sfp) {
drivers/net/phy/sfp-bus.c
698
if (bus->sfp)
drivers/net/phy/sfp-bus.c
822
bus->sfp = NULL;
drivers/net/phy/sfp-bus.c
826
struct sfp_bus *sfp_register_socket(struct device *dev, struct sfp *sfp,
drivers/net/phy/sfp-bus.c
835
bus->sfp = sfp;
drivers/net/phy/sfp.c
1003
const struct sfp *sfp = data;
drivers/net/phy/sfp.c
1016
if (!(sfp->id.ext.enhopts & SFP_ENHOPTS_ALARMWARN))
drivers/net/phy/sfp.c
1035
if (!(sfp->id.ext.enhopts & SFP_ENHOPTS_ALARMWARN))
drivers/net/phy/sfp.c
1054
if (!(sfp->id.ext.enhopts & SFP_ENHOPTS_ALARMWARN))
drivers/net/phy/sfp.c
1070
if (sfp->id.ext.diagmon & SFP_DIAGMON_EXT_CAL &&
drivers/net/phy/sfp.c
1082
if (!(sfp->id.ext.enhopts & SFP_ENHOPTS_ALARMWARN))
drivers/net/phy/sfp.c
1096
static int sfp_hwmon_read_sensor(struct sfp *sfp, int reg, long *value)
drivers/net/phy/sfp.c
1101
err = sfp_read(sfp, true, reg, &val, sizeof(val));
drivers/net/phy/sfp.c
1115
static void sfp_hwmon_calibrate(struct sfp *sfp, unsigned int slope, int offset,
drivers/net/phy/sfp.c
1118
if (sfp->id.ext.diagmon & SFP_DIAGMON_EXT_CAL)
drivers/net/phy/sfp.c
1122
static void sfp_hwmon_calibrate_temp(struct sfp *sfp, long *value)
drivers/net/phy/sfp.c
1124
sfp_hwmon_calibrate(sfp, be16_to_cpu(sfp->diag.cal_t_slope),
drivers/net/phy/sfp.c
1125
be16_to_cpu(sfp->diag.cal_t_offset), value);
drivers/net/phy/sfp.c
1133
static void sfp_hwmon_calibrate_vcc(struct sfp *sfp, long *value)
drivers/net/phy/sfp.c
1135
sfp_hwmon_calibrate(sfp, be16_to_cpu(sfp->diag.cal_v_slope),
drivers/net/phy/sfp.c
1136
be16_to_cpu(sfp->diag.cal_v_offset), value);
drivers/net/phy/sfp.c
1141
static void sfp_hwmon_calibrate_bias(struct sfp *sfp, long *value)
drivers/net/phy/sfp.c
1143
sfp_hwmon_calibrate(sfp, be16_to_cpu(sfp->diag.cal_txi_slope),
drivers/net/phy/sfp.c
1144
be16_to_cpu(sfp->diag.cal_txi_offset), value);
drivers/net/phy/sfp.c
1149
static void sfp_hwmon_calibrate_tx_power(struct sfp *sfp, long *value)
drivers/net/phy/sfp.c
1151
sfp_hwmon_calibrate(sfp, be16_to_cpu(sfp->diag.cal_txpwr_slope),
drivers/net/phy/sfp.c
1152
be16_to_cpu(sfp->diag.cal_txpwr_offset), value);
drivers/net/phy/sfp.c
1157
static int sfp_hwmon_read_temp(struct sfp *sfp, int reg, long *value)
drivers/net/phy/sfp.c
1161
err = sfp_hwmon_read_sensor(sfp, reg, value);
drivers/net/phy/sfp.c
1165
sfp_hwmon_calibrate_temp(sfp, value);
drivers/net/phy/sfp.c
1170
static int sfp_hwmon_read_vcc(struct sfp *sfp, int reg, long *value)
drivers/net/phy/sfp.c
1174
err = sfp_hwmon_read_sensor(sfp, reg, value);
drivers/net/phy/sfp.c
1178
sfp_hwmon_calibrate_vcc(sfp, value);
drivers/net/phy/sfp.c
1183
static int sfp_hwmon_read_bias(struct sfp *sfp, int reg, long *value)
drivers/net/phy/sfp.c
1187
err = sfp_hwmon_read_sensor(sfp, reg, value);
drivers/net/phy/sfp.c
1191
sfp_hwmon_calibrate_bias(sfp, value);
drivers/net/phy/sfp.c
1196
static int sfp_hwmon_read_tx_power(struct sfp *sfp, int reg, long *value)
drivers/net/phy/sfp.c
1200
err = sfp_hwmon_read_sensor(sfp, reg, value);
drivers/net/phy/sfp.c
1204
sfp_hwmon_calibrate_tx_power(sfp, value);
drivers/net/phy/sfp.c
1209
static int sfp_hwmon_read_rx_power(struct sfp *sfp, int reg, long *value)
drivers/net/phy/sfp.c
1213
err = sfp_hwmon_read_sensor(sfp, reg, value);
drivers/net/phy/sfp.c
1222
static int sfp_hwmon_temp(struct sfp *sfp, u32 attr, long *value)
drivers/net/phy/sfp.c
1229
return sfp_hwmon_read_temp(sfp, SFP_TEMP, value);
drivers/net/phy/sfp.c
1232
*value = be16_to_cpu(sfp->diag.temp_low_alarm);
drivers/net/phy/sfp.c
1233
sfp_hwmon_calibrate_temp(sfp, value);
drivers/net/phy/sfp.c
1237
*value = be16_to_cpu(sfp->diag.temp_low_warn);
drivers/net/phy/sfp.c
1238
sfp_hwmon_calibrate_temp(sfp, value);
drivers/net/phy/sfp.c
1241
*value = be16_to_cpu(sfp->diag.temp_high_warn);
drivers/net/phy/sfp.c
1242
sfp_hwmon_calibrate_temp(sfp, value);
drivers/net/phy/sfp.c
1246
*value = be16_to_cpu(sfp->diag.temp_high_alarm);
drivers/net/phy/sfp.c
1247
sfp_hwmon_calibrate_temp(sfp, value);
drivers/net/phy/sfp.c
1251
err = sfp_read(sfp, true, SFP_ALARM0, &status, sizeof(status));
drivers/net/phy/sfp.c
1259
err = sfp_read(sfp, true, SFP_WARN0, &status, sizeof(status));
drivers/net/phy/sfp.c
1267
err = sfp_read(sfp, true, SFP_WARN0, &status, sizeof(status));
drivers/net/phy/sfp.c
1275
err = sfp_read(sfp, true, SFP_ALARM0, &status, sizeof(status));
drivers/net/phy/sfp.c
1288
static int sfp_hwmon_vcc(struct sfp *sfp, u32 attr, long *value)
drivers/net/phy/sfp.c
1295
return sfp_hwmon_read_vcc(sfp, SFP_VCC, value);
drivers/net/phy/sfp.c
1298
*value = be16_to_cpu(sfp->diag.volt_low_alarm);
drivers/net/phy/sfp.c
1299
sfp_hwmon_calibrate_vcc(sfp, value);
drivers/net/phy/sfp.c
1303
*value = be16_to_cpu(sfp->diag.volt_low_warn);
drivers/net/phy/sfp.c
1304
sfp_hwmon_calibrate_vcc(sfp, value);
drivers/net/phy/sfp.c
1308
*value = be16_to_cpu(sfp->diag.volt_high_warn);
drivers/net/phy/sfp.c
1309
sfp_hwmon_calibrate_vcc(sfp, value);
drivers/net/phy/sfp.c
1313
*value = be16_to_cpu(sfp->diag.volt_high_alarm);
drivers/net/phy/sfp.c
1314
sfp_hwmon_calibrate_vcc(sfp, value);
drivers/net/phy/sfp.c
1318
err = sfp_read(sfp, true, SFP_ALARM0, &status, sizeof(status));
drivers/net/phy/sfp.c
1326
err = sfp_read(sfp, true, SFP_WARN0, &status, sizeof(status));
drivers/net/phy/sfp.c
1334
err = sfp_read(sfp, true, SFP_WARN0, &status, sizeof(status));
drivers/net/phy/sfp.c
1342
err = sfp_read(sfp, true, SFP_ALARM0, &status, sizeof(status));
drivers/net/phy/sfp.c
1355
static int sfp_hwmon_bias(struct sfp *sfp, u32 attr, long *value)
drivers/net/phy/sfp.c
1362
return sfp_hwmon_read_bias(sfp, SFP_TX_BIAS, value);
drivers/net/phy/sfp.c
1365
*value = be16_to_cpu(sfp->diag.bias_low_alarm);
drivers/net/phy/sfp.c
1366
sfp_hwmon_calibrate_bias(sfp, value);
drivers/net/phy/sfp.c
1370
*value = be16_to_cpu(sfp->diag.bias_low_warn);
drivers/net/phy/sfp.c
1371
sfp_hwmon_calibrate_bias(sfp, value);
drivers/net/phy/sfp.c
1375
*value = be16_to_cpu(sfp->diag.bias_high_warn);
drivers/net/phy/sfp.c
1376
sfp_hwmon_calibrate_bias(sfp, value);
drivers/net/phy/sfp.c
1380
*value = be16_to_cpu(sfp->diag.bias_high_alarm);
drivers/net/phy/sfp.c
1381
sfp_hwmon_calibrate_bias(sfp, value);
drivers/net/phy/sfp.c
1385
err = sfp_read(sfp, true, SFP_ALARM0, &status, sizeof(status));
drivers/net/phy/sfp.c
1393
err = sfp_read(sfp, true, SFP_WARN0, &status, sizeof(status));
drivers/net/phy/sfp.c
1401
err = sfp_read(sfp, true, SFP_WARN0, &status, sizeof(status));
drivers/net/phy/sfp.c
1409
err = sfp_read(sfp, true, SFP_ALARM0, &status, sizeof(status));
drivers/net/phy/sfp.c
1422
static int sfp_hwmon_tx_power(struct sfp *sfp, u32 attr, long *value)
drivers/net/phy/sfp.c
1429
return sfp_hwmon_read_tx_power(sfp, SFP_TX_POWER, value);
drivers/net/phy/sfp.c
1432
*value = be16_to_cpu(sfp->diag.txpwr_low_alarm);
drivers/net/phy/sfp.c
1433
sfp_hwmon_calibrate_tx_power(sfp, value);
drivers/net/phy/sfp.c
1437
*value = be16_to_cpu(sfp->diag.txpwr_low_warn);
drivers/net/phy/sfp.c
1438
sfp_hwmon_calibrate_tx_power(sfp, value);
drivers/net/phy/sfp.c
1442
*value = be16_to_cpu(sfp->diag.txpwr_high_warn);
drivers/net/phy/sfp.c
1443
sfp_hwmon_calibrate_tx_power(sfp, value);
drivers/net/phy/sfp.c
1447
*value = be16_to_cpu(sfp->diag.txpwr_high_alarm);
drivers/net/phy/sfp.c
1448
sfp_hwmon_calibrate_tx_power(sfp, value);
drivers/net/phy/sfp.c
1452
err = sfp_read(sfp, true, SFP_ALARM0, &status, sizeof(status));
drivers/net/phy/sfp.c
1460
err = sfp_read(sfp, true, SFP_WARN0, &status, sizeof(status));
drivers/net/phy/sfp.c
1468
err = sfp_read(sfp, true, SFP_WARN0, &status, sizeof(status));
drivers/net/phy/sfp.c
1476
err = sfp_read(sfp, true, SFP_ALARM0, &status, sizeof(status));
drivers/net/phy/sfp.c
1489
static int sfp_hwmon_rx_power(struct sfp *sfp, u32 attr, long *value)
drivers/net/phy/sfp.c
1496
return sfp_hwmon_read_rx_power(sfp, SFP_RX_POWER, value);
drivers/net/phy/sfp.c
1499
*value = be16_to_cpu(sfp->diag.rxpwr_low_alarm);
drivers/net/phy/sfp.c
1504
*value = be16_to_cpu(sfp->diag.rxpwr_low_warn);
drivers/net/phy/sfp.c
1509
*value = be16_to_cpu(sfp->diag.rxpwr_high_warn);
drivers/net/phy/sfp.c
1514
*value = be16_to_cpu(sfp->diag.rxpwr_high_alarm);
drivers/net/phy/sfp.c
1519
err = sfp_read(sfp, true, SFP_ALARM1, &status, sizeof(status));
drivers/net/phy/sfp.c
1527
err = sfp_read(sfp, true, SFP_WARN1, &status, sizeof(status));
drivers/net/phy/sfp.c
1535
err = sfp_read(sfp, true, SFP_WARN1, &status, sizeof(status));
drivers/net/phy/sfp.c
1543
err = sfp_read(sfp, true, SFP_ALARM1, &status, sizeof(status));
drivers/net/phy/sfp.c
1559
struct sfp *sfp = dev_get_drvdata(dev);
drivers/net/phy/sfp.c
1563
return sfp_hwmon_temp(sfp, attr, value);
drivers/net/phy/sfp.c
1565
return sfp_hwmon_vcc(sfp, attr, value);
drivers/net/phy/sfp.c
1567
return sfp_hwmon_bias(sfp, attr, value);
drivers/net/phy/sfp.c
1571
return sfp_hwmon_tx_power(sfp, attr, value);
drivers/net/phy/sfp.c
1573
return sfp_hwmon_rx_power(sfp, attr, value);
drivers/net/phy/sfp.c
1690
struct sfp *sfp = container_of(work, struct sfp, hwmon_probe.work);
drivers/net/phy/sfp.c
1699
if (sfp->i2c_block_size < 2) {
drivers/net/phy/sfp.c
1700
dev_info(sfp->dev,
drivers/net/phy/sfp.c
1702
dev_info(sfp->dev,
drivers/net/phy/sfp.c
1707
err = sfp_read(sfp, true, 0, &sfp->diag, sizeof(sfp->diag));
drivers/net/phy/sfp.c
1709
if (sfp->hwmon_tries--) {
drivers/net/phy/sfp.c
1710
mod_delayed_work(system_percpu_wq, &sfp->hwmon_probe,
drivers/net/phy/sfp.c
1713
dev_warn(sfp->dev, "hwmon probe failed: %pe\n",
drivers/net/phy/sfp.c
1719
sfp->hwmon_name = hwmon_sanitize_name(dev_name(sfp->dev));
drivers/net/phy/sfp.c
1720
if (IS_ERR(sfp->hwmon_name)) {
drivers/net/phy/sfp.c
1721
dev_err(sfp->dev, "out of memory for hwmon name\n");
drivers/net/phy/sfp.c
1725
sfp->hwmon_dev = hwmon_device_register_with_info(sfp->dev,
drivers/net/phy/sfp.c
1726
sfp->hwmon_name, sfp,
drivers/net/phy/sfp.c
1729
if (IS_ERR(sfp->hwmon_dev))
drivers/net/phy/sfp.c
1730
dev_err(sfp->dev, "failed to register hwmon device: %ld\n",
drivers/net/phy/sfp.c
1731
PTR_ERR(sfp->hwmon_dev));
drivers/net/phy/sfp.c
1734
static int sfp_hwmon_insert(struct sfp *sfp)
drivers/net/phy/sfp.c
1736
if (sfp->have_a2 && sfp->id.ext.diagmon & SFP_DIAGMON_DDM) {
drivers/net/phy/sfp.c
1737
mod_delayed_work(system_percpu_wq, &sfp->hwmon_probe, 1);
drivers/net/phy/sfp.c
1738
sfp->hwmon_tries = R_PROBE_RETRY_SLOW;
drivers/net/phy/sfp.c
1744
static void sfp_hwmon_remove(struct sfp *sfp)
drivers/net/phy/sfp.c
1746
cancel_delayed_work_sync(&sfp->hwmon_probe);
drivers/net/phy/sfp.c
1747
if (!IS_ERR_OR_NULL(sfp->hwmon_dev)) {
drivers/net/phy/sfp.c
1748
hwmon_device_unregister(sfp->hwmon_dev);
drivers/net/phy/sfp.c
1749
sfp->hwmon_dev = NULL;
drivers/net/phy/sfp.c
1750
kfree(sfp->hwmon_name);
drivers/net/phy/sfp.c
1754
static int sfp_hwmon_init(struct sfp *sfp)
drivers/net/phy/sfp.c
1756
INIT_DELAYED_WORK(&sfp->hwmon_probe, sfp_hwmon_probe);
drivers/net/phy/sfp.c
1761
static void sfp_hwmon_exit(struct sfp *sfp)
drivers/net/phy/sfp.c
1763
cancel_delayed_work_sync(&sfp->hwmon_probe);
drivers/net/phy/sfp.c
1766
static int sfp_hwmon_insert(struct sfp *sfp)
drivers/net/phy/sfp.c
1771
static void sfp_hwmon_remove(struct sfp *sfp)
drivers/net/phy/sfp.c
1775
static int sfp_hwmon_init(struct sfp *sfp)
drivers/net/phy/sfp.c
1780
static void sfp_hwmon_exit(struct sfp *sfp)
drivers/net/phy/sfp.c
1786
static void sfp_module_tx_disable(struct sfp *sfp)
drivers/net/phy/sfp.c
1788
dev_dbg(sfp->dev, "tx disable %u -> %u\n",
drivers/net/phy/sfp.c
1789
sfp->state & SFP_F_TX_DISABLE ? 1 : 0, 1);
drivers/net/phy/sfp.c
1790
sfp_mod_state(sfp, SFP_F_TX_DISABLE, SFP_F_TX_DISABLE);
drivers/net/phy/sfp.c
1793
static void sfp_module_tx_enable(struct sfp *sfp)
drivers/net/phy/sfp.c
1795
dev_dbg(sfp->dev, "tx disable %u -> %u\n",
drivers/net/phy/sfp.c
1796
sfp->state & SFP_F_TX_DISABLE ? 1 : 0, 0);
drivers/net/phy/sfp.c
1797
sfp_mod_state(sfp, SFP_F_TX_DISABLE, 0);
drivers/net/phy/sfp.c
1803
struct sfp *sfp = s->private;
drivers/net/phy/sfp.c
1806
mod_state_to_str(sfp->sm_mod_state));
drivers/net/phy/sfp.c
1808
R_PROBE_RETRY_INIT - sfp->sm_mod_tries_init,
drivers/net/phy/sfp.c
1809
R_PROBE_RETRY_SLOW - sfp->sm_mod_tries);
drivers/net/phy/sfp.c
1811
dev_state_to_str(sfp->sm_dev_state));
drivers/net/phy/sfp.c
1813
sm_state_to_str(sfp->sm_state));
drivers/net/phy/sfp.c
1815
sfp->sm_fault_retries);
drivers/net/phy/sfp.c
1817
sfp->sm_phy_retries);
drivers/net/phy/sfp.c
1818
seq_printf(s, "Signalling rate: %u kBd\n", sfp->rate_kbd);
drivers/net/phy/sfp.c
1820
sfp->rs_threshold_kbd);
drivers/net/phy/sfp.c
1821
seq_printf(s, "moddef0: %d\n", !!(sfp->state & SFP_F_PRESENT));
drivers/net/phy/sfp.c
1822
seq_printf(s, "rx_los: %d\n", !!(sfp->state & SFP_F_LOS));
drivers/net/phy/sfp.c
1823
seq_printf(s, "tx_fault: %d\n", !!(sfp->state & SFP_F_TX_FAULT));
drivers/net/phy/sfp.c
1824
seq_printf(s, "tx_disable: %d\n", !!(sfp->state & SFP_F_TX_DISABLE));
drivers/net/phy/sfp.c
1825
seq_printf(s, "rs0: %d\n", !!(sfp->state & SFP_F_RS0));
drivers/net/phy/sfp.c
1826
seq_printf(s, "rs1: %d\n", !!(sfp->state & SFP_F_RS1));
drivers/net/phy/sfp.c
1831
static void sfp_debugfs_init(struct sfp *sfp)
drivers/net/phy/sfp.c
1833
sfp->debugfs_dir = debugfs_create_dir(dev_name(sfp->dev), NULL);
drivers/net/phy/sfp.c
1835
debugfs_create_file("state", 0600, sfp->debugfs_dir, sfp,
drivers/net/phy/sfp.c
1839
static void sfp_debugfs_exit(struct sfp *sfp)
drivers/net/phy/sfp.c
1841
debugfs_remove_recursive(sfp->debugfs_dir);
drivers/net/phy/sfp.c
1844
static void sfp_debugfs_init(struct sfp *sfp)
drivers/net/phy/sfp.c
1848
static void sfp_debugfs_exit(struct sfp *sfp)
drivers/net/phy/sfp.c
1853
static void sfp_module_tx_fault_reset(struct sfp *sfp)
drivers/net/phy/sfp.c
1857
mutex_lock(&sfp->st_mutex);
drivers/net/phy/sfp.c
1858
state = sfp->state;
drivers/net/phy/sfp.c
1860
sfp_set_state(sfp, state | SFP_F_TX_DISABLE);
drivers/net/phy/sfp.c
1864
sfp_set_state(sfp, state);
drivers/net/phy/sfp.c
1866
mutex_unlock(&sfp->st_mutex);
drivers/net/phy/sfp.c
1870
static void sfp_sm_set_timer(struct sfp *sfp, unsigned int timeout)
drivers/net/phy/sfp.c
1873
mod_delayed_work(system_power_efficient_wq, &sfp->timeout,
drivers/net/phy/sfp.c
1876
cancel_delayed_work(&sfp->timeout);
drivers/net/phy/sfp.c
1879
static void sfp_sm_next(struct sfp *sfp, unsigned int state,
drivers/net/phy/sfp.c
1882
sfp->sm_state = state;
drivers/net/phy/sfp.c
1883
sfp_sm_set_timer(sfp, timeout);
drivers/net/phy/sfp.c
1886
static void sfp_sm_mod_next(struct sfp *sfp, unsigned int state,
drivers/net/phy/sfp.c
1889
sfp->sm_mod_state = state;
drivers/net/phy/sfp.c
1890
sfp_sm_set_timer(sfp, timeout);
drivers/net/phy/sfp.c
1893
static void sfp_sm_phy_detach(struct sfp *sfp)
drivers/net/phy/sfp.c
1895
sfp_remove_phy(sfp->sfp_bus);
drivers/net/phy/sfp.c
1896
phy_device_remove(sfp->mod_phy);
drivers/net/phy/sfp.c
1897
phy_device_free(sfp->mod_phy);
drivers/net/phy/sfp.c
1898
sfp->mod_phy = NULL;
drivers/net/phy/sfp.c
1901
static int sfp_sm_probe_phy(struct sfp *sfp, int addr, bool is_c45)
drivers/net/phy/sfp.c
1906
phy = get_phy_device(sfp->i2c_mii, addr, is_c45);
drivers/net/phy/sfp.c
1910
dev_err(sfp->dev, "mdiobus scan returned %pe\n", phy);
drivers/net/phy/sfp.c
1920
dev_err(sfp->dev, "phy_device_register failed: %pe\n",
drivers/net/phy/sfp.c
1925
err = sfp_add_phy(sfp->sfp_bus, phy);
drivers/net/phy/sfp.c
1929
dev_err(sfp->dev, "sfp_add_phy failed: %pe\n", ERR_PTR(err));
drivers/net/phy/sfp.c
1933
sfp->mod_phy = phy;
drivers/net/phy/sfp.c
1938
static void sfp_sm_link_up(struct sfp *sfp)
drivers/net/phy/sfp.c
1940
sfp_link_up(sfp->sfp_bus);
drivers/net/phy/sfp.c
1941
sfp_sm_next(sfp, SFP_S_LINK_UP, 0);
drivers/net/phy/sfp.c
1944
static void sfp_sm_link_down(struct sfp *sfp)
drivers/net/phy/sfp.c
1946
sfp_link_down(sfp->sfp_bus);
drivers/net/phy/sfp.c
1949
static void sfp_sm_link_check_los(struct sfp *sfp)
drivers/net/phy/sfp.c
1953
__be16 los_options = sfp->id.ext.options & (los_inverted | los_normal);
drivers/net/phy/sfp.c
1961
los = !(sfp->state & SFP_F_LOS);
drivers/net/phy/sfp.c
1963
los = !!(sfp->state & SFP_F_LOS);
drivers/net/phy/sfp.c
1966
sfp_sm_next(sfp, SFP_S_WAIT_LOS, 0);
drivers/net/phy/sfp.c
1968
sfp_sm_link_up(sfp);
drivers/net/phy/sfp.c
1971
static bool sfp_los_event_active(struct sfp *sfp, unsigned int event)
drivers/net/phy/sfp.c
1975
__be16 los_options = sfp->id.ext.options & (los_inverted | los_normal);
drivers/net/phy/sfp.c
1981
static bool sfp_los_event_inactive(struct sfp *sfp, unsigned int event)
drivers/net/phy/sfp.c
1985
__be16 los_options = sfp->id.ext.options & (los_inverted | los_normal);
drivers/net/phy/sfp.c
1991
static void sfp_sm_fault(struct sfp *sfp, unsigned int next_state, bool warn)
drivers/net/phy/sfp.c
1993
if (sfp->sm_fault_retries && !--sfp->sm_fault_retries) {
drivers/net/phy/sfp.c
1994
dev_err(sfp->dev,
drivers/net/phy/sfp.c
1996
sfp_sm_next(sfp, SFP_S_TX_DISABLE, 0);
drivers/net/phy/sfp.c
1999
dev_err(sfp->dev, "module transmit fault indicated\n");
drivers/net/phy/sfp.c
2001
sfp_sm_next(sfp, next_state, T_FAULT_RECOVER);
drivers/net/phy/sfp.c
2005
static int sfp_sm_add_mdio_bus(struct sfp *sfp)
drivers/net/phy/sfp.c
2007
if (sfp->mdio_protocol != MDIO_I2C_NONE)
drivers/net/phy/sfp.c
2008
return sfp_i2c_mdiobus_create(sfp);
drivers/net/phy/sfp.c
2024
static int sfp_sm_probe_for_phy(struct sfp *sfp)
drivers/net/phy/sfp.c
2028
switch (sfp->mdio_protocol) {
drivers/net/phy/sfp.c
2033
err = sfp_sm_probe_phy(sfp, SFP_PHY_ADDR, false);
drivers/net/phy/sfp.c
2037
err = sfp_sm_probe_phy(sfp, SFP_PHY_ADDR, true);
drivers/net/phy/sfp.c
2041
err = sfp_sm_probe_phy(sfp, SFP_PHY_ADDR_ROLLBALL, true);
drivers/net/phy/sfp.c
2048
static int sfp_module_parse_power(struct sfp *sfp)
drivers/net/phy/sfp.c
2053
if (sfp->id.ext.sff8472_compliance >= SFP_SFF8472_COMPLIANCE_REV10_2 &&
drivers/net/phy/sfp.c
2054
sfp->id.ext.options & cpu_to_be16(SFP_OPTIONS_POWER_DECL))
drivers/net/phy/sfp.c
2057
if (sfp->id.ext.sff8472_compliance >= SFP_SFF8472_COMPLIANCE_REV11_4 &&
drivers/net/phy/sfp.c
2058
sfp->id.ext.options & cpu_to_be16(SFP_OPTIONS_HIGH_POWER_LEVEL))
drivers/net/phy/sfp.c
2063
sfp->module_power_mW = power_mW;
drivers/net/phy/sfp.c
2067
supports_a2 = sfp->id.ext.sff8472_compliance !=
drivers/net/phy/sfp.c
2069
sfp->id.ext.diagmon & SFP_DIAGMON_DDM;
drivers/net/phy/sfp.c
2071
if (power_mW > sfp->max_power_mW) {
drivers/net/phy/sfp.c
2078
dev_err(sfp->dev,
drivers/net/phy/sfp.c
2083
dev_warn(sfp->dev,
drivers/net/phy/sfp.c
2102
if (sfp->id.ext.diagmon & SFP_DIAGMON_ADDRMODE) {
drivers/net/phy/sfp.c
2103
dev_warn(sfp->dev,
drivers/net/phy/sfp.c
2109
sfp->module_power_mW = power_mW;
drivers/net/phy/sfp.c
2114
static int sfp_sm_mod_hpower(struct sfp *sfp, bool enable)
drivers/net/phy/sfp.c
2118
err = sfp_modify_u8(sfp, true, SFP_EXT_STATUS,
drivers/net/phy/sfp.c
2122
dev_err(sfp->dev, "failed to %sable high power: %pe\n",
drivers/net/phy/sfp.c
2128
dev_info(sfp->dev, "Module switched to %u.%uW power level\n",
drivers/net/phy/sfp.c
2129
sfp->module_power_mW / 1000,
drivers/net/phy/sfp.c
2130
(sfp->module_power_mW / 100) % 10);
drivers/net/phy/sfp.c
2135
static void sfp_module_parse_rate_select(struct sfp *sfp)
drivers/net/phy/sfp.c
2139
sfp->rs_threshold_kbd = 0;
drivers/net/phy/sfp.c
2140
sfp->rs_state_mask = 0;
drivers/net/phy/sfp.c
2142
if (!(sfp->id.ext.options & cpu_to_be16(SFP_OPTIONS_RATE_SELECT)))
drivers/net/phy/sfp.c
2152
sfp->rs_state_mask = SFP_F_RS0;
drivers/net/phy/sfp.c
2153
sfp->rs_threshold_kbd = 1594;
drivers/net/phy/sfp.c
2163
rate_id = sfp->id.base.rate_id;
drivers/net/phy/sfp.c
2172
if (sfp->id.ext.sff8472_compliance >= SFP_SFF8472_COMPLIANCE_REV10_2 &&
drivers/net/phy/sfp.c
2173
sfp->id.ext.sff8472_compliance < SFP_SFF8472_COMPLIANCE_REV11_0 &&
drivers/net/phy/sfp.c
2182
if (!(sfp->id.ext.enhopts & SFP_ENHOPTS_APP_SELECT_SFF8079)) {
drivers/net/phy/sfp.c
2188
sfp->rs_threshold_kbd = 2125 - 1;
drivers/net/phy/sfp.c
2189
sfp->rs_state_mask = SFP_F_RS0;
drivers/net/phy/sfp.c
2195
if (sfp->id.ext.sff8472_compliance <= SFP_SFF8472_COMPLIANCE_REV9_5)
drivers/net/phy/sfp.c
2203
sfp->rs_threshold_kbd = 4250;
drivers/net/phy/sfp.c
2204
sfp->rs_state_mask = SFP_F_RS0;
drivers/net/phy/sfp.c
2208
sfp->rs_threshold_kbd = 4250;
drivers/net/phy/sfp.c
2209
sfp->rs_state_mask = SFP_F_RS1;
drivers/net/phy/sfp.c
2213
sfp->rs_threshold_kbd = 4250;
drivers/net/phy/sfp.c
2214
sfp->rs_state_mask = SFP_F_RS0 | SFP_F_RS1;
drivers/net/phy/sfp.c
2218
sfp->rs_threshold_kbd = 9000;
drivers/net/phy/sfp.c
2219
sfp->rs_state_mask = SFP_F_RS0 | SFP_F_RS1;
drivers/net/phy/sfp.c
2235
static bool sfp_id_needs_byte_io(struct sfp *sfp, void *buf, size_t len)
drivers/net/phy/sfp.c
2237
size_t i, block_size = sfp->i2c_block_size;
drivers/net/phy/sfp.c
2250
static int sfp_cotsworks_fixup_check(struct sfp *sfp, struct sfp_eeprom_id *id)
drivers/net/phy/sfp.c
2258
dev_warn(sfp->dev, "Rewriting fiber module EEPROM with corrected values\n");
drivers/net/phy/sfp.c
2262
err = sfp_write(sfp, false, SFP_PHYS_ID, &id->base, 3);
drivers/net/phy/sfp.c
2264
dev_err(sfp->dev,
drivers/net/phy/sfp.c
2275
err = sfp_write(sfp, false, SFP_CC_BASE, &check, 1);
drivers/net/phy/sfp.c
2277
dev_err(sfp->dev,
drivers/net/phy/sfp.c
2286
static int sfp_module_parse_sff8472(struct sfp *sfp)
drivers/net/phy/sfp.c
2289
if (sfp->id.ext.diagmon & SFP_DIAGMON_ADDRMODE)
drivers/net/phy/sfp.c
2290
dev_warn(sfp->dev,
drivers/net/phy/sfp.c
2293
sfp->have_a2 = true;
drivers/net/phy/sfp.c
2298
static int sfp_sm_mod_probe(struct sfp *sfp, bool report)
drivers/net/phy/sfp.c
2308
sfp->i2c_block_size = sfp->i2c_max_block_size;
drivers/net/phy/sfp.c
2310
ret = sfp_read(sfp, false, 0, &id.base, sizeof(id.base));
drivers/net/phy/sfp.c
2313
dev_err(sfp->dev, "failed to read EEPROM: %pe\n",
drivers/net/phy/sfp.c
2319
dev_err(sfp->dev, "EEPROM short read: %pe\n", ERR_PTR(ret));
drivers/net/phy/sfp.c
2329
if (sfp_id_needs_byte_io(sfp, &id.base, sizeof(id.base))) {
drivers/net/phy/sfp.c
2330
dev_info(sfp->dev,
drivers/net/phy/sfp.c
2332
dev_info(sfp->dev,
drivers/net/phy/sfp.c
2334
sfp->i2c_block_size = 1;
drivers/net/phy/sfp.c
2336
ret = sfp_read(sfp, false, 0, &id.base, sizeof(id.base));
drivers/net/phy/sfp.c
2339
dev_err(sfp->dev,
drivers/net/phy/sfp.c
2346
dev_err(sfp->dev, "EEPROM short read: %pe\n",
drivers/net/phy/sfp.c
2364
ret = sfp_cotsworks_fixup_check(sfp, &id);
drivers/net/phy/sfp.c
2373
dev_warn(sfp->dev,
drivers/net/phy/sfp.c
2377
dev_err(sfp->dev,
drivers/net/phy/sfp.c
2386
ret = sfp_read(sfp, false, SFP_CC_BASE + 1, &id.ext, sizeof(id.ext));
drivers/net/phy/sfp.c
2389
dev_err(sfp->dev, "failed to read EEPROM: %pe\n",
drivers/net/phy/sfp.c
2395
dev_err(sfp->dev, "EEPROM short read: %pe\n", ERR_PTR(ret));
drivers/net/phy/sfp.c
2402
dev_warn(sfp->dev,
drivers/net/phy/sfp.c
2406
dev_err(sfp->dev,
drivers/net/phy/sfp.c
2415
sfp->id = id;
drivers/net/phy/sfp.c
2417
dev_info(sfp->dev, "module %.*s %.*s rev %.*s sn %.*s dc %.*s\n",
drivers/net/phy/sfp.c
242
unsigned int (*get_state)(struct sfp *);
drivers/net/phy/sfp.c
2425
if (!sfp->type->module_supported(&id)) {
drivers/net/phy/sfp.c
2426
dev_err(sfp->dev,
drivers/net/phy/sfp.c
2428
sfp->id.base.phys_id, sfp->id.base.phys_ext_id);
drivers/net/phy/sfp.c
243
void (*set_state)(struct sfp *, unsigned int);
drivers/net/phy/sfp.c
2432
if (sfp->id.ext.sff8472_compliance != SFP_SFF8472_COMPLIANCE_NONE) {
drivers/net/phy/sfp.c
2433
ret = sfp_module_parse_sff8472(sfp);
drivers/net/phy/sfp.c
2439
ret = sfp_module_parse_power(sfp);
drivers/net/phy/sfp.c
244
int (*read)(struct sfp *, bool, u8, void *, size_t);
drivers/net/phy/sfp.c
2443
sfp_module_parse_rate_select(sfp);
drivers/net/phy/sfp.c
2446
if (sfp->gpio[GPIO_TX_DISABLE])
drivers/net/phy/sfp.c
2448
if (sfp->gpio[GPIO_TX_FAULT])
drivers/net/phy/sfp.c
245
int (*write)(struct sfp *, bool, u8, void *, size_t);
drivers/net/phy/sfp.c
2450
if (sfp->gpio[GPIO_LOS])
drivers/net/phy/sfp.c
2452
if (sfp->gpio[GPIO_RS0])
drivers/net/phy/sfp.c
2454
if (sfp->gpio[GPIO_RS1])
drivers/net/phy/sfp.c
2457
sfp->module_t_start_up = T_START_UP;
drivers/net/phy/sfp.c
2458
sfp->module_t_wait = T_WAIT;
drivers/net/phy/sfp.c
2459
sfp->phy_t_retry = T_PHY_RETRY;
drivers/net/phy/sfp.c
2461
sfp->state_ignore_mask = 0;
drivers/net/phy/sfp.c
2463
if (sfp->id.base.extended_cc == SFF8024_ECC_10GBASE_T_SFI ||
drivers/net/phy/sfp.c
2464
sfp->id.base.extended_cc == SFF8024_ECC_10GBASE_T_SR ||
drivers/net/phy/sfp.c
2465
sfp->id.base.extended_cc == SFF8024_ECC_5GBASE_T ||
drivers/net/phy/sfp.c
2466
sfp->id.base.extended_cc == SFF8024_ECC_2_5GBASE_T)
drivers/net/phy/sfp.c
2467
sfp->mdio_protocol = MDIO_I2C_C45;
drivers/net/phy/sfp.c
2468
else if (sfp->id.base.e1000_base_t)
drivers/net/phy/sfp.c
2469
sfp->mdio_protocol = MDIO_I2C_MARVELL_C22;
drivers/net/phy/sfp.c
2471
sfp->mdio_protocol = MDIO_I2C_NONE;
drivers/net/phy/sfp.c
2473
sfp->quirk = sfp_lookup_quirk(&id);
drivers/net/phy/sfp.c
2475
mutex_lock(&sfp->st_mutex);
drivers/net/phy/sfp.c
2477
sfp->state_hw_mask = mask;
drivers/net/phy/sfp.c
2480
sfp->state_hw_drive |= sfp->rs_state_mask;
drivers/net/phy/sfp.c
2482
if (sfp->quirk && sfp->quirk->fixup)
drivers/net/phy/sfp.c
2483
sfp->quirk->fixup(sfp);
drivers/net/phy/sfp.c
2485
sfp->state_hw_mask &= ~sfp->state_ignore_mask;
drivers/net/phy/sfp.c
2486
mutex_unlock(&sfp->st_mutex);
drivers/net/phy/sfp.c
2491
static void sfp_sm_mod_remove(struct sfp *sfp)
drivers/net/phy/sfp.c
2493
if (sfp->sm_mod_state > SFP_MOD_WAITDEV)
drivers/net/phy/sfp.c
2494
sfp_module_remove(sfp->sfp_bus);
drivers/net/phy/sfp.c
2496
sfp_hwmon_remove(sfp);
drivers/net/phy/sfp.c
2498
memset(&sfp->id, 0, sizeof(sfp->id));
drivers/net/phy/sfp.c
2499
sfp->module_power_mW = 0;
drivers/net/phy/sfp.c
2500
sfp->state_hw_drive = SFP_F_TX_DISABLE;
drivers/net/phy/sfp.c
2501
sfp->have_a2 = false;
drivers/net/phy/sfp.c
2503
dev_info(sfp->dev, "module removed\n");
drivers/net/phy/sfp.c
2507
static void sfp_sm_device(struct sfp *sfp, unsigned int event)
drivers/net/phy/sfp.c
2509
switch (sfp->sm_dev_state) {
drivers/net/phy/sfp.c
2512
sfp->sm_dev_state = SFP_DEV_DOWN;
drivers/net/phy/sfp.c
2517
sfp->sm_dev_state = SFP_DEV_DETACHED;
drivers/net/phy/sfp.c
2519
sfp->sm_dev_state = SFP_DEV_UP;
drivers/net/phy/sfp.c
2524
sfp->sm_dev_state = SFP_DEV_DETACHED;
drivers/net/phy/sfp.c
2526
sfp->sm_dev_state = SFP_DEV_DOWN;
drivers/net/phy/sfp.c
2534
static void sfp_sm_module(struct sfp *sfp, unsigned int event)
drivers/net/phy/sfp.c
2540
sfp_sm_mod_remove(sfp);
drivers/net/phy/sfp.c
2541
sfp_sm_mod_next(sfp, SFP_MOD_EMPTY, 0);
drivers/net/phy/sfp.c
2546
if (sfp->sm_dev_state < SFP_DEV_DOWN &&
drivers/net/phy/sfp.c
2547
sfp->sm_mod_state > SFP_MOD_WAITDEV) {
drivers/net/phy/sfp.c
2548
if (sfp->module_power_mW > 1000 &&
drivers/net/phy/sfp.c
2549
sfp->sm_mod_state > SFP_MOD_HPOWER)
drivers/net/phy/sfp.c
2550
sfp_sm_mod_hpower(sfp, false);
drivers/net/phy/sfp.c
2551
sfp_sm_mod_next(sfp, SFP_MOD_WAITDEV, 0);
drivers/net/phy/sfp.c
2555
switch (sfp->sm_mod_state) {
drivers/net/phy/sfp.c
2558
sfp_sm_mod_next(sfp, SFP_MOD_PROBE, T_SERIAL);
drivers/net/phy/sfp.c
2559
sfp->sm_mod_tries_init = R_PROBE_RETRY_INIT;
drivers/net/phy/sfp.c
2560
sfp->sm_mod_tries = R_PROBE_RETRY_SLOW;
drivers/net/phy/sfp.c
2569
err = sfp_sm_mod_probe(sfp, sfp->sm_mod_tries == 1);
drivers/net/phy/sfp.c
2571
if (sfp->sm_mod_tries_init &&
drivers/net/phy/sfp.c
2572
--sfp->sm_mod_tries_init) {
drivers/net/phy/sfp.c
2573
sfp_sm_set_timer(sfp, T_PROBE_RETRY_INIT);
drivers/net/phy/sfp.c
2575
} else if (sfp->sm_mod_tries && --sfp->sm_mod_tries) {
drivers/net/phy/sfp.c
2576
if (sfp->sm_mod_tries == R_PROBE_RETRY_SLOW - 1)
drivers/net/phy/sfp.c
2577
dev_warn(sfp->dev,
drivers/net/phy/sfp.c
2579
sfp_sm_set_timer(sfp, T_PROBE_RETRY_SLOW);
drivers/net/phy/sfp.c
2584
sfp_sm_mod_next(sfp, SFP_MOD_ERROR, 0);
drivers/net/phy/sfp.c
2591
mod_delayed_work(system_percpu_wq, &sfp->poll, 1);
drivers/net/phy/sfp.c
2593
err = sfp_hwmon_insert(sfp);
drivers/net/phy/sfp.c
2595
dev_warn(sfp->dev, "hwmon probe failed: %pe\n",
drivers/net/phy/sfp.c
2598
sfp_sm_mod_next(sfp, SFP_MOD_WAITDEV, 0);
drivers/net/phy/sfp.c
2602
if (sfp->sm_dev_state < SFP_DEV_DOWN)
drivers/net/phy/sfp.c
2606
err = sfp_module_insert(sfp->sfp_bus, &sfp->id,
drivers/net/phy/sfp.c
2607
sfp->quirk);
drivers/net/phy/sfp.c
2609
sfp_sm_mod_next(sfp, SFP_MOD_ERROR, 0);
drivers/net/phy/sfp.c
2614
if (sfp->module_power_mW <= 1000)
drivers/net/phy/sfp.c
2617
sfp_sm_mod_next(sfp, SFP_MOD_HPOWER, 0);
drivers/net/phy/sfp.c
2621
err = sfp_sm_mod_hpower(sfp, true);
drivers/net/phy/sfp.c
2624
sfp_module_remove(sfp->sfp_bus);
drivers/net/phy/sfp.c
2625
sfp_sm_mod_next(sfp, SFP_MOD_ERROR, 0);
drivers/net/phy/sfp.c
2627
sfp_sm_set_timer(sfp, T_PROBE_RETRY_INIT);
drivers/net/phy/sfp.c
2632
sfp_sm_mod_next(sfp, SFP_MOD_WAITPWR, T_HPOWER_LEVEL);
drivers/net/phy/sfp.c
2641
sfp_sm_mod_next(sfp, SFP_MOD_PRESENT, 0);
drivers/net/phy/sfp.c
2650
static void sfp_sm_main(struct sfp *sfp, unsigned int event)
drivers/net/phy/sfp.c
2656
if (sfp->sm_state != SFP_S_DOWN &&
drivers/net/phy/sfp.c
2657
(sfp->sm_mod_state != SFP_MOD_PRESENT ||
drivers/net/phy/sfp.c
2658
sfp->sm_dev_state != SFP_DEV_UP)) {
drivers/net/phy/sfp.c
2659
if (sfp->sm_state == SFP_S_LINK_UP &&
drivers/net/phy/sfp.c
2660
sfp->sm_dev_state == SFP_DEV_UP)
drivers/net/phy/sfp.c
2661
sfp_sm_link_down(sfp);
drivers/net/phy/sfp.c
2662
if (sfp->sm_state > SFP_S_INIT)
drivers/net/phy/sfp.c
2663
sfp_module_stop(sfp->sfp_bus);
drivers/net/phy/sfp.c
2664
if (sfp->mod_phy)
drivers/net/phy/sfp.c
2665
sfp_sm_phy_detach(sfp);
drivers/net/phy/sfp.c
2666
if (sfp->i2c_mii)
drivers/net/phy/sfp.c
2667
sfp_i2c_mdiobus_destroy(sfp);
drivers/net/phy/sfp.c
2668
sfp_module_tx_disable(sfp);
drivers/net/phy/sfp.c
2669
sfp_soft_stop_poll(sfp);
drivers/net/phy/sfp.c
2670
sfp_sm_next(sfp, SFP_S_DOWN, 0);
drivers/net/phy/sfp.c
2675
switch (sfp->sm_state) {
drivers/net/phy/sfp.c
2677
if (sfp->sm_mod_state != SFP_MOD_PRESENT ||
drivers/net/phy/sfp.c
2678
sfp->sm_dev_state != SFP_DEV_UP)
drivers/net/phy/sfp.c
2685
if (sfp->have_a2)
drivers/net/phy/sfp.c
2686
sfp_soft_start_poll(sfp);
drivers/net/phy/sfp.c
2688
sfp_module_tx_enable(sfp);
drivers/net/phy/sfp.c
2691
sfp->sm_fault_retries = N_FAULT_INIT;
drivers/net/phy/sfp.c
2698
sfp_sm_next(sfp, SFP_S_WAIT, sfp->module_t_wait);
drivers/net/phy/sfp.c
2705
if (sfp->state & SFP_F_TX_FAULT) {
drivers/net/phy/sfp.c
2711
timeout = sfp->module_t_start_up;
drivers/net/phy/sfp.c
2712
if (timeout > sfp->module_t_wait)
drivers/net/phy/sfp.c
2713
timeout -= sfp->module_t_wait;
drivers/net/phy/sfp.c
2717
sfp_sm_next(sfp, SFP_S_INIT, timeout);
drivers/net/phy/sfp.c
2727
if (event == SFP_E_TIMEOUT && sfp->state & SFP_F_TX_FAULT) {
drivers/net/phy/sfp.c
2731
sfp_sm_fault(sfp, SFP_S_INIT_TX_FAULT,
drivers/net/phy/sfp.c
2732
sfp->sm_fault_retries == N_FAULT_INIT);
drivers/net/phy/sfp.c
2736
ret = sfp_sm_add_mdio_bus(sfp);
drivers/net/phy/sfp.c
2738
sfp_sm_next(sfp, SFP_S_FAIL, 0);
drivers/net/phy/sfp.c
2741
sfp->sm_phy_retries = R_PHY_RETRY;
drivers/net/phy/sfp.c
2753
ret = sfp_sm_probe_for_phy(sfp);
drivers/net/phy/sfp.c
2755
if (--sfp->sm_phy_retries) {
drivers/net/phy/sfp.c
2756
sfp_sm_next(sfp, SFP_S_INIT_PHY,
drivers/net/phy/sfp.c
2757
sfp->phy_t_retry);
drivers/net/phy/sfp.c
2758
dev_dbg(sfp->dev,
drivers/net/phy/sfp.c
2760
sfp->sm_phy_retries);
drivers/net/phy/sfp.c
2763
dev_info(sfp->dev, "no PHY detected\n");
drivers/net/phy/sfp.c
2766
sfp_sm_next(sfp, SFP_S_FAIL, 0);
drivers/net/phy/sfp.c
2769
if (sfp_module_start(sfp->sfp_bus)) {
drivers/net/phy/sfp.c
2770
sfp_sm_next(sfp, SFP_S_FAIL, 0);
drivers/net/phy/sfp.c
2773
sfp_sm_link_check_los(sfp);
drivers/net/phy/sfp.c
2776
sfp->sm_fault_retries = N_FAULT;
drivers/net/phy/sfp.c
2781
sfp_module_tx_fault_reset(sfp);
drivers/net/phy/sfp.c
2782
sfp_sm_next(sfp, SFP_S_INIT, sfp->module_t_start_up);
drivers/net/phy/sfp.c
2788
sfp_sm_fault(sfp, SFP_S_TX_FAULT, true);
drivers/net/phy/sfp.c
2789
else if (sfp_los_event_inactive(sfp, event))
drivers/net/phy/sfp.c
2790
sfp_sm_link_up(sfp);
drivers/net/phy/sfp.c
2795
sfp_sm_link_down(sfp);
drivers/net/phy/sfp.c
2796
sfp_sm_fault(sfp, SFP_S_TX_FAULT, true);
drivers/net/phy/sfp.c
2797
} else if (sfp_los_event_active(sfp, event)) {
drivers/net/phy/sfp.c
2798
sfp_sm_link_down(sfp);
drivers/net/phy/sfp.c
2799
sfp_sm_next(sfp, SFP_S_WAIT_LOS, 0);
drivers/net/phy/sfp.c
2805
sfp_module_tx_fault_reset(sfp);
drivers/net/phy/sfp.c
2806
sfp_sm_next(sfp, SFP_S_REINIT, sfp->module_t_start_up);
drivers/net/phy/sfp.c
2811
if (event == SFP_E_TIMEOUT && sfp->state & SFP_F_TX_FAULT) {
drivers/net/phy/sfp.c
2812
sfp_sm_fault(sfp, SFP_S_TX_FAULT, false);
drivers/net/phy/sfp.c
2814
dev_info(sfp->dev, "module transmit fault recovered\n");
drivers/net/phy/sfp.c
2815
sfp_sm_link_check_los(sfp);
drivers/net/phy/sfp.c
2824
static void __sfp_sm_event(struct sfp *sfp, unsigned int event)
drivers/net/phy/sfp.c
2826
dev_dbg(sfp->dev, "SM: enter %s:%s:%s event %s\n",
drivers/net/phy/sfp.c
2827
mod_state_to_str(sfp->sm_mod_state),
drivers/net/phy/sfp.c
2828
dev_state_to_str(sfp->sm_dev_state),
drivers/net/phy/sfp.c
2829
sm_state_to_str(sfp->sm_state),
drivers/net/phy/sfp.c
2832
sfp_sm_device(sfp, event);
drivers/net/phy/sfp.c
2833
sfp_sm_module(sfp, event);
drivers/net/phy/sfp.c
2834
sfp_sm_main(sfp, event);
drivers/net/phy/sfp.c
2836
dev_dbg(sfp->dev, "SM: exit %s:%s:%s\n",
drivers/net/phy/sfp.c
2837
mod_state_to_str(sfp->sm_mod_state),
drivers/net/phy/sfp.c
2838
dev_state_to_str(sfp->sm_dev_state),
drivers/net/phy/sfp.c
2839
sm_state_to_str(sfp->sm_state));
drivers/net/phy/sfp.c
2842
static void sfp_sm_event(struct sfp *sfp, unsigned int event)
drivers/net/phy/sfp.c
2844
mutex_lock(&sfp->sm_mutex);
drivers/net/phy/sfp.c
2845
__sfp_sm_event(sfp, event);
drivers/net/phy/sfp.c
2846
mutex_unlock(&sfp->sm_mutex);
drivers/net/phy/sfp.c
2849
static void sfp_attach(struct sfp *sfp)
drivers/net/phy/sfp.c
2851
sfp_sm_event(sfp, SFP_E_DEV_ATTACH);
drivers/net/phy/sfp.c
2854
static void sfp_detach(struct sfp *sfp)
drivers/net/phy/sfp.c
2856
sfp_sm_event(sfp, SFP_E_DEV_DETACH);
drivers/net/phy/sfp.c
2859
static void sfp_start(struct sfp *sfp)
drivers/net/phy/sfp.c
2861
sfp_sm_event(sfp, SFP_E_DEV_UP);
drivers/net/phy/sfp.c
2864
static void sfp_stop(struct sfp *sfp)
drivers/net/phy/sfp.c
2866
sfp_sm_event(sfp, SFP_E_DEV_DOWN);
drivers/net/phy/sfp.c
2869
static void sfp_set_signal_rate(struct sfp *sfp, unsigned int rate_kbd)
drivers/net/phy/sfp.c
2873
sfp->rate_kbd = rate_kbd;
drivers/net/phy/sfp.c
2875
if (rate_kbd > sfp->rs_threshold_kbd)
drivers/net/phy/sfp.c
2876
set = sfp->rs_state_mask;
drivers/net/phy/sfp.c
2880
sfp_mod_state(sfp, SFP_F_RS0 | SFP_F_RS1, set);
drivers/net/phy/sfp.c
2883
static int sfp_module_info(struct sfp *sfp, struct ethtool_modinfo *modinfo)
drivers/net/phy/sfp.c
2887
if (sfp->id.ext.sff8472_compliance &&
drivers/net/phy/sfp.c
2888
!(sfp->id.ext.diagmon & SFP_DIAGMON_ADDRMODE)) {
drivers/net/phy/sfp.c
2898
static int sfp_module_eeprom(struct sfp *sfp, struct ethtool_eeprom *ee,
drivers/net/phy/sfp.c
2904
if (!(sfp->state & SFP_F_PRESENT))
drivers/net/phy/sfp.c
2916
ret = sfp_read(sfp, false, first, data, len);
drivers/net/phy/sfp.c
2928
ret = sfp_read(sfp, true, first, data, len);
drivers/net/phy/sfp.c
2935
static int sfp_module_eeprom_by_page(struct sfp *sfp,
drivers/net/phy/sfp.c
2939
if (!(sfp->state & SFP_F_PRESENT))
drivers/net/phy/sfp.c
2958
return sfp_read(sfp, page->i2c_address == 0x51, page->offset,
drivers/net/phy/sfp.c
2975
struct sfp *sfp = container_of(work, struct sfp, timeout.work);
drivers/net/phy/sfp.c
2978
sfp_sm_event(sfp, SFP_E_TIMEOUT);
drivers/net/phy/sfp.c
2982
static void sfp_check_state(struct sfp *sfp)
drivers/net/phy/sfp.c
2987
mutex_lock(&sfp->st_mutex);
drivers/net/phy/sfp.c
2988
state = sfp_get_state(sfp);
drivers/net/phy/sfp.c
2989
changed = state ^ sfp->state;
drivers/net/phy/sfp.c
2994
dev_dbg(sfp->dev, "%s %u -> %u\n", gpio_names[i],
drivers/net/phy/sfp.c
2995
!!(sfp->state & BIT(i)), !!(state & BIT(i)));
drivers/net/phy/sfp.c
2997
state |= sfp->state & SFP_F_OUTPUTS;
drivers/net/phy/sfp.c
2998
sfp->state = state;
drivers/net/phy/sfp.c
2999
mutex_unlock(&sfp->st_mutex);
drivers/net/phy/sfp.c
3001
mutex_lock(&sfp->sm_mutex);
drivers/net/phy/sfp.c
3003
__sfp_sm_event(sfp, state & SFP_F_PRESENT ?
drivers/net/phy/sfp.c
3007
__sfp_sm_event(sfp, state & SFP_F_TX_FAULT ?
drivers/net/phy/sfp.c
3011
__sfp_sm_event(sfp, state & SFP_F_LOS ?
drivers/net/phy/sfp.c
3013
mutex_unlock(&sfp->sm_mutex);
drivers/net/phy/sfp.c
3019
struct sfp *sfp = data;
drivers/net/phy/sfp.c
3021
sfp_check_state(sfp);
drivers/net/phy/sfp.c
3028
struct sfp *sfp = container_of(work, struct sfp, poll.work);
drivers/net/phy/sfp.c
303
static void sfp_schedule_poll(struct sfp *sfp)
drivers/net/phy/sfp.c
3030
sfp_check_state(sfp);
drivers/net/phy/sfp.c
3034
if (sfp->state_soft_mask & (SFP_F_LOS | SFP_F_TX_FAULT) ||
drivers/net/phy/sfp.c
3035
sfp->need_poll)
drivers/net/phy/sfp.c
3036
sfp_schedule_poll(sfp);
drivers/net/phy/sfp.c
3039
static struct sfp *sfp_alloc(struct device *dev)
drivers/net/phy/sfp.c
3041
struct sfp *sfp;
drivers/net/phy/sfp.c
3043
sfp = kzalloc_obj(*sfp);
drivers/net/phy/sfp.c
3044
if (!sfp)
drivers/net/phy/sfp.c
3047
sfp->dev = dev;
drivers/net/phy/sfp.c
3049
mutex_init(&sfp->sm_mutex);
drivers/net/phy/sfp.c
305
mod_delayed_work(system_percpu_wq, &sfp->poll, SFP_POLL_INTERVAL);
drivers/net/phy/sfp.c
3050
mutex_init(&sfp->st_mutex);
drivers/net/phy/sfp.c
3051
INIT_DELAYED_WORK(&sfp->poll, sfp_poll);
drivers/net/phy/sfp.c
3052
INIT_DELAYED_WORK(&sfp->timeout, sfp_timeout);
drivers/net/phy/sfp.c
3054
sfp_hwmon_init(sfp);
drivers/net/phy/sfp.c
3056
return sfp;
drivers/net/phy/sfp.c
3061
struct sfp *sfp = data;
drivers/net/phy/sfp.c
3063
sfp_hwmon_exit(sfp);
drivers/net/phy/sfp.c
3065
cancel_delayed_work_sync(&sfp->poll);
drivers/net/phy/sfp.c
3066
cancel_delayed_work_sync(&sfp->timeout);
drivers/net/phy/sfp.c
3067
if (sfp->i2c_mii) {
drivers/net/phy/sfp.c
3068
mdiobus_unregister(sfp->i2c_mii);
drivers/net/phy/sfp.c
3069
mdiobus_free(sfp->i2c_mii);
drivers/net/phy/sfp.c
3071
if (sfp->i2c)
drivers/net/phy/sfp.c
3072
i2c_put_adapter(sfp->i2c);
drivers/net/phy/sfp.c
3073
kfree(sfp);
drivers/net/phy/sfp.c
3076
static int sfp_i2c_get(struct sfp *sfp)
drivers/net/phy/sfp.c
3082
h = fwnode_find_reference(dev_fwnode(sfp->dev), "i2c-bus", 0);
drivers/net/phy/sfp.c
3084
dev_err(sfp->dev, "missing 'i2c-bus' property\n");
drivers/net/phy/sfp.c
3094
err = sfp_i2c_configure(sfp, i2c);
drivers/net/phy/sfp.c
3106
struct sfp *sfp;
drivers/net/phy/sfp.c
3109
sfp = sfp_alloc(&pdev->dev);
drivers/net/phy/sfp.c
3110
if (IS_ERR(sfp))
drivers/net/phy/sfp.c
3111
return PTR_ERR(sfp);
drivers/net/phy/sfp.c
3113
platform_set_drvdata(pdev, sfp);
drivers/net/phy/sfp.c
3115
err = devm_add_action_or_reset(sfp->dev, sfp_cleanup, sfp);
drivers/net/phy/sfp.c
3119
sff = device_get_match_data(sfp->dev);
drivers/net/phy/sfp.c
3123
sfp->type = sff;
drivers/net/phy/sfp.c
3125
err = sfp_i2c_get(sfp);
drivers/net/phy/sfp.c
3131
sfp->gpio[i] = devm_gpiod_get_optional(sfp->dev,
drivers/net/phy/sfp.c
3133
if (IS_ERR(sfp->gpio[i]))
drivers/net/phy/sfp.c
3134
return PTR_ERR(sfp->gpio[i]);
drivers/net/phy/sfp.c
3137
sfp->state_hw_mask = SFP_F_PRESENT;
drivers/net/phy/sfp.c
3138
sfp->state_hw_drive = SFP_F_TX_DISABLE;
drivers/net/phy/sfp.c
3140
sfp->get_state = sfp_gpio_get_state;
drivers/net/phy/sfp.c
3141
sfp->set_state = sfp_gpio_set_state;
drivers/net/phy/sfp.c
3144
if (!(sfp->gpio[GPIO_MODDEF0]))
drivers/net/phy/sfp.c
3145
sfp->get_state = sff_gpio_get_state;
drivers/net/phy/sfp.c
3148
&sfp->max_power_mW);
drivers/net/phy/sfp.c
3149
if (sfp->max_power_mW < 1000) {
drivers/net/phy/sfp.c
3150
if (sfp->max_power_mW)
drivers/net/phy/sfp.c
3151
dev_warn(sfp->dev,
drivers/net/phy/sfp.c
3153
sfp->max_power_mW = 1000;
drivers/net/phy/sfp.c
3156
dev_info(sfp->dev, "Host maximum power %u.%uW\n",
drivers/net/phy/sfp.c
3157
sfp->max_power_mW / 1000, (sfp->max_power_mW / 100) % 10);
drivers/net/phy/sfp.c
3162
sfp->state = sfp_get_state(sfp) | SFP_F_TX_DISABLE;
drivers/net/phy/sfp.c
3164
if (sfp->gpio[GPIO_RS0] &&
drivers/net/phy/sfp.c
3165
gpiod_get_value_cansleep(sfp->gpio[GPIO_RS0]))
drivers/net/phy/sfp.c
3166
sfp->state |= SFP_F_RS0;
drivers/net/phy/sfp.c
3167
sfp_set_state(sfp, sfp->state);
drivers/net/phy/sfp.c
3168
sfp_module_tx_disable(sfp);
drivers/net/phy/sfp.c
3169
if (sfp->state & SFP_F_PRESENT) {
drivers/net/phy/sfp.c
3171
sfp_sm_event(sfp, SFP_E_INSERT);
drivers/net/phy/sfp.c
3176
if (gpio_flags[i] != GPIOD_IN || !sfp->gpio[i])
drivers/net/phy/sfp.c
3179
sfp->gpio_irq[i] = gpiod_to_irq(sfp->gpio[i]);
drivers/net/phy/sfp.c
3180
if (sfp->gpio_irq[i] < 0) {
drivers/net/phy/sfp.c
3181
sfp->gpio_irq[i] = 0;
drivers/net/phy/sfp.c
3182
sfp->need_poll = true;
drivers/net/phy/sfp.c
3186
sfp_irq_name = devm_kasprintf(sfp->dev, GFP_KERNEL,
drivers/net/phy/sfp.c
3187
"%s-%s", dev_name(sfp->dev),
drivers/net/phy/sfp.c
3193
err = devm_request_threaded_irq(sfp->dev, sfp->gpio_irq[i],
drivers/net/phy/sfp.c
3198
sfp_irq_name, sfp);
drivers/net/phy/sfp.c
3200
sfp->gpio_irq[i] = 0;
drivers/net/phy/sfp.c
3201
sfp->need_poll = true;
drivers/net/phy/sfp.c
3205
if (sfp->need_poll)
drivers/net/phy/sfp.c
3206
sfp_schedule_poll(sfp);
drivers/net/phy/sfp.c
3213
if (!sfp->gpio[GPIO_TX_DISABLE])
drivers/net/phy/sfp.c
3214
dev_warn(sfp->dev,
drivers/net/phy/sfp.c
3217
sfp->sfp_bus = sfp_register_socket(sfp->dev, sfp, &sfp_module_ops);
drivers/net/phy/sfp.c
3218
if (!sfp->sfp_bus)
drivers/net/phy/sfp.c
3221
if (sfp->i2c_max_block_size < 2)
drivers/net/phy/sfp.c
3222
dev_warn(sfp->dev,
drivers/net/phy/sfp.c
3230
sfp_debugfs_init(sfp);
drivers/net/phy/sfp.c
3237
struct sfp *sfp = platform_get_drvdata(pdev);
drivers/net/phy/sfp.c
3239
sfp_debugfs_exit(sfp);
drivers/net/phy/sfp.c
3240
sfp_unregister_socket(sfp->sfp_bus);
drivers/net/phy/sfp.c
3243
sfp_sm_event(sfp, SFP_E_REMOVE);
drivers/net/phy/sfp.c
3249
struct sfp *sfp = platform_get_drvdata(pdev);
drivers/net/phy/sfp.c
3253
if (!sfp->gpio_irq[i])
drivers/net/phy/sfp.c
3256
devm_free_irq(sfp->dev, sfp->gpio_irq[i], sfp);
drivers/net/phy/sfp.c
3259
cancel_delayed_work_sync(&sfp->poll);
drivers/net/phy/sfp.c
3260
cancel_delayed_work_sync(&sfp->timeout);
drivers/net/phy/sfp.c
351
static void sfp_fixup_long_startup(struct sfp *sfp)
drivers/net/phy/sfp.c
353
sfp->module_t_start_up = T_START_UP_BAD_GPON;
drivers/net/phy/sfp.c
356
static void sfp_fixup_ignore_los(struct sfp *sfp)
drivers/net/phy/sfp.c
359
sfp->state_ignore_mask |= SFP_F_LOS;
drivers/net/phy/sfp.c
361
sfp->id.ext.options &= ~cpu_to_be16(SFP_OPTIONS_LOS_INVERTED |
drivers/net/phy/sfp.c
365
static void sfp_fixup_ignore_tx_fault(struct sfp *sfp)
drivers/net/phy/sfp.c
367
sfp->state_ignore_mask |= SFP_F_TX_FAULT;
drivers/net/phy/sfp.c
370
static void sfp_fixup_ignore_tx_fault_and_los(struct sfp *sfp)
drivers/net/phy/sfp.c
372
sfp_fixup_ignore_tx_fault(sfp);
drivers/net/phy/sfp.c
373
sfp_fixup_ignore_los(sfp);
drivers/net/phy/sfp.c
376
static void sfp_fixup_ignore_hw(struct sfp *sfp, unsigned int mask)
drivers/net/phy/sfp.c
378
sfp->state_hw_mask &= ~mask;
drivers/net/phy/sfp.c
381
static void sfp_fixup_nokia(struct sfp *sfp)
drivers/net/phy/sfp.c
383
sfp_fixup_long_startup(sfp);
drivers/net/phy/sfp.c
384
sfp_fixup_ignore_los(sfp);
drivers/net/phy/sfp.c
388
static void sfp_fixup_10gbaset_30m(struct sfp *sfp)
drivers/net/phy/sfp.c
390
sfp->id.base.connector = SFF8024_CONNECTOR_RJ45;
drivers/net/phy/sfp.c
391
sfp->id.base.extended_cc = SFF8024_ECC_10GBASE_T_SR;
drivers/net/phy/sfp.c
394
static void sfp_fixup_rollball(struct sfp *sfp)
drivers/net/phy/sfp.c
396
sfp->mdio_protocol = MDIO_I2C_ROLLBALL;
drivers/net/phy/sfp.c
403
sfp->phy_t_retry = msecs_to_jiffies(1000);
drivers/net/phy/sfp.c
406
static void sfp_fixup_rollball_wait4s(struct sfp *sfp)
drivers/net/phy/sfp.c
408
sfp_fixup_rollball(sfp);
drivers/net/phy/sfp.c
414
sfp->module_t_wait = msecs_to_jiffies(4000);
drivers/net/phy/sfp.c
417
static void sfp_fixup_fs_10gt(struct sfp *sfp)
drivers/net/phy/sfp.c
419
sfp_fixup_10gbaset_30m(sfp);
drivers/net/phy/sfp.c
420
sfp_fixup_rollball_wait4s(sfp);
drivers/net/phy/sfp.c
423
static void sfp_fixup_halny_gsfp(struct sfp *sfp)
drivers/net/phy/sfp.c
429
sfp_fixup_ignore_hw(sfp, SFP_F_TX_FAULT | SFP_F_LOS);
drivers/net/phy/sfp.c
432
static void sfp_fixup_potron(struct sfp *sfp)
drivers/net/phy/sfp.c
440
sfp_fixup_long_startup(sfp);
drivers/net/phy/sfp.c
441
sfp_fixup_ignore_hw(sfp, SFP_F_TX_FAULT | SFP_F_LOS);
drivers/net/phy/sfp.c
444
static void sfp_fixup_rollball_cc(struct sfp *sfp)
drivers/net/phy/sfp.c
446
sfp_fixup_rollball(sfp);
drivers/net/phy/sfp.c
451
sfp->id.base.extended_cc = SFF8024_ECC_10GBASE_T_SFI;
drivers/net/phy/sfp.c
617
static unsigned int sfp_gpio_get_state(struct sfp *sfp)
drivers/net/phy/sfp.c
622
if (gpio_flags[i] != GPIOD_IN || !sfp->gpio[i])
drivers/net/phy/sfp.c
625
v = gpiod_get_value_cansleep(sfp->gpio[i]);
drivers/net/phy/sfp.c
633
static unsigned int sff_gpio_get_state(struct sfp *sfp)
drivers/net/phy/sfp.c
635
return sfp_gpio_get_state(sfp) | SFP_F_PRESENT;
drivers/net/phy/sfp.c
638
static void sfp_gpio_set_state(struct sfp *sfp, unsigned int state)
drivers/net/phy/sfp.c
644
drive = sfp->state_hw_drive;
drivers/net/phy/sfp.c
649
if (sfp->gpio[GPIO_TX_DISABLE]) {
drivers/net/phy/sfp.c
651
gpiod_direction_output(sfp->gpio[GPIO_TX_DISABLE],
drivers/net/phy/sfp.c
654
gpiod_direction_input(sfp->gpio[GPIO_TX_DISABLE]);
drivers/net/phy/sfp.c
657
if (sfp->gpio[GPIO_RS0]) {
drivers/net/phy/sfp.c
659
gpiod_direction_output(sfp->gpio[GPIO_RS0],
drivers/net/phy/sfp.c
662
gpiod_direction_input(sfp->gpio[GPIO_RS0]);
drivers/net/phy/sfp.c
665
if (sfp->gpio[GPIO_RS1]) {
drivers/net/phy/sfp.c
667
gpiod_direction_output(sfp->gpio[GPIO_RS1],
drivers/net/phy/sfp.c
670
gpiod_direction_input(sfp->gpio[GPIO_RS1]);
drivers/net/phy/sfp.c
674
static int sfp_i2c_read(struct sfp *sfp, bool a2, u8 dev_addr, void *buf,
drivers/net/phy/sfp.c
679
size_t block_size = sfp->i2c_block_size;
drivers/net/phy/sfp.c
699
ret = i2c_transfer(sfp->i2c, msgs, ARRAY_SIZE(msgs));
drivers/net/phy/sfp.c
714
static int sfp_i2c_write(struct sfp *sfp, bool a2, u8 dev_addr, void *buf,
drivers/net/phy/sfp.c
731
ret = i2c_transfer(sfp->i2c, msgs, ARRAY_SIZE(msgs));
drivers/net/phy/sfp.c
741
static int sfp_smbus_byte_read(struct sfp *sfp, bool a2, u8 dev_addr,
drivers/net/phy/sfp.c
750
ret = i2c_smbus_xfer(sfp->i2c, bus_addr, 0,
drivers/net/phy/sfp.c
766
static int sfp_smbus_byte_write(struct sfp *sfp, bool a2, u8 dev_addr,
drivers/net/phy/sfp.c
776
ret = i2c_smbus_xfer(sfp->i2c, bus_addr, 0,
drivers/net/phy/sfp.c
790
static int sfp_i2c_configure(struct sfp *sfp, struct i2c_adapter *i2c)
drivers/net/phy/sfp.c
792
sfp->i2c = i2c;
drivers/net/phy/sfp.c
795
sfp->read = sfp_i2c_read;
drivers/net/phy/sfp.c
796
sfp->write = sfp_i2c_write;
drivers/net/phy/sfp.c
797
sfp->i2c_max_block_size = SFP_EEPROM_BLOCK_SIZE;
drivers/net/phy/sfp.c
799
sfp->read = sfp_smbus_byte_read;
drivers/net/phy/sfp.c
800
sfp->write = sfp_smbus_byte_write;
drivers/net/phy/sfp.c
801
sfp->i2c_max_block_size = 1;
drivers/net/phy/sfp.c
803
sfp->i2c = NULL;
drivers/net/phy/sfp.c
810
static int sfp_i2c_mdiobus_create(struct sfp *sfp)
drivers/net/phy/sfp.c
815
i2c_mii = mdio_i2c_alloc(sfp->dev, sfp->i2c, sfp->mdio_protocol);
drivers/net/phy/sfp.c
828
sfp->i2c_mii = i2c_mii;
drivers/net/phy/sfp.c
833
static void sfp_i2c_mdiobus_destroy(struct sfp *sfp)
drivers/net/phy/sfp.c
835
mdiobus_unregister(sfp->i2c_mii);
drivers/net/phy/sfp.c
836
sfp->i2c_mii = NULL;
drivers/net/phy/sfp.c
840
static int sfp_read(struct sfp *sfp, bool a2, u8 addr, void *buf, size_t len)
drivers/net/phy/sfp.c
842
return sfp->read(sfp, a2, addr, buf, len);
drivers/net/phy/sfp.c
845
static int sfp_write(struct sfp *sfp, bool a2, u8 addr, void *buf, size_t len)
drivers/net/phy/sfp.c
847
return sfp->write(sfp, a2, addr, buf, len);
drivers/net/phy/sfp.c
850
static int sfp_modify_u8(struct sfp *sfp, bool a2, u8 addr, u8 mask, u8 val)
drivers/net/phy/sfp.c
855
ret = sfp_read(sfp, a2, addr, &old, sizeof(old));
drivers/net/phy/sfp.c
863
return sfp_write(sfp, a2, addr, &v, sizeof(v));
drivers/net/phy/sfp.c
866
static unsigned int sfp_soft_get_state(struct sfp *sfp)
drivers/net/phy/sfp.c
872
ret = sfp_read(sfp, true, SFP_STATUS, &status, sizeof(status));
drivers/net/phy/sfp.c
879
dev_err_ratelimited(sfp->dev,
drivers/net/phy/sfp.c
883
state = sfp->state;
drivers/net/phy/sfp.c
886
return state & sfp->state_soft_mask;
drivers/net/phy/sfp.c
889
static void sfp_soft_set_state(struct sfp *sfp, unsigned int state,
drivers/net/phy/sfp.c
906
sfp_modify_u8(sfp, true, SFP_STATUS, mask, val);
drivers/net/phy/sfp.c
915
sfp_modify_u8(sfp, true, SFP_EXT_STATUS, mask, val);
drivers/net/phy/sfp.c
918
static void sfp_soft_start_poll(struct sfp *sfp)
drivers/net/phy/sfp.c
920
const struct sfp_eeprom_id *id = &sfp->id;
drivers/net/phy/sfp.c
930
mask |= sfp->rs_state_mask;
drivers/net/phy/sfp.c
932
mutex_lock(&sfp->st_mutex);
drivers/net/phy/sfp.c
934
sfp->state_soft_mask = ~sfp->state_hw_mask & ~sfp->state_ignore_mask &
drivers/net/phy/sfp.c
937
if (sfp->state_soft_mask & (SFP_F_LOS | SFP_F_TX_FAULT) &&
drivers/net/phy/sfp.c
938
!sfp->need_poll)
drivers/net/phy/sfp.c
939
sfp_schedule_poll(sfp);
drivers/net/phy/sfp.c
940
mutex_unlock(&sfp->st_mutex);
drivers/net/phy/sfp.c
943
static void sfp_soft_stop_poll(struct sfp *sfp)
drivers/net/phy/sfp.c
945
mutex_lock(&sfp->st_mutex);
drivers/net/phy/sfp.c
946
sfp->state_soft_mask = 0;
drivers/net/phy/sfp.c
947
mutex_unlock(&sfp->st_mutex);
drivers/net/phy/sfp.c
953
static unsigned int sfp_get_state(struct sfp *sfp)
drivers/net/phy/sfp.c
955
unsigned int soft = sfp->state_soft_mask & (SFP_F_LOS | SFP_F_TX_FAULT);
drivers/net/phy/sfp.c
958
state = sfp->get_state(sfp) & sfp->state_hw_mask;
drivers/net/phy/sfp.c
960
state |= sfp_soft_get_state(sfp);
drivers/net/phy/sfp.c
968
static void sfp_set_state(struct sfp *sfp, unsigned int state)
drivers/net/phy/sfp.c
972
sfp->set_state(sfp, state);
drivers/net/phy/sfp.c
974
soft = sfp->state_soft_mask & SFP_F_OUTPUTS;
drivers/net/phy/sfp.c
976
sfp_soft_set_state(sfp, state, soft);
drivers/net/phy/sfp.c
979
static void sfp_mod_state(struct sfp *sfp, unsigned int mask, unsigned int set)
drivers/net/phy/sfp.c
981
mutex_lock(&sfp->st_mutex);
drivers/net/phy/sfp.c
982
sfp->state = (sfp->state & ~mask) | set;
drivers/net/phy/sfp.c
983
sfp_set_state(sfp, sfp->state);
drivers/net/phy/sfp.c
984
mutex_unlock(&sfp->st_mutex);
drivers/net/phy/sfp.h
14
void (*fixup)(struct sfp *sfp);
drivers/net/phy/sfp.h
18
void (*attach)(struct sfp *sfp);
drivers/net/phy/sfp.h
19
void (*detach)(struct sfp *sfp);
drivers/net/phy/sfp.h
20
void (*start)(struct sfp *sfp);
drivers/net/phy/sfp.h
21
void (*stop)(struct sfp *sfp);
drivers/net/phy/sfp.h
22
void (*set_signal_rate)(struct sfp *sfp, unsigned int rate_kbd);
drivers/net/phy/sfp.h
23
int (*module_info)(struct sfp *sfp, struct ethtool_modinfo *modinfo);
drivers/net/phy/sfp.h
24
int (*module_eeprom)(struct sfp *sfp, struct ethtool_eeprom *ee,
drivers/net/phy/sfp.h
26
int (*module_eeprom_by_page)(struct sfp *sfp,
drivers/net/phy/sfp.h
40
struct sfp_bus *sfp_register_socket(struct device *dev, struct sfp *sfp,
drivers/net/phy/sfp.h
7
struct sfp;
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1025
starfive_padctl_rmw(sfp, starfive_gpio_to_pin(sfp, gpio), mask, value);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1031
struct starfive_pinctrl *sfp = container_of(gc, struct starfive_pinctrl, gc);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1033
sfp->gpios.name = sfp->gc.label;
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1034
sfp->gpios.base = sfp->gc.base;
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1039
sfp->gpios.npins = NR_GPIOS;
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1040
sfp->gpios.gc = &sfp->gc;
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1041
pinctrl_add_gpio_range(sfp->pctl, &sfp->gpios);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1047
struct starfive_pinctrl *sfp = starfive_from_irq_data(d);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1049
void __iomem *ic = sfp->base + GPIOIC + 4 * (gpio / 32);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1053
raw_spin_lock_irqsave(&sfp->lock, flags);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1055
raw_spin_unlock_irqrestore(&sfp->lock, flags);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1060
struct starfive_pinctrl *sfp = starfive_from_irq_data(d);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1062
void __iomem *ie = sfp->base + GPIOIE + 4 * (gpio / 32);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1067
raw_spin_lock_irqsave(&sfp->lock, flags);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1070
raw_spin_unlock_irqrestore(&sfp->lock, flags);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1072
gpiochip_disable_irq(&sfp->gc, gpio);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1077
struct starfive_pinctrl *sfp = starfive_from_irq_data(d);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1079
void __iomem *ie = sfp->base + GPIOIE + 4 * (gpio / 32);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1080
void __iomem *ic = sfp->base + GPIOIC + 4 * (gpio / 32);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1085
raw_spin_lock_irqsave(&sfp->lock, flags);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1089
raw_spin_unlock_irqrestore(&sfp->lock, flags);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1094
struct starfive_pinctrl *sfp = starfive_from_irq_data(d);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1096
void __iomem *ie = sfp->base + GPIOIE + 4 * (gpio / 32);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1101
gpiochip_enable_irq(&sfp->gc, gpio);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1103
raw_spin_lock_irqsave(&sfp->lock, flags);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1106
raw_spin_unlock_irqrestore(&sfp->lock, flags);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1111
struct starfive_pinctrl *sfp = starfive_from_irq_data(d);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1113
void __iomem *base = sfp->base + 4 * (gpio / 32);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1153
raw_spin_lock_irqsave(&sfp->lock, flags);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1160
raw_spin_unlock_irqrestore(&sfp->lock, flags);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1177
struct starfive_pinctrl *sfp = starfive_from_irq_desc(desc);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1184
mis = readl_relaxed(sfp->base + GPIOMIS + 0);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1186
generic_handle_domain_irq(sfp->gc.irq.domain, pin);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1188
mis = readl_relaxed(sfp->base + GPIOMIS + 4);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1190
generic_handle_domain_irq(sfp->gc.irq.domain, pin + 32);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1197
struct starfive_pinctrl *sfp = container_of(gc, struct starfive_pinctrl, gc);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1200
writel(0, sfp->base + GPIOIE + 0);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1201
writel(0, sfp->base + GPIOIE + 4);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1203
writel(~0U, sfp->base + GPIOIC + 0);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1204
writel(~0U, sfp->base + GPIOIC + 4);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1206
writel(1, sfp->base + GPIOEN);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1218
struct starfive_pinctrl *sfp;
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1224
sfp = devm_kzalloc(dev, sizeof(*sfp), GFP_KERNEL);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1225
if (!sfp)
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1228
sfp->base = devm_platform_ioremap_resource_byname(pdev, "gpio");
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1229
if (IS_ERR(sfp->base))
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1230
return PTR_ERR(sfp->base);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1232
sfp->padctl = devm_platform_ioremap_resource_byname(pdev, "padctl");
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1233
if (IS_ERR(sfp->padctl))
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1234
return PTR_ERR(sfp->padctl);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1261
platform_set_drvdata(pdev, sfp);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1262
sfp->gc.parent = dev;
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1263
raw_spin_lock_init(&sfp->lock);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1264
mutex_init(&sfp->mutex);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1266
ret = devm_pinctrl_register_and_init(dev, &starfive_desc, sfp, &sfp->pctl);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1273
writel(value, sfp->padctl + IO_PADSHARE_SEL);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1276
value = readl(sfp->padctl + IO_PADSHARE_SEL);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1279
sfp->gpios.pin_base = PAD_INVALID_GPIO;
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1282
sfp->gpios.pin_base = PAD_GPIO(0);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1285
sfp->gpios.pin_base = PAD_FUNC_SHARE(72);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1288
sfp->gpios.pin_base = PAD_FUNC_SHARE(70);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1291
sfp->gpios.pin_base = PAD_FUNC_SHARE(0);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1297
sfp->gc.label = dev_name(dev);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1298
sfp->gc.owner = THIS_MODULE;
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1299
sfp->gc.request = pinctrl_gpio_request;
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1300
sfp->gc.free = pinctrl_gpio_free;
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1301
sfp->gc.get_direction = starfive_gpio_get_direction;
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1302
sfp->gc.direction_input = starfive_gpio_direction_input;
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1303
sfp->gc.direction_output = starfive_gpio_direction_output;
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1304
sfp->gc.get = starfive_gpio_get;
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1305
sfp->gc.set = starfive_gpio_set;
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1306
sfp->gc.set_config = starfive_gpio_set_config;
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1307
sfp->gc.add_pin_ranges = starfive_gpio_add_pin_ranges;
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1308
sfp->gc.base = -1;
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1309
sfp->gc.ngpio = NR_GPIOS;
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1311
gpio_irq_chip_set_chip(&sfp->gc.irq, &starfive_irq_chip);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1312
sfp->gc.irq.parent_handler = starfive_gpio_irq_handler;
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1313
sfp->gc.irq.num_parents = 1;
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1314
sfp->gc.irq.parents = devm_kcalloc(dev, sfp->gc.irq.num_parents,
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1315
sizeof(*sfp->gc.irq.parents), GFP_KERNEL);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1316
if (!sfp->gc.irq.parents)
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1318
sfp->gc.irq.default_type = IRQ_TYPE_NONE;
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1319
sfp->gc.irq.handler = handle_bad_irq;
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1320
sfp->gc.irq.init_hw = starfive_gpio_init_hw;
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1325
sfp->gc.irq.parents[0] = ret;
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1327
ret = devm_gpiochip_add_data(dev, &sfp->gc, sfp);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1331
irq_domain_set_pm_device(sfp->gc.irq.domain, dev);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
1334
return pinctrl_enable(sfp->pctl);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
216
static inline unsigned int starfive_pin_to_gpio(const struct starfive_pinctrl *sfp,
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
219
return pin - sfp->gpios.pin_base;
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
222
static inline unsigned int starfive_gpio_to_pin(const struct starfive_pinctrl *sfp,
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
225
return sfp->gpios.pin_base + gpio;
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
456
struct starfive_pinctrl *sfp = pinctrl_dev_get_drvdata(pctldev);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
457
unsigned int gpio = starfive_pin_to_gpio(sfp, pin);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
464
reg = sfp->base + GPON_DOUT_CFG + 8 * gpio;
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
481
struct starfive_pinctrl *sfp = pinctrl_dev_get_drvdata(pctldev);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
482
struct device *dev = sfp->gc.parent;
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
526
mutex_lock(&sfp->mutex);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
559
pins[i] = starfive_gpio_to_pin(sfp, gpio);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
620
mutex_unlock(&sfp->mutex);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
625
mutex_unlock(&sfp->mutex);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
641
struct starfive_pinctrl *sfp = pinctrl_dev_get_drvdata(pctldev);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
642
struct device *dev = sfp->gc.parent;
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
666
reg_dout = sfp->base + GPON_DOUT_CFG + 8 * gpio;
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
667
reg_doen = sfp->base + GPON_DOEN_CFG + 8 * gpio;
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
669
reg_din = sfp->base + GPI_CFG_OFFSET + 4 * din;
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
673
raw_spin_lock_irqsave(&sfp->lock, flags);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
678
raw_spin_unlock_irqrestore(&sfp->lock, flags);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
692
static u16 starfive_padctl_get(struct starfive_pinctrl *sfp,
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
695
void __iomem *reg = sfp->padctl + 4 * (pin / 2);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
701
static void starfive_padctl_rmw(struct starfive_pinctrl *sfp,
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
705
void __iomem *reg = sfp->padctl + 4 * (pin / 2);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
711
dev_dbg(sfp->gc.parent, "padctl_rmw(%u, 0x%03x, 0x%03x)\n", pin, _mask, _value);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
713
raw_spin_lock_irqsave(&sfp->lock, flags);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
716
raw_spin_unlock_irqrestore(&sfp->lock, flags);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
739
struct starfive_pinctrl *sfp = pinctrl_dev_get_drvdata(pctldev);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
741
u16 value = starfive_padctl_get(sfp, pin);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
803
struct starfive_pinctrl *sfp = pinctrl_dev_get_drvdata(pctldev);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
875
starfive_padctl_rmw(sfp, group->grp.pins[i], mask, value);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
884
struct starfive_pinctrl *sfp = pinctrl_dev_get_drvdata(pctldev);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
885
u16 value = starfive_padctl_get(sfp, pin);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
916
struct starfive_pinctrl *sfp = container_of(gc, struct starfive_pinctrl, gc);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
917
void __iomem *doen = sfp->base + GPON_DOEN_CFG + 8 * gpio;
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
928
struct starfive_pinctrl *sfp = container_of(gc, struct starfive_pinctrl, gc);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
929
void __iomem *doen = sfp->base + GPON_DOEN_CFG + 8 * gpio;
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
933
starfive_padctl_rmw(sfp, starfive_gpio_to_pin(sfp, gpio),
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
937
raw_spin_lock_irqsave(&sfp->lock, flags);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
939
raw_spin_unlock_irqrestore(&sfp->lock, flags);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
946
struct starfive_pinctrl *sfp = container_of(gc, struct starfive_pinctrl, gc);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
947
void __iomem *dout = sfp->base + GPON_DOUT_CFG + 8 * gpio;
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
948
void __iomem *doen = sfp->base + GPON_DOEN_CFG + 8 * gpio;
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
951
raw_spin_lock_irqsave(&sfp->lock, flags);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
954
raw_spin_unlock_irqrestore(&sfp->lock, flags);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
957
starfive_padctl_rmw(sfp, starfive_gpio_to_pin(sfp, gpio),
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
966
struct starfive_pinctrl *sfp = container_of(gc, struct starfive_pinctrl, gc);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
967
void __iomem *din = sfp->base + GPIODIN + 4 * (gpio / 32);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
975
struct starfive_pinctrl *sfp = container_of(gc, struct starfive_pinctrl, gc);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
976
void __iomem *dout = sfp->base + GPON_DOUT_CFG + 8 * gpio;
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
979
raw_spin_lock_irqsave(&sfp->lock, flags);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
981
raw_spin_unlock_irqrestore(&sfp->lock, flags);
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
989
struct starfive_pinctrl *sfp = container_of(gc, struct starfive_pinctrl, gc);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110-aon.c
104
mis = readl_relaxed(sfp->base + JH7110_AON_GPIOMIS);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110-aon.c
106
generic_handle_domain_irq(sfp->gc.irq.domain, pin);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110-aon.c
113
struct jh7110_pinctrl *sfp = container_of(gc,
drivers/pinctrl/starfive/pinctrl-starfive-jh7110-aon.c
117
writel_relaxed(0, sfp->base + JH7110_AON_GPIOIE);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110-aon.c
119
writel_relaxed(0, sfp->base + JH7110_AON_GPIOIC);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110-aon.c
120
writel_relaxed(0x0f, sfp->base + JH7110_AON_GPIOIC);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110-aon.c
122
writel_relaxed(1, sfp->base + JH7110_AON_GPIOEN);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110-aon.c
75
static int jh7110_aon_set_one_pin_mux(struct jh7110_pinctrl *sfp,
drivers/pinctrl/starfive/pinctrl-starfive-jh7110-aon.c
80
if (pin < sfp->gc.ngpio && func == 0)
drivers/pinctrl/starfive/pinctrl-starfive-jh7110-aon.c
81
jh7110_set_gpiomux(sfp, pin, din, dout, doen);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110-aon.c
86
static int jh7110_aon_get_padcfg_base(struct jh7110_pinctrl *sfp,
drivers/pinctrl/starfive/pinctrl-starfive-jh7110-aon.c
97
struct jh7110_pinctrl *sfp = jh7110_from_irq_desc(desc);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110-sys.c
286
static void jh7110_set_function(struct jh7110_pinctrl *sfp,
drivers/pinctrl/starfive/pinctrl-starfive-jh7110-sys.c
300
reg = sfp->base + fs->offset;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110-sys.c
304
raw_spin_lock_irqsave(&sfp->lock, flags);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110-sys.c
307
raw_spin_unlock_irqrestore(&sfp->lock, flags);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110-sys.c
310
static void jh7110_set_vin_group(struct jh7110_pinctrl *sfp,
drivers/pinctrl/starfive/pinctrl-starfive-jh7110-sys.c
322
reg = sfp->base + gs->offset;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110-sys.c
326
raw_spin_lock_irqsave(&sfp->lock, flags);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110-sys.c
329
raw_spin_unlock_irqrestore(&sfp->lock, flags);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110-sys.c
332
static int jh7110_sys_set_one_pin_mux(struct jh7110_pinctrl *sfp,
drivers/pinctrl/starfive/pinctrl-starfive-jh7110-sys.c
337
if (pin < sfp->gc.ngpio && func == 0)
drivers/pinctrl/starfive/pinctrl-starfive-jh7110-sys.c
338
jh7110_set_gpiomux(sfp, pin, din, dout, doen);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110-sys.c
340
jh7110_set_function(sfp, pin, func);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110-sys.c
342
if (pin < sfp->gc.ngpio && func == 2)
drivers/pinctrl/starfive/pinctrl-starfive-jh7110-sys.c
343
jh7110_set_vin_group(sfp, pin);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110-sys.c
348
static int jh7110_sys_get_padcfg_base(struct jh7110_pinctrl *sfp,
drivers/pinctrl/starfive/pinctrl-starfive-jh7110-sys.c
361
struct jh7110_pinctrl *sfp = jh7110_from_irq_desc(desc);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110-sys.c
368
mis = readl_relaxed(sfp->base + JH7110_SYS_GPIOMIS0);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110-sys.c
370
generic_handle_domain_irq(sfp->gc.irq.domain, pin);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110-sys.c
372
mis = readl_relaxed(sfp->base + JH7110_SYS_GPIOMIS1);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110-sys.c
374
generic_handle_domain_irq(sfp->gc.irq.domain, pin + 32);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110-sys.c
381
struct jh7110_pinctrl *sfp = container_of(gc,
drivers/pinctrl/starfive/pinctrl-starfive-jh7110-sys.c
385
writel(0U, sfp->base + JH7110_SYS_GPIOIE0);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110-sys.c
386
writel(0U, sfp->base + JH7110_SYS_GPIOIE1);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110-sys.c
388
writel(~0U, sfp->base + JH7110_SYS_GPIOIC0);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110-sys.c
389
writel(~0U, sfp->base + JH7110_SYS_GPIOIC1);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110-sys.c
391
writel(1U, sfp->base + JH7110_SYS_GPIOEN);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
100
const struct jh7110_pinctrl_soc_info *info = sfp->info;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
104
if (pin < sfp->gc.ngpio) {
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
107
u32 dout = readl_relaxed(sfp->base + info->dout_reg_base + offset);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
108
u32 doen = readl_relaxed(sfp->base + info->doen_reg_base + offset);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
109
u32 gpi = readl_relaxed(sfp->base + info->gpi_reg_base + offset);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
127
struct jh7110_pinctrl *sfp = pinctrl_dev_get_drvdata(pctldev);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
128
struct device *dev = sfp->gc.parent;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
152
mutex_lock(&sfp->mutex);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
230
mutex_unlock(&sfp->mutex);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
238
mutex_unlock(&sfp->mutex);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
251
void jh7110_set_gpiomux(struct jh7110_pinctrl *sfp, unsigned int pin,
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
254
const struct jh7110_pinctrl_soc_info *info = sfp->info;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
266
reg_dout = sfp->base + info->dout_reg_base + offset;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
267
reg_doen = sfp->base + info->doen_reg_base + offset;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
274
reg_din = sfp->base + info->gpi_reg_base + ioffset;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
281
raw_spin_lock_irqsave(&sfp->lock, flags);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
290
raw_spin_unlock_irqrestore(&sfp->lock, flags);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
297
struct jh7110_pinctrl *sfp = pinctrl_dev_get_drvdata(pctldev);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
298
const struct jh7110_pinctrl_soc_info *info = sfp->info;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
312
info->jh7110_set_one_pin_mux(sfp,
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
349
static void jh7110_padcfg_rmw(struct jh7110_pinctrl *sfp,
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
352
const struct jh7110_pinctrl_soc_info *info = sfp->info;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
360
padcfg_base = info->jh7110_get_padcfg_base(sfp, pin);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
364
reg = sfp->base + padcfg_base + 4 * pin;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
367
raw_spin_lock_irqsave(&sfp->lock, flags);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
370
raw_spin_unlock_irqrestore(&sfp->lock, flags);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
376
struct jh7110_pinctrl *sfp = pinctrl_dev_get_drvdata(pctldev);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
377
const struct jh7110_pinctrl_soc_info *info = sfp->info;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
386
padcfg_base = info->jh7110_get_padcfg_base(sfp, pin);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
390
padcfg = readl_relaxed(sfp->base + padcfg_base + 4 * pin);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
446
struct jh7110_pinctrl *sfp = pinctrl_dev_get_drvdata(pctldev);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
510
jh7110_padcfg_rmw(sfp, group->grp.pins[i], mask, value);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
519
struct jh7110_pinctrl *sfp = pinctrl_dev_get_drvdata(pctldev);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
520
const struct jh7110_pinctrl_soc_info *info = sfp->info;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
527
padcfg_base = info->jh7110_get_padcfg_base(sfp, pin);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
531
value = readl_relaxed(sfp->base + padcfg_base + 4 * pin);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
549
struct jh7110_pinctrl *sfp = container_of(gc,
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
551
const struct jh7110_pinctrl_soc_info *info = sfp->info;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
554
u32 doen = readl_relaxed(sfp->base + info->doen_reg_base + offset);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
565
struct jh7110_pinctrl *sfp = container_of(gc,
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
567
const struct jh7110_pinctrl_soc_info *info = sfp->info;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
570
jh7110_padcfg_rmw(sfp, gpio,
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
575
info->jh7110_set_one_pin_mux(sfp, gpio,
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
584
struct jh7110_pinctrl *sfp = container_of(gc,
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
586
const struct jh7110_pinctrl_soc_info *info = sfp->info;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
589
info->jh7110_set_one_pin_mux(sfp, gpio,
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
594
jh7110_padcfg_rmw(sfp, gpio,
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
602
struct jh7110_pinctrl *sfp = container_of(gc,
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
604
const struct jh7110_pinctrl_soc_info *info = sfp->info;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
605
void __iomem *reg = sfp->base + info->gpioin_reg_base
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
613
struct jh7110_pinctrl *sfp = container_of(gc,
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
615
const struct jh7110_pinctrl_soc_info *info = sfp->info;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
618
void __iomem *reg_dout = sfp->base + info->dout_reg_base + offset;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
623
raw_spin_lock_irqsave(&sfp->lock, flags);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
626
raw_spin_unlock_irqrestore(&sfp->lock, flags);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
634
struct jh7110_pinctrl *sfp = container_of(gc,
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
671
jh7110_padcfg_rmw(sfp, gpio, mask, value);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
677
struct jh7110_pinctrl *sfp = container_of(gc,
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
680
sfp->gpios.name = sfp->gc.label;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
681
sfp->gpios.base = sfp->gc.base;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
682
sfp->gpios.pin_base = 0;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
683
sfp->gpios.npins = sfp->gc.ngpio;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
684
sfp->gpios.gc = &sfp->gc;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
685
pinctrl_add_gpio_range(sfp->pctl, &sfp->gpios);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
691
struct jh7110_pinctrl *sfp = jh7110_from_irq_data(d);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
692
const struct jh7110_gpio_irq_reg *irq_reg = sfp->info->irq_reg;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
694
void __iomem *ic = sfp->base + irq_reg->ic_reg_base
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
700
raw_spin_lock_irqsave(&sfp->lock, flags);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
704
raw_spin_unlock_irqrestore(&sfp->lock, flags);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
709
struct jh7110_pinctrl *sfp = jh7110_from_irq_data(d);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
710
const struct jh7110_gpio_irq_reg *irq_reg = sfp->info->irq_reg;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
712
void __iomem *ie = sfp->base + irq_reg->ie_reg_base
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
718
raw_spin_lock_irqsave(&sfp->lock, flags);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
721
raw_spin_unlock_irqrestore(&sfp->lock, flags);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
723
gpiochip_disable_irq(&sfp->gc, d->hwirq);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
728
struct jh7110_pinctrl *sfp = jh7110_from_irq_data(d);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
729
const struct jh7110_gpio_irq_reg *irq_reg = sfp->info->irq_reg;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
731
void __iomem *ie = sfp->base + irq_reg->ie_reg_base
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
733
void __iomem *ic = sfp->base + irq_reg->ic_reg_base
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
739
raw_spin_lock_irqsave(&sfp->lock, flags);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
746
raw_spin_unlock_irqrestore(&sfp->lock, flags);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
751
struct jh7110_pinctrl *sfp = jh7110_from_irq_data(d);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
752
const struct jh7110_gpio_irq_reg *irq_reg = sfp->info->irq_reg;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
754
void __iomem *ie = sfp->base + irq_reg->ie_reg_base
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
760
gpiochip_enable_irq(&sfp->gc, d->hwirq);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
762
raw_spin_lock_irqsave(&sfp->lock, flags);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
765
raw_spin_unlock_irqrestore(&sfp->lock, flags);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
770
struct jh7110_pinctrl *sfp = jh7110_from_irq_data(d);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
771
const struct jh7110_gpio_irq_reg *irq_reg = sfp->info->irq_reg;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
773
void __iomem *base = sfp->base + 4 * (gpio / 32);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
813
raw_spin_lock_irqsave(&sfp->lock, flags);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
822
raw_spin_unlock_irqrestore(&sfp->lock, flags);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
845
struct jh7110_pinctrl *sfp;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
860
sfp = devm_kzalloc(dev, sizeof(*sfp), GFP_KERNEL);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
861
if (!sfp)
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
865
sfp->saved_regs = devm_kcalloc(dev, info->nsaved_regs,
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
866
sizeof(*sfp->saved_regs), GFP_KERNEL);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
867
if (!sfp->saved_regs)
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
871
sfp->base = devm_platform_ioremap_resource(pdev, 0);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
872
if (IS_ERR(sfp->base))
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
873
return PTR_ERR(sfp->base);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
916
sfp->info = info;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
917
sfp->dev = dev;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
918
platform_set_drvdata(pdev, sfp);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
919
sfp->gc.parent = dev;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
920
raw_spin_lock_init(&sfp->lock);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
921
mutex_init(&sfp->mutex);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
925
sfp, &sfp->pctl);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
930
sfp->gc.label = dev_name(dev);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
931
sfp->gc.owner = THIS_MODULE;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
932
sfp->gc.request = pinctrl_gpio_request;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
933
sfp->gc.free = pinctrl_gpio_free;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
934
sfp->gc.get_direction = jh7110_gpio_get_direction;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
935
sfp->gc.direction_input = jh7110_gpio_direction_input;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
936
sfp->gc.direction_output = jh7110_gpio_direction_output;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
937
sfp->gc.get = jh7110_gpio_get;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
938
sfp->gc.set = jh7110_gpio_set;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
939
sfp->gc.set_config = jh7110_gpio_set_config;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
940
sfp->gc.add_pin_ranges = jh7110_gpio_add_pin_ranges;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
941
sfp->gc.base = -1;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
942
sfp->gc.ngpio = info->ngpios;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
944
jh7110_irq_chip.name = sfp->gc.label;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
945
gpio_irq_chip_set_chip(&sfp->gc.irq, &jh7110_irq_chip);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
946
sfp->gc.irq.parent_handler = info->jh7110_gpio_irq_handler;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
947
sfp->gc.irq.num_parents = 1;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
948
sfp->gc.irq.parents = devm_kcalloc(dev, sfp->gc.irq.num_parents,
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
949
sizeof(*sfp->gc.irq.parents),
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
951
if (!sfp->gc.irq.parents)
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
953
sfp->gc.irq.default_type = IRQ_TYPE_NONE;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
954
sfp->gc.irq.handler = handle_bad_irq;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
955
sfp->gc.irq.init_hw = info->jh7110_gpio_init_hw;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
960
sfp->gc.irq.parents[0] = ret;
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
962
ret = devm_gpiochip_add_data(dev, &sfp->gc, sfp);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
966
dev_info(dev, "StarFive GPIO chip registered %d GPIOs\n", sfp->gc.ngpio);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
968
return pinctrl_enable(sfp->pctl);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
974
struct jh7110_pinctrl *sfp = dev_get_drvdata(dev);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
978
raw_spin_lock_irqsave(&sfp->lock, flags);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
979
for (i = 0 ; i < sfp->info->nsaved_regs ; i++)
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
980
sfp->saved_regs[i] = readl_relaxed(sfp->base + 4 * i);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
982
raw_spin_unlock_irqrestore(&sfp->lock, flags);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
988
struct jh7110_pinctrl *sfp = dev_get_drvdata(dev);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
99
struct jh7110_pinctrl *sfp = pinctrl_dev_get_drvdata(pctldev);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
992
raw_spin_lock_irqsave(&sfp->lock, flags);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
993
for (i = 0 ; i < sfp->info->nsaved_regs ; i++)
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
994
writel_relaxed(sfp->saved_regs[i], sfp->base + 4 * i);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c
996
raw_spin_unlock_irqrestore(&sfp->lock, flags);
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.h
56
int (*jh7110_set_one_pin_mux)(struct jh7110_pinctrl *sfp,
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.h
61
int (*jh7110_get_padcfg_base)(struct jh7110_pinctrl *sfp,
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.h
67
void jh7110_set_gpiomux(struct jh7110_pinctrl *sfp, unsigned int pin,
drivers/scsi/bfa/bfa_core.c
126
struct bfa_sfp_s *sfp = BFA_SFP_MOD(bfa);
drivers/scsi/bfa/bfa_core.c
129
bfa_sfp_attach(sfp, &bfa->ioc, bfa, bfa->trcmod);
drivers/scsi/bfa/bfa_core.c
130
bfa_sfp_memclaim(sfp, sfp_dma->kva_curp, sfp_dma->dma_curp);
drivers/scsi/bfa/bfa_ioc.c
3609
static void bfa_sfp_getdata_send(struct bfa_sfp_s *sfp);
drivers/scsi/bfa/bfa_ioc.c
3610
static void bfa_sfp_media_get(struct bfa_sfp_s *sfp);
drivers/scsi/bfa/bfa_ioc.c
3611
static bfa_status_t bfa_sfp_speed_valid(struct bfa_sfp_s *sfp,
drivers/scsi/bfa/bfa_ioc.c
3615
bfa_cb_sfp_show(struct bfa_sfp_s *sfp)
drivers/scsi/bfa/bfa_ioc.c
3617
bfa_trc(sfp, sfp->lock);
drivers/scsi/bfa/bfa_ioc.c
3618
if (sfp->cbfn)
drivers/scsi/bfa/bfa_ioc.c
3619
sfp->cbfn(sfp->cbarg, sfp->status);
drivers/scsi/bfa/bfa_ioc.c
3620
sfp->lock = 0;
drivers/scsi/bfa/bfa_ioc.c
3621
sfp->cbfn = NULL;
drivers/scsi/bfa/bfa_ioc.c
3625
bfa_cb_sfp_state_query(struct bfa_sfp_s *sfp)
drivers/scsi/bfa/bfa_ioc.c
3627
bfa_trc(sfp, sfp->portspeed);
drivers/scsi/bfa/bfa_ioc.c
3628
if (sfp->media) {
drivers/scsi/bfa/bfa_ioc.c
3629
bfa_sfp_media_get(sfp);
drivers/scsi/bfa/bfa_ioc.c
3630
if (sfp->state_query_cbfn)
drivers/scsi/bfa/bfa_ioc.c
3631
sfp->state_query_cbfn(sfp->state_query_cbarg,
drivers/scsi/bfa/bfa_ioc.c
3632
sfp->status);
drivers/scsi/bfa/bfa_ioc.c
3633
sfp->media = NULL;
drivers/scsi/bfa/bfa_ioc.c
3636
if (sfp->portspeed) {
drivers/scsi/bfa/bfa_ioc.c
3637
sfp->status = bfa_sfp_speed_valid(sfp, sfp->portspeed);
drivers/scsi/bfa/bfa_ioc.c
3638
if (sfp->state_query_cbfn)
drivers/scsi/bfa/bfa_ioc.c
3639
sfp->state_query_cbfn(sfp->state_query_cbarg,
drivers/scsi/bfa/bfa_ioc.c
3640
sfp->status);
drivers/scsi/bfa/bfa_ioc.c
3641
sfp->portspeed = BFA_PORT_SPEED_UNKNOWN;
drivers/scsi/bfa/bfa_ioc.c
3644
sfp->state_query_lock = 0;
drivers/scsi/bfa/bfa_ioc.c
3645
sfp->state_query_cbfn = NULL;
drivers/scsi/bfa/bfa_ioc.c
3654
struct bfa_sfp_s *sfp = sfp_arg;
drivers/scsi/bfa/bfa_ioc.c
3656
bfa_trc(sfp, event);
drivers/scsi/bfa/bfa_ioc.c
3657
bfa_trc(sfp, sfp->lock);
drivers/scsi/bfa/bfa_ioc.c
3658
bfa_trc(sfp, sfp->state_query_lock);
drivers/scsi/bfa/bfa_ioc.c
3663
if (sfp->lock) {
drivers/scsi/bfa/bfa_ioc.c
3664
sfp->status = BFA_STATUS_IOC_FAILURE;
drivers/scsi/bfa/bfa_ioc.c
3665
bfa_cb_sfp_show(sfp);
drivers/scsi/bfa/bfa_ioc.c
3668
if (sfp->state_query_lock) {
drivers/scsi/bfa/bfa_ioc.c
3669
sfp->status = BFA_STATUS_IOC_FAILURE;
drivers/scsi/bfa/bfa_ioc.c
3670
bfa_cb_sfp_state_query(sfp);
drivers/scsi/bfa/bfa_ioc.c
3683
bfa_sfp_scn_aen_post(struct bfa_sfp_s *sfp, struct bfi_sfp_scn_s *rsp)
drivers/scsi/bfa/bfa_ioc.c
3685
struct bfad_s *bfad = (struct bfad_s *)sfp->ioc->bfa->bfad;
drivers/scsi/bfa/bfa_ioc.c
3689
bfa_trc(sfp, (((u64)rsp->pomlvl) << 16) | (((u64)rsp->sfpid) << 8) |
drivers/scsi/bfa/bfa_ioc.c
3696
aen_entry->aen_data.port.ioc_type = bfa_ioc_get_type(sfp->ioc);
drivers/scsi/bfa/bfa_ioc.c
3697
aen_entry->aen_data.port.pwwn = sfp->ioc->attr->pwwn;
drivers/scsi/bfa/bfa_ioc.c
3698
aen_entry->aen_data.port.mac = bfa_ioc_get_mac(sfp->ioc);
drivers/scsi/bfa/bfa_ioc.c
3718
bfa_trc(sfp, rsp->event);
drivers/scsi/bfa/bfa_ioc.c
3723
bfad_im_post_vendor_event(aen_entry, bfad, ++sfp->ioc->ioc_aen_seq,
drivers/scsi/bfa/bfa_ioc.c
3731
bfa_sfp_getdata_send(struct bfa_sfp_s *sfp)
drivers/scsi/bfa/bfa_ioc.c
3733
struct bfi_sfp_req_s *req = (struct bfi_sfp_req_s *)sfp->mbcmd.msg;
drivers/scsi/bfa/bfa_ioc.c
3735
bfa_trc(sfp, req->memtype);
drivers/scsi/bfa/bfa_ioc.c
3739
bfa_ioc_portid(sfp->ioc));
drivers/scsi/bfa/bfa_ioc.c
3742
bfa_ioc_mbox_queue(sfp->ioc, &sfp->mbcmd);
drivers/scsi/bfa/bfa_ioc.c
3749
bfa_sfp_getdata(struct bfa_sfp_s *sfp, enum bfi_sfp_mem_e memtype)
drivers/scsi/bfa/bfa_ioc.c
3751
struct bfi_sfp_req_s *req = (struct bfi_sfp_req_s *)sfp->mbcmd.msg;
drivers/scsi/bfa/bfa_ioc.c
3753
WARN_ON(sfp->lock != 0);
drivers/scsi/bfa/bfa_ioc.c
3754
bfa_trc(sfp, sfp->state);
drivers/scsi/bfa/bfa_ioc.c
3756
sfp->lock = 1;
drivers/scsi/bfa/bfa_ioc.c
3757
sfp->memtype = memtype;
drivers/scsi/bfa/bfa_ioc.c
3761
bfa_alen_set(&req->alen, sizeof(struct sfp_mem_s), sfp->dbuf_pa);
drivers/scsi/bfa/bfa_ioc.c
3763
bfa_sfp_getdata_send(sfp);
drivers/scsi/bfa/bfa_ioc.c
3770
bfa_sfp_scn(struct bfa_sfp_s *sfp, struct bfi_mbmsg_s *msg)
drivers/scsi/bfa/bfa_ioc.c
3776
sfp->state = BFA_SFP_STATE_INSERTED;
drivers/scsi/bfa/bfa_ioc.c
3777
sfp->data_valid = 0;
drivers/scsi/bfa/bfa_ioc.c
3778
bfa_sfp_scn_aen_post(sfp, rsp);
drivers/scsi/bfa/bfa_ioc.c
3781
sfp->state = BFA_SFP_STATE_REMOVED;
drivers/scsi/bfa/bfa_ioc.c
3782
sfp->data_valid = 0;
drivers/scsi/bfa/bfa_ioc.c
3783
bfa_sfp_scn_aen_post(sfp, rsp);
drivers/scsi/bfa/bfa_ioc.c
3786
sfp->state = BFA_SFP_STATE_FAILED;
drivers/scsi/bfa/bfa_ioc.c
3787
sfp->data_valid = 0;
drivers/scsi/bfa/bfa_ioc.c
3788
bfa_sfp_scn_aen_post(sfp, rsp);
drivers/scsi/bfa/bfa_ioc.c
3791
sfp->state = BFA_SFP_STATE_UNSUPPORT;
drivers/scsi/bfa/bfa_ioc.c
3792
bfa_sfp_scn_aen_post(sfp, rsp);
drivers/scsi/bfa/bfa_ioc.c
3793
if (!sfp->lock)
drivers/scsi/bfa/bfa_ioc.c
3794
bfa_sfp_getdata(sfp, BFI_SFP_MEM_ALL);
drivers/scsi/bfa/bfa_ioc.c
3797
bfa_sfp_scn_aen_post(sfp, rsp);
drivers/scsi/bfa/bfa_ioc.c
3800
sfp->state = BFA_SFP_STATE_VALID;
drivers/scsi/bfa/bfa_ioc.c
3801
if (!sfp->lock)
drivers/scsi/bfa/bfa_ioc.c
3802
bfa_sfp_getdata(sfp, BFI_SFP_MEM_ALL);
drivers/scsi/bfa/bfa_ioc.c
3805
bfa_trc(sfp, rsp->event);
drivers/scsi/bfa/bfa_ioc.c
3814
bfa_sfp_show_comp(struct bfa_sfp_s *sfp, struct bfi_mbmsg_s *msg)
drivers/scsi/bfa/bfa_ioc.c
3818
if (!sfp->lock) {
drivers/scsi/bfa/bfa_ioc.c
3822
bfa_trc(sfp, sfp->lock);
drivers/scsi/bfa/bfa_ioc.c
3826
bfa_trc(sfp, rsp->status);
drivers/scsi/bfa/bfa_ioc.c
3828
sfp->data_valid = 1;
drivers/scsi/bfa/bfa_ioc.c
3829
if (sfp->state == BFA_SFP_STATE_VALID)
drivers/scsi/bfa/bfa_ioc.c
3830
sfp->status = BFA_STATUS_OK;
drivers/scsi/bfa/bfa_ioc.c
3831
else if (sfp->state == BFA_SFP_STATE_UNSUPPORT)
drivers/scsi/bfa/bfa_ioc.c
3832
sfp->status = BFA_STATUS_SFP_UNSUPP;
drivers/scsi/bfa/bfa_ioc.c
3834
bfa_trc(sfp, sfp->state);
drivers/scsi/bfa/bfa_ioc.c
3836
sfp->data_valid = 0;
drivers/scsi/bfa/bfa_ioc.c
3837
sfp->status = rsp->status;
drivers/scsi/bfa/bfa_ioc.c
3841
bfa_trc(sfp, sfp->memtype);
drivers/scsi/bfa/bfa_ioc.c
3842
if (sfp->memtype == BFI_SFP_MEM_DIAGEXT) {
drivers/scsi/bfa/bfa_ioc.c
3843
bfa_trc(sfp, sfp->data_valid);
drivers/scsi/bfa/bfa_ioc.c
3844
if (sfp->data_valid) {
drivers/scsi/bfa/bfa_ioc.c
3846
u8 *des = (u8 *)(sfp->sfpmem);
drivers/scsi/bfa/bfa_ioc.c
3847
memcpy(des, sfp->dbuf_kva, size);
drivers/scsi/bfa/bfa_ioc.c
3852
bfa_cb_sfp_show(sfp);
drivers/scsi/bfa/bfa_ioc.c
3854
sfp->lock = 0;
drivers/scsi/bfa/bfa_ioc.c
3856
bfa_trc(sfp, sfp->state_query_lock);
drivers/scsi/bfa/bfa_ioc.c
3857
if (sfp->state_query_lock) {
drivers/scsi/bfa/bfa_ioc.c
3858
sfp->state = rsp->state;
drivers/scsi/bfa/bfa_ioc.c
3860
bfa_cb_sfp_state_query(sfp);
drivers/scsi/bfa/bfa_ioc.c
3868
bfa_sfp_state_query(struct bfa_sfp_s *sfp)
drivers/scsi/bfa/bfa_ioc.c
3870
struct bfi_sfp_req_s *req = (struct bfi_sfp_req_s *)sfp->mbcmd.msg;
drivers/scsi/bfa/bfa_ioc.c
3873
WARN_ON(sfp->state != BFA_SFP_STATE_INIT);
drivers/scsi/bfa/bfa_ioc.c
3874
WARN_ON(sfp->state_query_lock != 0);
drivers/scsi/bfa/bfa_ioc.c
3875
bfa_trc(sfp, sfp->state);
drivers/scsi/bfa/bfa_ioc.c
3877
sfp->state_query_lock = 1;
drivers/scsi/bfa/bfa_ioc.c
3880
if (!sfp->lock)
drivers/scsi/bfa/bfa_ioc.c
3881
bfa_sfp_getdata(sfp, BFI_SFP_MEM_ALL);
drivers/scsi/bfa/bfa_ioc.c
3885
bfa_sfp_media_get(struct bfa_sfp_s *sfp)
drivers/scsi/bfa/bfa_ioc.c
3887
enum bfa_defs_sfp_media_e *media = sfp->media;
drivers/scsi/bfa/bfa_ioc.c
3891
if (sfp->state == BFA_SFP_STATE_UNSUPPORT)
drivers/scsi/bfa/bfa_ioc.c
3893
else if (sfp->state == BFA_SFP_STATE_VALID) {
drivers/scsi/bfa/bfa_ioc.c
3895
struct sfp_mem_s *sfpmem = (struct sfp_mem_s *)sfp->dbuf_kva;
drivers/scsi/bfa/bfa_ioc.c
3900
bfa_trc(sfp, e10g.b);
drivers/scsi/bfa/bfa_ioc.c
3901
bfa_trc(sfp, xmtr_tech);
drivers/scsi/bfa/bfa_ioc.c
3925
bfa_trc(sfp, 0);
drivers/scsi/bfa/bfa_ioc.c
3927
bfa_trc(sfp, sfp->state);
drivers/scsi/bfa/bfa_ioc.c
3931
bfa_sfp_speed_valid(struct bfa_sfp_s *sfp, enum bfa_port_speed portspeed)
drivers/scsi/bfa/bfa_ioc.c
3933
struct sfp_mem_s *sfpmem = (struct sfp_mem_s *)sfp->dbuf_kva;
drivers/scsi/bfa/bfa_ioc.c
3942
bfa_trc(sfp, e10g.b);
drivers/scsi/bfa/bfa_ioc.c
3953
bfa_trc(sfp, portspeed);
drivers/scsi/bfa/bfa_ioc.c
3954
bfa_trc(sfp, fc3.b);
drivers/scsi/bfa/bfa_ioc.c
3955
bfa_trc(sfp, e10g.b);
drivers/scsi/bfa/bfa_ioc.c
3966
struct bfa_sfp_s *sfp = sfparg;
drivers/scsi/bfa/bfa_ioc.c
3970
bfa_sfp_show_comp(sfp, msg);
drivers/scsi/bfa/bfa_ioc.c
3974
bfa_sfp_scn(sfp, msg);
drivers/scsi/bfa/bfa_ioc.c
3978
bfa_trc(sfp, msg->mh.msg_id);
drivers/scsi/bfa/bfa_ioc.c
3996
bfa_sfp_attach(struct bfa_sfp_s *sfp, struct bfa_ioc_s *ioc, void *dev,
drivers/scsi/bfa/bfa_ioc.c
3999
sfp->dev = dev;
drivers/scsi/bfa/bfa_ioc.c
4000
sfp->ioc = ioc;
drivers/scsi/bfa/bfa_ioc.c
4001
sfp->trcmod = trcmod;
drivers/scsi/bfa/bfa_ioc.c
4003
sfp->cbfn = NULL;
drivers/scsi/bfa/bfa_ioc.c
4004
sfp->cbarg = NULL;
drivers/scsi/bfa/bfa_ioc.c
4005
sfp->sfpmem = NULL;
drivers/scsi/bfa/bfa_ioc.c
4006
sfp->lock = 0;
drivers/scsi/bfa/bfa_ioc.c
4007
sfp->data_valid = 0;
drivers/scsi/bfa/bfa_ioc.c
4008
sfp->state = BFA_SFP_STATE_INIT;
drivers/scsi/bfa/bfa_ioc.c
4009
sfp->state_query_lock = 0;
drivers/scsi/bfa/bfa_ioc.c
4010
sfp->state_query_cbfn = NULL;
drivers/scsi/bfa/bfa_ioc.c
4011
sfp->state_query_cbarg = NULL;
drivers/scsi/bfa/bfa_ioc.c
4012
sfp->media = NULL;
drivers/scsi/bfa/bfa_ioc.c
4013
sfp->portspeed = BFA_PORT_SPEED_UNKNOWN;
drivers/scsi/bfa/bfa_ioc.c
4014
sfp->is_elb = BFA_FALSE;
drivers/scsi/bfa/bfa_ioc.c
4016
bfa_ioc_mbox_regisr(sfp->ioc, BFI_MC_SFP, bfa_sfp_intr, sfp);
drivers/scsi/bfa/bfa_ioc.c
4017
bfa_q_qe_init(&sfp->ioc_notify);
drivers/scsi/bfa/bfa_ioc.c
4018
bfa_ioc_notify_init(&sfp->ioc_notify, bfa_sfp_notify, sfp);
drivers/scsi/bfa/bfa_ioc.c
4019
list_add_tail(&sfp->ioc_notify.qe, &sfp->ioc->notify_q);
drivers/scsi/bfa/bfa_ioc.c
4026
bfa_sfp_memclaim(struct bfa_sfp_s *sfp, u8 *dm_kva, u64 dm_pa)
drivers/scsi/bfa/bfa_ioc.c
4028
sfp->dbuf_kva = dm_kva;
drivers/scsi/bfa/bfa_ioc.c
4029
sfp->dbuf_pa = dm_pa;
drivers/scsi/bfa/bfa_ioc.c
4030
memset(sfp->dbuf_kva, 0, sizeof(struct sfp_mem_s));
drivers/scsi/bfa/bfa_ioc.c
4045
bfa_sfp_show(struct bfa_sfp_s *sfp, struct sfp_mem_s *sfpmem,
drivers/scsi/bfa/bfa_ioc.c
4049
if (!bfa_ioc_is_operational(sfp->ioc)) {
drivers/scsi/bfa/bfa_ioc.c
4050
bfa_trc(sfp, 0);
drivers/scsi/bfa/bfa_ioc.c
4054
if (sfp->lock) {
drivers/scsi/bfa/bfa_ioc.c
4055
bfa_trc(sfp, 0);
drivers/scsi/bfa/bfa_ioc.c
4059
sfp->cbfn = cbfn;
drivers/scsi/bfa/bfa_ioc.c
4060
sfp->cbarg = cbarg;
drivers/scsi/bfa/bfa_ioc.c
4061
sfp->sfpmem = sfpmem;
drivers/scsi/bfa/bfa_ioc.c
4063
bfa_sfp_getdata(sfp, BFI_SFP_MEM_DIAGEXT);
drivers/scsi/bfa/bfa_ioc.c
4076
bfa_sfp_media(struct bfa_sfp_s *sfp, enum bfa_defs_sfp_media_e *media,
drivers/scsi/bfa/bfa_ioc.c
4079
if (!bfa_ioc_is_operational(sfp->ioc)) {
drivers/scsi/bfa/bfa_ioc.c
4080
bfa_trc(sfp, 0);
drivers/scsi/bfa/bfa_ioc.c
4084
sfp->media = media;
drivers/scsi/bfa/bfa_ioc.c
4085
if (sfp->state == BFA_SFP_STATE_INIT) {
drivers/scsi/bfa/bfa_ioc.c
4086
if (sfp->state_query_lock) {
drivers/scsi/bfa/bfa_ioc.c
4087
bfa_trc(sfp, 0);
drivers/scsi/bfa/bfa_ioc.c
4090
sfp->state_query_cbfn = cbfn;
drivers/scsi/bfa/bfa_ioc.c
4091
sfp->state_query_cbarg = cbarg;
drivers/scsi/bfa/bfa_ioc.c
4092
bfa_sfp_state_query(sfp);
drivers/scsi/bfa/bfa_ioc.c
4097
bfa_sfp_media_get(sfp);
drivers/scsi/bfa/bfa_ioc.c
4109
bfa_sfp_speed(struct bfa_sfp_s *sfp, enum bfa_port_speed portspeed,
drivers/scsi/bfa/bfa_ioc.c
4114
if (!bfa_ioc_is_operational(sfp->ioc))
drivers/scsi/bfa/bfa_ioc.c
4118
if (bfa_mfg_is_mezz(sfp->ioc->attr->card_type))
drivers/scsi/bfa/bfa_ioc.c
4122
sfp->portspeed = portspeed;
drivers/scsi/bfa/bfa_ioc.c
4123
if (sfp->state == BFA_SFP_STATE_INIT) {
drivers/scsi/bfa/bfa_ioc.c
4124
if (sfp->state_query_lock) {
drivers/scsi/bfa/bfa_ioc.c
4125
bfa_trc(sfp, 0);
drivers/scsi/bfa/bfa_ioc.c
4128
sfp->state_query_cbfn = cbfn;
drivers/scsi/bfa/bfa_ioc.c
4129
sfp->state_query_cbarg = cbarg;
drivers/scsi/bfa/bfa_ioc.c
4130
bfa_sfp_state_query(sfp);
drivers/scsi/bfa/bfa_ioc.c
4135
if (sfp->state == BFA_SFP_STATE_REMOVED ||
drivers/scsi/bfa/bfa_ioc.c
4136
sfp->state == BFA_SFP_STATE_FAILED) {
drivers/scsi/bfa/bfa_ioc.c
4137
bfa_trc(sfp, sfp->state);
drivers/scsi/bfa/bfa_ioc.c
4141
if (sfp->state == BFA_SFP_STATE_INSERTED) {
drivers/scsi/bfa/bfa_ioc.c
4142
bfa_trc(sfp, sfp->state);
drivers/scsi/bfa/bfa_ioc.c
4147
if (sfp->is_elb)
drivers/scsi/bfa/bfa_ioc.c
4150
return bfa_sfp_speed_valid(sfp, portspeed);
drivers/scsi/bfa/bfa_ioc.h
471
#define BFA_SFP_MOD(__bfa) (&(__bfa)->modules.sfp)
drivers/scsi/bfa/bfa_ioc.h
476
void bfa_sfp_attach(struct bfa_sfp_s *sfp, struct bfa_ioc_s *ioc,
drivers/scsi/bfa/bfa_ioc.h
482
bfa_status_t bfa_sfp_show(struct bfa_sfp_s *sfp, struct sfp_mem_s *sfpmem,
drivers/scsi/bfa/bfa_ioc.h
485
bfa_status_t bfa_sfp_media(struct bfa_sfp_s *sfp,
drivers/scsi/bfa/bfa_ioc.h
489
bfa_status_t bfa_sfp_speed(struct bfa_sfp_s *sfp,
drivers/scsi/bfa/bfa_modules.h
36
struct bfa_sfp_s sfp; /* SFP module */
drivers/scsi/bfa/bfad_bsg.c
1734
iocmd->status = bfa_sfp_show(BFA_SFP_MOD(&bfad->bfa), &iocmd->sfp,
drivers/scsi/bfa/bfad_bsg.h
628
struct sfp_mem_s sfp;
drivers/scsi/qla2xxx/qla_bsg.c
1570
void *sfp = dma_pool_alloc(ha->s_dma_pool, GFP_KERNEL, &sfp_dma);
drivers/scsi/qla2xxx/qla_bsg.c
1572
if (!sfp) {
drivers/scsi/qla2xxx/qla_bsg.c
1584
memcpy(sfp, &image->field_info, sizeof(image->field_info));
drivers/scsi/qla2xxx/qla_bsg.c
1585
rval = qla2x00_write_sfp(vha, sfp_dma, sfp,
drivers/scsi/qla2xxx/qla_bsg.c
1599
dma_pool_free(ha->s_dma_pool, sfp, sfp_dma);
drivers/scsi/qla2xxx/qla_bsg.c
1621
uint8_t *sfp = dma_pool_alloc(ha->s_dma_pool, GFP_KERNEL, &sfp_dma);
drivers/scsi/qla2xxx/qla_bsg.c
1623
if (!sfp) {
drivers/scsi/qla2xxx/qla_bsg.c
1632
rval = qla2x00_read_sfp(vha, sfp_dma, sfp,
drivers/scsi/qla2xxx/qla_bsg.c
1635
sr->status_reg = *sfp;
drivers/scsi/qla2xxx/qla_bsg.c
1649
dma_pool_free(ha->s_dma_pool, sfp, sfp_dma);
drivers/scsi/qla2xxx/qla_bsg.c
1672
uint8_t *sfp = dma_pool_alloc(ha->s_dma_pool, GFP_KERNEL, &sfp_dma);
drivers/scsi/qla2xxx/qla_bsg.c
1674
if (!sfp) {
drivers/scsi/qla2xxx/qla_bsg.c
1683
*sfp = sr->status_reg;
drivers/scsi/qla2xxx/qla_bsg.c
1684
rval = qla2x00_write_sfp(vha, sfp_dma, sfp,
drivers/scsi/qla2xxx/qla_bsg.c
1697
dma_pool_free(ha->s_dma_pool, sfp, sfp_dma);
drivers/scsi/qla2xxx/qla_bsg.c
1719
uint8_t *sfp = dma_pool_alloc(ha->s_dma_pool, GFP_KERNEL, &sfp_dma);
drivers/scsi/qla2xxx/qla_bsg.c
1721
if (!sfp) {
drivers/scsi/qla2xxx/qla_bsg.c
1730
memcpy(sfp, i2c->buffer, i2c->length);
drivers/scsi/qla2xxx/qla_bsg.c
1731
rval = qla2x00_write_sfp(vha, sfp_dma, sfp,
drivers/scsi/qla2xxx/qla_bsg.c
1743
dma_pool_free(ha->s_dma_pool, sfp, sfp_dma);
drivers/scsi/qla2xxx/qla_bsg.c
1765
uint8_t *sfp = dma_pool_alloc(ha->s_dma_pool, GFP_KERNEL, &sfp_dma);
drivers/scsi/qla2xxx/qla_bsg.c
1767
if (!sfp) {
drivers/scsi/qla2xxx/qla_bsg.c
1776
rval = qla2x00_read_sfp(vha, sfp_dma, sfp,
drivers/scsi/qla2xxx/qla_bsg.c
1785
memcpy(i2c->buffer, sfp, i2c->length);
drivers/scsi/qla2xxx/qla_bsg.c
1792
dma_pool_free(ha->s_dma_pool, sfp, sfp_dma);
drivers/scsi/qla2xxx/qla_mbx.c
5153
qla2x00_read_sfp(scsi_qla_host_t *vha, dma_addr_t sfp_dma, uint8_t *sfp,
drivers/scsi/qla2xxx/qla_mbx.c
5186
*sfp = mcp->mb[1];
drivers/scsi/qla2xxx/qla_mbx.c
5204
qla2x00_write_sfp(scsi_qla_host_t *vha, dma_addr_t sfp_dma, uint8_t *sfp,
drivers/scsi/qla2xxx/qla_mbx.c
5222
len = *sfp;
drivers/scsi/qla2xxx/qla_os.c
6071
uint8_t *sfp = NULL;
drivers/scsi/qla2xxx/qla_os.c
6108
sfp = dma_alloc_coherent(&ha->pdev->dev, SFP_RTDI_LEN,
drivers/scsi/qla2xxx/qla_os.c
6166
if (sfp) {
drivers/scsi/qla2xxx/qla_os.c
6168
memset(sfp, 0, SFP_RTDI_LEN);
drivers/scsi/qla2xxx/qla_os.c
6169
rval = qla2x00_read_sfp(vha, sfp_dma, sfp, 0xa0, 0x7, 2, 0);
drivers/scsi/qla2xxx/qla_os.c
6172
if (sfp[0] & BIT_2 || sfp[1] & (BIT_6|BIT_5))
drivers/scsi/qla2xxx/qla_os.c
6174
else if (sfp[0] & BIT_1)
drivers/scsi/qla2xxx/qla_os.c
6176
else if (sfp[1] & BIT_4)
drivers/scsi/qla2xxx/qla_os.c
6181
memset(sfp, 0, SFP_RTDI_LEN);
drivers/scsi/qla2xxx/qla_os.c
6182
rval = qla2x00_read_sfp(vha, sfp_dma, sfp, 0xa0, 0x0, 1, 0);
drivers/scsi/qla2xxx/qla_os.c
6185
if (sfp[0] == 0x3)
drivers/scsi/qla2xxx/qla_os.c
6192
memset(sfp, 0, SFP_RTDI_LEN);
drivers/scsi/qla2xxx/qla_os.c
6193
rval = qla2x00_read_sfp(vha, sfp_dma, sfp, 0xa2, 0x60, 10, 0);
drivers/scsi/qla2xxx/qla_os.c
6195
__be16 *trx = (__force __be16 *)sfp; /* already be16 */
drivers/scsi/qla2xxx/qla_os.c
6297
if (sfp) {
drivers/scsi/qla2xxx/qla_os.c
6298
memset(sfp, 0, SFP_RTDI_LEN);
drivers/scsi/qla2xxx/qla_os.c
6299
rval = qla2x00_read_sfp(vha, sfp_dma, sfp, 0xa2, 0, 64, 0);
drivers/scsi/qla2xxx/qla_os.c
6301
__be16 *trx = (__force __be16 *)sfp; /* already be16 */
drivers/scsi/qla2xxx/qla_os.c
6344
memset(sfp, 0, SFP_RTDI_LEN);
drivers/scsi/qla2xxx/qla_os.c
6345
rval = qla2x00_read_sfp(vha, sfp_dma, sfp, 0xa2, 112, 64, 0);
drivers/scsi/qla2xxx/qla_os.c
6350
(sfp[0] >> 7 & 1) << 3 |
drivers/scsi/qla2xxx/qla_os.c
6351
(sfp[0] >> 6 & 1) << 2 |
drivers/scsi/qla2xxx/qla_os.c
6352
(sfp[4] >> 7 & 1) << 1 |
drivers/scsi/qla2xxx/qla_os.c
6353
(sfp[4] >> 6 & 1) << 0);
drivers/scsi/qla2xxx/qla_os.c
6358
(sfp[0] >> 5 & 1) << 3 |
drivers/scsi/qla2xxx/qla_os.c
6359
(sfp[0] >> 4 & 1) << 2 |
drivers/scsi/qla2xxx/qla_os.c
6360
(sfp[4] >> 5 & 1) << 1 |
drivers/scsi/qla2xxx/qla_os.c
6361
(sfp[4] >> 4 & 1) << 0);
drivers/scsi/qla2xxx/qla_os.c
6366
(sfp[0] >> 3 & 1) << 3 |
drivers/scsi/qla2xxx/qla_os.c
6367
(sfp[0] >> 2 & 1) << 2 |
drivers/scsi/qla2xxx/qla_os.c
6368
(sfp[4] >> 3 & 1) << 1 |
drivers/scsi/qla2xxx/qla_os.c
6369
(sfp[4] >> 2 & 1) << 0);
drivers/scsi/qla2xxx/qla_os.c
6374
(sfp[0] >> 1 & 1) << 3 |
drivers/scsi/qla2xxx/qla_os.c
6375
(sfp[0] >> 0 & 1) << 2 |
drivers/scsi/qla2xxx/qla_os.c
6376
(sfp[4] >> 1 & 1) << 1 |
drivers/scsi/qla2xxx/qla_os.c
6377
(sfp[4] >> 0 & 1) << 0);
drivers/scsi/qla2xxx/qla_os.c
6382
(sfp[1] >> 7 & 1) << 3 |
drivers/scsi/qla2xxx/qla_os.c
6383
(sfp[1] >> 6 & 1) << 2 |
drivers/scsi/qla2xxx/qla_os.c
6384
(sfp[5] >> 7 & 1) << 1 |
drivers/scsi/qla2xxx/qla_os.c
6385
(sfp[5] >> 6 & 1) << 0);
drivers/scsi/qla2xxx/qla_os.c
6394
if (sfp) {
drivers/scsi/qla2xxx/qla_os.c
6395
memset(sfp, 0, SFP_RTDI_LEN);
drivers/scsi/qla2xxx/qla_os.c
6396
rval = qla2x00_read_sfp(vha, sfp_dma, sfp, 0xa0, 20, 64, 0);
drivers/scsi/qla2xxx/qla_os.c
6399
sfp + 0,
drivers/scsi/qla2xxx/qla_os.c
6402
sfp + 20,
drivers/scsi/qla2xxx/qla_os.c
6405
sfp + 36,
drivers/scsi/qla2xxx/qla_os.c
6408
sfp + 48,
drivers/scsi/qla2xxx/qla_os.c
6412
memset(sfp, 0, SFP_RTDI_LEN);
drivers/scsi/qla2xxx/qla_os.c
6413
rval = qla2x00_read_sfp(vha, sfp_dma, sfp, 0xa0, 84, 8, 0);
drivers/scsi/qla2xxx/qla_os.c
6416
sfp + 0,
drivers/scsi/qla2xxx/qla_os.c
6451
if (sfp)
drivers/scsi/qla2xxx/qla_os.c
6453
sfp, sfp_dma);
drivers/scsi/sg.c
1000
list_for_each_entry(srp, &sfp->rq_list, entry) {
drivers/scsi/sg.c
1002
read_unlock_irqrestore(&sfp->rq_list_lock,
drivers/scsi/sg.c
1007
read_unlock_irqrestore(&sfp->rq_list_lock, iflags);
drivers/scsi/sg.c
1010
read_lock_irqsave(&sfp->rq_list_lock, iflags);
drivers/scsi/sg.c
1012
list_for_each_entry(srp, &sfp->rq_list, entry) {
drivers/scsi/sg.c
1016
read_unlock_irqrestore(&sfp->rq_list_lock, iflags);
drivers/scsi/sg.c
1028
mutex_lock(&sfp->f_mutex);
drivers/scsi/sg.c
1029
if (val != sfp->reserve.bufflen) {
drivers/scsi/sg.c
1030
if (sfp->mmap_called ||
drivers/scsi/sg.c
1031
sfp->res_in_use) {
drivers/scsi/sg.c
1032
mutex_unlock(&sfp->f_mutex);
drivers/scsi/sg.c
1036
sg_remove_scat(sfp, &sfp->reserve);
drivers/scsi/sg.c
1037
sg_build_reserve(sfp, val);
drivers/scsi/sg.c
1039
mutex_unlock(&sfp->f_mutex);
drivers/scsi/sg.c
1042
val = min_t(int, sfp->reserve.bufflen,
drivers/scsi/sg.c
1049
sfp->cmd_q = val ? 1 : 0;
drivers/scsi/sg.c
1052
return put_user((int) sfp->cmd_q, ip);
drivers/scsi/sg.c
1057
sfp->keep_orphan = val;
drivers/scsi/sg.c
1060
return put_user((int) sfp->keep_orphan, ip);
drivers/scsi/sg.c
1067
sfp->next_cmd_len = (val > 0) ? val : 0;
drivers/scsi/sg.c
1083
read_lock_irqsave(&sfp->rq_list_lock, iflags);
drivers/scsi/sg.c
1084
sg_fill_request_table(sfp, rinfo);
drivers/scsi/sg.c
1085
read_unlock_irqrestore(&sfp->rq_list_lock, iflags);
drivers/scsi/sg.c
1152
Sg_fd *sfp;
drivers/scsi/sg.c
1155
if ((!(sfp = (Sg_fd *) filp->private_data)) || (!(sdp = sfp->parentdp)))
drivers/scsi/sg.c
1158
ret = sg_ioctl_common(filp, sdp, sfp, cmd_in, p);
drivers/scsi/sg.c
1169
Sg_fd *sfp;
drivers/scsi/sg.c
1174
sfp = filp->private_data;
drivers/scsi/sg.c
1175
if (!sfp)
drivers/scsi/sg.c
1177
sdp = sfp->parentdp;
drivers/scsi/sg.c
1180
poll_wait(filp, &sfp->read_wait, wait);
drivers/scsi/sg.c
1181
read_lock_irqsave(&sfp->rq_list_lock, iflags);
drivers/scsi/sg.c
1182
list_for_each_entry(srp, &sfp->rq_list, entry) {
drivers/scsi/sg.c
1188
read_unlock_irqrestore(&sfp->rq_list_lock, iflags);
drivers/scsi/sg.c
1192
else if (!sfp->cmd_q) {
drivers/scsi/sg.c
1206
Sg_fd *sfp;
drivers/scsi/sg.c
1208
if ((!(sfp = (Sg_fd *) filp->private_data)) || (!(sdp = sfp->parentdp)))
drivers/scsi/sg.c
1213
return fasync_helper(fd, filp, mode, &sfp->async_qp);
drivers/scsi/sg.c
1220
Sg_fd *sfp;
drivers/scsi/sg.c
1225
if ((NULL == vma) || (!(sfp = (Sg_fd *) vma->vm_private_data)))
drivers/scsi/sg.c
1227
rsv_schp = &sfp->reserve;
drivers/scsi/sg.c
1231
SCSI_LOG_TIMEOUT(3, sg_printk(KERN_INFO, sfp->parentdp,
drivers/scsi/sg.c
1259
Sg_fd *sfp;
drivers/scsi/sg.c
1265
if ((!filp) || (!vma) || (!(sfp = (Sg_fd *) filp->private_data)))
drivers/scsi/sg.c
1268
SCSI_LOG_TIMEOUT(3, sg_printk(KERN_INFO, sfp->parentdp,
drivers/scsi/sg.c
1273
rsv_schp = &sfp->reserve;
drivers/scsi/sg.c
1274
mutex_lock(&sfp->f_mutex);
drivers/scsi/sg.c
1288
sfp->mmap_called = 1;
drivers/scsi/sg.c
1290
vma->vm_private_data = sfp;
drivers/scsi/sg.c
1293
mutex_unlock(&sfp->f_mutex);
drivers/scsi/sg.c
1301
struct sg_fd *sfp = srp->parentfp;
drivers/scsi/sg.c
1304
sg_remove_request(sfp, srp);
drivers/scsi/sg.c
1305
kref_put(&sfp->f_ref, sg_remove_sfp);
drivers/scsi/sg.c
1319
Sg_fd *sfp;
drivers/scsi/sg.c
1328
sfp = srp->parentfp;
drivers/scsi/sg.c
1329
if (WARN_ON(sfp == NULL))
drivers/scsi/sg.c
1332
sdp = sfp->parentdp;
drivers/scsi/sg.c
1384
write_lock_irqsave(&sfp->rq_list_lock, iflags);
drivers/scsi/sg.c
1386
if (sfp->keep_orphan)
drivers/scsi/sg.c
1395
write_unlock_irqrestore(&sfp->rq_list_lock, iflags);
drivers/scsi/sg.c
1401
wake_up_interruptible(&sfp->read_wait);
drivers/scsi/sg.c
1402
kill_fasync(&sfp->async_qp, SIGPOLL, POLL_IN);
drivers/scsi/sg.c
1403
kref_put(&sfp->f_ref, sg_remove_sfp);
drivers/scsi/sg.c
1596
Sg_fd *sfp;
drivers/scsi/sg.c
1610
list_for_each_entry(sfp, &sdp->sfds, sfd_siblings) {
drivers/scsi/sg.c
1611
wake_up_interruptible_all(&sfp->read_wait);
drivers/scsi/sg.c
1612
kill_fasync(&sfp->async_qp, SIGPOLL, POLL_HUP);
drivers/scsi/sg.c
1726
Sg_fd *sfp = srp->parentfp;
drivers/scsi/sg.c
1732
Sg_scatter_hold *rsv_schp = &sfp->reserve;
drivers/scsi/sg.c
1733
struct request_queue *q = sfp->parentdp->device->request_queue;
drivers/scsi/sg.c
1738
SCSI_LOG_TIMEOUT(4, sg_printk(KERN_INFO, sfp->parentdp,
drivers/scsi/sg.c
1782
mutex_lock(&sfp->f_mutex);
drivers/scsi/sg.c
1784
!sfp->res_in_use) {
drivers/scsi/sg.c
1785
sfp->res_in_use = 1;
drivers/scsi/sg.c
1786
sg_link_reserve(sfp, srp, dxfer_len);
drivers/scsi/sg.c
1791
mutex_unlock(&sfp->f_mutex);
drivers/scsi/sg.c
1794
res = sg_build_indirect(req_schp, sfp, dxfer_len);
drivers/scsi/sg.c
1796
mutex_unlock(&sfp->f_mutex);
drivers/scsi/sg.c
1800
mutex_unlock(&sfp->f_mutex);
drivers/scsi/sg.c
1831
Sg_fd *sfp = srp->parentfp;
drivers/scsi/sg.c
1834
SCSI_LOG_TIMEOUT(4, sg_printk(KERN_INFO, sfp->parentdp,
drivers/scsi/sg.c
184
static int sg_build_indirect(Sg_scatter_hold * schp, Sg_fd * sfp, int buff_size);
drivers/scsi/sg.c
1844
sg_unlink_reserve(sfp, srp);
drivers/scsi/sg.c
1846
sg_remove_scat(sfp, req_schp);
drivers/scsi/sg.c
185
static ssize_t sg_new_read(Sg_fd * sfp, char __user *buf, size_t count,
drivers/scsi/sg.c
1852
sg_build_sgat(Sg_scatter_hold * schp, const Sg_fd * sfp, int tablesize)
drivers/scsi/sg.c
1865
sg_build_indirect(Sg_scatter_hold * schp, Sg_fd * sfp, int buff_size)
drivers/scsi/sg.c
1868
int sg_tablesize = sfp->parentdp->sg_tablesize;
drivers/scsi/sg.c
187
static ssize_t sg_new_write(Sg_fd *sfp, struct file *file,
drivers/scsi/sg.c
1878
SCSI_LOG_TIMEOUT(4, sg_printk(KERN_INFO, sfp->parentdp,
drivers/scsi/sg.c
1883
mx_sc_elems = sg_build_sgat(schp, sfp, sg_tablesize);
drivers/scsi/sg.c
190
static int sg_common_write(Sg_fd * sfp, Sg_request * srp,
drivers/scsi/sg.c
1917
SCSI_LOG_TIMEOUT(5, sg_printk(KERN_INFO, sfp->parentdp,
drivers/scsi/sg.c
1924
SCSI_LOG_TIMEOUT(5, sg_printk(KERN_INFO, sfp->parentdp,
drivers/scsi/sg.c
193
static void sg_remove_scat(Sg_fd * sfp, Sg_scatter_hold * schp);
drivers/scsi/sg.c
194
static void sg_build_reserve(Sg_fd * sfp, int req_size);
drivers/scsi/sg.c
1943
sg_remove_scat(Sg_fd * sfp, Sg_scatter_hold * schp)
drivers/scsi/sg.c
1945
SCSI_LOG_TIMEOUT(4, sg_printk(KERN_INFO, sfp->parentdp,
drivers/scsi/sg.c
195
static void sg_link_reserve(Sg_fd * sfp, Sg_request * srp, int size);
drivers/scsi/sg.c
1953
sg_printk(KERN_INFO, sfp->parentdp,
drivers/scsi/sg.c
196
static void sg_unlink_reserve(Sg_fd * sfp, Sg_request * srp);
drivers/scsi/sg.c
199
static Sg_request *sg_get_rq_mark(Sg_fd * sfp, int pack_id, bool *busy);
drivers/scsi/sg.c
1999
sg_build_reserve(Sg_fd * sfp, int req_size)
drivers/scsi/sg.c
200
static Sg_request *sg_add_request(Sg_fd * sfp);
drivers/scsi/sg.c
2001
Sg_scatter_hold *schp = &sfp->reserve;
drivers/scsi/sg.c
2003
SCSI_LOG_TIMEOUT(4, sg_printk(KERN_INFO, sfp->parentdp,
drivers/scsi/sg.c
2008
if (0 == sg_build_indirect(schp, sfp, req_size))
drivers/scsi/sg.c
201
static int sg_remove_request(Sg_fd * sfp, Sg_request * srp);
drivers/scsi/sg.c
2011
sg_remove_scat(sfp, schp);
drivers/scsi/sg.c
2017
sg_link_reserve(Sg_fd * sfp, Sg_request * srp, int size)
drivers/scsi/sg.c
2020
Sg_scatter_hold *rsv_schp = &sfp->reserve;
drivers/scsi/sg.c
2024
SCSI_LOG_TIMEOUT(4, sg_printk(KERN_INFO, sfp->parentdp,
drivers/scsi/sg.c
2043
SCSI_LOG_TIMEOUT(1, sg_printk(KERN_INFO, sfp->parentdp,
drivers/scsi/sg.c
2048
sg_unlink_reserve(Sg_fd * sfp, Sg_request * srp)
drivers/scsi/sg.c
2062
sfp->res_in_use = 0;
drivers/scsi/sg.c
2066
sg_get_rq_mark(Sg_fd * sfp, int pack_id, bool *busy)
drivers/scsi/sg.c
2072
write_lock_irqsave(&sfp->rq_list_lock, iflags);
drivers/scsi/sg.c
2073
list_for_each_entry(resp, &sfp->rq_list, entry) {
drivers/scsi/sg.c
2083
write_unlock_irqrestore(&sfp->rq_list_lock, iflags);
drivers/scsi/sg.c
2090
write_unlock_irqrestore(&sfp->rq_list_lock, iflags);
drivers/scsi/sg.c
2096
sg_add_request(Sg_fd * sfp)
drivers/scsi/sg.c
2100
Sg_request *rp = sfp->req_arr;
drivers/scsi/sg.c
2102
write_lock_irqsave(&sfp->rq_list_lock, iflags);
drivers/scsi/sg.c
2103
if (!list_empty(&sfp->rq_list)) {
drivers/scsi/sg.c
2104
if (!sfp->cmd_q)
drivers/scsi/sg.c
2115
rp->parentfp = sfp;
drivers/scsi/sg.c
2117
list_add_tail(&rp->entry, &sfp->rq_list);
drivers/scsi/sg.c
2118
write_unlock_irqrestore(&sfp->rq_list_lock, iflags);
drivers/scsi/sg.c
2121
write_unlock_irqrestore(&sfp->rq_list_lock, iflags);
drivers/scsi/sg.c
2127
sg_remove_request(Sg_fd * sfp, Sg_request * srp)
drivers/scsi/sg.c
2132
if (!sfp || !srp || list_empty(&sfp->rq_list))
drivers/scsi/sg.c
2134
write_lock_irqsave(&sfp->rq_list_lock, iflags);
drivers/scsi/sg.c
2140
write_unlock_irqrestore(&sfp->rq_list_lock, iflags);
drivers/scsi/sg.c
2147
if (unlikely(atomic_read(&sfp->parentdp->detaching)))
drivers/scsi/sg.c
2148
wake_up_interruptible_all(&sfp->read_wait);
drivers/scsi/sg.c
2156
Sg_fd *sfp;
drivers/scsi/sg.c
2160
sfp = kzalloc_obj(*sfp, GFP_ATOMIC | __GFP_NOWARN);
drivers/scsi/sg.c
2161
if (!sfp)
drivers/scsi/sg.c
2164
init_waitqueue_head(&sfp->read_wait);
drivers/scsi/sg.c
2165
rwlock_init(&sfp->rq_list_lock);
drivers/scsi/sg.c
2166
INIT_LIST_HEAD(&sfp->rq_list);
drivers/scsi/sg.c
2167
kref_init(&sfp->f_ref);
drivers/scsi/sg.c
2168
mutex_init(&sfp->f_mutex);
drivers/scsi/sg.c
2169
sfp->timeout = SG_DEFAULT_TIMEOUT;
drivers/scsi/sg.c
2170
sfp->timeout_user = SG_DEFAULT_TIMEOUT_USER;
drivers/scsi/sg.c
2171
sfp->force_packid = SG_DEF_FORCE_PACK_ID;
drivers/scsi/sg.c
2172
sfp->cmd_q = SG_DEF_COMMAND_Q;
drivers/scsi/sg.c
2173
sfp->keep_orphan = SG_DEF_KEEP_ORPHAN;
drivers/scsi/sg.c
2174
sfp->parentdp = sdp;
drivers/scsi/sg.c
2178
kfree(sfp);
drivers/scsi/sg.c
2181
list_add_tail(&sfp->sfd_siblings, &sdp->sfds);
drivers/scsi/sg.c
2184
"sg_add_sfp: sfp=0x%p\n", sfp));
drivers/scsi/sg.c
2190
sg_build_reserve(sfp, bufflen);
drivers/scsi/sg.c
2193
sfp->reserve.bufflen,
drivers/scsi/sg.c
2194
sfp->reserve.k_use_sg));
drivers/scsi/sg.c
2198
return sfp;
drivers/scsi/sg.c
2204
struct sg_fd *sfp = container_of(work, struct sg_fd, ew.work);
drivers/scsi/sg.c
2205
struct sg_device *sdp = sfp->parentdp;
drivers/scsi/sg.c
2211
write_lock_irqsave(&sfp->rq_list_lock, iflags);
drivers/scsi/sg.c
2212
while (!list_empty(&sfp->rq_list)) {
drivers/scsi/sg.c
2213
srp = list_first_entry(&sfp->rq_list, Sg_request, entry);
drivers/scsi/sg.c
2215
write_unlock_irqrestore(&sfp->rq_list_lock, iflags);
drivers/scsi/sg.c
2224
write_lock_irqsave(&sfp->rq_list_lock, iflags);
drivers/scsi/sg.c
2226
write_unlock_irqrestore(&sfp->rq_list_lock, iflags);
drivers/scsi/sg.c
2228
if (sfp->reserve.bufflen > 0) {
drivers/scsi/sg.c
2231
(int) sfp->reserve.bufflen,
drivers/scsi/sg.c
2232
(int) sfp->reserve.k_use_sg));
drivers/scsi/sg.c
2233
sg_remove_scat(sfp, &sfp->reserve);
drivers/scsi/sg.c
2237
"sg_remove_sfp: sfp=0x%p\n", sfp));
drivers/scsi/sg.c
2238
kfree(sfp);
drivers/scsi/sg.c
2248
struct sg_fd *sfp = container_of(kref, struct sg_fd, f_ref);
drivers/scsi/sg.c
2249
struct sg_device *sdp = sfp->parentdp;
drivers/scsi/sg.c
2253
list_del(&sfp->sfd_siblings);
drivers/scsi/sg.c
2256
INIT_WORK(&sfp->ew.work, sg_remove_sfp_usercontext);
drivers/scsi/sg.c
2257
schedule_work(&sfp->ew.work);
drivers/scsi/sg.c
237
struct sg_fd *sfp = filp->private_data;
drivers/scsi/sg.c
239
if (sfp->parentdp->device->type == TYPE_SCANNER)
drivers/scsi/sg.c
291
Sg_fd *sfp;
drivers/scsi/sg.c
349
sfp = sg_add_sfp(sdp);
drivers/scsi/sg.c
350
if (IS_ERR(sfp)) {
drivers/scsi/sg.c
351
retval = PTR_ERR(sfp);
drivers/scsi/sg.c
355
filp->private_data = sfp;
drivers/scsi/sg.c
383
Sg_fd *sfp;
drivers/scsi/sg.c
385
if ((!(sfp = (Sg_fd *) filp->private_data)) || (!(sdp = sfp->parentdp)))
drivers/scsi/sg.c
401
kref_put(&sfp->f_ref, sg_remove_sfp);
drivers/scsi/sg.c
441
Sg_fd *sfp;
drivers/scsi/sg.c
457
if ((!(sfp = (Sg_fd *) filp->private_data)) || (!(sdp = sfp->parentdp)))
drivers/scsi/sg.c
462
if (sfp->force_packid)
drivers/scsi/sg.c
467
srp = sg_get_rq_mark(sfp, req_pack_id, &busy);
drivers/scsi/sg.c
471
retval = wait_event_interruptible(sfp->read_wait,
drivers/scsi/sg.c
472
((srp = sg_get_rq_mark(sfp, req_pack_id, &busy)) ||
drivers/scsi/sg.c
479
return sg_new_read(sfp, buf, count, srp);
drivers/scsi/sg.c
547
sg_remove_request(sfp, srp);
drivers/scsi/sg.c
555
sg_new_read(Sg_fd * sfp, char __user *buf, size_t count, Sg_request * srp)
drivers/scsi/sg.c
591
sg_remove_request(sfp, srp);
drivers/scsi/sg.c
602
Sg_fd *sfp;
drivers/scsi/sg.c
613
if ((!(sfp = (Sg_fd *) filp->private_data)) || (!(sdp = sfp->parentdp)))
drivers/scsi/sg.c
629
return sg_new_write(sfp, filp, buf, count,
drivers/scsi/sg.c
638
if (!(srp = sg_add_request(sfp))) {
drivers/scsi/sg.c
643
mutex_lock(&sfp->f_mutex);
drivers/scsi/sg.c
644
if (sfp->next_cmd_len > 0) {
drivers/scsi/sg.c
645
cmd_size = sfp->next_cmd_len;
drivers/scsi/sg.c
646
sfp->next_cmd_len = 0; /* reset so only this write() effected */
drivers/scsi/sg.c
652
mutex_unlock(&sfp->f_mutex);
drivers/scsi/sg.c
661
sg_remove_request(sfp, srp);
drivers/scsi/sg.c
686
sg_remove_request(sfp, srp);
drivers/scsi/sg.c
704
k = sg_common_write(sfp, srp, cmnd, sfp->timeout, blocking);
drivers/scsi/sg.c
709
sg_new_write(Sg_fd *sfp, struct file *file, const char __user *buf,
drivers/scsi/sg.c
723
sfp->cmd_q = 1; /* when sg_io_hdr seen, set command queuing on */
drivers/scsi/sg.c
724
if (!(srp = sg_add_request(sfp))) {
drivers/scsi/sg.c
725
SCSI_LOG_TIMEOUT(1, sg_printk(KERN_INFO, sfp->parentdp,
drivers/scsi/sg.c
732
sg_remove_request(sfp, srp);
drivers/scsi/sg.c
738
sg_remove_request(sfp, srp);
drivers/scsi/sg.c
742
if (hp->dxfer_len > sfp->reserve.bufflen) {
drivers/scsi/sg.c
743
sg_remove_request(sfp, srp);
drivers/scsi/sg.c
747
sg_remove_request(sfp, srp);
drivers/scsi/sg.c
750
if (sfp->res_in_use) {
drivers/scsi/sg.c
751
sg_remove_request(sfp, srp);
drivers/scsi/sg.c
758
sg_remove_request(sfp, srp);
drivers/scsi/sg.c
762
sg_remove_request(sfp, srp);
drivers/scsi/sg.c
766
sg_remove_request(sfp, srp);
drivers/scsi/sg.c
769
k = sg_common_write(sfp, srp, cmnd, timeout, blocking);
drivers/scsi/sg.c
778
sg_common_write(Sg_fd * sfp, Sg_request * srp,
drivers/scsi/sg.c
782
Sg_device *sdp = sfp->parentdp;
drivers/scsi/sg.c
793
SCSI_LOG_TIMEOUT(4, sg_printk(KERN_INFO, sfp->parentdp,
drivers/scsi/sg.c
798
sg_remove_request(sfp, srp);
drivers/scsi/sg.c
804
SCSI_LOG_TIMEOUT(1, sg_printk(KERN_INFO, sfp->parentdp,
drivers/scsi/sg.c
807
sg_remove_request(sfp, srp);
drivers/scsi/sg.c
817
sg_remove_request(sfp, srp);
drivers/scsi/sg.c
828
kref_get(&sfp->f_ref); /* sg_rq_end_io() does kref_put(). */
drivers/scsi/sg.c
834
static int srp_done(Sg_fd *sfp, Sg_request *srp)
drivers/scsi/sg.c
839
read_lock_irqsave(&sfp->rq_list_lock, flags);
drivers/scsi/sg.c
841
read_unlock_irqrestore(&sfp->rq_list_lock, flags);
drivers/scsi/sg.c
855
sg_fill_request_table(Sg_fd *sfp, sg_req_info_t *rinfo)
drivers/scsi/sg.c
862
list_for_each_entry(srp, &sfp->rq_list, entry) {
drivers/scsi/sg.c
915
sg_ioctl_common(struct file *filp, Sg_device *sdp, Sg_fd *sfp,
drivers/scsi/sg.c
933
result = sg_new_write(sfp, filp, p, SZ_SG_IO_HDR,
drivers/scsi/sg.c
937
result = wait_event_interruptible(sfp->read_wait,
drivers/scsi/sg.c
938
srp_done(sfp, srp));
drivers/scsi/sg.c
939
write_lock_irq(&sfp->rq_list_lock);
drivers/scsi/sg.c
942
write_unlock_irq(&sfp->rq_list_lock);
drivers/scsi/sg.c
943
result = sg_new_read(sfp, p, SZ_SG_IO_HDR, srp);
drivers/scsi/sg.c
947
write_unlock_irq(&sfp->rq_list_lock);
drivers/scsi/sg.c
958
sfp->timeout_user = val;
drivers/scsi/sg.c
959
sfp->timeout = mult_frac(val, HZ, USER_HZ);
drivers/scsi/sg.c
964
return sfp->timeout_user;
drivers/scsi/sg.c
996
sfp->force_packid = val ? 1 : 0;
drivers/scsi/sg.c
999
read_lock_irqsave(&sfp->rq_list_lock, iflags);
drivers/scsi/snic/snic_debugfs.c
165
snic_stats_show(struct seq_file *sfp, void *data)
drivers/scsi/snic/snic_debugfs.c
167
struct snic *snic = (struct snic *) sfp->private;
drivers/scsi/snic/snic_debugfs.c
174
seq_printf(sfp,
drivers/scsi/snic/snic_debugfs.c
180
seq_printf(sfp,
drivers/scsi/snic/snic_debugfs.c
211
seq_puts(sfp, "\nSGL Counters\n");
drivers/scsi/snic/snic_debugfs.c
214
seq_printf(sfp,
drivers/scsi/snic/snic_debugfs.c
219
seq_puts(sfp, "\n");
drivers/scsi/snic/snic_debugfs.c
223
seq_printf(sfp,
drivers/scsi/snic/snic_debugfs.c
228
seq_printf(sfp,
drivers/scsi/snic/snic_debugfs.c
243
seq_printf(sfp,
drivers/scsi/snic/snic_debugfs.c
248
seq_printf(sfp,
drivers/scsi/snic/snic_debugfs.c
257
seq_printf(sfp,
drivers/scsi/snic/snic_debugfs.c
262
seq_printf(sfp,
drivers/scsi/snic/snic_debugfs.c
276
seq_printf(sfp,
drivers/scsi/snic/snic_debugfs.c
284
seq_printf(sfp,
drivers/scsi/snic/snic_debugfs.c
380
snic_trc_seq_start(struct seq_file *sfp, loff_t *pos)
drivers/scsi/snic/snic_debugfs.c
386
snic_trc_seq_next(struct seq_file *sfp, void *data, loff_t *pos)
drivers/scsi/snic/snic_debugfs.c
392
snic_trc_seq_stop(struct seq_file *sfp, void *data)
drivers/scsi/snic/snic_debugfs.c
398
snic_trc_seq_show(struct seq_file *sfp, void *data)
drivers/scsi/snic/snic_debugfs.c
403
seq_printf(sfp, "%s\n", buf);
fs/freevxfs/vxfs_fshead.c
108
sfp = vxfs_getfsh(infp->vsi_fship, 0);
fs/freevxfs/vxfs_fshead.c
109
if (!sfp) {
fs/freevxfs/vxfs_fshead.c
115
vxfs_dumpfsh(sfp);
fs/freevxfs/vxfs_fshead.c
129
fs32_to_cpu(infp, sfp->fsh_ilistino[0]));
fs/freevxfs/vxfs_fshead.c
152
kfree(sfp);
fs/freevxfs/vxfs_fshead.c
162
kfree(sfp);
fs/freevxfs/vxfs_fshead.c
87
struct vxfs_fsh *pfp, *sfp;
fs/xfs/libxfs/xfs_attr_leaf.c
1140
struct xfs_attr_sf_hdr *sfp,
fs/xfs/libxfs/xfs_attr_leaf.c
1143
struct xfs_attr_sf_entry *sfep = xfs_attr_sf_firstentry(sfp);
fs/xfs/libxfs/xfs_attr_leaf.c
1154
endp = (char *)sfp + size;
fs/xfs/libxfs/xfs_attr_leaf.c
1157
for (i = 0; i < sfp->count; i++) {
fs/xfs/libxfs/xfs_attr_leaf.h
57
xfs_failaddr_t xfs_attr_shortform_verify(struct xfs_attr_sf_hdr *sfp,
fs/xfs/libxfs/xfs_dir2.c
204
xfs_dir2_sf_hdr_t *sfp;
fs/xfs/libxfs/xfs_dir2.c
211
sfp = dp->i_df.if_data;
fs/xfs/libxfs/xfs_dir2.c
212
return !sfp->count;
fs/xfs/libxfs/xfs_dir2_block.c
1101
xfs_dir2_sf_hdr_t *sfp; /* shortform header */
fs/xfs/libxfs/xfs_dir2_block.c
1119
sfp = kmalloc(ifp->if_bytes, GFP_KERNEL | __GFP_NOFAIL);
fs/xfs/libxfs/xfs_dir2_block.c
1120
memcpy(sfp, oldsfp, ifp->if_bytes);
fs/xfs/libxfs/xfs_dir2_block.c
1145
(sfp->count + 2) * (uint)sizeof(xfs_dir2_leaf_entry_t);
fs/xfs/libxfs/xfs_dir2_block.c
1161
btp->count = cpu_to_be32(sfp->count + 2); /* ., .. */
fs/xfs/libxfs/xfs_dir2_block.c
1193
dep->inumber = cpu_to_be64(xfs_dir2_sf_get_parent_ino(sfp));
fs/xfs/libxfs/xfs_dir2_block.c
1208
if (!sfp->count)
fs/xfs/libxfs/xfs_dir2_block.c
1211
sfep = xfs_dir2_sf_firstentry(sfp);
fs/xfs/libxfs/xfs_dir2_block.c
1244
dep->inumber = cpu_to_be64(xfs_dir2_sf_get_ino(mp, sfp, sfep));
fs/xfs/libxfs/xfs_dir2_block.c
1258
if (++i == sfp->count)
fs/xfs/libxfs/xfs_dir2_block.c
1261
sfep = xfs_dir2_sf_nextentry(mp, sfp, sfep);
fs/xfs/libxfs/xfs_dir2_block.c
1264
kfree(sfp);
fs/xfs/libxfs/xfs_dir2_block.c
1279
kfree(sfp);
fs/xfs/libxfs/xfs_dir2_priv.h
180
struct xfs_dir2_sf_hdr *sfp, int64_t size);
fs/xfs/libxfs/xfs_dir2_sf.c
1001
struct xfs_dir2_sf_hdr *sfp = dp->i_df.if_data;
fs/xfs/libxfs/xfs_dir2_sf.c
1007
newsize = dp->i_df.if_bytes + (sfp->count + 1) * XFS_INO64_DIFF;
fs/xfs/libxfs/xfs_dir2_sf.c
1010
sfp->i8count == 0 && newsize > xfs_inode_data_fork_size(dp);
fs/xfs/libxfs/xfs_dir2_sf.c
1022
struct xfs_dir2_sf_hdr *sfp = dp->i_df.if_data;
fs/xfs/libxfs/xfs_dir2_sf.c
1033
ASSERT(sfp != NULL);
fs/xfs/libxfs/xfs_dir2_sf.c
1034
ASSERT(dp->i_disk_size >= xfs_dir2_sf_hdr_size(sfp->i8count));
fs/xfs/libxfs/xfs_dir2_sf.c
1039
if (args->inumber > XFS_DIR2_MAX_SHORT_INUM && sfp->i8count == 0) {
fs/xfs/libxfs/xfs_dir2_sf.c
1056
sfp = dp->i_df.if_data;
fs/xfs/libxfs/xfs_dir2_sf.c
1066
ino = xfs_dir2_sf_get_parent_ino(sfp);
fs/xfs/libxfs/xfs_dir2_sf.c
1068
xfs_dir2_sf_put_parent_ino(sfp, args->inumber);
fs/xfs/libxfs/xfs_dir2_sf.c
1074
for (i = 0, sfep = xfs_dir2_sf_firstentry(sfp); i < sfp->count;
fs/xfs/libxfs/xfs_dir2_sf.c
1075
i++, sfep = xfs_dir2_sf_nextentry(mp, sfp, sfep)) {
fs/xfs/libxfs/xfs_dir2_sf.c
1078
ino = xfs_dir2_sf_get_ino(mp, sfp, sfep);
fs/xfs/libxfs/xfs_dir2_sf.c
1080
xfs_dir2_sf_put_ino(mp, sfp, sfep,
fs/xfs/libxfs/xfs_dir2_sf.c
1089
if (i == sfp->count) {
fs/xfs/libxfs/xfs_dir2_sf.c
1104
if (sfp->i8count == 1)
fs/xfs/libxfs/xfs_dir2_sf.c
1107
sfp->i8count--;
fs/xfs/libxfs/xfs_dir2_sf.c
1118
ASSERT(sfp->i8count != 0);
fs/xfs/libxfs/xfs_dir2_sf.c
1120
sfp->i8count++;
fs/xfs/libxfs/xfs_dir2_sf.c
1144
xfs_dir2_sf_hdr_t *sfp; /* new sf directory */
fs/xfs/libxfs/xfs_dir2_sf.c
1167
sfp = dp->i_df.if_data;
fs/xfs/libxfs/xfs_dir2_sf.c
1171
sfp->count = oldsfp->count;
fs/xfs/libxfs/xfs_dir2_sf.c
1172
sfp->i8count = 0;
fs/xfs/libxfs/xfs_dir2_sf.c
1173
xfs_dir2_sf_put_parent_ino(sfp, xfs_dir2_sf_get_parent_ino(oldsfp));
fs/xfs/libxfs/xfs_dir2_sf.c
1177
for (i = 0, sfep = xfs_dir2_sf_firstentry(sfp),
fs/xfs/libxfs/xfs_dir2_sf.c
1179
i < sfp->count;
fs/xfs/libxfs/xfs_dir2_sf.c
1180
i++, sfep = xfs_dir2_sf_nextentry(mp, sfp, sfep),
fs/xfs/libxfs/xfs_dir2_sf.c
1185
xfs_dir2_sf_put_ino(mp, sfp, sfep,
fs/xfs/libxfs/xfs_dir2_sf.c
1216
xfs_dir2_sf_hdr_t *sfp; /* new sf directory */
fs/xfs/libxfs/xfs_dir2_sf.c
1239
sfp = dp->i_df.if_data;
fs/xfs/libxfs/xfs_dir2_sf.c
1243
sfp->count = oldsfp->count;
fs/xfs/libxfs/xfs_dir2_sf.c
1244
sfp->i8count = 1;
fs/xfs/libxfs/xfs_dir2_sf.c
1245
xfs_dir2_sf_put_parent_ino(sfp, xfs_dir2_sf_get_parent_ino(oldsfp));
fs/xfs/libxfs/xfs_dir2_sf.c
1249
for (i = 0, sfep = xfs_dir2_sf_firstentry(sfp),
fs/xfs/libxfs/xfs_dir2_sf.c
1251
i < sfp->count;
fs/xfs/libxfs/xfs_dir2_sf.c
1252
i++, sfep = xfs_dir2_sf_nextentry(mp, sfp, sfep),
fs/xfs/libxfs/xfs_dir2_sf.c
1257
xfs_dir2_sf_put_ino(mp, sfp, sfep,
fs/xfs/libxfs/xfs_dir2_sf.c
268
struct xfs_dir2_sf_hdr *sfp; /* shortform directory header */
fs/xfs/libxfs/xfs_dir2_sf.c
279
sfp = kmalloc(mp->m_sb.sb_inodesize, GFP_KERNEL | __GFP_NOFAIL);
fs/xfs/libxfs/xfs_dir2_sf.c
280
memcpy(sfp, sfhp, xfs_dir2_sf_hdr_size(sfhp->i8count));
fs/xfs/libxfs/xfs_dir2_sf.c
287
sfep = xfs_dir2_sf_firstentry(sfp);
fs/xfs/libxfs/xfs_dir2_sf.c
311
xfs_dir2_sf_get_parent_ino(sfp));
fs/xfs/libxfs/xfs_dir2_sf.c
319
xfs_dir2_sf_put_ino(mp, sfp, sfep,
fs/xfs/libxfs/xfs_dir2_sf.c
324
sfep = xfs_dir2_sf_nextentry(mp, sfp, sfep);
fs/xfs/libxfs/xfs_dir2_sf.c
328
ASSERT((char *)sfep - (char *)sfp == size);
fs/xfs/libxfs/xfs_dir2_sf.c
345
xfs_init_local_fork(dp, XFS_DATA_FORK, sfp, size);
fs/xfs/libxfs/xfs_dir2_sf.c
353
kfree(sfp);
fs/xfs/libxfs/xfs_dir2_sf.c
368
struct xfs_dir2_sf_hdr *sfp = dp->i_df.if_data;
fs/xfs/libxfs/xfs_dir2_sf.c
383
ASSERT(sfp != NULL);
fs/xfs/libxfs/xfs_dir2_sf.c
384
ASSERT(dp->i_disk_size >= xfs_dir2_sf_hdr_size(sfp->i8count));
fs/xfs/libxfs/xfs_dir2_sf.c
388
incr_isize = xfs_dir2_sf_entsize(dp->i_mount, sfp, args->namelen);
fs/xfs/libxfs/xfs_dir2_sf.c
394
if (args->inumber > XFS_DIR2_MAX_SHORT_INUM && sfp->i8count == 0) {
fs/xfs/libxfs/xfs_dir2_sf.c
398
incr_isize += (sfp->count + 2) * XFS_INO64_DIFF;
fs/xfs/libxfs/xfs_dir2_sf.c
463
struct xfs_dir2_sf_hdr *sfp = dp->i_df.if_data;
fs/xfs/libxfs/xfs_dir2_sf.c
464
int byteoff = (int)((char *)sfep - (char *)sfp);
fs/xfs/libxfs/xfs_dir2_sf.c
469
sfp = xfs_idata_realloc(dp, xfs_dir2_sf_entsize(mp, sfp, args->namelen),
fs/xfs/libxfs/xfs_dir2_sf.c
474
sfep = (xfs_dir2_sf_entry_t *)((char *)sfp + byteoff);
fs/xfs/libxfs/xfs_dir2_sf.c
481
xfs_dir2_sf_put_ino(mp, sfp, sfep, args->inumber);
fs/xfs/libxfs/xfs_dir2_sf.c
487
sfp->count++;
fs/xfs/libxfs/xfs_dir2_sf.c
489
sfp->i8count++;
fs/xfs/libxfs/xfs_dir2_sf.c
521
xfs_dir2_sf_hdr_t *sfp; /* new shortform dir */
fs/xfs/libxfs/xfs_dir2_sf.c
553
sfp = xfs_idata_realloc(dp, new_isize, XFS_DATA_FORK);
fs/xfs/libxfs/xfs_dir2_sf.c
559
memcpy(sfp, oldsfp, nbytes);
fs/xfs/libxfs/xfs_dir2_sf.c
560
sfep = (xfs_dir2_sf_entry_t *)((char *)sfp + nbytes);
fs/xfs/libxfs/xfs_dir2_sf.c
567
xfs_dir2_sf_put_ino(mp, sfp, sfep, args->inumber);
fs/xfs/libxfs/xfs_dir2_sf.c
569
sfp->count++;
fs/xfs/libxfs/xfs_dir2_sf.c
571
sfp->i8count++;
fs/xfs/libxfs/xfs_dir2_sf.c
576
sfep = xfs_dir2_sf_nextentry(mp, sfp, sfep);
fs/xfs/libxfs/xfs_dir2_sf.c
604
struct xfs_dir2_sf_hdr *sfp = dp->i_df.if_data;
fs/xfs/libxfs/xfs_dir2_sf.c
610
sfep = xfs_dir2_sf_firstentry(sfp);
fs/xfs/libxfs/xfs_dir2_sf.c
617
for (i = 0; i < sfp->count; i++) {
fs/xfs/libxfs/xfs_dir2_sf.c
622
sfep = xfs_dir2_sf_nextentry(mp, sfp, sfep);
fs/xfs/libxfs/xfs_dir2_sf.c
629
(sfp->count + 3) * (uint)sizeof(xfs_dir2_leaf_entry_t) +
fs/xfs/libxfs/xfs_dir2_sf.c
666
struct xfs_dir2_sf_hdr *sfp = dp->i_df.if_data;
fs/xfs/libxfs/xfs_dir2_sf.c
674
ino = xfs_dir2_sf_get_parent_ino(sfp);
fs/xfs/libxfs/xfs_dir2_sf.c
677
for (i = 0, sfep = xfs_dir2_sf_firstentry(sfp);
fs/xfs/libxfs/xfs_dir2_sf.c
678
i < sfp->count;
fs/xfs/libxfs/xfs_dir2_sf.c
679
i++, sfep = xfs_dir2_sf_nextentry(mp, sfp, sfep)) {
fs/xfs/libxfs/xfs_dir2_sf.c
681
ino = xfs_dir2_sf_get_ino(mp, sfp, sfep);
fs/xfs/libxfs/xfs_dir2_sf.c
688
ASSERT(i8count == sfp->i8count);
fs/xfs/libxfs/xfs_dir2_sf.c
689
ASSERT((char *)sfep - (char *)sfp == dp->i_disk_size);
fs/xfs/libxfs/xfs_dir2_sf.c
691
(sfp->count + 2) * (uint)sizeof(xfs_dir2_leaf_entry_t) +
fs/xfs/libxfs/xfs_dir2_sf.c
700
struct xfs_dir2_sf_hdr *sfp,
fs/xfs/libxfs/xfs_dir2_sf.c
717
size < xfs_dir2_sf_hdr_size(sfp->i8count))
fs/xfs/libxfs/xfs_dir2_sf.c
720
endp = (char *)sfp + size;
fs/xfs/libxfs/xfs_dir2_sf.c
723
ino = xfs_dir2_sf_get_parent_ino(sfp);
fs/xfs/libxfs/xfs_dir2_sf.c
731
sfep = xfs_dir2_sf_firstentry(sfp);
fs/xfs/libxfs/xfs_dir2_sf.c
732
for (i = 0; i < sfp->count; i++) {
fs/xfs/libxfs/xfs_dir2_sf.c
750
next_sfep = xfs_dir2_sf_nextentry(mp, sfp, sfep);
fs/xfs/libxfs/xfs_dir2_sf.c
759
ino = xfs_dir2_sf_get_ino(mp, sfp, sfep);
fs/xfs/libxfs/xfs_dir2_sf.c
775
if (i8count != sfp->i8count)
fs/xfs/libxfs/xfs_dir2_sf.c
781
if (offset + (sfp->count + 2) * (uint)sizeof(xfs_dir2_leaf_entry_t) +
fs/xfs/libxfs/xfs_dir2_sf.c
798
xfs_dir2_sf_hdr_t *sfp; /* shortform structure */
fs/xfs/libxfs/xfs_dir2_sf.c
823
sfp = xfs_idata_realloc(dp, size, XFS_DATA_FORK);
fs/xfs/libxfs/xfs_dir2_sf.c
824
sfp->i8count = i8count;
fs/xfs/libxfs/xfs_dir2_sf.c
829
xfs_dir2_sf_put_parent_ino(sfp, pino);
fs/xfs/libxfs/xfs_dir2_sf.c
830
sfp->count = 0;
fs/xfs/libxfs/xfs_dir2_sf.c
847
struct xfs_dir2_sf_hdr *sfp = dp->i_df.if_data;
fs/xfs/libxfs/xfs_dir2_sf.c
860
ASSERT(sfp != NULL);
fs/xfs/libxfs/xfs_dir2_sf.c
861
ASSERT(dp->i_disk_size >= xfs_dir2_sf_hdr_size(sfp->i8count));
fs/xfs/libxfs/xfs_dir2_sf.c
876
args->inumber = xfs_dir2_sf_get_parent_ino(sfp);
fs/xfs/libxfs/xfs_dir2_sf.c
885
for (i = 0, sfep = xfs_dir2_sf_firstentry(sfp); i < sfp->count;
fs/xfs/libxfs/xfs_dir2_sf.c
886
i++, sfep = xfs_dir2_sf_nextentry(mp, sfp, sfep)) {
fs/xfs/libxfs/xfs_dir2_sf.c
895
args->inumber = xfs_dir2_sf_get_ino(mp, sfp, sfep);
fs/xfs/libxfs/xfs_dir2_sf.c
922
struct xfs_dir2_sf_hdr *sfp = dp->i_df.if_data;
fs/xfs/libxfs/xfs_dir2_sf.c
936
ASSERT(sfp != NULL);
fs/xfs/libxfs/xfs_dir2_sf.c
937
ASSERT(oldsize >= xfs_dir2_sf_hdr_size(sfp->i8count));
fs/xfs/libxfs/xfs_dir2_sf.c
942
for (i = 0, sfep = xfs_dir2_sf_firstentry(sfp); i < sfp->count;
fs/xfs/libxfs/xfs_dir2_sf.c
943
i++, sfep = xfs_dir2_sf_nextentry(mp, sfp, sfep)) {
fs/xfs/libxfs/xfs_dir2_sf.c
946
ASSERT(xfs_dir2_sf_get_ino(mp, sfp, sfep) ==
fs/xfs/libxfs/xfs_dir2_sf.c
954
if (i == sfp->count)
fs/xfs/libxfs/xfs_dir2_sf.c
959
byteoff = (int)((char *)sfep - (char *)sfp);
fs/xfs/libxfs/xfs_dir2_sf.c
960
entsize = xfs_dir2_sf_entsize(mp, sfp, args->namelen);
fs/xfs/libxfs/xfs_dir2_sf.c
966
memmove((char *)sfp + byteoff, (char *)sfp + byteoff + entsize,
fs/xfs/libxfs/xfs_dir2_sf.c
971
sfp->count--;
fs/xfs/libxfs/xfs_dir2_sf.c
977
sfp = xfs_idata_realloc(dp, newsize - oldsize, XFS_DATA_FORK);
fs/xfs/libxfs/xfs_dir2_sf.c
983
if (sfp->i8count == 1)
fs/xfs/libxfs/xfs_dir2_sf.c
986
sfp->i8count--;
fs/xfs/libxfs/xfs_inode_fork.c
680
struct xfs_dir2_sf_hdr *sfp = ifp->if_data;
fs/xfs/libxfs/xfs_inode_fork.c
682
fa = xfs_dir2_sf_verify(mp, sfp, ifp->if_bytes);
fs/xfs/libxfs/xfs_symlink_remote.c
211
void *sfp,
fs/xfs/libxfs/xfs_symlink_remote.c
214
char *endp = sfp + size;
fs/xfs/libxfs/xfs_symlink_remote.c
228
if (memchr(sfp, 0, size - 1))
fs/xfs/libxfs/xfs_symlink_remote.h
21
xfs_failaddr_t xfs_symlink_shortform_verify(void *sfp, int64_t size);
fs/xfs/scrub/dir_repair.c
438
struct xfs_dir2_sf_hdr *sfp,
fs/xfs/scrub/dir_repair.c
443
ino = xfs_dir2_sf_get_ino(rd->sc->mp, sfp, sfep);
fs/xfs/scrub/inode_repair.c
624
struct xfs_dir2_sf_hdr *sfp;
fs/xfs/scrub/inode_repair.c
631
sfp = XFS_DFORK_PTR(dip, XFS_DATA_FORK);
fs/xfs/scrub/inode_repair.c
632
sfp->count = 0;
fs/xfs/scrub/inode_repair.c
633
sfp->i8count = i8count;
fs/xfs/scrub/inode_repair.c
634
xfs_dir2_sf_put_parent_ino(sfp, mp->m_sb.sb_rootino);
fs/xfs/scrub/readdir.c
40
struct xfs_dir2_sf_hdr *sfp = dp->i_df.if_data;
fs/xfs/scrub/readdir.c
47
ASSERT(sfp != NULL);
fs/xfs/scrub/readdir.c
61
ino = xfs_dir2_sf_get_parent_ino(sfp);
fs/xfs/scrub/readdir.c
70
sfep = xfs_dir2_sf_firstentry(sfp);
fs/xfs/scrub/readdir.c
71
for (i = 0; i < sfp->count; i++) {
fs/xfs/scrub/readdir.c
74
ino = xfs_dir2_sf_get_ino(mp, sfp, sfep);
fs/xfs/scrub/readdir.c
83
sfep = xfs_dir2_sf_nextentry(mp, sfp, sfep);
fs/xfs/xfs_dir2_readdir.c
104
sfep = xfs_dir2_sf_firstentry(sfp);
fs/xfs/xfs_dir2_readdir.c
105
for (i = 0; i < sfp->count; i++) {
fs/xfs/xfs_dir2_readdir.c
112
sfep = xfs_dir2_sf_nextentry(mp, sfp, sfep);
fs/xfs/xfs_dir2_readdir.c
116
ino = xfs_dir2_sf_get_ino(mp, sfp, sfep);
fs/xfs/xfs_dir2_readdir.c
128
sfep = xfs_dir2_sf_nextentry(mp, sfp, sfep);
fs/xfs/xfs_dir2_readdir.c
55
struct xfs_dir2_sf_hdr *sfp = dp->i_df.if_data;
fs/xfs/xfs_dir2_readdir.c
63
ASSERT(sfp != NULL);
fs/xfs/xfs_dir2_readdir.c
95
ino = xfs_dir2_sf_get_parent_ino(sfp);
net/hsr/hsr_debugfs.c
19
hsr_node_table_show(struct seq_file *sfp, void *data)
net/hsr/hsr_debugfs.c
21
struct hsr_priv *priv = (struct hsr_priv *)sfp->private;
net/hsr/hsr_debugfs.c
24
seq_printf(sfp, "Node Table entries for (%s) device\n",
net/hsr/hsr_debugfs.c
26
seq_puts(sfp, "MAC-Address-A, MAC-Address-B, time_in[A], ");
net/hsr/hsr_debugfs.c
27
seq_puts(sfp, "time_in[B], Address-B port, ");
net/hsr/hsr_debugfs.c
29
seq_puts(sfp, "SAN-A, SAN-B, DAN-P\n");
net/hsr/hsr_debugfs.c
31
seq_puts(sfp, "DAN-H\n");
net/hsr/hsr_debugfs.c
38
seq_printf(sfp, "%pM ", &node->macaddress_A[0]);
net/hsr/hsr_debugfs.c
39
seq_printf(sfp, "%pM ", &node->macaddress_B[0]);
net/hsr/hsr_debugfs.c
40
seq_printf(sfp, "%10lx, ", node->time_in[HSR_PT_SLAVE_A]);
net/hsr/hsr_debugfs.c
41
seq_printf(sfp, "%10lx, ", node->time_in[HSR_PT_SLAVE_B]);
net/hsr/hsr_debugfs.c
42
seq_printf(sfp, "%14x, ", node->addr_B_port);
net/hsr/hsr_debugfs.c
45
seq_printf(sfp, "%5x, %5x, %5x\n",
net/hsr/hsr_debugfs.c
49
seq_printf(sfp, "%5x\n", 1);