Symbol: mlxreg_lc
drivers/platform/mellanox/mlxreg-lc.c
412
mlxreg_lc_create_static_devices(struct mlxreg_lc *mlxreg_lc, struct mlxreg_hotplug_device *devs,
drivers/platform/mellanox/mlxreg-lc.c
422
dev_err(mlxreg_lc->dev, "Failed to create client %s at bus %d at addr 0x%02x\n",
drivers/platform/mellanox/mlxreg-lc.c
443
mlxreg_lc_destroy_static_devices(struct mlxreg_lc *mlxreg_lc, struct mlxreg_hotplug_device *devs,
drivers/platform/mellanox/mlxreg-lc.c
458
static int mlxreg_lc_power_on_off(struct mlxreg_lc *mlxreg_lc, u8 action)
drivers/platform/mellanox/mlxreg-lc.c
463
err = regmap_read(mlxreg_lc->par_regmap, mlxreg_lc->data->reg_pwr, &regval);
drivers/platform/mellanox/mlxreg-lc.c
468
regval |= BIT(mlxreg_lc->data->slot - 1);
drivers/platform/mellanox/mlxreg-lc.c
470
regval &= ~BIT(mlxreg_lc->data->slot - 1);
drivers/platform/mellanox/mlxreg-lc.c
472
err = regmap_write(mlxreg_lc->par_regmap, mlxreg_lc->data->reg_pwr, regval);
drivers/platform/mellanox/mlxreg-lc.c
478
static int mlxreg_lc_enable_disable(struct mlxreg_lc *mlxreg_lc, bool action)
drivers/platform/mellanox/mlxreg-lc.c
491
err = regmap_read(mlxreg_lc->par_regmap, mlxreg_lc->data->reg_ena, &regval);
drivers/platform/mellanox/mlxreg-lc.c
496
regval |= BIT(mlxreg_lc->data->slot - 1);
drivers/platform/mellanox/mlxreg-lc.c
498
regval &= ~BIT(mlxreg_lc->data->slot - 1);
drivers/platform/mellanox/mlxreg-lc.c
500
err = regmap_write(mlxreg_lc->par_regmap, mlxreg_lc->data->reg_ena, regval);
drivers/platform/mellanox/mlxreg-lc.c
507
mlxreg_lc_sn4800_c16_config_init(struct mlxreg_lc *mlxreg_lc, void *regmap,
drivers/platform/mellanox/mlxreg-lc.c
513
mlxreg_lc->mux_data = mlxreg_lc_mux_data;
drivers/platform/mellanox/mlxreg-lc.c
514
mlxreg_lc->io_data = &mlxreg_lc_regs_io;
drivers/platform/mellanox/mlxreg-lc.c
515
mlxreg_lc->led_data = &mlxreg_lc_led;
drivers/platform/mellanox/mlxreg-lc.c
516
mlxreg_lc->mux_brdinfo = &mlxreg_lc_mux_brdinfo;
drivers/platform/mellanox/mlxreg-lc.c
518
mlxreg_lc->aux_devs = devm_kmemdup(dev, mlxreg_lc_aux_pwr_brdinfo,
drivers/platform/mellanox/mlxreg-lc.c
520
if (!mlxreg_lc->aux_devs)
drivers/platform/mellanox/mlxreg-lc.c
522
mlxreg_lc->aux_devs_num = ARRAY_SIZE(mlxreg_lc_aux_pwr_brdinfo);
drivers/platform/mellanox/mlxreg-lc.c
523
mlxreg_lc->main_devs = devm_kmemdup(dev, mlxreg_lc_main_pwr_brdinfo,
drivers/platform/mellanox/mlxreg-lc.c
525
if (!mlxreg_lc->main_devs)
drivers/platform/mellanox/mlxreg-lc.c
527
mlxreg_lc->main_devs_num = ARRAY_SIZE(mlxreg_lc_main_pwr_brdinfo);
drivers/platform/mellanox/mlxreg-lc.c
533
mlxreg_lc_state_update(struct mlxreg_lc *mlxreg_lc, enum mlxreg_lc_state state, u8 action)
drivers/platform/mellanox/mlxreg-lc.c
536
mlxreg_lc->state |= state;
drivers/platform/mellanox/mlxreg-lc.c
538
mlxreg_lc->state &= ~state;
drivers/platform/mellanox/mlxreg-lc.c
542
mlxreg_lc_state_update_locked(struct mlxreg_lc *mlxreg_lc, enum mlxreg_lc_state state, u8 action)
drivers/platform/mellanox/mlxreg-lc.c
544
mutex_lock(&mlxreg_lc->lock);
drivers/platform/mellanox/mlxreg-lc.c
547
mlxreg_lc->state |= state;
drivers/platform/mellanox/mlxreg-lc.c
549
mlxreg_lc->state &= ~state;
drivers/platform/mellanox/mlxreg-lc.c
551
mutex_unlock(&mlxreg_lc->lock);
drivers/platform/mellanox/mlxreg-lc.c
560
struct mlxreg_lc *mlxreg_lc = handle;
drivers/platform/mellanox/mlxreg-lc.c
563
dev_info(mlxreg_lc->dev, "linecard#%d state %d event kind %d action %d\n",
drivers/platform/mellanox/mlxreg-lc.c
564
mlxreg_lc->data->slot, mlxreg_lc->state, kind, action);
drivers/platform/mellanox/mlxreg-lc.c
566
mutex_lock(&mlxreg_lc->lock);
drivers/platform/mellanox/mlxreg-lc.c
567
if (!(mlxreg_lc->state & MLXREG_LC_INITIALIZED))
drivers/platform/mellanox/mlxreg-lc.c
576
mlxreg_lc_state_update(mlxreg_lc, MLXREG_LC_SYNCED, action);
drivers/platform/mellanox/mlxreg-lc.c
578
if (!(mlxreg_lc->state & MLXREG_LC_POWERED) && action) {
drivers/platform/mellanox/mlxreg-lc.c
579
err = mlxreg_lc_power_on_off(mlxreg_lc, 1);
drivers/platform/mellanox/mlxreg-lc.c
584
if (mlxreg_lc->state & MLXREG_LC_CONFIGURED && action)
drivers/platform/mellanox/mlxreg-lc.c
585
err = mlxreg_lc_enable_disable(mlxreg_lc, 1);
drivers/platform/mellanox/mlxreg-lc.c
591
if (mlxreg_lc->state & MLXREG_LC_POWERED) {
drivers/platform/mellanox/mlxreg-lc.c
593
if (mlxreg_lc->state & MLXREG_LC_CONFIGURED)
drivers/platform/mellanox/mlxreg-lc.c
594
err = mlxreg_lc_enable_disable(mlxreg_lc, 1);
drivers/platform/mellanox/mlxreg-lc.c
598
err = mlxreg_lc_create_static_devices(mlxreg_lc, mlxreg_lc->main_devs,
drivers/platform/mellanox/mlxreg-lc.c
599
mlxreg_lc->main_devs_num);
drivers/platform/mellanox/mlxreg-lc.c
604
if (mlxreg_lc->state & MLXREG_LC_CONFIGURED)
drivers/platform/mellanox/mlxreg-lc.c
605
err = mlxreg_lc_enable_disable(mlxreg_lc, 1);
drivers/platform/mellanox/mlxreg-lc.c
607
mlxreg_lc_destroy_static_devices(mlxreg_lc, mlxreg_lc->main_devs,
drivers/platform/mellanox/mlxreg-lc.c
608
mlxreg_lc->main_devs_num);
drivers/platform/mellanox/mlxreg-lc.c
610
mlxreg_lc_state_update(mlxreg_lc, MLXREG_LC_POWERED, action);
drivers/platform/mellanox/mlxreg-lc.c
617
err = mlxreg_lc_enable_disable(mlxreg_lc, !!action);
drivers/platform/mellanox/mlxreg-lc.c
622
err = mlxreg_lc_power_on_off(mlxreg_lc, 0);
drivers/platform/mellanox/mlxreg-lc.c
632
mutex_unlock(&mlxreg_lc->lock);
drivers/platform/mellanox/mlxreg-lc.c
645
struct mlxreg_lc *mlxreg_lc = handle;
drivers/platform/mellanox/mlxreg-lc.c
650
aux_dev = mlxreg_lc->aux_devs;
drivers/platform/mellanox/mlxreg-lc.c
651
for (i = 0; i < mlxreg_lc->aux_devs_num; i++, aux_dev++) {
drivers/platform/mellanox/mlxreg-lc.c
656
err = mlxreg_lc_create_static_devices(mlxreg_lc, mlxreg_lc->aux_devs,
drivers/platform/mellanox/mlxreg-lc.c
657
mlxreg_lc->aux_devs_num);
drivers/platform/mellanox/mlxreg-lc.c
662
main_dev = mlxreg_lc->main_devs;
drivers/platform/mellanox/mlxreg-lc.c
663
for (i = 0; i < mlxreg_lc->main_devs_num; i++, main_dev++) {
drivers/platform/mellanox/mlxreg-lc.c
669
err = regmap_read(mlxreg_lc->par_regmap, mlxreg_lc->data->reg_pwr, &regval);
drivers/platform/mellanox/mlxreg-lc.c
673
if (regval & mlxreg_lc->data->mask) {
drivers/platform/mellanox/mlxreg-lc.c
674
err = mlxreg_lc_create_static_devices(mlxreg_lc, mlxreg_lc->main_devs,
drivers/platform/mellanox/mlxreg-lc.c
675
mlxreg_lc->main_devs_num);
drivers/platform/mellanox/mlxreg-lc.c
679
mlxreg_lc_state_update_locked(mlxreg_lc, MLXREG_LC_POWERED, 1);
drivers/platform/mellanox/mlxreg-lc.c
683
err = regmap_read(mlxreg_lc->par_regmap, mlxreg_lc->data->reg_sync, &regval);
drivers/platform/mellanox/mlxreg-lc.c
688
if (regval & mlxreg_lc->data->mask) {
drivers/platform/mellanox/mlxreg-lc.c
689
mlxreg_lc->state |= MLXREG_LC_SYNCED;
drivers/platform/mellanox/mlxreg-lc.c
690
mlxreg_lc_state_update_locked(mlxreg_lc, MLXREG_LC_SYNCED, 1);
drivers/platform/mellanox/mlxreg-lc.c
691
if (!(mlxreg_lc->state & MLXREG_LC_POWERED)) {
drivers/platform/mellanox/mlxreg-lc.c
692
err = mlxreg_lc_power_on_off(mlxreg_lc, 1);
drivers/platform/mellanox/mlxreg-lc.c
698
mlxreg_lc_state_update_locked(mlxreg_lc, MLXREG_LC_INITIALIZED, 1);
drivers/platform/mellanox/mlxreg-lc.c
704
if (mlxreg_lc->state & MLXREG_LC_POWERED)
drivers/platform/mellanox/mlxreg-lc.c
705
mlxreg_lc_destroy_static_devices(mlxreg_lc, mlxreg_lc->main_devs,
drivers/platform/mellanox/mlxreg-lc.c
706
mlxreg_lc->main_devs_num);
drivers/platform/mellanox/mlxreg-lc.c
708
mlxreg_lc_destroy_static_devices(mlxreg_lc, mlxreg_lc->aux_devs, mlxreg_lc->aux_devs_num);
drivers/platform/mellanox/mlxreg-lc.c
714
mlxreg_lc_config_init(struct mlxreg_lc *mlxreg_lc, void *regmap,
drivers/platform/mellanox/mlxreg-lc.c
729
err = mlxreg_lc_sn4800_c16_config_init(mlxreg_lc, regmap, data);
drivers/platform/mellanox/mlxreg-lc.c
742
mlxreg_lc->mux_data->handle = mlxreg_lc;
drivers/platform/mellanox/mlxreg-lc.c
743
mlxreg_lc->mux_data->completion_notify = mlxreg_lc_completion_notify;
drivers/platform/mellanox/mlxreg-lc.c
744
mlxreg_lc->mux_brdinfo->platform_data = mlxreg_lc->mux_data;
drivers/platform/mellanox/mlxreg-lc.c
745
mlxreg_lc->mux = platform_device_register_resndata(dev, "i2c-mux-mlxcpld", data->hpdev.nr,
drivers/platform/mellanox/mlxreg-lc.c
746
NULL, 0, mlxreg_lc->mux_data,
drivers/platform/mellanox/mlxreg-lc.c
747
sizeof(*mlxreg_lc->mux_data));
drivers/platform/mellanox/mlxreg-lc.c
748
if (IS_ERR(mlxreg_lc->mux)) {
drivers/platform/mellanox/mlxreg-lc.c
751
return PTR_ERR(mlxreg_lc->mux);
drivers/platform/mellanox/mlxreg-lc.c
755
if (mlxreg_lc->io_data) {
drivers/platform/mellanox/mlxreg-lc.c
756
mlxreg_lc->io_data->regmap = regmap;
drivers/platform/mellanox/mlxreg-lc.c
757
mlxreg_lc->io_regs =
drivers/platform/mellanox/mlxreg-lc.c
759
mlxreg_lc->io_data, sizeof(*mlxreg_lc->io_data));
drivers/platform/mellanox/mlxreg-lc.c
760
if (IS_ERR(mlxreg_lc->io_regs)) {
drivers/platform/mellanox/mlxreg-lc.c
764
err = PTR_ERR(mlxreg_lc->io_regs);
drivers/platform/mellanox/mlxreg-lc.c
770
if (mlxreg_lc->led_data) {
drivers/platform/mellanox/mlxreg-lc.c
771
mlxreg_lc->led_data->regmap = regmap;
drivers/platform/mellanox/mlxreg-lc.c
772
mlxreg_lc->led =
drivers/platform/mellanox/mlxreg-lc.c
774
mlxreg_lc->led_data,
drivers/platform/mellanox/mlxreg-lc.c
775
sizeof(*mlxreg_lc->led_data));
drivers/platform/mellanox/mlxreg-lc.c
776
if (IS_ERR(mlxreg_lc->led)) {
drivers/platform/mellanox/mlxreg-lc.c
780
err = PTR_ERR(mlxreg_lc->led);
drivers/platform/mellanox/mlxreg-lc.c
788
if (mlxreg_lc->io_regs)
drivers/platform/mellanox/mlxreg-lc.c
789
platform_device_unregister(mlxreg_lc->io_regs);
drivers/platform/mellanox/mlxreg-lc.c
791
if (mlxreg_lc->mux)
drivers/platform/mellanox/mlxreg-lc.c
792
platform_device_unregister(mlxreg_lc->mux);
drivers/platform/mellanox/mlxreg-lc.c
797
static void mlxreg_lc_config_exit(struct mlxreg_lc *mlxreg_lc)
drivers/platform/mellanox/mlxreg-lc.c
800
if (mlxreg_lc->led)
drivers/platform/mellanox/mlxreg-lc.c
801
platform_device_unregister(mlxreg_lc->led);
drivers/platform/mellanox/mlxreg-lc.c
803
if (mlxreg_lc->io_regs)
drivers/platform/mellanox/mlxreg-lc.c
804
platform_device_unregister(mlxreg_lc->io_regs);
drivers/platform/mellanox/mlxreg-lc.c
806
if (mlxreg_lc->mux)
drivers/platform/mellanox/mlxreg-lc.c
807
platform_device_unregister(mlxreg_lc->mux);
drivers/platform/mellanox/mlxreg-lc.c
814
struct mlxreg_lc *mlxreg_lc;
drivers/platform/mellanox/mlxreg-lc.c
822
mlxreg_lc = devm_kzalloc(&pdev->dev, sizeof(*mlxreg_lc), GFP_KERNEL);
drivers/platform/mellanox/mlxreg-lc.c
823
if (!mlxreg_lc)
drivers/platform/mellanox/mlxreg-lc.c
826
mutex_init(&mlxreg_lc->lock);
drivers/platform/mellanox/mlxreg-lc.c
829
data->notifier->handle = mlxreg_lc;
drivers/platform/mellanox/mlxreg-lc.c
880
mlxreg_lc->par_regmap = par_pdata->regmap;
drivers/platform/mellanox/mlxreg-lc.c
881
mlxreg_lc->data = data;
drivers/platform/mellanox/mlxreg-lc.c
882
mlxreg_lc->dev = &pdev->dev;
drivers/platform/mellanox/mlxreg-lc.c
883
platform_set_drvdata(pdev, mlxreg_lc);
drivers/platform/mellanox/mlxreg-lc.c
886
err = mlxreg_lc_config_init(mlxreg_lc, regmap, data);
drivers/platform/mellanox/mlxreg-lc.c
913
struct mlxreg_lc *mlxreg_lc = platform_get_drvdata(pdev);
drivers/platform/mellanox/mlxreg-lc.c
915
mlxreg_lc_state_update_locked(mlxreg_lc, MLXREG_LC_INITIALIZED, 0);
drivers/platform/mellanox/mlxreg-lc.c
931
mlxreg_lc_destroy_static_devices(mlxreg_lc, mlxreg_lc->main_devs,
drivers/platform/mellanox/mlxreg-lc.c
932
mlxreg_lc->main_devs_num);
drivers/platform/mellanox/mlxreg-lc.c
934
mlxreg_lc_destroy_static_devices(mlxreg_lc, mlxreg_lc->aux_devs, mlxreg_lc->aux_devs_num);
drivers/platform/mellanox/mlxreg-lc.c
936
mlxreg_lc_config_exit(mlxreg_lc);