linux/drivers/net/ethernet/mellanox/mlxsw/minimal.c
<<
>>
Prefs
   1/*
   2 * drivers/net/ethernet/mellanox/mlxsw/minimal.c
   3 * Copyright (c) 2016 Mellanox Technologies. All rights reserved.
   4 * Copyright (c) 2016 Vadim Pasternak <vadimp@mellanox.com>
   5 *
   6 * Redistribution and use in source and binary forms, with or without
   7 * modification, are permitted provided that the following conditions are met:
   8 *
   9 * 1. Redistributions of source code must retain the above copyright
  10 *    notice, this list of conditions and the following disclaimer.
  11 * 2. Redistributions in binary form must reproduce the above copyright
  12 *    notice, this list of conditions and the following disclaimer in the
  13 *    documentation and/or other materials provided with the distribution.
  14 * 3. Neither the names of the copyright holders nor the names of its
  15 *    contributors may be used to endorse or promote products derived from
  16 *    this software without specific prior written permission.
  17 *
  18 * Alternatively, this software may be distributed under the terms of the
  19 * GNU General Public License ("GPL") version 2 as published by the Free
  20 * Software Foundation.
  21 *
  22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  23 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  25 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
  26 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  27 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  28 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  29 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  30 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  31 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  32 * POSSIBILITY OF SUCH DAMAGE.
  33 */
  34
  35#include <linux/i2c.h>
  36#include <linux/kernel.h>
  37#include <linux/module.h>
  38#include <linux/mod_devicetable.h>
  39#include <linux/types.h>
  40
  41#include "core.h"
  42#include "i2c.h"
  43
  44static const char mlxsw_minimal_driver_name[] = "mlxsw_minimal";
  45
  46static const struct mlxsw_config_profile mlxsw_minimal_config_profile;
  47
  48static struct mlxsw_driver mlxsw_minimal_driver = {
  49        .kind           = mlxsw_minimal_driver_name,
  50        .priv_size      = 1,
  51        .profile        = &mlxsw_minimal_config_profile,
  52};
  53
  54static const struct i2c_device_id mlxsw_minimal_i2c_id[] = {
  55        { "mlxsw_minimal", 0},
  56        { },
  57};
  58
  59static struct i2c_driver mlxsw_minimal_i2c_driver = {
  60        .driver.name = "mlxsw_minimal",
  61        .class = I2C_CLASS_HWMON,
  62        .id_table = mlxsw_minimal_i2c_id,
  63};
  64
  65static int __init mlxsw_minimal_module_init(void)
  66{
  67        int err;
  68
  69        err = mlxsw_core_driver_register(&mlxsw_minimal_driver);
  70        if (err)
  71                return err;
  72
  73        err = mlxsw_i2c_driver_register(&mlxsw_minimal_i2c_driver);
  74        if (err)
  75                goto err_i2c_driver_register;
  76
  77        return 0;
  78
  79err_i2c_driver_register:
  80        mlxsw_core_driver_unregister(&mlxsw_minimal_driver);
  81
  82        return err;
  83}
  84
  85static void __exit mlxsw_minimal_module_exit(void)
  86{
  87        mlxsw_i2c_driver_unregister(&mlxsw_minimal_i2c_driver);
  88        mlxsw_core_driver_unregister(&mlxsw_minimal_driver);
  89}
  90
  91module_init(mlxsw_minimal_module_init);
  92module_exit(mlxsw_minimal_module_exit);
  93
  94MODULE_LICENSE("Dual BSD/GPL");
  95MODULE_AUTHOR("Vadim Pasternak <vadimp@mellanox.com>");
  96MODULE_DESCRIPTION("Mellanox minimal driver");
  97MODULE_DEVICE_TABLE(i2c, mlxsw_minimal_i2c_id);
  98