felix.c (dbacfd8ca755b9f710ab17a1e47572fc4e5dabcc) felix.c (91c724cfc0cbc049f18c04634ad56080650e93b8)
1// SPDX-License-Identifier: GPL-2.0
2/* Copyright 2019 NXP Semiconductors
3 */
4#include <uapi/linux/if_bridge.h>
5#include <soc/mscc/ocelot_vcap.h>
6#include <soc/mscc/ocelot_qsys.h>
7#include <soc/mscc/ocelot_sys.h>
8#include <soc/mscc/ocelot_dev.h>

--- 510 unchanged lines hidden (view full) ---

519 if (err) {
520 dev_err(ocelot->dev, "failed to init reg fields map\n");
521 kfree(port_phy_modes);
522 return err;
523 }
524
525 for (port = 0; port < num_phys_ports; port++) {
526 struct ocelot_port *ocelot_port;
1// SPDX-License-Identifier: GPL-2.0
2/* Copyright 2019 NXP Semiconductors
3 */
4#include <uapi/linux/if_bridge.h>
5#include <soc/mscc/ocelot_vcap.h>
6#include <soc/mscc/ocelot_qsys.h>
7#include <soc/mscc/ocelot_sys.h>
8#include <soc/mscc/ocelot_dev.h>

--- 510 unchanged lines hidden (view full) ---

519 if (err) {
520 dev_err(ocelot->dev, "failed to init reg fields map\n");
521 kfree(port_phy_modes);
522 return err;
523 }
524
525 for (port = 0; port < num_phys_ports; port++) {
526 struct ocelot_port *ocelot_port;
527 void __iomem *port_regs;
527 struct regmap *target;
528
529 ocelot_port = devm_kzalloc(ocelot->dev,
530 sizeof(struct ocelot_port),
531 GFP_KERNEL);
532 if (!ocelot_port) {
533 dev_err(ocelot->dev,
534 "failed to allocate port memory\n");
535 kfree(port_phy_modes);
536 return -ENOMEM;
537 }
538
539 memcpy(&res, &felix->info->port_io_res[port], sizeof(res));
540 res.flags = IORESOURCE_MEM;
541 res.start += switch_base;
542 res.end += switch_base;
543
528
529 ocelot_port = devm_kzalloc(ocelot->dev,
530 sizeof(struct ocelot_port),
531 GFP_KERNEL);
532 if (!ocelot_port) {
533 dev_err(ocelot->dev,
534 "failed to allocate port memory\n");
535 kfree(port_phy_modes);
536 return -ENOMEM;
537 }
538
539 memcpy(&res, &felix->info->port_io_res[port], sizeof(res));
540 res.flags = IORESOURCE_MEM;
541 res.start += switch_base;
542 res.end += switch_base;
543
544 port_regs = devm_ioremap_resource(ocelot->dev, &res);
545 if (IS_ERR(port_regs)) {
544 target = ocelot_regmap_init(ocelot, &res);
545 if (IS_ERR(target)) {
546 dev_err(ocelot->dev,
546 dev_err(ocelot->dev,
547 "failed to map registers for port %d\n", port);
547 "Failed to map memory space for port %d\n",
548 port);
548 kfree(port_phy_modes);
549 kfree(port_phy_modes);
549 return PTR_ERR(port_regs);
550 return PTR_ERR(target);
550 }
551
552 ocelot_port->phy_mode = port_phy_modes[port];
553 ocelot_port->ocelot = ocelot;
551 }
552
553 ocelot_port->phy_mode = port_phy_modes[port];
554 ocelot_port->ocelot = ocelot;
554 ocelot_port->regs = port_regs;
555 ocelot_port->target = target;
555 ocelot->ports[port] = ocelot_port;
556 }
557
558 kfree(port_phy_modes);
559
560 if (felix->info->mdio_bus_alloc) {
561 err = felix->info->mdio_bus_alloc(ocelot);
562 if (err < 0)

--- 420 unchanged lines hidden ---
556 ocelot->ports[port] = ocelot_port;
557 }
558
559 kfree(port_phy_modes);
560
561 if (felix->info->mdio_bus_alloc) {
562 err = felix->info->mdio_bus_alloc(ocelot);
563 if (err < 0)

--- 420 unchanged lines hidden ---