cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

at91-usart.c (1654B)


      1// SPDX-License-Identifier: GPL-2.0
      2/*
      3 * Driver for AT91 USART
      4 *
      5 * Copyright (C) 2018 Microchip Technology
      6 *
      7 * Author: Radu Pirea <radu.pirea@microchip.com>
      8 *
      9 */
     10
     11#include <dt-bindings/mfd/at91-usart.h>
     12
     13#include <linux/module.h>
     14#include <linux/mfd/core.h>
     15#include <linux/of.h>
     16#include <linux/property.h>
     17
     18static const struct mfd_cell at91_usart_spi_subdev =
     19	MFD_CELL_NAME("at91_usart_spi");
     20
     21static const struct mfd_cell at91_usart_serial_subdev =
     22	MFD_CELL_NAME("atmel_usart_serial");
     23
     24static int at91_usart_mode_probe(struct platform_device *pdev)
     25{
     26	const struct mfd_cell *cell;
     27	u32 opmode = AT91_USART_MODE_SERIAL;
     28
     29	device_property_read_u32(&pdev->dev, "atmel,usart-mode", &opmode);
     30
     31	switch (opmode) {
     32	case AT91_USART_MODE_SPI:
     33		cell = &at91_usart_spi_subdev;
     34		break;
     35	case AT91_USART_MODE_SERIAL:
     36		cell = &at91_usart_serial_subdev;
     37		break;
     38	default:
     39		dev_err(&pdev->dev, "atmel,usart-mode has an invalid value %u\n",
     40			opmode);
     41		return -EINVAL;
     42	}
     43
     44	return devm_mfd_add_devices(&pdev->dev, PLATFORM_DEVID_AUTO, cell, 1,
     45			      NULL, 0, NULL);
     46}
     47
     48static const struct of_device_id at91_usart_mode_of_match[] = {
     49	{ .compatible = "atmel,at91rm9200-usart" },
     50	{ .compatible = "atmel,at91sam9260-usart" },
     51	{ /* sentinel */ }
     52};
     53
     54MODULE_DEVICE_TABLE(of, at91_usart_mode_of_match);
     55
     56static struct platform_driver at91_usart_mfd = {
     57	.probe	= at91_usart_mode_probe,
     58	.driver	= {
     59		.name		= "at91_usart_mode",
     60		.of_match_table	= at91_usart_mode_of_match,
     61	},
     62};
     63
     64module_platform_driver(at91_usart_mfd);
     65
     66MODULE_AUTHOR("Radu Pirea <radu.pirea@microchip.com>");
     67MODULE_DESCRIPTION("AT91 USART MFD driver");
     68MODULE_LICENSE("GPL v2");