You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
1.9 KiB
75 lines
1.9 KiB
/* |
|
* Copyright © 2016 Intel Corporation |
|
* |
|
* Authors: |
|
* Rafael Antognolli <rafael.antognolli@intel.com> |
|
* Scott Bauer <scott.bauer@intel.com> |
|
* |
|
* This program is free software; you can redistribute it and/or modify it |
|
* under the terms and conditions of the GNU General Public License, |
|
* version 2, as published by the Free Software Foundation. |
|
* |
|
* This program is distributed in the hope 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. |
|
*/ |
|
|
|
#ifndef LINUX_OPAL_H |
|
#define LINUX_OPAL_H |
|
|
|
#include <uapi/linux/sed-opal.h> |
|
#include <linux/kernel.h> |
|
|
|
struct opal_dev; |
|
|
|
typedef int (sec_send_recv)(void *data, u16 spsp, u8 secp, void *buffer, |
|
size_t len, bool send); |
|
|
|
#ifdef CONFIG_BLK_SED_OPAL |
|
void free_opal_dev(struct opal_dev *dev); |
|
bool opal_unlock_from_suspend(struct opal_dev *dev); |
|
struct opal_dev *init_opal_dev(void *data, sec_send_recv *send_recv); |
|
int sed_ioctl(struct opal_dev *dev, unsigned int cmd, void __user *ioctl_ptr); |
|
|
|
static inline bool is_sed_ioctl(unsigned int cmd) |
|
{ |
|
switch (cmd) { |
|
case IOC_OPAL_SAVE: |
|
case IOC_OPAL_LOCK_UNLOCK: |
|
case IOC_OPAL_TAKE_OWNERSHIP: |
|
case IOC_OPAL_ACTIVATE_LSP: |
|
case IOC_OPAL_SET_PW: |
|
case IOC_OPAL_ACTIVATE_USR: |
|
case IOC_OPAL_REVERT_TPR: |
|
case IOC_OPAL_LR_SETUP: |
|
case IOC_OPAL_ADD_USR_TO_LR: |
|
case IOC_OPAL_ENABLE_DISABLE_MBR: |
|
case IOC_OPAL_ERASE_LR: |
|
case IOC_OPAL_SECURE_ERASE_LR: |
|
return true; |
|
} |
|
return false; |
|
} |
|
#else |
|
static inline void free_opal_dev(struct opal_dev *dev) |
|
{ |
|
} |
|
|
|
static inline bool is_sed_ioctl(unsigned int cmd) |
|
{ |
|
return false; |
|
} |
|
|
|
static inline int sed_ioctl(struct opal_dev *dev, unsigned int cmd, |
|
void __user *ioctl_ptr) |
|
{ |
|
return 0; |
|
} |
|
static inline bool opal_unlock_from_suspend(struct opal_dev *dev) |
|
{ |
|
return false; |
|
} |
|
#define init_opal_dev(data, send_recv) NULL |
|
#endif /* CONFIG_BLK_SED_OPAL */ |
|
#endif /* LINUX_OPAL_H */
|
|
|