cregit-Linux how code gets into the kernel

Release 4.18 drivers/nvmem/meson-efuse.c

Directory: drivers/nvmem
/*
 * Amlogic Meson GX eFuse Driver
 *
 * Copyright (c) 2016 Endless Computers, Inc.
 * Author: Carlo Caione <carlo@endlessm.com>
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of version 2 of the GNU General Public License as
 * published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
 * more details.
 */

#include <linux/module.h>
#include <linux/nvmem-provider.h>
#include <linux/of.h>
#include <linux/platform_device.h>

#include <linux/firmware/meson/meson_sm.h>


static int meson_efuse_read(void *context, unsigned int offset, void *val, size_t bytes) { return meson_sm_call_read((u8 *)val, bytes, SM_EFUSE_READ, offset, bytes, 0, 0, 0); }

Contributors

PersonTokensPropCommitsCommitProp
Carlo Caione3986.67%266.67%
Jerome Brunet613.33%133.33%
Total45100.00%3100.00%


static int meson_efuse_write(void *context, unsigned int offset, void *val, size_t bytes) { return meson_sm_call_write((u8 *)val, bytes, SM_EFUSE_WRITE, offset, bytes, 0, 0, 0); }

Contributors

PersonTokensPropCommitsCommitProp
Jerome Brunet45100.00%1100.00%
Total45100.00%1100.00%

static const struct of_device_id meson_efuse_match[] = { { .compatible = "amlogic,meson-gxbb-efuse", }, { /* sentinel */ }, }; MODULE_DEVICE_TABLE(of, meson_efuse_match);
static int meson_efuse_probe(struct platform_device *pdev) { struct device *dev = &pdev->dev; struct nvmem_device *nvmem; struct nvmem_config *econfig; unsigned int size; if (meson_sm_call(SM_EFUSE_USER_MAX, &size, 0, 0, 0, 0, 0) < 0) return -EINVAL; econfig = devm_kzalloc(dev, sizeof(*econfig), GFP_KERNEL); if (!econfig) return -ENOMEM; econfig->dev = dev; econfig->name = dev_name(dev); econfig->stride = 1; econfig->word_size = 1; econfig->reg_read = meson_efuse_read; econfig->reg_write = meson_efuse_write; econfig->size = size; nvmem = devm_nvmem_register(&pdev->dev, econfig); return PTR_ERR_OR_ZERO(nvmem); }

Contributors

PersonTokensPropCommitsCommitProp
Carlo Caione7349.32%125.00%
Jerome Brunet7047.30%250.00%
Andrey Smirnov53.38%125.00%
Total148100.00%4100.00%

static struct platform_driver meson_efuse_driver = { .probe = meson_efuse_probe, .driver = { .name = "meson-efuse", .of_match_table = meson_efuse_match, }, }; module_platform_driver(meson_efuse_driver); MODULE_AUTHOR("Carlo Caione <carlo@endlessm.com>"); MODULE_DESCRIPTION("Amlogic Meson GX NVMEM driver"); MODULE_LICENSE("GPL v2");

Overall Contributors

PersonTokensPropCommitsCommitProp
Carlo Caione20060.98%228.57%
Jerome Brunet12136.89%342.86%
Andrey Smirnov51.52%114.29%
Martin Blumenstingl20.61%114.29%
Total328100.00%7100.00%
Directory: drivers/nvmem
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.